(57)【要約】【課題】曖昧性を排除しつつ確実で早い影響度分析を可能とし、かつ、ソースコードの変更を高い品質で実現可能なソフトウェア変更影響分析装置を得ること。【解決手段】本発明にかかるソフトウェア変更影響分析装置は、たとえば、所定の影響度分析図を記憶するための影響度分析図記憶部５と、実際に変更作業にかかった時間を蓄積するための過去作業記憶部６と、現在の変更作業内容を保存するための分析情報記憶部７と、影響度分析図記憶部５、過去作業記憶部６および分析情報記憶部７に記憶されている内容に基づいて、ソフトウェアの変更に伴う影響を分析し、その変更に対応する適切な検証方法を導出する分析部４と、を備える。【選択図】        図１
2009157505.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアの変更に伴う影響を分析するソフトウェア変更影響分析装置であって、
ソースコードの変更対象項目毎にその変更で想定されるすべての検証方法が記載された影響度分析図を記憶するための影響度分析図記憶部と、
実際に変更作業にかかった時間を蓄積するための過去作業記憶部と、
現在の変更作業内容を保存するための分析情報記憶部と、
前記影響度分析図記憶部、前記過去作業記憶部および前記分析情報記憶部に記憶されている内容に基づいて、ソフトウェアの変更に伴う影響を分析し、その変更に対応する適切な検証方法を導出する分析部と、
を備え、
前記分析部は、
前記影響度分析図記憶部から影響度分析図を読み出し、ソフトウェアの変更部分について、当該影響度分析図に記載された分岐条件を画面表示する制御を行うことにより、適切な検証方法を導出するまでの分析処理をユーザーとの対話形式で行い、
前記変更部分毎に、導出された検証方法および前記過去作業記憶部に記憶された情報に基づき算出した予定作業時間、を前記分析情報記憶部に保存し、
さらに、前記分析情報記憶部に保存されたすべての情報を画面表示する制御を行うことを特徴とするソフトウェア変更影響分析装置。
【請求項２】
前記影響度分析図は、前記ソースコードの変更対象項目として、インクルードファイル、構造体の定義、型の定義、定数マクロ、固定値テーブル、関数マクロ、関数、内部変数およびグローバル変数の少なくともいずれか一つを含むことを特徴とする請求項１に記載のソフトウェア変更影響分析装置。
【請求項３】
前記分析部は、ユーザーにより選択されたソフトウェアの変更部分が、前記変更対象項目の何にあたるかを判別することを特徴とする請求項２に記載のソフトウェア変更影響分析装置。
【請求項４】
前記分析部は、前記ソフトウェアの変更により新たな変更が生じると判断した場合、当該新たな変更に伴う影響を分析し、その変更に対応する適切な検証方法を導出することを特徴とする請求項１、２または３に記載のソフトウェア変更影響分析装置。
【請求項５】
前記分析部は、
変更作業終了後に、変更作業内容とその作業時間とを関連付けた一覧を画面表示する制御を行い、ユーザーの操作により作業時間欄に実際の作業時間が入力された場合に、その作業時間を前記過去作業記憶部に記憶することを特徴とする請求項１〜４のいずれか１つに記載のソフトウェア変更影響分析装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの変更に伴う影響を分析するソフトウェア変更影響分析装置に関するものである。
【背景技術】
【０００２】
ソフトウェア開発において、不具合の改修や再利用開発を行う場合は、通常、ソースコードの編集を行うが、その編集により発生する影響範囲を把握できるかどうかは、開発者の能力に左右されている。具体的な作業としては、たとえば、ソースコードの特定部分を変更する場合、その変更に伴って影響をうける部分をソースコードから検出し、そして、このようなソースコードの検索を繰返し実行する。これにより、ソースコードの変更による影響範囲を把握することができる。また、上記の影響をうけた部分については改修を行う必要があるが、その改修だけで十分なのか、検証はどのように行うのか等については、開発者の経験や知識に大きく依存する。
【０００３】
そのため、従来から、ソースコードを分析しその変更に伴う影響を分析する装置が検討されている。たとえば、下記特許文献１に記載の従来の影響度分析方法では、分析ルールを規定し、これに基づいて変更の影響度を分析している。このとき、正確な分析を行うためには、詳細な分析ルールを作成する必要がある。
【０００４】
【特許文献１】公開昭６４−３２３３７号公報（第１８１頁、第１−２図）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の影響度分析方法では、分析ルールを文章で詳細に明文化して登録しておく必要があり、そのルールの作成に時間がかかってしまう、という問題があった。また、複数のルールを加味して分析する必要があるため、システムへの処理負荷がかかる、という問題もあった。なお、従来の影響度分析方法では、変更による影響度を分析しているだけであり、その検証方法や改修規模の見積もり等についてはふれられていない。
【０００６】
本発明は、上記に鑑みてなされたものであって、曖昧性を排除しつつ確実で早い影響度分析を可能とし、かつ、ソースコードの変更を高い品質で実現可能なソフトウェア変更影響分析装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明にかかるソフトウェア変更影響分析装置は、ソフトウェアの変更に伴う影響を分析するソフトウェア変更影響分析装置であって、たとえば、ソースコードの変更対象項目毎にその変更で想定されるすべての検証方法が記載された影響度分析図を記憶するための影響度分析図記憶部と、実際に変更作業にかかった時間を蓄積するための過去作業記憶部と、現在の変更作業内容を保存するための分析情報記憶部と、前記影響度分析図記憶部、前記過去作業記憶部および前記分析情報記憶部に記憶されている内容に基づいて、ソフトウェアの変更に伴う影響を分析し、その変更に対応する適切な検証方法を導出する分析部と、を備え、前記分析部は、前記影響度分析図記憶部から影響度分析図を読み出し、ソフトウェアの変更部分について、当該影響度分析図に記載された分岐条件を画面表示する制御を行うことにより、適切な検証方法を導出するまでの分析処理をユーザーとの対話形式で行い、前記変更部分毎に、導出された検証方法および前記過去作業記憶部に記憶された情報に基づき算出した予定作業時間、を前記分析情報記憶部に保存し、さらに、前記分析情報記憶部に保存されたすべての情報を画面表示する制御を行うことを特徴とする。
【発明の効果】
【０００８】
この発明によれば、影響度分析図を用いて対話形式でユーザーの意図する内容を反映することができるため、曖昧性を排除し、確実で早い分析が可能となる、という効果を奏する。また、分析後に検証方法を示すこととしたので、ソースコードの変更を高い品質で行うことができる、という効果を奏する。また、過去のソースコードの改修作業実績を利用することにより、改修にかかる工数を見積もることが可能となる、という効果を奏する。
【発明を実施するための最良の形態】
【０００９】
以下に、本発明にかかるソフトウェア変更影響分析装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１０】
図１は、本発明にかかるソフトウェア変更影響分析装置の構成例を示す図である。本実施の形態では、入力装置２，分析部４，影響度分析図記憶部５，過去作業記憶部６，分析情報記憶部７，表示部８によりソフトウェア変更影響分析装置を構成する。図１において、ユーザー１は、入力装置２を使用して分析部４を操作する。分析部４は、影響度分析図記憶部５、過去作業記憶部６および分析情報記憶部７を利用して、ソースコード３を分析する。そして、その分析結果として、影響一覧ウィンドウ９，エディタウィンドウ１０，情報画面ウィンドウ１１などを表示部８に表示する。ユーザー１は、これらの画面情報を参照しながら対話的に操作を行う。
【００１１】
ここで、上記ソフトウェア変更影響分析装置による分析動作を、図面にしたがって説明する。図２は、本発明にかかるソフトウェア変更影響分析装置による分析動作の一例を示すフローチャートである。
【００１２】
まず、ユーザー１が入力装置２を用いてソースコード３を入力し、分析部４がそのソースコード３を取り込む（ステップＳ１）。分析部４は、表示部８に対して所定の表示制御を行い、エディタウィンドウ１０上にソースコード３を表示する（ステップＳ２）。
【００１３】
つぎに、ユーザー１は、表示部８のエディタウィンドウ１０上で、ソフトウェアの改修対象部分を、入力装置２を操作して選択する（ステップＳ３）。分析部４は、選択された部分がソフトウェア上、何にあたるかを判別する（ステップＳ４）。たとえば、選択された部分が、インクルードファイル，構造体の定義，型の定義，定数マクロ，固定値テーブル，関数マクロ，関数，内部変数，グローバル変数であるかを判別する。
【００１４】
つぎに、分析部４は、影響度分析図記憶部５から影響度分析図を読み出し、この影響度分析図に基づいて、ユーザー１と対話形式でどのような変更なのかを分析する（ステップＳ５）。ここでは、分析部４が影響度分析図の分岐内容を表示部８に表示する制御を行い、ユーザー１が入力装置２を操作して答える形式により、上記分析処理を行っていく（詳細は後述する）。そして、分析部４は、上記改修対象部分の変更により影響を受ける部分を、表示部８を介して影響一覧ウィンドウ９に一覧表示する（ステップＳ６）。ここで、図１の「Ａａ  １１」，「Ｂｂ  ２２」…は、エディタ１０を操作して発生する変更影響先を示す。具体的には、関数や変数等が表示される。また、「ａａａａａ」，「ｂｂｂｂｂ」…は、影響内容を示す。具体的には、図３に示す実施事項が表示される。
【００１５】
つぎに、ユーザー１が影響一覧ウィンドウ９に表示された情報を選択すると、分析部４は、選択された部分の情報を情報画面ウィンドウ１１に表示する（ステップＳ７）。たとえば、図示のように＜変数ａの変更＞が選択された場合は、呼び出し関数の引数や戻り値、代入される変数、代入する変数等が表示される。ここで、ユーザー１は、情報画面ウィンドウ１１やエディタウィンドウ１０から得られた情報に基づいて、実際に上記改修対象部分の変更を行うかどうかを判断し、その判断結果（ソフトウェアの変更を実施するかしないか）を、入力装置２を操作して分析部４に通知する（ステップＳ８）。
【００１６】
たとえば、ユーザー１がソフトウェアの変更を実施すると判断した場合（ステップＳ９，Ｙｅｓ）、まず、分析部４は、影響度分析図に示された検証方法を表示部８に表示する制御を行う（ステップＳ１０）。つぎに、分析部４は、この変更処理にかかると予想される作業工数を過去作業記憶部６に記憶された情報に基づき算出し、その結果を表示部８に出力する（ステップＳ１１）。たとえば、過去の同様の事例の平均工数等を算出する。そして、上記ステップＳ７で情報画面ウィンドウ１１に表示した情報、上記ステップＳ１０で得られた検証方法、および上記ステップＳ１１で得られた作業工数を、分析情報記憶部７に保存する（ステップＳ１２）。
【００１７】
その後、分析部４は、上記改修対象部分の変更によりさらなる変更影響が生じると判断した場合（ステップＳ１３，Ｙｅｓ）、その変更に対してステップＳ４〜Ｓ１２を実行し、以降、上記変更の影響が発生しなくなるまで（ステップＳ１３，Ｎｏ）ステップＳ４〜Ｓ１２の処理を繰返し実行する。
【００１８】
そして、上記ステップＳ１３の処理で変更の影響がなくなった場合（ステップＳ１３，Ｎｏ）、または、上記ステップＳ９の処理でソフトウェアの変更を実施しないと判断された場合（ステップＳ９，Ｎｏ）、分析部４は、すべての改修対象部分を分析したかどうかを判断する（ステップＳ１４）。ここで、すべての改修対象部分を分析したと判断した場合（ステップＳ１４，Ｙｅｓ）、分析部４は、上記ステップＳ１２で保存した情報の内容を表示部８に表示する制御を行う（ステップＳ１５）。最後に、ユーザー１は、変更作業終了後に入力装置２を操作して、作業時間を改修対象部分の種類（インクルードファイル，構造体の定義，型の定義，定数マクロ，固定値テーブル，関数マクロ，関数，内部変数，グローバル変数）毎に過去作業記憶部６に保存する。なお、上記ステップＳ１４の処理ですべての改修対象部分を分析していないと判断した場合（ステップＳ１４，Ｎｏ）、分析部４は、すべての改修対象部分の分析が完了するまで、上記ステップＳ３〜Ｓ１３の処理を繰り返し実行する。
【００１９】
つづいて、分析部４が影響度分析図に基づいてソフトウェアの変更の影響を分析する処理を、図面にしたがって説明する。
【００２０】
図３（図３−１〜図３−３）は、影響度分析図の一例を示す図である。影響度分析図は、図３に示すように、変更内容に従って分岐が列挙されている。ここでは、この分岐を選択していき、選択毎に実施内容欄に記載されている内容を確認する。なお、図中の四角枠は分岐を示し、判断内容が示されている。分析部４は、分岐の判断内容をユーザー１に問い合わせることになる。また、楕円枠は変更対象（インクルードファイル，構造体の定義，型の定義，定数マクロ，固定値テーブル，関数マクロ，関数，内部変数，グローバル変数）を表し、変更のシンボルが何であるかを示している。また、同様に項目の最後に付けられている○で囲まれた記号（型，値，範囲）はジャンプを示しており、同一記号に進むことになる。そして、最終的に行きつくボックスに影響内容とその検証方法が記載されている。
【００２１】
ここで、上記ステップＳ５における変更の影響を分析する処理を、事例をあげて具体的に説明する。たとえば、図４は、上記影響分析図５における「構造体の定義」に関する分析図であり、図５は、構造体のメンバーが不要となり、影響度分析図に基づきそのメンバーを削除する場合の分析処理を示す図である。
【００２２】
たとえば、構造体が定義され、削除対象のメンバーがghiの場合を想定する。このような場合、従来は、ghiをテキストエディタなどでgrep（ソースコードから指定した名前のシンボルを検索する機能）し、ghiの使用個所を検索する必要がある。一方、本実施の形態では、図４に示す分析図（構造体の定義を変更する場合の分析図）に従って影響度分析を行う。なお、図５には、図３に示す影響度分析図に基づきユーザー１が処理を選択した結果が示されている。
【００２３】
まず、ユーザー１がエディタウィンドウ１０上で図６に示されているghiを選択すると（ステップＳ２１）、分析部４は、何を変更したかを判断し（ステップＳ２２）、構造体のメンバーだと判断する（ステップＳ２３、ステップＳ２４，メンバー）。その後、分析部４は、どのような変更かをポップアップウィンドウなどでユーザー１に問い合わせる（ステップＳ２５）。たとえば、ユーザー１が選択肢（名前，メンバー追加，メンバー削除，型）の中から“メンバー削除”を選択すると（ステップＳ２５，メンバー削除）、“削除するメンバーを利用する全ての箇所において、削除しても問題がないことを確認”にいきつくため、分析部４は、ghiを利用している全ての関数情報（ghiを利用している関数の情報、関数内の位置など）をユーザー１にポップアップウィンドウなどで示す。
【００２４】
その後、ユーザー１が上記ポップアップウィンドウを確認して、ghiを削除した場合に問題ないかを判断し、その判断結果を分析部４に示す。たとえば、削除可能との判断であれば、分析部４は、ソースコードから自動で上記対象メンバーを削除する。なお、自動で処理できないような場合には、予想工数を表示し、ユーザーに処理を促すこととしてもよい。
【００２５】
ただし、図４に示すように、上記ステップＳ２５の処理で、ユーザー１が選択肢（名前，メンバー追加，メンバー削除，型）の中から“名前”を選択した場合には（ステップＳ２５，名前）、“命名規則、同名の変数がないかを確認し、利用対象部分をすべて変更”にいきつくため、分析部４は、上記検証方法を実行した結果をユーザー１にポップアップウィンドウなどで示す。
【００２６】
また、上記ステップＳ２５の処理で、ユーザー１が選択肢（名前，メンバー追加，メンバー削除，型）の中から“メンバー追加”を選択した場合には（ステップＳ２５，メンバー追加）、“命名規則にのっとった名前をつけ、動作を明確にする”にいきつくため、分析部４は、上記検証方法を実行した結果をユーザー１にポップアップウィンドウなどで示す。
【００２７】
なお、分析部４では、変更作業終了後に、たとえば、図７に示すような作業内容と作業工数とを関連付けた一覧を表示部８に表示する制御を行う。たとえば、作業内容が“関数の引数変更”の場合には、その作業に伴う工数の欄が表示される（図示のＮｏ．１に対応）。また、作業内容が“関数の引数変更”の場合は、その変更に伴う２次的な影響が発生しているので、たとえば、“内部変数の型を変更”に伴う工数の欄も表示される（図示のＮｏ．１−１，Ｎｏ．１−２に対応）。さらに、ここでは、すべての改修対象部分に対応する工数の欄が表示されている（図示のＮｏ．２，Ｎｏ．３，Ｎｏ．４…に対応）。そして、ユーザー１の操作により作業工数欄に作業時間が入力された場合、分析部４は、その入力に基づき過去作業記憶部６に作業時間を記憶する。このような処理でデータを蓄積することにより、上記ステップＳ１１では作業工数の算出が可能となる。
【００２８】
以上のように、本実施の形態では、影響度分析図を用いて対話形式で利用者の意図する内容を反映することができるため、曖昧性を排除し、確実で早い分析が可能となる。また、分析後に検証方法を示すこととしたので、ソースコードの変更を高い品質で行うことができる。また、過去のソースコードの改修作業実績を利用することにより、改修にかかる工数を見積もることが可能となる。
【産業上の利用可能性】
【００２９】
以上のように、本発明にかかるソフトウェア変更影響分析装置は、ソフトウェアの変更に伴う影響を分析する装置として有用であり、特に、より高い品質でソースコードの変更を行う場合に適している。
【図面の簡単な説明】
【００３０】
【図１】本発明にかかるソフトウェア変更影響分析装置の構成例を示す図である。
【図２】本発明にかかるソフトウェア変更影響分析装置による分析動作の一例を示すフローチャートである。
【図３−１】影響度分析図の一例を示す図である。
【図３−２】影響度分析図の一例を示す図である。
【図３−３】影響度分析図の一例を示す図である。
【図４】影響分析図における「構造体の定義」に関する分析図である。
【図５】構造体のメンバーを削除する場合の分析処理を示す図である。
【図６】エディタウィンドウの表示例を示す図である。
【図７】作業内容と作業工数とを関連付けた一覧を示す図である。
【符号の説明】
【００３１】
１  ユーザー
２  入力装置
３  ソースコード
４  分析部
５  影響度分析図記憶部
６  過去作業記憶部
７  分析情報記憶部
８  表示部
９  影響一覧ウィンドウ
１０  エディタウィンドウ
１１  情報画面ウィンドウ
【図１】
2009157505.tif 000003
【図２】
2009157505.tif 000004
【図３−１】
2009157505.tif 000005
【図３−２】
2009157505.tif 000006
【図３−３】
2009157505.tif 000007
【図４】
2009157505.tif 000008
【図５】
2009157505.tif 000009
【図６】
2009157505.tif 000010
【図７】
2009157505.tif 000011