(57)【要約】  入力部（１０）で指定したソースコードを分析部（２０）で分析し、ソフトウェア間で依存関係を実現するための通信データの内容を区別するために使用される固定値を求める。求めた固定値とソフトウェアの要素の関係を記憶部（３０）に保存し、記憶部（３０）に保存した複数のソフトウェアの情報を変更影響解析部（４０）で通信データの内容を区別するために使用される固定値をもとにして関連付けてソフトウェアのプログラム要素間の依存関係を解析する。解析結果は表示部（５０）にて図又は表として表示する。
2017141893.tif 000002
【特許請求の範囲】
【請求項１】
データを処理するソフトウェアのソフトウェア分析装置であって、
データを処理するソフトウェアのソースコードを分析して、データを識別するために使用する固定値と前記ソフトウェアを構成するソフトウェア要素とを抽出し、前記固定値と前記ソフトウェア要素とを対応付ける分析部と、
前記分析部で対応付けられた前記固定値と前記ソフトウェア要素との対応情報を分析結果情報として保存する記憶部と、
前記記憶部に保存した前記分析結果情報に基づいて、ソフトウェアの依存関係を求める変更影響解析部と、
前記変更影響解析部で求めた依存関係を表示する表示部と
を備えたソフトウェア分析装置。
【請求項２】
前記分析部は、前記固定値を抽出する注釈解析部を有し、
前記注釈解析部は、前記ソースコードに記載された注釈情報を使用して前記固定値を抽出する請求項１に記載のソフトウェア分析装置。
【請求項３】
前記分析部は、前記固定値を抽出する指定部を有し、
前記指定部は、使用者が指定したソースコードの記述を使用して前記固定値を抽出する請求項１又は２に記載のソフトウェア分析装置。
【請求項４】
前記分析部は、前記固定値を抽出する過去参照部を有し、
前記過去参照部は、過去に分析済みの類似構造を持つソフトウェアの分析結果を参照して前記固定値を抽出する請求項１から３いずれか１項に記載のソフトウェア分析装置。
【請求項５】
前記分析部は、前記固定値を抽出する提示選択部を有し、
前記提示選択部は、前記ソースコードの参照文と代入文との少なくともいずれかを使用者に提示し、使用者に固定値を選択させることにより、前記固定値を抽出する請求項１から４いずれか１項に記載のソフトウェア分析装置。
【請求項６】
前記分析部は、固定値を抽出する既知値利用部を有し、
前記既知値利用部は、前記ソースコードにおいて既知の固定値と同様に扱われている定数、又は、前記ソースコードにおいて既知の固定値が代入されている変数に直接又は間接的に代入されている固定値を抽出する請求項１から５いずれか１項に記載のソフトウェア分析装置。
【請求項７】
前記変更影響解析部は、前記固定値とソフトウェア要素とを縦軸と横軸とに持ち、ソフトウェア要素の依存関係の有無又は度合いを前記表示部に表示する請求項１から６いずれか１項に記載のソフトウェア分析装置。
【請求項８】
前記変更影響解析部は、ソフトウェア要素をノードとし、依存関係の有無によって接続された有向又は無向の図を、前記表示部に表示する請求項１から６いずれか１項に記載のソフトウェア分析装置。
【請求項９】
前記変更影響解析部は、ソフトウェア要素間の依存関係の強さを、少なくとも、線の太さと、線の長さと、線の種類と、線の色と、注釈文字とのいずれか、又は、線の太さと線の長さと線の種類と線の色と注釈文字との２つ以上の組み合わせによって表示する請求項８に記載のソフトウェア分析装置。
【請求項１０】
前記変更影響解析部は、表示部に表示したソフトウェア要素について、使用者が選択したソフトウェア要素を表示又は非表示又は強調表示する請求項１から９いずれか１項に記載のソフトウェア分析装置。
【請求項１１】
前記分析部は、同一のソフトウェアのバージョンが異なるソフトウェア要素の変更情報又は差分情報を分析し、
前記記憶部は、前記変更情報又は前記差分情報を保存し、
前記変更影響解析部は、前記記憶部に保存されている前記変更情報又は前記差分情報を参照し、前記変更情報又は前記差分情報のあるソフトウェア要素を前記表示部に表示する請求項１から１０いずれか１項に記載のソフトウェア分析装置。
【請求項１２】
前記記憶部は、前記ソースコードの情報又は前記ソースコードに関連した関連文書の情報を保存し、
前記変更影響解析部は、ソフトウェア要素とともに、前記ソースコードの情報又は前記関連文書の情報を前記表示部に表示する請求項１から１１いずれか１項に記載のソフトウェア分析装置。
【請求項１３】
システムによって統一された固定値を使用するソフトウェアのソフトウェア分析方法であって、
ソフトウェアのソースコードを取得するソースコード取得工程と、
前記ソースコードから前記固定値を抽出する固定値抽出工程と、
前記ソースコードからプログラム要素を抽出して、前記固定値と前記プログラム要素との関連を抽出するプログラム要素抽出工程と、
前記固定値と前記プログラム要素との関連を分析結果情報として記憶部に記憶する記憶工程と、
前記記憶部に記憶された複数のソフトウェアのソースコードの分析結果情報から複数のソフトウェアの依存関係を解析する変更影響解析工程と
を備えたソフトウェア分析方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はソフトウェア分析装置及びソフトウェア分析方法に関し、特に、ソフトウェアの構造を解析し、ソフトウェアの依存関係を可視化する装置に関する。
【背景技術】
【０００２】
ソフトウェアは多機能化によってその規模又は複雑さが増大している。
また、複数のソフトウェア又は機器が連動して一つのシステムを構築することで付加価値の高い機能を実現することも増えており、数十〜数百の装置で一つのシステムを構築することも珍しくない。【０００３】
こうした状況の中でソフトウェアの開発を行うために、ある装置に実施した変更がシステム全体のどの部分に影響するかの見極めが非常に重要になっている。開発者が影響範囲を正しく認識しないまま変更を行うと、無関係だと思われていた装置又は機能が仕様の不整合に起因する誤作動を起こす可能性がある。【０００４】
一般的に、変更が影響する範囲は、そのソフトウェアに関する設計文書から検討することができる。しかし、設計書は自然言語で書かれるため、機械的に処理することが難しく、人手による調査では時間がかかり、かつ間違いが発生する可能性も高い。【０００５】
設計書に機械処理可能なＵＭＬ（Ｕｎｉｆｉｅｄ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ）等のモデルが含まれている場合においても、設計文書の内容が欠落していたり古くなっている場合がある。このため、実際に動作しているソフトウェアと設計書の内容との不整合のために正しい結果が得られない可能性がある。【０００６】
別のアプローチとして、ソフトウェアのソースコードを解析して影響範囲を特定する取り組みが考えられる。【０００７】
特許文献１では、コンピュータでソフトウェアのソースコードを解析し、その実行パス又は変数の依存関係といった影響範囲を特定するための情報を、フローチャート又は木構造で使用者に提供する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１３−１５６７８６号公報
【特許文献２】特開平０９−１６０７６５号公報
【特許文献３】特開平１０−０９７４１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１の技術では、ソースコードに記述されている変数の代入又は参照といった依存関係を使用するため、通信で接続されている他の機器で動作しているソフトウェアを含めた影響範囲を示すことができないという課題がある。【００１０】
本発明は、システムを構成する複数の機器間で動作するソフトウェアにまたがる影響範囲を分析することを目的とする。
【課題を解決するための手段】
【００１１】
この発明のソフトウェア分析装置は、
データを処理するソフトウェアのソフトウェア分析装置であって、
データを処理するソフトウェアのソースコードを分析して、データを識別するために使用する固定値と前記ソフトウェアを構成するソフトウェア要素とを抽出し、前記固定値と前記ソフトウェア要素とを対応付ける分析部と、
前記分析部で対応付けられた前記固定値と前記ソフトウェア要素との対応情報を分析結果情報として保存する記憶部と、
前記記憶部に保存した前記分析結果情報に基づいて、ソフトウェアの依存関係を求める変更影響解析部と、
前記変更影響解析部で求めた依存関係を表示する表示部と
を備えたことを特徴とする。
【発明の効果】
【００１２】
本発明では、ソフトウェアを解析して得た固定値をもとにして複数のソフトウェアを対応付けることでソフトウェア間の依存関係をユーザーに提供し、ソフトウェア変更時の変更影響を追跡可能にする。
【図面の簡単な説明】
【００１３】
【図１】ソフトウェア分析装置１００の基本構成図である。
【図２】複数装置と複数ソフトウェアで構成されるシステムの模式図である。
【図３】通信路上でやり取りするデータの例である。
【図４】ソフトウェア１のソースコードの例である。
【図５】ソフトウェア２のソースコードの例である。
【図６】ソフトウェア分析方法の図である。
【図７】分析部２０の構成図である。
【図８】接続識別子別にプログラム要素の関係を保存するテーブル３１の例である。
【図９】ソフトウェアごとに依存関係を表示する例である。
【図１０】ソフトウェアごとに依存関係を図示し、部分的にプログラム要素に対する依存関係を表示する例である。
【図１１】縦軸と横軸との両方にソフトウェア要素を並べ、依存関係の有無と強さを表示する例である。
【発明を実施するための形態】
【００１４】
実施の形態１．
以下に、本発明にかかるソフトウェア分析装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
本実施の形態では、ソフトウェアの変更が他のソフトウェアに与える影響を追跡する変更影響追跡装置について説明する。
【００１５】
＊＊＊構成の説明＊＊＊
図１は本実施の形態によるソフトウェア分析装置１００の基本的な構成図である。
入力部１０は、分析対象とするソフトウェアのソースコードと関連文書を入力する。分析対象とするソフトウェアは通信データを処理するソフトウェアである。また、入力部１０は、使用者の指示及び使用者の選択を入力する。
分析部２０は、入力部１から入力されたソースコードを分析する。分析部２０は、通信データを処理するソフトウェアのソースコードを分析して、通信データを識別するために使用する固定値と前記ソフトウェアを構成するソフトウェア要素とを抽出し、固定値とソフトウェア要素とを対応付ける。
記憶部３０は、分析部２０で対応付けられた固定値とソフトウェア要素との対応情報を分析結果情報として保存する。記憶部３０は、さらに、入力部１０から得られたソースコード、設計書、試験仕様書といった付帯情報及び関連文書などをソフトウェアと関連付けて保存しておく。
変更影響解析部４０は、記憶部３０に保存した分析結果情報に基づいて、ソフトウェアの依存関係を求める。変更影響解析部４０は、記憶部３０に蓄積しているソフトウェアの分析結果からソフトウェア間の変更影響範囲の情報を作成する。
表示部５０は、前記変更影響解析部で求めた依存関係を表示する。表示部５は、変更影響解析部４０で作成した変更影響範囲の情報を使用者に表示する。
【００１６】
図１に基づき、本実施の形態に係るソフトウェア分析装置１００のハードウェア構成を説明する。
ソフトウェア分析装置１００は、入力装置６０、プロセッサ７０、記憶装置８０、及び、表示装置９０から構成される。
【００１７】
入力装置６０は、具体的にはキーボード、マウス、入力デバイスである。入力デバイスは、具体的には、リーダ、スキャナである。入力装置６０は、通信インタフェース、メモリスティックインタフェースなどの入力インタフェースでもよい。
【００１８】
プロセッサ７０は、プロセッシングを行うＩＣであり、プログラムを実行することにより、分析部２０と変更影響解析部４０との処理を実現する。ＩＣは、Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略である。プロセッサ７０は、具体的には、ＣＰＵ、ＤＳＰ、ＧＰＵである。ＣＰＵは、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略である。ＤＳＰは、Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒの略である。ＧＰＵは、Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略である。プロセッサ７０は、処理回路でもよい。
【００１９】
記憶装置８０は、具体的には、ＲＡＭ及びＨＤＤである。ＲＡＭは、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙの略である。ＨＤＤは、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅの略である。記憶装置８０は、ＲＯＭ及びフラッシュメモリといった他のハードウェアで構成されてもよい。ＲＯＭは、Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙの略である。
【００２０】
表示装置９０は、具体的には、ディスプレイ装置、液晶表示装置、プロジェクタ装置である。
【００２１】
プロセッサ７０によって実現される各機能の処理の結果を示す情報とデータと信号値と変数値は、記憶装置８０、又は、プロセッサ７０内のレジスタ又はキャッシュメモリに記憶される。以下の説明では、プロセッサ７０によって実現される各機能の処理の結果を示す情報とデータと信号値と変数値は、記憶装置８０に記憶されるものとして説明する。
【００２２】
プロセッサ７０によって実現される各機能を実現するプログラムは、記憶装置８０に記憶されている。しかし、このプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスクといった可搬記憶媒体に記憶されてもよい。
【００２３】
ソフトウェア分析装置１００のハードウェアは、具体的には、パーソナルコンピュータで実現できるものである。
【００２４】
図２は、複数の装置で構成される複数のソフトウェアシステムを模式的に表したものである。簡単のために装置２台で構成される１：１のシステムを記述しているが、本実施の形態は、接続する装置の数にかかわらず適用できる。
装置１１は装置１２と通信路１３で接続されている。装置１１と装置１２は、それぞれソフトウェア１とソフトウェア２とを有している。ソフトウェア１は、機能Ｆ１〜Ｆ３を有している。ソフトウェア２は、機能Ｆ４〜Ｆ６を有している。
ソフトウェア１とソフトウェア２とは内部に通信路１３を制御するための部位として接続点１４を備えている。各ソフトウェアの持つ機能Ｆ１〜Ｆ６はそれぞれそのソフトウェアの接続点１４を介して通信を行う。ここで、接続点１４とは、ソフトウェアに組み込まれたルーチンであり、関連する機能を結びつけるためのルーチンである。具体的には、機能Ｆ１と機能Ｆ４とが関連している処理をする場合、接続点１４とは機能Ｆ１と機能Ｆ４とを結びつける部分をいう。
このように各機能Ｆ１〜Ｆ６は一つの通信路１３を共有しているため、各機能の通信を正しく行うためには、通信路上を通すデータを機能ごとに区別できる必要がある。具体的には、機能Ｆ１のデータは、機能Ｆ４によって処理されなければならないため、通信路上を通す機能Ｆ１のデータを機能２のデータと機能３のデータとから区別する必要がある。
【００２５】
説明をわかりやすくするために、以下のような具体例を用いる。
図２の装置１１と装置１２は、会社Ａの各部署の処理をする装置である。
機能Ｆ１と機能Ｆ４は、会社の部署が“経理部”の処理をするものとする。
機能Ｆ２と機能Ｆ５は、会社の部署が“営業部”の処理をするものとする。
機能Ｆ３と機能Ｆ６は、会社の部署が“製造部”の処理をするものとする。
【００２６】
図３は、通信プロトコルとして定められているフォーマットの例であり、通信路上を通してやり取りするデータの一例を示している。
宛先データ２１は、送信先の装置を決定するために使用される値であり、具体的には、宛先アドレスである。
接続識別子２２は、後に続くデータ本体２３を受信した装置で適切な機能に振り分けるために付与されている値であり、プロトコルによって機能（データの内容）ごとに定められた固定値（定数）である。接続識別子２２は、他のソフトウェアとの通信を行う際に通信内容の識別のために付与または参照する固定値の具体例である。
接続識別子２２の具体的な値は、以下のものである。
部署が“経理部”なら、接続識別子＝１。
部署が“営業部”なら、接続識別子＝２。
部署が“製造部”なら、接続識別子＝３。
部署が“ＡＡＡ”なら、接続識別子＝４。
部署が“ＢＢＢ”なら、接続識別子＝５。
部署が“ＣＣＣ”なら、接続識別子＝６。
接続識別子２２の値は、会社Ａのシステム全体で共通の固定値であり、通信プロトコルであらかじめ定められたものである。
データ本体２３は、実際に送受信するデータの内容であり、データの値が格納される。
チェックデータ２４は、通信の品質を担保するために付与するＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｏｄｅ）等の値である。
【００２７】
図２における各機能Ｆ１〜Ｆ６は、図３におけるデータ本体２３の値を作成・解釈する機能を含むものである。
図２における接続点１４は、図３における接続識別子２２の値を設定する機能、または、接続識別子２２の値によって対応する機能Ｆ１〜Ｆ６を決定する機能を有する。
【００２８】
図４は、ソフトウェア１のソースコードの例である。図５は、ソフトウェア２のソースコードの例である。図４と図５とも、仮想のプログラミング言語によるソースコードである。図４と図５において、「／／」は、注釈の開始を意味しており、各行の「／／」以降の記述は注釈情報である。各行の意味は、注釈情報を読めば理解できるので、ここでは、説明を簡単にする。
【００２９】
ソフトウェア１は、会社Ａの経理部、営業部、製造部のデータを作成して送信するプログラムである。
ソフトウェア２は、会社Ａの経理部、営業部、製造部のデータを受信して処理するプログラムである。
【００３０】
通常、ソフトウェアは、１単位以上のソフトウェア要素を有している。ソフトウェア要素とは、一塊の意味があるルーチンである。ソフトウェア要素の具体例は、機能Ｆ１〜Ｆ６の各機能、各関数、各ファンクションモジュールである。あるいは、ソフトウェア要素とは、関数、クラス、サブルーチン、外部ルーチンでもよい。一つのソフトウェア内に一つのソフトウェア要素のみがある場合は、ソフトウェア＝ソフトウェア要素である。
図４のソフトウェア１は、以下の６個のソフトウェア要素を有している。
１．初期値設定
２．ＭＡＩＮ
３．接続点
４．機能Ｆ１
５．機能Ｆ２
６．機能Ｆ３
【００３１】
図５のソフトウェア２は、以下の６個のソフトウェア要素を有している。
１．初期値設定
２．接続点
３．ＭＡＩＮ
４．機能Ｆ４
５．機能Ｆ５
６．機能Ｆ６
【００３２】
＊＊＊動作の説明＊＊＊
以下、図６と図７を用いて、ソフトウェア分析装置１００のソフトウェア分析方法について説明する。
分析部２０は、ソースコードを分析し、分析結果情報と共に、ソースコードと、ソースコードのバージョンと、分析時に使用した接続点と、接続識別子となる変数・定数とを記憶部３０に記憶しておく。
【００３３】
ステップＳ１０：ソースコード取得処理部２１０によるソースコード取得工程
分析部２０のソースコード取得処理部２１０は、入力部１０からソースコードを取得する。
【００３４】
ステップＳ２０：固定値抽出処理部２２０による固定値抽出工程
分析部２０の固定値抽出処理部２２０は、入力部１０から取得したソースコードを分析して、ソースコードから接続識別子を固定値として抽出し、さらに接続識別子に関連するソフトウェア要素を抽出する。
図７に示すように、固定値抽出処理部２２０では、以下の方法１〜方法５を組み合わせて接続識別子を固定値として抽出する。抽出結果は使用者によって追加・削除することもできる。
【００３５】
方法１：注釈解析部２０１がソースコードの注釈情報を参照する。
注釈解析部２０１は、分析対象のソースコードに記載されたコメント等による注釈情報を使用して、通信内容の識別のために付与する接続識別子を抽出する。
この方法を実施するためには、分析を行うソースコードに対して、あらかじめ定められた形式の注釈情報（コメント）で接続点を指定しておく、または、接続識別子となる変数又は定数を指定しておく必要がある。
分析部２はそのようなコメントを発見するとコメントで示された接続点又は接続識別子を使用する。
【００３６】
＜＜注釈情報（コメント）で接続点を指定しておく場合＞＞
あらかじめ定められた形式の注釈情報（コメント）が「／／接続点」というコメントであるものとする。
図４に示すソフトウェア１の場合、注釈解析部２０１は、「／／接続点」という、定められた形式の注釈情報を検索して、以下の接続点の記述を取得し、この記述を分析して、ソフトウェア１が接続識別子にいずれのシンボル名を利用しているか分析する。
「ＩＦ  部署＝“経理部”  ＴＨＥＮ  接続ＩＤ＝ＩＤ１
ＩＦ  部署＝“営業部”  ＴＨＥＮ  接続ＩＤ＝ＩＤ２
ＩＦ  部署＝“製造部”  ＴＨＥＮ  接続ＩＤ＝ＩＤ３」
注釈解析部２０１は、ソフトウェア１が接続識別子に以下の３個のシンボル名を利用していることがわかる。
１．ＩＤ１
２．ＩＤ２
３．ＩＤ３
次に、注釈解析部２０１は、接続識別子となるシンボル名ＩＤ１、ＩＤ２、ＩＤ３への代入文を検索し、以下の３行を検出し、接続識別子の値として、１、２、３という定数を用いていることを検出する。
「ＶＡＲ  ＩＤ１＝１  ／／接続識別子＝１の代入
ＶＡＲ  ＩＤ２＝２  ／／接続識別子＝２の代入
ＶＡＲ  ＩＤ３＝３  ／／接続識別子＝３の代入」
【００３７】
＜＜接続識別子のシンボル名をあらかじめ指定しておく場合＞＞
あらかじめ定められたシンボル名が「ＩＤ１、ＩＤ２、ＩＤ３」であるものとする。
図４に示すソフトウェア１の場合、注釈解析部２０１は、接続識別子のシンボル名ＩＤ１、ＩＤ２、ＩＤ３への代入文を検索し、以下の３行を検出し、接続識別子の値として、１、２、３という定数を用いていることを検出する。
「ＶＡＲ  ＩＤ１＝１  ／／接続識別子＝１の代入
ＶＡＲ  ＩＤ２＝２  ／／接続識別子＝２の代入
ＶＡＲ  ＩＤ３＝３  ／／接続識別子＝３の代入」
【００３８】
＜＜接続識別子となる定数をあらかじめ指定しておく場合＞＞
あらかじめ定められた定数が「１、２、３」であるものとする。
図４に示すソフトウェア１の場合、注釈解析部２０１は、接続識別子となる定数１、２、３の代入文を検索し、以下の３行を検出し、接続識別子の値１、２、３の変数が、「ＩＤ１、ＩＤ２、ＩＤ３」であることを検出する。
「ＶＡＲ  ＩＤ１＝１  ／／接続識別子＝１の代入
ＶＡＲ  ＩＤ２＝２  ／／接続識別子＝２の代入
ＶＡＲ  ＩＤ３＝３  ／／接続識別子＝３の代入」
【００３９】
また、以上の分析の結果、ソフトウェア１は、接続識別子＝１、２、３を用いており、接続識別子のシンボル名が「ＩＤ１、ＩＤ２、ＩＤ３」であることがわかる。換言すれば、ソフトウェア１は、接続識別子＝１、２、３に関連するソフトウェアであり、接続識別子＝４、５、６など接続識別子＝１、２、３以外の接続識別子には関係がないソフトウェアであることがわかる。
【００４０】
方法２：指定部２０２は、表示部５０にソースコードを開示し、使用者に接続点または接続識別子を選択させる。
指定部２０２は、使用者が分析時に指定したソースコード上の記述を使用して、通信内容の識別のために付与する接続識別子を抽出する。
使用者がそのソフトウェアに対する接続点又は接続識別子を知っている場合、解析に使用するソースコードの場所を指定して接続点又は接続識別子を指定する。
使用者が接続点又は接続識別子を選択した後の処理は、前述した注釈解析部２０１と同様の処理をすることにより、そのソフトウェアが、いずれの接続識別子を用いているソフトウェアであるか判定できる。
【００４１】
方法３：過去参照部２０３は、過去に分析済みの類似ソフトウェアの接続点の情報を参照する。
過去参照部２０３は、過去に分析済みの類似構造を持つソフトウェアの分析結果を参照して、通信内容の識別のために付与する接続識別子を抽出する。
過去に分析に使用した類似の構造を持つソフトウェアが存在する場合、過去参照部２０３は、過去の分析時に使用した接続点又は接続識別子となる変数・定数と同一名称の変数又は定数を今回の分析に使用するソースコードから抽出し、接続点又は接続識別子とする。類似の構造を持つソフトウェアの典型として、同一ソフトウェアの過去バージョンがある。
【００４２】
方法４：提示選択部２０４は、変数・定数の参照文を使用者に提示し、接続点または接続識別子を選択させる。
提示選択部２０４は、ソースコードを解析して作成した変数又は定数の参照関係又は代入関係を示す参照文又は代入文の少なくともいずれか又は両方を使用者に提示する。
提示選択部２０４は、提示した参照文又は代入文の中から参照文又は代入文を使用者に選択させて、通信内容の識別のために付与する接続識別子を抽出する。
使用者が分析するソフトウェアの構造を理解していない場合、提示選択部２０４は、ソースコードの内容から変数又は定数の参照・代入関係を表示部５０に図示して、その中から使用者に接続点又は接続識別子を選択させる。この時、提示選択部２０４は、「呼び出し元をたどると多くのプログラム要素を経由するもの」又は「参照回数の少ないもの」などから算出した優先度に従って表示する位置を前後させたり表示する文字の大きさ又は色を変更するなどして使用者が接続点又は接続識別子を選択しやすくする。
例えば、提示選択部２０４は、図４のソースコードから、以下の代入文を表示部５０に提示して、使用者に接続識別子を選択させる。
「ＶＡＲ  ＩＤ１＝１  ／／接続識別子＝１の代入
ＶＡＲ  ＩＤ２＝２  ／／接続識別子＝２の代入
ＶＡＲ  ＩＤ３＝３  ／／接続識別子＝３の代入
ＴＸＴ  部署＝“”  ／／変数の初期化
ＴＸＴ  データ本体＝“”／／変数の初期化
データ本体＝Ａ
データ本体＝Ｂ
データ本体＝Ｃ」
【００４３】
方法５：既知値利用部２０５は、既知の接続点又は接続識別子から推定する。
既知値利用部２０５は、既知の接続識別子と同様に扱われている定数、又は、既知の接続識別子が代入されている変数に直接・間接的に代入されている固定値を接続識別子として抽出する。
接続点では、送信データとして接続識別子となる定数を設定している。言い換えると、接続点では、変数に対して定数の代入を直接的又は間接的に実施している。そこで、既知値利用部２０５は、既知の接続点で代入されている変数に代入されているほかの値又は、代入されている定数と同様に扱われている（同じテーブルのカラムに使用されている、等）定数を接続識別子とする。
既知値利用部２０５は、「接続ＩＤ」が接続識別子のシンボル名であることが既知である場合、図４に示すソフトウェア１の接続点では、以下のとおり、「接続ＩＤ」に対して３個の代入文があるため、ＩＤ１、ＩＤ２、ＩＤ３を接続識別子であると判断することができる。
「ＩＦ  部署＝“経理部”  ＴＨＥＮ  接続ＩＤ＝ＩＤ１
ＩＦ  部署＝“営業部”  ＴＨＥＮ  接続ＩＤ＝ＩＤ２
ＩＦ  部署＝“製造部”  ＴＨＥＮ  接続ＩＤ＝ＩＤ３」
【００４４】
あるいは、既知値利用部２０５は、ＩＤ１が接続識別子のシンボル名であることが既知である場合、図４に示すソフトウェア１では、以下のとおり、ＩＤ１＝１と同様に、ＩＤ２＝２、ＩＤ３＝３が記述されているのでＩＤ２、ＩＤ３も接続識別子のシンボル名であると判断することができる。
「ＶＡＲ  ＩＤ１＝１  ／／接続識別子＝１の代入
ＶＡＲ  ＩＤ２＝２  ／／接続識別子＝２の代入
ＶＡＲ  ＩＤ３＝３  ／／接続識別子＝３の代入」
【００４５】
あるいは、また、既知値利用部２０５は、以下のとおり、接続ＩＤ＝ＩＤ１と同様に、接続ＩＤ＝ＩＤ２、接続ＩＤ＝ＩＤ３と記述されているので、ＩＤ２、ＩＤ３も接続識別子のシンボル名であると判断することができる。
「ＩＦ  部署＝“経理部”  ＴＨＥＮ  接続ＩＤ＝ＩＤ１
ＩＦ  部署＝“営業部”  ＴＨＥＮ  接続ＩＤ＝ＩＤ２
ＩＦ  部署＝“製造部”  ＴＨＥＮ  接続ＩＤ＝ＩＤ３」
【００４６】
分析部２０は、注釈解析部２０１と、指定部２０２と、過去参照部２０３と、提示選択部２０４と、既知値利用部２０５を組み合わせて、ソフトウェアを分析する。
【００４７】
また、以上の分析の結果、ソフトウェア１は、接続識別子＝１、２、３を固定値として用いており、接続識別子のシンボル名が「ＩＤ１、ＩＤ２、ＩＤ３」であることがわかる。
また、同様の分析の結果、ソフトウェア２は、接続識別子＝１、２、３を固定値として用いており、接続識別子のシンボル名が「識別１、識別２、識別３」であることがわかる。
【００４８】
ステップＳ３０：プログラム要素抽出処理部２３０によるプログラム要素抽出工程
分析部２０のプログラム要素抽出処理部２３０では、構文解析と文法解析に基づいてソフトウェア要素を抽出する。
前述したとおり、図４のソフトウェア１は、６個のソフトウェア要素を有しており、プログラム要素抽出処理部２３０は、構文解析と文法解析に基づいて６個のソフトウェア要素を抽出する。
さらに、プログラム要素抽出処理部２３０では、固定値抽出処理で取得した接続識別子の定数について、その参照関係をたどって、それに関連するプログラム要素の情報を収集する。
図４に示すソフトウェア１の場合、プログラム要素抽出処理部２３０は、
「ＶＡＲ  ＩＤ１＝１」と、
「ＩＦ  部署＝“経理部”  ＴＨＥＮ  接続ＩＤ＝ＩＤ１」と
から、
「ＩＦ  部署＝“経理部”  ＴＨＥＮ  ＣＡＬＬ“経理部処理”」
を取得し、
「ＦＵＮＣＴＩＯＮ“経理部処理”」
が、接続識別子＝１に対応するプログラム要素であると判断する。
同様に、プログラム要素抽出処理部２３０は、「ＦＵＮＣＴＩＯＮ“営業部処理”」が、接続識別子＝２に対応するプログラム要素であり、「ＦＵＮＣＴＩＯＮ“製造部処理”」が、接続識別子＝３に対応するプログラム要素であると判断する。
【００４９】
また、分析部２０は、同一のソフトウェアの異なるバージョンに対して分析を実施する。
分析部２０は異なるバージョンのソフトウェアのプログラム要素が変更されているかを比較してプログラム要素の変更の有無を示す変更情報を検出する。プログラム要素が変更されている場合、分析部２０は異なるプログラム要素の差分を差分情報として検出する。
【００５０】
ステップＳ４０：関係強さ計算処理部２４０による関係強さ計算工程
分析部２０の関係強さ計算処理部２４０では、ソフトウェア要素ごとに、接続識別子との関係の強さを計算する。関係強さ計算処理部２４０は、例えば接続識別子と直接的な参照関係にある要素を「強」とし、その要素の出力に依存するなど間接的な依存関係にある要素をその介在する要素の数によって「弱」とする。
また、具体例として、以下のように接続識別子＝１とソフトウェア要素Ａとの関係の強さを計算する。
接続識別子＝１の場合に、ソフトウェア要素Ａが必ず実行されデータの内容が更新される場合、依存関係を「強」とする。
接続識別子＝１の場合に、ソフトウェア要素Ａが必ず実行されデータの内容が更新されないが参照される場合、依存関係を「中」とする。
接続識別子＝１の場合に、ソフトウェア要素Ａが接続識別子＝１を参照しているだけの場合、依存関係を「弱」とする。
ソフトウェア要素Ａが接続識別子＝１を全く利用していない場合、依存関係を「無」とする。
【００５１】
ステップＳ５０：記憶処理部２５０による記憶工程
分析部２０の記憶処理部２５０は、分析によって得られた接続点と、接続識別子と、接続識別子と依存関係のあるプログラム要素の情報とを分析結果情報として記憶部３０に引き渡す。
記憶部３０では、引き渡された分析結果情報を保存するとともに、接続識別子の値ごとに図８に示すテーブル３１に保存する。値ごとに保存するとは、接続識別子として使用されているプログラム上の定数値を識別するためのシンボル名又は変数名ではなく、その定数の実際の値を用いることを表す。具体的には、ＩＤ１、ＩＤ２、ＩＤ３というシンボル名ではなく、１、２、３という値そのものを用いる。その理由は、１、２、３という接続識別子の値は、同一プロトコルを実装する複数のソフトウェアで統一されている固定値であるが、同一プロトコルを実装する複数のソフトウェアにおいて、実装に使用する定数値のシンボル名まで統一されているとは限らないからである。
例えば、ソフトウェア１と２とは、接続識別子＝１、２、３を用いているが、ソフトウェア１は、接続識別子のシンボル名が「ＩＤ１、ＩＤ２、ＩＤ３」であり、ソフトウェア２は、接続識別子のシンボル名が「識別１、識別２、識別３」であるから、シンボル名を用いてはテーブルが作成できない。
【００５２】
これにより、記憶処理部２５０は、図８に示すテーブル３１を記憶部３０に構築する。
図中のテーブル３１の１行目の各列のタイトルになっている「Ｆ１」、「Ｆ２」、・・・、「関数１」、「関数２」という値は、分析対象としたプログラムに含まれていた関数又はクラスといったプログラム要素を示している。
図中のテーブル３１の１列目の各行のタイトルになっている「１」、「２」、「３」という値は、１、２、３という接続識別子の値を示している。
テーブル３１は、たとえば「Ｆ１」はソフトウェア１の機能Ｆ１、「Ｆ２」はソフトウェア１の機能Ｆ２、「関数１」はソフトウェア３の関数１、「関数２」はソフトウェア３の関数２といったように、分析を実施したソフトウェアのプログラム要素と接続識別子の依存関係を関連付けて保存している。
【００５３】
テーブル３１において、各記号の意味は以下のとおりである。
テーブル３１において、「強」、「中」、「弱」、「×」等は依存の強度を示す。「強」、「中」、「弱」、「×」の代わりに数値でもよい。
「強」＝プログラム要素と接続識別子の依存関係が「強」
「中」＝プログラム要素と接続識別子の依存関係が「中」
「弱」＝プログラム要素と接続識別子の依存関係が「弱」
「×」＝プログラム要素と接続識別子の依存関係が「無」
【００５４】
たとえば、接続識別子＝２を見ると、接続識別子＝２に対して「機能Ｆ２」要素と「機能Ｆ５」要素とは関連が強く、「機能Ｆ１」要素、「機能Ｆ３」要素、「機能Ｆ４」要素、「機能Ｆ６」要素は関連がないことを示している。
分析部２０で接続識別子に対する参照関係を分析しなかった場合は、記憶処理部２５０は、ソフトウェア＝ソフトウェア要素として、要素の単位としてプログラム全体を使用することができる。
あるいは、分析部２０で接続識別子に対する参照関係を分析したが、ソフトウェア要素が一つだけ検出された場合、ソフトウェア＝ソフトウェア要素として、要素の単位としてプログラム全体を使用することができる。
図８では、記憶処理部２５０が、ソフトウェア４＝ソフトウェア要素として、プログラム全体をソフトウェア要素として使用している。
【００５５】
分析部２０の記憶処理部２５０は、記憶部３０に分析対象のソフトウェアの接続点又は接続識別子のシンボル名に関する情報を合わせて保存する。これら接続点又は接続識別子のシンボル名に関する情報は、分析部２０の方法３によって接続点又は接続識別子を抽出するために使用する。
【００５６】
分析部２０の記憶処理部２５０は、記憶部３０に、接続識別子にかかる情報としてプログラム要素の依存関係の強さのほかに、依存関係の表示時に関連情報として表示するために使用者が分析時に関連情報として登録した各種関連文書を合わせて記憶しておく。
【００５７】
分析部２０が同一のソフトウェアの異なるバージョンに対して分析を実施した場合、記憶処理部２５０は、接続識別子の分析結果情報のほかに、プログラム要素が変更されているかを示す変更情報と差分情報とを記憶部３０に引き渡す。記憶部３０では分析結果情報と合わせて、プログラム要素に対応して変更情報と差分情報とを保存する。
【００５８】
分析部２０は、図８に示すテーブル３１をソフトウェアの分析のたびに作成して分析結果情報を蓄積してゆく。分析部２０が、ソフトウェア１、２、３、４を順に分析した場合、分析部２０は、まず、テーブル３１のソフトウェア１の部分だけ登録することができる。次に、分析部２０がソフトウェア２を分析することにより、テーブル３１のソフトウェア２の部分が追加登録できる。次に、分析部２０がソフトウェア３を分析することにより、テーブル３１のソフトウェア３の部分が追加登録され、さらに、分析部２０がソフトウェア４を分析することにより、テーブル３１のソフトウェア４の部分が追加登録できる。
以上が、分析部２０の処理である。
分析部２０の分析では、各ソフトウェアの分析をして分析結果情報を蓄積し、テーブル３１を構築するだけであり、ソフトウェア間の依存関係の解析は後述する変更影響解析部４０が実行する。
【００５９】
ステップＳ６０：変更影響解析部４０による変更影響解析工程
変更影響解析部４０は、通信内容の識別のために付与する接続識別子という固定値をもとに記憶部３０に保存した分析済みの複数のソフトウェアの依存関係を算出するものである。
変更影響解析部４０は、複数のソフトウェア間の依存関係を解析するものであるから、テーブル３１に複数のソフトウェアの分析結果情報が記憶されている場合に動作する。
変更影響解析部４０では、記憶部３０に保存されている分析結果情報とテーブル３１を読み出し整理して、ソフトウェア又はそのソフトウェア要素ごとに依存関係の有無又は強さを求める。変更影響解析部４０は、ソフトウェア間の依存関係の有無は、同じ接続識別子の値を使用しているかどうかによって求める。変更影響解析部４０は、図８のテーブル３１の各行に記載された接続識別子の値ごとにソフトウェア要素間の依存関係の有無を判断する。具体的には、変更影響解析部４０は、１行目を検索して、接続識別子＝１と関連するソフトウェア要素は、機能Ｆ１と機能Ｆ４と関数１とソフトウェア４であることがわかるので、機能Ｆ１と機能Ｆ４と関数１とソフトウェア４とが依存関係のあるソフトウェア要素であると判断する。
また、変更影響解析部４０は、同じ接続識別子の値を使用しているソフトウェア要素の数から依存関係の強さを求める。具体的には、変更影響解析部４０は、図８のテーブル３１においてソフトウェア３の２個のソフトウェア要素が接続識別子＝３と関係しているため接続識別子＝３とソフトウェア３との依存関係の強度が強いと判断する。
また、変更影響解析部４０は、同じ接続識別子の値を使用しているソフトウェア要素の比率から依存関係の強さを求める。具体的には、変更影響解析部４０は、図８のテーブル３１においてソフトウェア３の２個のソフトウェア要素がすべて接続識別子＝３と関係しているため接続識別子＝３とソフトウェア３との依存関係の強度が強いと判断する。
【００６０】
変更影響解析部４０は、依存関係の解析結果を表示部５０に表示する。
変更影響解析部４０は、表示部５０に、依存関係の有無又は強さを図又は表を用いてグラフィカルに表示する。このとき、使用者は、表示する単位を「ソフトウェア」「ソフトウェアのプログラム要素」「ソフトウェアのプログラム要素が含まれるファイル」「ソフトウェアのプログラム要素が含まれるファイルの存在するフォルダ」「使用者が定義したプログラム要素のまとまり」などから選択することができる。
【００６１】
図９は、依存関係の有無をソフトウェアごとに表示した場合の例である。
変更影響解析部４０は、ソフトウェアまたはソフトウェア要素をノードとし、依存関係の有無によって接続された有向または無向のグラフを表示部５０に表示する。
変更影響解析部４０は、少なくとも、ソフトウェア間のリンク部分の線の長さ、線の太さ、線の色、線の種類、及び、線への注記（注釈文字）のいずれかによって依存の強さを示すことができる。又は、変更影響解析部４０は、線の長さ、線の太さ、線の色、線の種類、及び、線への注記（注釈文字）の２つ以上の組み合わせによって依存の強さを示すことができる。図９では、依存関係の強さを、線の長さと、線の太さと、線の種類とによって表示している。
変更影響解析部４０は、分析時に登録した設計文書又は試験仕様などの関連文書もこの図と関連付けて表示する。
【００６２】
変更影響解析部４０は、依存関係を表すリンクについて、送受信の方向によって向きを持たせる場合がある。図９では、ソフトウェア４からソフトウェア３に向きを持たせている。
【００６３】
また、変更影響解析部４０は、表示するソフトウェア要素の単位については、異なる単位を組み合わせて図１０のように「ソフトウェア１とソフトウェア２の各機能との関連」といった表示を行うことができる。
【００６４】
変更影響解析部４０は、依存関係を表で表示する場合は、図８のテーブル３１をそのまま表示部５０に表示する。図８のテーブル３１は、通信内容の識別のために付与する接続識別子と、ソフトウェア又はソフトウェアの各要素をそれぞれ軸に持つ表であり、変更影響解析部４０は、依存関係の有無または依存関係の度合いを記号あるいは数値で示した表を表示部５０に表示する。
あるいは、図１１に示すように、縦軸と横軸との両方に使用者が選択したソフトウェア又はソフトウェア要素を並べ、それに対する依存関係の有無又は強さを表示する。図１１のテーブル３１では、縦軸と横軸とのソフトウェア要素の交点に依存関係の有無又は強さを表示している。例えば、図１１のテーブル３１の１行目には、以下のようなソフトウェア１の機能Ｆ１と他のソフトウェア要素との関係が示されている。
ソフトウェア１の機能Ｆ１とソフトウェア１の機能Ｆ２とは依存関係が「無」。
ソフトウェア１の機能Ｆ１とソフトウェア１の機能Ｆ３とは依存関係が「無」。
ソフトウェア１の機能Ｆ１とソフトウェア２の機能Ｆ４とは依存関係が「強」。
ソフトウェア１の機能Ｆ１とソフトウェア２の機能Ｆ５とは依存関係が「無」。
ソフトウェア１の機能Ｆ１とソフトウェア２の機能Ｆ６とは依存関係が「無」。
ソフトウェア１の機能Ｆ１とソフトウェア３の関数１とは依存関係が「強」。
ソフトウェア１の機能Ｆ１とソフトウェア３の関数２とは依存関係が「無」。
ソフトウェア１の機能Ｆ１とソフトウェア４とは依存関係が「弱」。
また、図１１のテーブル３１のソフトウェア２とソフトウェア３とは、すべて「×」なので、ソフトウェア２とソフトウェア３とは、依存関係がないことがわかる。
【００６５】
また、分析部２０が同一ソフトウェアの複数バージョンについて分析を実施している場合、記憶部３０にはソフトウェア要素の変更有無を示す変更情報と差分情報が保存されている。変更影響解析部４０は、保存されている任意の２バージョン間のソフトウェア要素の変更情報と差分情報を参照し、その変更情報と差分情報とに基づいて変更又は差分のあるソフトウェア又はソフトウェア要素を抽出して複数バージョン間で変更されたプログラム要素を表示部５０に表示する。その際、変更影響解析部４０は、変更情報と差分情報があることを表示部５０に表示する。
【００６６】
表示部５０は、入力部１０で使用者が設定した内容に沿って依存関係を表示する部位であり、使用者は表示部５０に表示された内容を参照してソフトウェア変更時の影響範囲を追跡する。
使用者は、表示部５０に表示しているソフトウェア又はソフトウェア要素を任意に選択することができる。変更影響解析部４０は、使用者が選択したソフトウェア又はソフトウェア要素のみを表示部５０に表示する。あるいは、変更影響解析部４０は、使用者が選択したソフトウェア又はソフトウェア要素を表示部５０から削除して非表示にする。
【００６７】
変更影響解析部４０は、使用者が表示部５０に表示されたソフトウェアまたはプログラム要素を選択した場合、その選択されたソフトウェアまたはプログラム要素と依存関係のあるソフトウェアまたはプログラム要素のみを表示する。その際に、変更影響解析部４０は、依存関係の強さに応じて依存関係を強調表示する。
例えば、図９において、使用者が表示部５０に表示されたソフトウェア３を選択した場合、その選択されたソフトウェア３と依存関係のあるソフトウェア１、４とのみを表示する。
これにより、使用者が選択した変更予定ソフトウェア又は変更予定ソフトウェア要素と、他のソフトウェア又は他のソフトウェアのプログラム要素との依存関係が明確になり、容易に依存関係を確認する依存関係可視化装置が提供できる。
【００６８】
＊＊＊実施の形態の効果の説明＊＊＊
以上のように、本実施の形態にかかる変更影響分析装置は、複数のソフトウェア又は機器で構築したシステムにおいてそれらのソフトウェア間の依存関係を使用者に提供することができるため、ソフトウェア変更時に変更影響を調査・追跡する場合に適する。
【００６９】
＊＊＊他の構成の説明＊＊＊
通信プロトコルで規定された接続識別子を例にして、通信データを識別するために使用する固定値を説明したが、通信プロトコルで規定された固定値でなくてもよく、通信データを識別するために使用する固定値であれば、どのような固定値でも構わない。
また、通信データを識別するために使用する固定値でなくてもよく、固定値とは、システム内に存在する全ソフトウェアあるいは全ハードウェアあるいは全ファームウェアでデータを識別するために統一して使用される不変値であればよい。
また、固定値とは、数値に限らず、記号、符号でもよい。また、固定値の名前は、どのような名前でもよく、固定値の名前は、識別ＩＤ、識別タグ、ＩＤ、属性値などでも構わない。
【００７０】
また、分析対象となるソフトウェアは、直接通信を司る通信ソフトウェアでもよいし、通信ソフトウェアとデータを譲受するデータ処理ソフトウェアでもよい。接続識別子２２とデータ本体２３とを対にしてデータを譲受するデータ処理ソフトウェアであれば、分析対象とすることができる。
【００７１】
また、使用者の指示によって関係強さ計算処理部２４０の操作は実行しないことも可能である。その場合、表示部５０への依存関係の表示時に依存関係の強弱の表示ができなくなる。
【００７２】
また、変更影響解析部４０および表示部５０が処理するのに必要な情報が含まれていれば、記憶部３０への記録の方式は問わない。
また、変更影響解析部４０は、図９又は図１０に示す図形と、図８又は図１１に示すテーブルとを表示部５０の同一画面に表示してもよい。
【００７３】
また、記憶部３０がソフトウェア分析装置１００とは別に存在していてもよく、記憶部３０がソフトウェア分析装置１００とは別に存在している場合は、複数のソフトウェア分析装置１００が分析部２０の分析結果を共有することができる。
【００７４】
また、入力部１０又は表示部５０がソフトウェア分析装置１００とは別に存在していてもよく、入力部１０又は表示部５０がソフトウェア分析装置１００とは別に存在している場合は、複数のユーザーがソフトウェア分析装置１００を共有することができる。
【００７５】
また、分析部２０が分析するソースコードは、あらかじめ記憶部３０に記憶しておき、分析部２０は、記憶部３０に記憶したソースコードを分析してもよい。
また、分析部２０は、同一のソフトウェアのバージョンが異なるソフトウェア要素の変更情報と差分情報とを分析しなくてもよく、変更情報のみを分析してもよい。あるいは、差分情報のみを分析してもよい。
【００７６】
また、変更影響解析部４０は、記憶部３０に保存されている接続識別子とプログラム要素の依存関係を参照する以外にも、独自にソースコードを解析して依存関係を検出するようにしてもよい。これは、分析部２０の分析段階でプログラム要素への依存関係を解析しないことによる分析時間の短縮又は、記憶部３０に保存しておくデータの縮小などを目的に実施する。
【００７７】
また、分析部２０と変更影響解析部４０との処理を、一つのプログラムで同時に実行してもよい。あるいは、分析部２０の一部の処理を変更影響解析部４０が実行してもよいし、変更影響解析部４０の一部の処理を分析部２０が実行してもよい。
【符号の説明】
【００７８】
１０  入力部、１１  装置、１２  装置、１３  通信路、１４  接続点、２０  分析部、２１  宛先データ、２２  接続識別子、２３  データ本体、２４  チェックデータ、３０  記憶部、３１  テーブル、４０  変更影響解析部、５０  表示部、６０  入力装置、７０  プロセッサ、８０  記憶装置、９０  表示装置、１００  ソフトウェア分析装置、２０１  注釈解析部、２０２  指定部、２０３  過去参照部、２０４  提示選択部、２０５  既知値利用部、２１０  ソースコード取得処理部、２２０  固定値抽出処理部、２３０  プログラム要素抽出処理部、２４０  関係強さ計算処理部、２５０  記憶処理部。
【図１】
2017141893.tif 000003
【図２】
2017141893.tif 000004
【図３】
2017141893.tif 000005
【図４】
2017141893.tif 000006
【図５】
2017141893.tif 000007
【図６】
2017141893.tif 000008
【図７】
2017141893.tif 000009
【図８】
2017141893.tif 000010
【図９】
2017141893.tif 000011
【図１０】
2017141893.tif 000012
【図１１】
2017141893.tif 000013
【国際調査報告】
2017141893.tif 000014
2017141893.tif 000015
2017141893.tif 000016
2017141893.tif 000017