JPWO2017141893A1 - ソフトウェア分析装置及びソフトウェア分析方法 - Google Patents
ソフトウェア分析装置及びソフトウェア分析方法 Download PDFInfo
- Publication number
- JPWO2017141893A1 JPWO2017141893A1 JP2018500113A JP2018500113A JPWO2017141893A1 JP WO2017141893 A1 JPWO2017141893 A1 JP WO2017141893A1 JP 2018500113 A JP2018500113 A JP 2018500113A JP 2018500113 A JP2018500113 A JP 2018500113A JP WO2017141893 A1 JPWO2017141893 A1 JP WO2017141893A1
- Authority
- JP
- Japan
- Prior art keywords
- software
- unit
- analysis
- fixed value
- source code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
Description
また、複数のソフトウェア又は機器が連動して一つのシステムを構築することで付加価値の高い機能を実現することも増えており、数十〜数百の装置で一つのシステムを構築することも珍しくない。
データを処理するソフトウェアのソフトウェア分析装置であって、
データを処理するソフトウェアのソースコードを分析して、データを識別するために使用する固定値と前記ソフトウェアを構成するソフトウェア要素とを抽出し、前記固定値と前記ソフトウェア要素とを対応付ける分析部と、
前記分析部で対応付けられた前記固定値と前記ソフトウェア要素との対応情報を分析結果情報として保存する記憶部と、
前記記憶部に保存した前記分析結果情報に基づいて、ソフトウェアの依存関係を求める変更影響解析部と、
前記変更影響解析部で求めた依存関係を表示する表示部と
を備えたことを特徴とする。
以下に、本発明にかかるソフトウェア分析装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
本実施の形態では、ソフトウェアの変更が他のソフトウェアに与える影響を追跡する変更影響追跡装置について説明する。
図1は本実施の形態によるソフトウェア分析装置100の基本的な構成図である。
入力部10は、分析対象とするソフトウェアのソースコードと関連文書を入力する。分析対象とするソフトウェアは通信データを処理するソフトウェアである。また、入力部10は、使用者の指示及び使用者の選択を入力する。
分析部20は、入力部1から入力されたソースコードを分析する。分析部20は、通信データを処理するソフトウェアのソースコードを分析して、通信データを識別するために使用する固定値と前記ソフトウェアを構成するソフトウェア要素とを抽出し、固定値とソフトウェア要素とを対応付ける。
記憶部30は、分析部20で対応付けられた固定値とソフトウェア要素との対応情報を分析結果情報として保存する。記憶部30は、さらに、入力部10から得られたソースコード、設計書、試験仕様書といった付帯情報及び関連文書などをソフトウェアと関連付けて保存しておく。
変更影響解析部40は、記憶部30に保存した分析結果情報に基づいて、ソフトウェアの依存関係を求める。変更影響解析部40は、記憶部30に蓄積しているソフトウェアの分析結果からソフトウェア間の変更影響範囲の情報を作成する。
表示部50は、前記変更影響解析部で求めた依存関係を表示する。表示部5は、変更影響解析部40で作成した変更影響範囲の情報を使用者に表示する。
ソフトウェア分析装置100は、入力装置60、プロセッサ70、記憶装置80、及び、表示装置90から構成される。
装置11は装置12と通信路13で接続されている。装置11と装置12は、それぞれソフトウェア1とソフトウェア2とを有している。ソフトウェア1は、機能F1〜F3を有している。ソフトウェア2は、機能F4〜F6を有している。
ソフトウェア1とソフトウェア2とは内部に通信路13を制御するための部位として接続点14を備えている。各ソフトウェアの持つ機能F1〜F6はそれぞれそのソフトウェアの接続点14を介して通信を行う。ここで、接続点14とは、ソフトウェアに組み込まれたルーチンであり、関連する機能を結びつけるためのルーチンである。具体的には、機能F1と機能F4とが関連している処理をする場合、接続点14とは機能F1と機能F4とを結びつける部分をいう。
このように各機能F1〜F6は一つの通信路13を共有しているため、各機能の通信を正しく行うためには、通信路上を通すデータを機能ごとに区別できる必要がある。具体的には、機能F1のデータは、機能F4によって処理されなければならないため、通信路上を通す機能F1のデータを機能2のデータと機能3のデータとから区別する必要がある。
図2の装置11と装置12は、会社Aの各部署の処理をする装置である。
機能F1と機能F4は、会社の部署が“経理部”の処理をするものとする。
機能F2と機能F5は、会社の部署が“営業部”の処理をするものとする。
機能F3と機能F6は、会社の部署が“製造部”の処理をするものとする。
宛先データ21は、送信先の装置を決定するために使用される値であり、具体的には、宛先アドレスである。
接続識別子22は、後に続くデータ本体23を受信した装置で適切な機能に振り分けるために付与されている値であり、プロトコルによって機能(データの内容)ごとに定められた固定値(定数)である。接続識別子22は、他のソフトウェアとの通信を行う際に通信内容の識別のために付与または参照する固定値の具体例である。
接続識別子22の具体的な値は、以下のものである。
部署が“経理部”なら、接続識別子=1。
部署が“営業部”なら、接続識別子=2。
部署が“製造部”なら、接続識別子=3。
部署が“AAA”なら、接続識別子=4。
部署が“BBB”なら、接続識別子=5。
部署が“CCC”なら、接続識別子=6。
接続識別子22の値は、会社Aのシステム全体で共通の固定値であり、通信プロトコルであらかじめ定められたものである。
データ本体23は、実際に送受信するデータの内容であり、データの値が格納される。
チェックデータ24は、通信の品質を担保するために付与するCRC(Cyclic Redundancy Code)等の値である。
図2における接続点14は、図3における接続識別子22の値を設定する機能、または、接続識別子22の値によって対応する機能F1〜F6を決定する機能を有する。
ソフトウェア2は、会社Aの経理部、営業部、製造部のデータを受信して処理するプログラムである。
図4のソフトウェア1は、以下の6個のソフトウェア要素を有している。
1.初期値設定
2.MAIN
3.接続点
4.機能F1
5.機能F2
6.機能F3
1.初期値設定
2.接続点
3.MAIN
4.機能F4
5.機能F5
6.機能F6
以下、図6と図7を用いて、ソフトウェア分析装置100のソフトウェア分析方法について説明する。
分析部20は、ソースコードを分析し、分析結果情報と共に、ソースコードと、ソースコードのバージョンと、分析時に使用した接続点と、接続識別子となる変数・定数とを記憶部30に記憶しておく。
分析部20のソースコード取得処理部210は、入力部10からソースコードを取得する。
分析部20の固定値抽出処理部220は、入力部10から取得したソースコードを分析して、ソースコードから接続識別子を固定値として抽出し、さらに接続識別子に関連するソフトウェア要素を抽出する。
図7に示すように、固定値抽出処理部220では、以下の方法1〜方法5を組み合わせて接続識別子を固定値として抽出する。抽出結果は使用者によって追加・削除することもできる。
注釈解析部201は、分析対象のソースコードに記載されたコメント等による注釈情報を使用して、通信内容の識別のために付与する接続識別子を抽出する。
この方法を実施するためには、分析を行うソースコードに対して、あらかじめ定められた形式の注釈情報(コメント)で接続点を指定しておく、または、接続識別子となる変数又は定数を指定しておく必要がある。
分析部2はそのようなコメントを発見するとコメントで示された接続点又は接続識別子を使用する。
あらかじめ定められた形式の注釈情報(コメント)が「//接続点」というコメントであるものとする。
図4に示すソフトウェア1の場合、注釈解析部201は、「//接続点」という、定められた形式の注釈情報を検索して、以下の接続点の記述を取得し、この記述を分析して、ソフトウェア1が接続識別子にいずれのシンボル名を利用しているか分析する。
「IF 部署=“経理部” THEN 接続ID=ID1
IF 部署=“営業部” THEN 接続ID=ID2
IF 部署=“製造部” THEN 接続ID=ID3」
注釈解析部201は、ソフトウェア1が接続識別子に以下の3個のシンボル名を利用していることがわかる。
1.ID1
2.ID2
3.ID3
次に、注釈解析部201は、接続識別子となるシンボル名ID1、ID2、ID3への代入文を検索し、以下の3行を検出し、接続識別子の値として、1、2、3という定数を用いていることを検出する。
「VAR ID1=1 //接続識別子=1の代入
VAR ID2=2 //接続識別子=2の代入
VAR ID3=3 //接続識別子=3の代入」
あらかじめ定められたシンボル名が「ID1、ID2、ID3」であるものとする。
図4に示すソフトウェア1の場合、注釈解析部201は、接続識別子のシンボル名ID1、ID2、ID3への代入文を検索し、以下の3行を検出し、接続識別子の値として、1、2、3という定数を用いていることを検出する。
「VAR ID1=1 //接続識別子=1の代入
VAR ID2=2 //接続識別子=2の代入
VAR ID3=3 //接続識別子=3の代入」
あらかじめ定められた定数が「1、2、3」であるものとする。
図4に示すソフトウェア1の場合、注釈解析部201は、接続識別子となる定数1、2、3の代入文を検索し、以下の3行を検出し、接続識別子の値1、2、3の変数が、「ID1、ID2、ID3」であることを検出する。
「VAR ID1=1 //接続識別子=1の代入
VAR ID2=2 //接続識別子=2の代入
VAR ID3=3 //接続識別子=3の代入」
指定部202は、使用者が分析時に指定したソースコード上の記述を使用して、通信内容の識別のために付与する接続識別子を抽出する。
使用者がそのソフトウェアに対する接続点又は接続識別子を知っている場合、解析に使用するソースコードの場所を指定して接続点又は接続識別子を指定する。
使用者が接続点又は接続識別子を選択した後の処理は、前述した注釈解析部201と同様の処理をすることにより、そのソフトウェアが、いずれの接続識別子を用いているソフトウェアであるか判定できる。
過去参照部203は、過去に分析済みの類似構造を持つソフトウェアの分析結果を参照して、通信内容の識別のために付与する接続識別子を抽出する。
過去に分析に使用した類似の構造を持つソフトウェアが存在する場合、過去参照部203は、過去の分析時に使用した接続点又は接続識別子となる変数・定数と同一名称の変数又は定数を今回の分析に使用するソースコードから抽出し、接続点又は接続識別子とする。類似の構造を持つソフトウェアの典型として、同一ソフトウェアの過去バージョンがある。
提示選択部204は、ソースコードを解析して作成した変数又は定数の参照関係又は代入関係を示す参照文又は代入文の少なくともいずれか又は両方を使用者に提示する。
提示選択部204は、提示した参照文又は代入文の中から参照文又は代入文を使用者に選択させて、通信内容の識別のために付与する接続識別子を抽出する。
使用者が分析するソフトウェアの構造を理解していない場合、提示選択部204は、ソースコードの内容から変数又は定数の参照・代入関係を表示部50に図示して、その中から使用者に接続点又は接続識別子を選択させる。この時、提示選択部204は、「呼び出し元をたどると多くのプログラム要素を経由するもの」又は「参照回数の少ないもの」などから算出した優先度に従って表示する位置を前後させたり表示する文字の大きさ又は色を変更するなどして使用者が接続点又は接続識別子を選択しやすくする。
例えば、提示選択部204は、図4のソースコードから、以下の代入文を表示部50に提示して、使用者に接続識別子を選択させる。
「VAR ID1=1 //接続識別子=1の代入
VAR ID2=2 //接続識別子=2の代入
VAR ID3=3 //接続識別子=3の代入
TXT 部署=“” //変数の初期化
TXT データ本体=“”//変数の初期化
データ本体=A
データ本体=B
データ本体=C」
既知値利用部205は、既知の接続識別子と同様に扱われている定数、又は、既知の接続識別子が代入されている変数に直接・間接的に代入されている固定値を接続識別子として抽出する。
接続点では、送信データとして接続識別子となる定数を設定している。言い換えると、接続点では、変数に対して定数の代入を直接的又は間接的に実施している。そこで、既知値利用部205は、既知の接続点で代入されている変数に代入されているほかの値又は、代入されている定数と同様に扱われている(同じテーブルのカラムに使用されている、等)定数を接続識別子とする。
既知値利用部205は、「接続ID」が接続識別子のシンボル名であることが既知である場合、図4に示すソフトウェア1の接続点では、以下のとおり、「接続ID」に対して3個の代入文があるため、ID1、ID2、ID3を接続識別子であると判断することができる。
「IF 部署=“経理部” THEN 接続ID=ID1
IF 部署=“営業部” THEN 接続ID=ID2
IF 部署=“製造部” THEN 接続ID=ID3」
「VAR ID1=1 //接続識別子=1の代入
VAR ID2=2 //接続識別子=2の代入
VAR ID3=3 //接続識別子=3の代入」
「IF 部署=“経理部” THEN 接続ID=ID1
IF 部署=“営業部” THEN 接続ID=ID2
IF 部署=“製造部” THEN 接続ID=ID3」
また、同様の分析の結果、ソフトウェア2は、接続識別子=1、2、3を固定値として用いており、接続識別子のシンボル名が「識別1、識別2、識別3」であることがわかる。
分析部20のプログラム要素抽出処理部230では、構文解析と文法解析に基づいてソフトウェア要素を抽出する。
前述したとおり、図4のソフトウェア1は、6個のソフトウェア要素を有しており、プログラム要素抽出処理部230は、構文解析と文法解析に基づいて6個のソフトウェア要素を抽出する。
さらに、プログラム要素抽出処理部230では、固定値抽出処理で取得した接続識別子の定数について、その参照関係をたどって、それに関連するプログラム要素の情報を収集する。
図4に示すソフトウェア1の場合、プログラム要素抽出処理部230は、
「VAR ID1=1」と、
「IF 部署=“経理部” THEN 接続ID=ID1」と
から、
「IF 部署=“経理部” THEN CALL“経理部処理”」
を取得し、
「FUNCTION“経理部処理”」
が、接続識別子=1に対応するプログラム要素であると判断する。
同様に、プログラム要素抽出処理部230は、「FUNCTION“営業部処理”」が、接続識別子=2に対応するプログラム要素であり、「FUNCTION“製造部処理”」が、接続識別子=3に対応するプログラム要素であると判断する。
分析部20は異なるバージョンのソフトウェアのプログラム要素が変更されているかを比較してプログラム要素の変更の有無を示す変更情報を検出する。プログラム要素が変更されている場合、分析部20は異なるプログラム要素の差分を差分情報として検出する。
分析部20の関係強さ計算処理部240では、ソフトウェア要素ごとに、接続識別子との関係の強さを計算する。関係強さ計算処理部240は、例えば接続識別子と直接的な参照関係にある要素を「強」とし、その要素の出力に依存するなど間接的な依存関係にある要素をその介在する要素の数によって「弱」とする。
また、具体例として、以下のように接続識別子=1とソフトウェア要素Aとの関係の強さを計算する。
接続識別子=1の場合に、ソフトウェア要素Aが必ず実行されデータの内容が更新される場合、依存関係を「強」とする。
接続識別子=1の場合に、ソフトウェア要素Aが必ず実行されデータの内容が更新されないが参照される場合、依存関係を「中」とする。
接続識別子=1の場合に、ソフトウェア要素Aが接続識別子=1を参照しているだけの場合、依存関係を「弱」とする。
ソフトウェア要素Aが接続識別子=1を全く利用していない場合、依存関係を「無」とする。
分析部20の記憶処理部250は、分析によって得られた接続点と、接続識別子と、接続識別子と依存関係のあるプログラム要素の情報とを分析結果情報として記憶部30に引き渡す。
記憶部30では、引き渡された分析結果情報を保存するとともに、接続識別子の値ごとに図8に示すテーブル31に保存する。値ごとに保存するとは、接続識別子として使用されているプログラム上の定数値を識別するためのシンボル名又は変数名ではなく、その定数の実際の値を用いることを表す。具体的には、ID1、ID2、ID3というシンボル名ではなく、1、2、3という値そのものを用いる。その理由は、1、2、3という接続識別子の値は、同一プロトコルを実装する複数のソフトウェアで統一されている固定値であるが、同一プロトコルを実装する複数のソフトウェアにおいて、実装に使用する定数値のシンボル名まで統一されているとは限らないからである。
例えば、ソフトウェア1と2とは、接続識別子=1、2、3を用いているが、ソフトウェア1は、接続識別子のシンボル名が「ID1、ID2、ID3」であり、ソフトウェア2は、接続識別子のシンボル名が「識別1、識別2、識別3」であるから、シンボル名を用いてはテーブルが作成できない。
図中のテーブル31の1行目の各列のタイトルになっている「F1」、「F2」、・・・、「関数1」、「関数2」という値は、分析対象としたプログラムに含まれていた関数又はクラスといったプログラム要素を示している。
図中のテーブル31の1列目の各行のタイトルになっている「1」、「2」、「3」という値は、1、2、3という接続識別子の値を示している。
テーブル31は、たとえば「F1」はソフトウェア1の機能F1、「F2」はソフトウェア1の機能F2、「関数1」はソフトウェア3の関数1、「関数2」はソフトウェア3の関数2といったように、分析を実施したソフトウェアのプログラム要素と接続識別子の依存関係を関連付けて保存している。
テーブル31において、「強」、「中」、「弱」、「×」等は依存の強度を示す。「強」、「中」、「弱」、「×」の代わりに数値でもよい。
「強」=プログラム要素と接続識別子の依存関係が「強」
「中」=プログラム要素と接続識別子の依存関係が「中」
「弱」=プログラム要素と接続識別子の依存関係が「弱」
「×」=プログラム要素と接続識別子の依存関係が「無」
分析部20で接続識別子に対する参照関係を分析しなかった場合は、記憶処理部250は、ソフトウェア=ソフトウェア要素として、要素の単位としてプログラム全体を使用することができる。
あるいは、分析部20で接続識別子に対する参照関係を分析したが、ソフトウェア要素が一つだけ検出された場合、ソフトウェア=ソフトウェア要素として、要素の単位としてプログラム全体を使用することができる。
図8では、記憶処理部250が、ソフトウェア4=ソフトウェア要素として、プログラム全体をソフトウェア要素として使用している。
以上が、分析部20の処理である。
分析部20の分析では、各ソフトウェアの分析をして分析結果情報を蓄積し、テーブル31を構築するだけであり、ソフトウェア間の依存関係の解析は後述する変更影響解析部40が実行する。
変更影響解析部40は、通信内容の識別のために付与する接続識別子という固定値をもとに記憶部30に保存した分析済みの複数のソフトウェアの依存関係を算出するものである。
変更影響解析部40は、複数のソフトウェア間の依存関係を解析するものであるから、テーブル31に複数のソフトウェアの分析結果情報が記憶されている場合に動作する。
変更影響解析部40では、記憶部30に保存されている分析結果情報とテーブル31を読み出し整理して、ソフトウェア又はそのソフトウェア要素ごとに依存関係の有無又は強さを求める。変更影響解析部40は、ソフトウェア間の依存関係の有無は、同じ接続識別子の値を使用しているかどうかによって求める。変更影響解析部40は、図8のテーブル31の各行に記載された接続識別子の値ごとにソフトウェア要素間の依存関係の有無を判断する。具体的には、変更影響解析部40は、1行目を検索して、接続識別子=1と関連するソフトウェア要素は、機能F1と機能F4と関数1とソフトウェア4であることがわかるので、機能F1と機能F4と関数1とソフトウェア4とが依存関係のあるソフトウェア要素であると判断する。
また、変更影響解析部40は、同じ接続識別子の値を使用しているソフトウェア要素の数から依存関係の強さを求める。具体的には、変更影響解析部40は、図8のテーブル31においてソフトウェア3の2個のソフトウェア要素が接続識別子=3と関係しているため接続識別子=3とソフトウェア3との依存関係の強度が強いと判断する。
また、変更影響解析部40は、同じ接続識別子の値を使用しているソフトウェア要素の比率から依存関係の強さを求める。具体的には、変更影響解析部40は、図8のテーブル31においてソフトウェア3の2個のソフトウェア要素がすべて接続識別子=3と関係しているため接続識別子=3とソフトウェア3との依存関係の強度が強いと判断する。
変更影響解析部40は、表示部50に、依存関係の有無又は強さを図又は表を用いてグラフィカルに表示する。このとき、使用者は、表示する単位を「ソフトウェア」「ソフトウェアのプログラム要素」「ソフトウェアのプログラム要素が含まれるファイル」「ソフトウェアのプログラム要素が含まれるファイルの存在するフォルダ」「使用者が定義したプログラム要素のまとまり」などから選択することができる。
変更影響解析部40は、ソフトウェアまたはソフトウェア要素をノードとし、依存関係の有無によって接続された有向または無向のグラフを表示部50に表示する。
変更影響解析部40は、少なくとも、ソフトウェア間のリンク部分の線の長さ、線の太さ、線の色、線の種類、及び、線への注記(注釈文字)のいずれかによって依存の強さを示すことができる。又は、変更影響解析部40は、線の長さ、線の太さ、線の色、線の種類、及び、線への注記(注釈文字)の2つ以上の組み合わせによって依存の強さを示すことができる。図9では、依存関係の強さを、線の長さと、線の太さと、線の種類とによって表示している。
変更影響解析部40は、分析時に登録した設計文書又は試験仕様などの関連文書もこの図と関連付けて表示する。
あるいは、図11に示すように、縦軸と横軸との両方に使用者が選択したソフトウェア又はソフトウェア要素を並べ、それに対する依存関係の有無又は強さを表示する。図11のテーブル31では、縦軸と横軸とのソフトウェア要素の交点に依存関係の有無又は強さを表示している。例えば、図11のテーブル31の1行目には、以下のようなソフトウェア1の機能F1と他のソフトウェア要素との関係が示されている。
ソフトウェア1の機能F1とソフトウェア1の機能F2とは依存関係が「無」。
ソフトウェア1の機能F1とソフトウェア1の機能F3とは依存関係が「無」。
ソフトウェア1の機能F1とソフトウェア2の機能F4とは依存関係が「強」。
ソフトウェア1の機能F1とソフトウェア2の機能F5とは依存関係が「無」。
ソフトウェア1の機能F1とソフトウェア2の機能F6とは依存関係が「無」。
ソフトウェア1の機能F1とソフトウェア3の関数1とは依存関係が「強」。
ソフトウェア1の機能F1とソフトウェア3の関数2とは依存関係が「無」。
ソフトウェア1の機能F1とソフトウェア4とは依存関係が「弱」。
また、図11のテーブル31のソフトウェア2とソフトウェア3とは、すべて「×」なので、ソフトウェア2とソフトウェア3とは、依存関係がないことがわかる。
使用者は、表示部50に表示しているソフトウェア又はソフトウェア要素を任意に選択することができる。変更影響解析部40は、使用者が選択したソフトウェア又はソフトウェア要素のみを表示部50に表示する。あるいは、変更影響解析部40は、使用者が選択したソフトウェア又はソフトウェア要素を表示部50から削除して非表示にする。
例えば、図9において、使用者が表示部50に表示されたソフトウェア3を選択した場合、その選択されたソフトウェア3と依存関係のあるソフトウェア1、4とのみを表示する。
これにより、使用者が選択した変更予定ソフトウェア又は変更予定ソフトウェア要素と、他のソフトウェア又は他のソフトウェアのプログラム要素との依存関係が明確になり、容易に依存関係を確認する依存関係可視化装置が提供できる。
以上のように、本実施の形態にかかる変更影響分析装置は、複数のソフトウェア又は機器で構築したシステムにおいてそれらのソフトウェア間の依存関係を使用者に提供することができるため、ソフトウェア変更時に変更影響を調査・追跡する場合に適する。
通信プロトコルで規定された接続識別子を例にして、通信データを識別するために使用する固定値を説明したが、通信プロトコルで規定された固定値でなくてもよく、通信データを識別するために使用する固定値であれば、どのような固定値でも構わない。
また、通信データを識別するために使用する固定値でなくてもよく、固定値とは、システム内に存在する全ソフトウェアあるいは全ハードウェアあるいは全ファームウェアでデータを識別するために統一して使用される不変値であればよい。
また、固定値とは、数値に限らず、記号、符号でもよい。また、固定値の名前は、どのような名前でもよく、固定値の名前は、識別ID、識別タグ、ID、属性値などでも構わない。
また、変更影響解析部40は、図9又は図10に示す図形と、図8又は図11に示すテーブルとを表示部50の同一画面に表示してもよい。
また、分析部20は、同一のソフトウェアのバージョンが異なるソフトウェア要素の変更情報と差分情報とを分析しなくてもよく、変更情報のみを分析してもよい。あるいは、差分情報のみを分析してもよい。
Claims (13)
- データを処理するソフトウェアのソフトウェア分析装置であって、
データを処理するソフトウェアのソースコードを分析して、データを識別するために使用する固定値と前記ソフトウェアを構成するソフトウェア要素とを抽出し、前記固定値と前記ソフトウェア要素とを対応付ける分析部と、
前記分析部で対応付けられた前記固定値と前記ソフトウェア要素との対応情報を分析結果情報として保存する記憶部と、
前記記憶部に保存した前記分析結果情報に基づいて、ソフトウェアの依存関係を求める変更影響解析部と、
前記変更影響解析部で求めた依存関係を表示する表示部と
を備えたソフトウェア分析装置。 - 前記分析部は、前記固定値を抽出する注釈解析部を有し、
前記注釈解析部は、前記ソースコードに記載された注釈情報を使用して前記固定値を抽出する請求項1に記載のソフトウェア分析装置。 - 前記分析部は、前記固定値を抽出する指定部を有し、
前記指定部は、使用者が指定したソースコードの記述を使用して前記固定値を抽出する請求項1又は2に記載のソフトウェア分析装置。 - 前記分析部は、前記固定値を抽出する過去参照部を有し、
前記過去参照部は、過去に分析済みの類似構造を持つソフトウェアの分析結果を参照して前記固定値を抽出する請求項1から3いずれか1項に記載のソフトウェア分析装置。 - 前記分析部は、前記固定値を抽出する提示選択部を有し、
前記提示選択部は、前記ソースコードの参照文と代入文との少なくともいずれかを使用者に提示し、使用者に固定値を選択させることにより、前記固定値を抽出する請求項1から4いずれか1項に記載のソフトウェア分析装置。 - 前記分析部は、固定値を抽出する既知値利用部を有し、
前記既知値利用部は、前記ソースコードにおいて既知の固定値と同様に扱われている定数、又は、前記ソースコードにおいて既知の固定値が代入されている変数に直接又は間接的に代入されている固定値を抽出する請求項1から5いずれか1項に記載のソフトウェア分析装置。 - 前記変更影響解析部は、前記固定値とソフトウェア要素とを縦軸と横軸とに持ち、ソフトウェア要素の依存関係の有無又は度合いを前記表示部に表示する請求項1から6いずれか1項に記載のソフトウェア分析装置。
- 前記変更影響解析部は、ソフトウェア要素をノードとし、依存関係の有無によって接続された有向又は無向の図を、前記表示部に表示する請求項1から6いずれか1項に記載のソフトウェア分析装置。
- 前記変更影響解析部は、ソフトウェア要素間の依存関係の強さを、少なくとも、線の太さと、線の長さと、線の種類と、線の色と、注釈文字とのいずれか、又は、線の太さと線の長さと線の種類と線の色と注釈文字との2つ以上の組み合わせによって表示する請求項8に記載のソフトウェア分析装置。
- 前記変更影響解析部は、表示部に表示したソフトウェア要素について、使用者が選択したソフトウェア要素を表示又は非表示又は強調表示する請求項1から9いずれか1項に記載のソフトウェア分析装置。
- 前記分析部は、同一のソフトウェアのバージョンが異なるソフトウェア要素の変更情報又は差分情報を分析し、
前記記憶部は、前記変更情報又は前記差分情報を保存し、
前記変更影響解析部は、前記記憶部に保存されている前記変更情報又は前記差分情報を参照し、前記変更情報又は前記差分情報のあるソフトウェア要素を前記表示部に表示する請求項1から10いずれか1項に記載のソフトウェア分析装置。 - 前記記憶部は、前記ソースコードの情報又は前記ソースコードに関連した関連文書の情報を保存し、
前記変更影響解析部は、ソフトウェア要素とともに、前記ソースコードの情報又は前記関連文書の情報を前記表示部に表示する請求項1から11いずれか1項に記載のソフトウェア分析装置。 - システムによって統一された固定値を使用するソフトウェアのソフトウェア分析方法であって、
ソフトウェアのソースコードを取得するソースコード取得工程と、
前記ソースコードから前記固定値を抽出する固定値抽出工程と、
前記ソースコードからプログラム要素を抽出して、前記固定値と前記プログラム要素との関連を抽出するプログラム要素抽出工程と、
前記固定値と前記プログラム要素との関連を分析結果情報として記憶部に記憶する記憶工程と、
前記記憶部に記憶された複数のソフトウェアのソースコードの分析結果情報から複数のソフトウェアの依存関係を解析する変更影響解析工程と
を備えたソフトウェア分析方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016028160 | 2016-02-17 | ||
JP2016028160 | 2016-02-17 | ||
PCT/JP2017/005257 WO2017141893A1 (ja) | 2016-02-17 | 2017-02-14 | ソフトウェア分析装置及びソフトウェア分析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2017141893A1 true JPWO2017141893A1 (ja) | 2018-04-26 |
JP6440895B2 JP6440895B2 (ja) | 2018-12-19 |
Family
ID=59625887
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018500113A Active JP6440895B2 (ja) | 2016-02-17 | 2017-02-14 | ソフトウェア分析装置及びソフトウェア分析方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11119886B2 (ja) |
EP (1) | EP3418889A4 (ja) |
JP (1) | JP6440895B2 (ja) |
WO (1) | WO2017141893A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11630662B2 (en) | 2018-10-03 | 2023-04-18 | Mitsubishi Electric Corporation | Software analysis device, software analysis method, and software analysis program |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7068752B2 (ja) * | 2018-03-22 | 2022-05-17 | 三菱電機株式会社 | ソースコード解析装置およびソースコード解析プログラム |
US11733687B2 (en) * | 2019-09-26 | 2023-08-22 | Rockwell Automation Technologies, Inc. | Collaboration tools |
JP2022012394A (ja) * | 2020-07-01 | 2022-01-17 | 横河電機株式会社 | ソフトウェア開発環境提供システム、ソフトウェア開発環境提供方法、及びソフトウェア開発環境提供プログラム |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001147825A (ja) * | 1999-11-22 | 2001-05-29 | Toshiba Corp | 通信管理装置及び分散処理システム並びにプログラムを記録したコンピュータ読み取り可能な記録媒体 |
JP2012146243A (ja) * | 2011-01-14 | 2012-08-02 | Nec Corp | ソフトウェア構造解析装置、ソフトウェア構造解析方法及びプログラム |
JP2013125466A (ja) * | 2011-12-15 | 2013-06-24 | Mitsubishi Electric Corp | 影響度分析装置、影響度分析方法、及びプログラム |
JP2015138356A (ja) * | 2014-01-21 | 2015-07-30 | トヨタ自動車株式会社 | ソフトウェア構造可視化装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09160765A (ja) | 1995-12-08 | 1997-06-20 | Hitachi Ltd | ソフトウェア部品作成方法 |
JPH1097417A (ja) | 1996-07-30 | 1998-04-14 | Toray Ind Inc | プログラム組立装置及び記憶媒体 |
US20020129340A1 (en) * | 1999-10-28 | 2002-09-12 | Tuttle Douglas D. | Reconfigurable isomorphic software representations |
JP2006185211A (ja) * | 2004-12-28 | 2006-07-13 | Internatl Business Mach Corp <Ibm> | プログラム解析装置、テスト実行装置、その解析方法及びプログラム |
US7984426B2 (en) * | 2006-12-28 | 2011-07-19 | Sap Ag | Graphical representation of dependencies between changes of source code |
JP5775829B2 (ja) | 2012-01-30 | 2015-09-09 | 日立オートモティブシステムズ株式会社 | ソフトウェアの構造可視化プログラムおよびシステム |
US9298453B2 (en) | 2012-07-03 | 2016-03-29 | Microsoft Technology Licensing, Llc | Source code analytics platform using program analysis and information retrieval |
US9691171B2 (en) * | 2012-08-03 | 2017-06-27 | Dreamworks Animation Llc | Visualization tool for parallel dependency graph evaluation |
US8984485B2 (en) | 2013-05-01 | 2015-03-17 | International Business Machines Corporation | Analysis of source code changes |
US10402194B2 (en) * | 2013-09-20 | 2019-09-03 | Infosys Limited | Systems and methods for extracting cross language dependencies and estimating code change impact in software |
US9904614B2 (en) * | 2015-04-03 | 2018-02-27 | NodeSource, Inc. | Source code inspection and verification |
US9547478B1 (en) * | 2015-09-30 | 2017-01-17 | Semmle Limited | Hierarchical dependency analysis enhancements using disjoint-or trees |
US9454465B1 (en) * | 2015-12-14 | 2016-09-27 | International Business Machines Corporation | Risk based profiles for development operations |
-
2017
- 2017-02-14 EP EP17753150.6A patent/EP3418889A4/en not_active Withdrawn
- 2017-02-14 JP JP2018500113A patent/JP6440895B2/ja active Active
- 2017-02-14 WO PCT/JP2017/005257 patent/WO2017141893A1/ja active Application Filing
- 2017-02-14 US US16/076,360 patent/US11119886B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001147825A (ja) * | 1999-11-22 | 2001-05-29 | Toshiba Corp | 通信管理装置及び分散処理システム並びにプログラムを記録したコンピュータ読み取り可能な記録媒体 |
JP2012146243A (ja) * | 2011-01-14 | 2012-08-02 | Nec Corp | ソフトウェア構造解析装置、ソフトウェア構造解析方法及びプログラム |
JP2013125466A (ja) * | 2011-12-15 | 2013-06-24 | Mitsubishi Electric Corp | 影響度分析装置、影響度分析方法、及びプログラム |
JP2015138356A (ja) * | 2014-01-21 | 2015-07-30 | トヨタ自動車株式会社 | ソフトウェア構造可視化装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11630662B2 (en) | 2018-10-03 | 2023-04-18 | Mitsubishi Electric Corporation | Software analysis device, software analysis method, and software analysis program |
Also Published As
Publication number | Publication date |
---|---|
WO2017141893A1 (ja) | 2017-08-24 |
US20190042393A1 (en) | 2019-02-07 |
EP3418889A1 (en) | 2018-12-26 |
JP6440895B2 (ja) | 2018-12-19 |
US11119886B2 (en) | 2021-09-14 |
EP3418889A4 (en) | 2019-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7996819B2 (en) | Generating functional test scripts | |
US8434062B2 (en) | Enhancing source code debugging and readability using visual symbols | |
JP6440895B2 (ja) | ソフトウェア分析装置及びソフトウェア分析方法 | |
JP4395761B2 (ja) | プログラムテスト支援装置およびその方法 | |
US20080195377A1 (en) | Method, device, and program product for verifying translation in resource file | |
US9454467B2 (en) | Method and apparatus for mining test coverage data | |
US9189462B2 (en) | Bidirectional text checker | |
US8745521B2 (en) | System and method for annotating graphical user interface | |
US10628140B2 (en) | Program code generation apparatus | |
US20190220549A1 (en) | Analysis model preparing system, programming apparatus, and analysis model preparing method | |
CN111078529A (zh) | 客户端写入模块测试方法、装置、电子设备 | |
JP6866270B2 (ja) | Sql文抽出装置、sql文抽出方法及びプログラム | |
US9483262B2 (en) | Apparatus and method for identifying correspondence between an installed program and an interface in a source code | |
US8819645B2 (en) | Application analysis device | |
CN111273913B (zh) | 一种输出规范表示的应用程序接口数据的方法及装置 | |
US20150199183A1 (en) | Program analysis apparatus and program analysis method | |
JP2013145443A (ja) | テストコード生成装置、テストコード生成方法、テストコード生成プログラム | |
JP6091471B2 (ja) | ソースコード解析装置、ソースコード解析方法およびソースコード解析プログラム | |
KR102422972B1 (ko) | 프로그램 유지 보수 방법 및 이를 지원하는 컴퓨팅 장치 | |
JP2018049492A (ja) | 解析装置、解析プログラムおよび解析方法 | |
JP2023031614A (ja) | 変更度計測装置、方法及びプログラム | |
CN114090428A (zh) | 信息处理方法、装置、计算机可读存储介质和计算机设备 | |
JP2013061893A (ja) | 情報処理装置及び情報処理方法及びプログラム | |
CN115408453A (zh) | 一种配置化报表生成方法、装置、计算机设备及存储介质 | |
CN112000575A (zh) | 一种应用的界面显示测试方法、系统、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20180117 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180911 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20181008 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20181023 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20181120 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6440895 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |