以上を総括すると、従来技術では以下のような課題が生じていた。
即ち、第1に、ソフトウェアの流用開発、派生開発において、変更部位に関する影響度を簡易に可視化する技術が実現されていない。第2に、ソフトウェアの流用開発、派生開発、及び新規開発において、プログラムの構造を、手間をかけずに改善し簡素化する技術が実現されていない。第3に、ソースコードによる分析では、分析前の手順が複雑になってしまうので効率が良くない。そして、第4に、流用部品適用後、ソフトウェアに関して行う機能テストでは、テストケースの適切な判断ができていない。
本発明は、このような課題に鑑みてなされたものであり、ソフトウェアの影響度を可視化し、設計時における変更点の妥当性の確認に活用可能とすることを目的とする。
さらに、ソフトウェア構造を可視化し、構造の簡素化を支援することを目的とする。
また、コンパイル、リンク後のオブジェクトをインプットデータとして解析することにより、解析の手間を簡素化することを目的とする。
そして、ソフトウェア影響箇所、ソフトウェア構造を差分分析し、テスト活用可能とすることを目的とする。
上記課題を解決するため、本発明の第1の態様に係るオブジェクト分析装置は、所定の表示を行う表示部と、コンパイル、リンク後のオブジェクトを入力としてオブジェクト分析を行い、影響度及び構造出力ファイルを生成するオブジェクト分析部と、前記影響度及び構造出力ファイルを記憶する記憶部と、前記影響度及び構造出力ファイルに基づいて前記表示部による表示を制御する分析結果表示制御部とを有し、前記オブジェクトには、前記コンパイル後、ソースコードが機械語に翻訳された命令コードと、この命令コードと前記ソースコードの関数と結び付きを示した関数ブロック情報と、前記ソースコード上で関数コールした際に生成される分岐命令と、を含む。
本発明の第2の態様に係るオブジェクト分析装置は、第1の態様において、前記所定の表示とは、関数コールグラフ表示、関数コールマトリクス表示である。
本発明の第3の態様に係るオブジェクト分析装置は、第2の態様において、前記分析結果表示制御部は、着目した関数の協調表示、及び着目した関数にのみ影響のある関数の協調表示の少なくともいずれかを行うよう制御する。
本発明の第4の態様に係るオブジェクト分析装置は、第1の態様において、前記オブジェクト分析部は、前記オブジェクトにグローバル変数参照命令、又はグローバル変数更新命令が存在するときは、関数ブロックとグローバル変数とを関連付け、前記分析結果表示制御部は、前記関連付けに基づいて所定の変数構造マトリクス表示を前記表示部に行うように制御する。
本発明の第5の態様に係るオブジェクト分析装置は、第4の態様において、前記分析結果表示制御部は、着目した関数の協調表示、及び着目した関数にのみ影響のある関数の協調表示の少なくともいずれかを行うよう制御する。
本発明の第6の態様に係るオブジェクト分析装置は、所定の表示を行う表示部と、ベースライン、完成後の両オブジェクトについてオブジェクト差分分析を行い、影響度や、構造出力ファイルを生成するオブジェクト差分分析部と、前記影響度や構造出力ファイルを記憶する記憶部と、前記影響度、構造出力ファイルに基づいて前記表示部に所定の表示を行うように制御する差分分析結果表示制御部と、を有し、所定の表示とは、差分関数コール影響グラフ表示である。
本発明の第7の態様に係るオブジェクト分析方法は、コンパイル、リンク後のオブジェクトを入力としてオブジェクト分析を行い、影響度及び構造出力ファイルを生成するステップと、前記影響度及び構造出力ファイルを記憶するステップと、前記影響度及び構造出力ファイルに基づいて表示を制御するステップと、を有し、前記オブジェクトには、前記コンパイル後、ソースコードが機械語に翻訳された命令コードと、この命令コードと前記ソースコードの関数と結び付きを示した関数ブロック情報と、前記ソースコード上で関数コールした際に生成される分岐命令と、を含む。
本発明の第8の態様に係るプログラムは、コンピュータを、コンパイル、リンク後のオブジェクトを入力としてオブジェクト分析を行い、影響度及び構造出力ファイルを生成するオブジェクト分析部と、前記影響度及び構造出力ファイルに基づいて前記表示部による表示を制御する分析結果表示制御部と、して機能させ、前記オブジェクトには、前記コンパイル後、ソースコードが機械語に翻訳された命令コードと、この命令コードと前記ソースコードの関数と結び付きを示した関数ブロック情報と、前記ソースコード上で関数コールした際に生成される分岐命令とを含む。
本発明によれば、ソフトウェアの影響度を可視化し、設計時における変更点の妥当性確認に活用可能とするオブジェクト分析装置、オブジェクト分析方法、及びプログラムを提供することができる。
さらに、ソフトウェア構造を可視化し、構造の簡素化を支援可能とするオブジェクト分析装置、オブジェクト分析方法、及びプログラムを提供することができる。
また、コンパイル、リンク後のオブジェクトをインプットデータとして解析することにより、解析の手間の簡素化が可能とするオブジェクト分析装置、オブジェクト分析方法、及びプログラムを提供することができる。
そして、ソフトウェア影響箇所、ソフトウェア構造を差分分析し、テスト活用可能とするオブジェクト分析装置、オブジェクト分析方法、及びプログラムを提供することができる。
以下、図面を参照しつつ本発明の一実施形態について説明する。
<第1実施形態>
図1には、本発明の第1実施形態乃至第4実施形態に係るソフトウェア分析装置の機能ブロック図を示し説明する。この第1実施形態に係る装置及び方法では、ソフトウェアの影響度を可視化し、設計時における変更点の妥当性確認に活用可能とする。さらに、ソフトウェア構造を可視化し、構造の簡素化を支援可能とする。
同図に示されるように、ソフトウェア分析装置1は、CPU(Central Processing Unit)等の制御部2を備えており、制御部2は、解析表示プログラム3を実行することで、オブジェクト分析部3a、分析結果表示制御部3bとして機能する。制御部2は、第1記憶部4、第2記憶部5、及び表示部6と接続されている。
このような構成において、この実施形態では、コンパイル、リンク後のオブジェクトをインプットデータとして解析することにより、解析の手間の簡素化が可能とする。オブジェクト分析部3aは、第1記憶部4のユーザオブジェクトについてオブジェクト分析を行い、詳細は後述するが、影響度や、構造出力ファイル等を生成する。この影響度や構造出力ファイルは、第2記憶部5に格納される。分析結果表示制御部3bは、この影響度、構造出力ファイルに基づいて、表示部6に所定の表示を行うように制御する。所定の表示としては、関数コールグラフ表示、関数コールマトリクス表示等がある。
図2には、第1実施形態に係るソフトウェア分析装置によりユーザオブジェクトを生成する過程を示し説明する。
ソースコードをコンパイル、リンクした結果、実行プログラム、つまりユーザオブジェクトが生成される。ユーザオブジェクトには、命令コード、関数ブロック情報、及び分岐命令が含まれている。「命令コード」とは、コンパイル後、ソースコードが機械語に翻訳されたものをいう。「関数ブロック情報」とは、どの命令がソースコードのどの関数と結びつくのかを示したものをいう。そして、「分岐命令」とは、ソースコード上で関数コールした際に生成される分岐命令をいう。
以下、図3のフローチャートを参照して、第1実施形態に係るソフトウェア分析装置の処理手順を説明する。
処理を開始すると、制御部2のオブジェクト分析部3aは、関数ブロック情報をリードし、関数ノード情報を作成する(S1)。先ず、関数ノード0について、関数範囲に分岐命令が含まれるかを判断し(S3)、含まれている場合には、分岐先ノードと現ノードを関連付ける(S4)。そして、関数範囲の終端まで走査したかを判断し(S5)、走査していなければ(S5をNO)、ステップS3に戻り上記処理を繰り返す。
関数範囲に分岐命令が含まれていない場合(S3をNO)、又は関数範囲の終端まで走査したときは(S5をYES)、次の関数ノードについて、上記処理を繰り返す。そして、すべての関数ノードNについて上記処理を完了すると(S6)、分析結果表示制御部3bによりコールグラフ表示、又は関数コールマトリクス表示を表示部6に行い(S7)、こうして一連の処理を終了する。
図4には、第1実施形態に係るソフトウェア分析装置による関数コールグラフ表示の一例を示し説明する。同図に示されるように、関数コールグラフ表示では、コール先が矢印で示されるので、コール先を一目で確認することが可能となる。
図5には、第1実施形態に係るソフトウェア分析装置による関数コールマトリクス表示の一例を示し説明する。同図に示されるように、関数コールマトリクス表示では、コールする側とされる側の対応関係がある場合には、マトリクス表の中に「塗りつぶし」で示されるので、各関数間の対応関係を確認することが可能となる。
以上説明したように、本発明の第1実施形態によれば、ソフトウェアの影響度を可視化し、設計時における変更点の妥当性確認に活用可能とすることができる。さらに、ソフトウェア構造を可視化し、構造の簡素化を支援可能とすることができる。
<第2実施形態>
本発明の第2実施形態に係るソフトウェア分析装置の機能ブロック図は先に図1に示したのと同様であるので、ここでは同一構成については同一符号を用いて説明する。
前述した第1実施形態では、関数コール関係の表示にて、構造化による可視化はできるが、派生開発時に重要である影響度の調査には利用することができなかった。そこで、第2実施形態では、影響度の調査に活用し得るように表示を工夫する。即ち、この第2実施形態では、第1実施形態の作用に加えて、着目した関数の協調表示、着目した関数にのみ影響のある関数の協調表示を行うこととする。
以下、図6のフローチャートを参照して、第2実施形態に係るソフトウェア分析装置の処理手順を説明する。ステップS1乃至S7までは、図3と同様であるので、重複した説明は省略する。分析結果表示制御部3bによりコールグラフ表示、又は関数コールマトリクス表示を表示部6で行った後、更に着目した関数の協調表示、着目した関数にのみ影響のある関数の協調表示を行い(S8)、処理を終了する。
図7には、本発明の第2実施形態に係るソフトウェア分析装置による関数コール影響グラフ表示の一例を示し説明する。同図に示されるように、この関数コール影響グラフ表示では、コール先が矢印で示され、更に着目した関数の協調表示もなされるので、影響度の調査に利用することが可能となる。
図8には、本発明の第2実施形態に係るソフトウェア分析装置による関数コール影響マトリクス表示の一例を示し説明する。同図に示されるように、関数コール影響マトリクス表示では、コールする側とされる側の対応関係がある場合には、マトリクス表の中に「塗りつぶし」で示され、特に着目した関数にのみ影響のある関数は協調表示されるので、影響度を意識しながら、各関数間の対応関係を確認することが可能となる。
以上説明したように、本発明の第2実施形態によれば、着目した関数の協調表示の協調表示や、着目した関数にのみ影響のある関数の協調表示を行えるので、ソフトウェアの影響度に加えて強調箇所を可視化し、設計時における変更点の妥当性確認に活用可能とすることができる。
<第3実施形態>
本発明の第3実施形態に係るソフトウェア分析装置の機能ブロック図は先に図1に示したのと同様であるので、ここでは同一構成については同一符号を用いて説明する。この第3実施形態では、変数構造を可視化することが可能となる。すなわち、この第3実施形態では、変数構造マトリクス表示を実現する。
図9には、第3実施形態に係るソフトウェア分析装置によりユーザオブジェクトを生成する過程を示し説明する。
ソースコードを、コンパイル、リンクした結果、実行プログラム、つまりユーザオブジェクトが生成される。ユーザオブジェクトには、命令コード、関数ブロック情報、参照命令、及び更新命令が含まれている。「命令コード」とは、コンパイル後、ソースコードが機械語に翻訳されたものをいう。「関数ブロック情報」とは、どの命令がソースコードのどの関数に結び付くか示されたものをいう。「参照命令」とは、特定メモリを参照する命令をいう。そして、「更新命令」とは、特定メモリを更新する命令をいう。
以下、図10のフローチャートを参照して、第3実施形態に係るソフトウェア分析装置の処理手順を説明する。
この処理では、制御部2のオブジェクト分析部3aは、関数ブロック0に対して処理を開始し(S11)、先ずグローバル変数0を処理対象とする(S12)。
そして、現在ブロックに現在グローバル変数参照命令が存在するか否かを判断し(S13)、存在する場合には(S13をYES)、現在関数ブロックと現在グローバル変数を関連付ける(参照)(S14)。一方、現在グローバル変数参照命令が存在しなければ(S13をNO)、S15に移行する。
続いて、現在ブロックに現在グローバル変数更新命令が存在するか否かを判断し(S15)、存在する場合には(S15をYES)、現在関数ブロックと現在グローバル変数を関連付ける(更新)(S16)。一方、現在グローバル変数参照命令が存在しなければ(S15をNO)、S17に移行する。
続いて、グローバル変数1について、上記同様の処理を行い、以降、関数ブロック0内の全てのグローバル変数Nについて上記処理を終えると(S17)、次の関数ブロック1について同様の処理を行い、全ての関数ブロックについて上記処理を終えると(S18)、分析結果表示制御部3bは、変数構造マトリクス表示を行い(S19)、こうして一連の処理を終了する。
図11には、第3実施形態に係るソフトウェア分析装置による変数構造マトリクス表示の一例を示し説明する。同図に示されるように、変数構造マトリクス表示では、グローバル変数と各関数との変数構造が視覚化される。
以上説明したように、本発明の第3実施形態によれば、ソフトウェアの影響度に加えて変数構造をマトリクス表示により可視化し、設計時における変更点の妥当性確認に活用可能とすることができる。
<第4実施形態>
本発明の第4実施形態に係るソフトウェア分析装置の機能ブロック図は先に図1に示したのと同様であるので、ここでは同一構成については同一符号を用いて説明する。
前述した第3実施形態の関するコールマトリクス表示では、構造化による可視化はできるが、派生開発時に重要である影響度の調査には利用することができなかった。このような点に鑑みて、第4実施形態では、影響度を視覚化する。具体的には、変数構造のマトリクス表示に加えて、着目した変数の協調表示、着目した変数にのみ影響のある関数の協調表示を行うこととする。
以下、図12のフローチャートを参照して、第4実施形態に係るソフトウェア分析装置の処理手順を説明する。ステップS11乃至S19までは、図10と同様であるので、重複した説明は省略する。変数構造マトリクス表示の後(S19)、分析結果表示制御部3bは、着目した変数の協調表示、着目した変数にのみ影響のある関数の協調表示を行い(S20)、処理を終了することになる。
図13には、第4実施形態に係るソフトウェア分析装置による変数構造影響マトリクス表示の一例を示し説明する。同図に示されるように、変数構造影響マトリクス表示では、グローバル変数と各関数との変数構造が視覚化されると共に、着目した変数の協調表示がなされる。この例では、関数3,4とグローバル変数6,7との協調表示がなされていることから、影響度を把握することが可能となる。
以上説明したように、本発明の第4実施形態によれば、変数構造の可視化に加えて、着目した変数の協調表示、着目した変数にのみ影響のある関数の協調表示を行うことができるので、ソフトウェア構造の可視化がより精度良く行える。
<第5実施形態>
図14には、本発明の第5実施形態に係るソフトウェア分析装置の機能ブロック図を示し説明する。派生流用開発では、プロダクトのベースラインの成果物に対して、順次、追加、削除、変更を繰り返し作成される。
同図に示されるように、ソフトウェア分析装置11は、CPU等の制御部12を備えており、制御部12は、差分解析表示プログラム13を実行することで、オブジェクト差分分析部13a、差分分析結果表示制御部13bとして機能する。制御部12は、第1乃至第3記憶部14乃至16、及び表示部17と接続されている。
このような構成において、ソフトウェア影響箇所、ソフトウェア構造を差分分析し、テスト活用可能とする。即ち、オブジェクト差分分析部13aは、第1記憶部14のユーザオブジェクト(ベースライン)と第2記憶部15のユーザオブジェクト(完成後)についてオブジェクト差分分析を行い、詳細は後述するが、影響度や、構造出力ファイル等(差分)を生成する。この影響度や構造出力ファイルは、第3記憶部16に格納される。差分分析結果表示制御部13bは、この影響度、構造出力ファイルに基づいて、表示部17に所定の表示を行うように制御する。所定の表示としては、差分関数コール影響グラフ表示等がある。
以下、図15のフローチャートを参照して、第5実施形態に係るソフトウェア分析装置の処理手順を説明する。ベースライン関数コールグラフ作成処理を行い(S31)、派生開発品関数コールグラフ作成処理を行う(S32)。これは、第1実施形態で説明した手法による。続いて、ベースライン、派生開発品の変更点抽出を行う(S33)。具体的には、オブジェクト差分分析部13aが、差分分析を行うことで変更点を抽出する。そして、差分コールグラフ表示を行う(S34)。そして、着目した関数の協調表示、及び着目した関数にのみ影響のある関数の協調表示を行い(S35)、一連の処理を終了する。
図16には、第5実施形態に係るソフトウェア分析装置による差分関数コール影響グラフ表示の一例を示し説明する。
ベースラインからの変更点(追加、削除、変更)の抽出、変更点に対する影響箇所を洗い出すことは、設計時における考慮漏れの確認、テスト設計時における妥当性検証において品質向上につながる重要な視点である。このような観点から、追加関数、削除関数、及び変更関数を可視化するのが、このグラフ表示である。
以上説明したように、本発明の第5実施形態によれば、ソフトウェア影響箇所、ソフトウェア構造を差分分析し、テスト活用可能とする。
以上、本発明の一実施形態について説明したが、本発明はこれに限定されることなくその趣旨を逸脱しない範囲で種々の改良・変更が可能であることは勿論である。
例えば、着目した関数の協調表示については、表示の色彩を変更するだけでなく、点滅表示させるなど、種々の区分表示態様を採用することができる。
本発明の第2の態様に係るオブジェクト分析装置は、表示部と、第1乃至第Nの関数ブロックのそれぞれに対して第1乃至第Nのグローバル変数を処理対象とし、前記第1乃至第Nの関数ブロックのそれぞれにグローバル変数参照命令が存在するか否かを判断し、存在する場合には、前記第1乃至第Nの関数ブロックのぞれぞれと前記第1乃至第Nのグローバル変数とを関連付けるオブジェクト分析部と、前記第1乃至第Nの関数ブロックについて、前記関連付けを終えると、前記表示部に変数構造マトリクス表示を行う分析結果表示制御部と、を備え、前記変数構造マトリクス表示では、前記第1乃至第Nのグローバル変数と各関数との変数構造が視覚化され、前記分析結果表示制御部は、変数構造影響マトリクス表示を前記表示部に更に行うように制御し、前記変数構造影響マトリクス表示では、グローバル変数と各関数との変数構造が視覚化されると共に、着目した変数の強調表示がなされる。
本発明の第4の態様に係るオブジェクト分析方法は、オブジェクト分析部が、第1乃至第Nの関数ブロックのそれぞれに対して第1乃至第Nのグローバル変数を処理対象とし、前記第1乃至第Nの関数ブロックのそれぞれにグローバル変数参照命令が存在するか否かを判断し、存在する場合には、前記第1乃至第Nの関数ブロックのぞれぞれと前記第1乃至第Nのグローバル変数とを関連付けるステップと、分析結果表示制御部が、前記第1乃至第Nの関数ブロックについて、前記関連付けを終えると、表示部に変数構造マトリクス表示を行うステップと、を有し、前記変数構造マトリクス表示では、前記第1乃至第Nのグローバル変数と各関数との変数構造が視覚化され、前記分析結果表示制御部は、変数構造影響マトリクス表示を前記表示部に更に行うように制御し、前記変数構造影響マトリクス表示では、グローバル変数と各関数との変数構造が視覚化されると共に、着目した変数の強調表示がなされる。