JPWO2017141893A1 - ソフトウェア分析装置及びソフトウェア分析方法 - Google Patents

ソフトウェア分析装置及びソフトウェア分析方法 Download PDF

Info

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
Application number
JP2018500113A
Other languages
English (en)
Other versions
JP6440895B2 (ja
Inventor
宙祥 平松
宙祥 平松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2017141893A1 publication Critical patent/JPWO2017141893A1/ja
Application granted granted Critical
Publication of JP6440895B2 publication Critical patent/JP6440895B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements 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

入力部(10)で指定したソースコードを分析部(20)で分析し、ソフトウェア間で依存関係を実現するための通信データの内容を区別するために使用される固定値を求める。求めた固定値とソフトウェアの要素の関係を記憶部(30)に保存し、記憶部(30)に保存した複数のソフトウェアの情報を変更影響解析部(40)で通信データの内容を区別するために使用される固定値をもとにして関連付けてソフトウェアのプログラム要素間の依存関係を解析する。解析結果は表示部(50)にて図又は表として表示する。

Description

本発明はソフトウェア分析装置及びソフトウェア分析方法に関し、特に、ソフトウェアの構造を解析し、ソフトウェアの依存関係を可視化する装置に関する。
ソフトウェアは多機能化によってその規模又は複雑さが増大している。
また、複数のソフトウェア又は機器が連動して一つのシステムを構築することで付加価値の高い機能を実現することも増えており、数十〜数百の装置で一つのシステムを構築することも珍しくない。
こうした状況の中でソフトウェアの開発を行うために、ある装置に実施した変更がシステム全体のどの部分に影響するかの見極めが非常に重要になっている。開発者が影響範囲を正しく認識しないまま変更を行うと、無関係だと思われていた装置又は機能が仕様の不整合に起因する誤作動を起こす可能性がある。
一般的に、変更が影響する範囲は、そのソフトウェアに関する設計文書から検討することができる。しかし、設計書は自然言語で書かれるため、機械的に処理することが難しく、人手による調査では時間がかかり、かつ間違いが発生する可能性も高い。
設計書に機械処理可能なUML(Unified Modeling Language)等のモデルが含まれている場合においても、設計文書の内容が欠落していたり古くなっている場合がある。このため、実際に動作しているソフトウェアと設計書の内容との不整合のために正しい結果が得られない可能性がある。
別のアプローチとして、ソフトウェアのソースコードを解析して影響範囲を特定する取り組みが考えられる。
特許文献1では、コンピュータでソフトウェアのソースコードを解析し、その実行パス又は変数の依存関係といった影響範囲を特定するための情報を、フローチャート又は木構造で使用者に提供する。
特開2013−156786号公報 特開平09−160765号公報 特開平10−097417号公報
しかしながら、特許文献1の技術では、ソースコードに記述されている変数の代入又は参照といった依存関係を使用するため、通信で接続されている他の機器で動作しているソフトウェアを含めた影響範囲を示すことができないという課題がある。
本発明は、システムを構成する複数の機器間で動作するソフトウェアにまたがる影響範囲を分析することを目的とする。
この発明のソフトウェア分析装置は、
データを処理するソフトウェアのソフトウェア分析装置であって、
データを処理するソフトウェアのソースコードを分析して、データを識別するために使用する固定値と前記ソフトウェアを構成するソフトウェア要素とを抽出し、前記固定値と前記ソフトウェア要素とを対応付ける分析部と、
前記分析部で対応付けられた前記固定値と前記ソフトウェア要素との対応情報を分析結果情報として保存する記憶部と、
前記記憶部に保存した前記分析結果情報に基づいて、ソフトウェアの依存関係を求める変更影響解析部と、
前記変更影響解析部で求めた依存関係を表示する表示部と
を備えたことを特徴とする。
本発明では、ソフトウェアを解析して得た固定値をもとにして複数のソフトウェアを対応付けることでソフトウェア間の依存関係をユーザーに提供し、ソフトウェア変更時の変更影響を追跡可能にする。
ソフトウェア分析装置100の基本構成図である。 複数装置と複数ソフトウェアで構成されるシステムの模式図である。 通信路上でやり取りするデータの例である。 ソフトウェア1のソースコードの例である。 ソフトウェア2のソースコードの例である。 ソフトウェア分析方法の図である。 分析部20の構成図である。 接続識別子別にプログラム要素の関係を保存するテーブル31の例である。 ソフトウェアごとに依存関係を表示する例である。 ソフトウェアごとに依存関係を図示し、部分的にプログラム要素に対する依存関係を表示する例である。 縦軸と横軸との両方にソフトウェア要素を並べ、依存関係の有無と強さを表示する例である。
実施の形態1.
以下に、本発明にかかるソフトウェア分析装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
本実施の形態では、ソフトウェアの変更が他のソフトウェアに与える影響を追跡する変更影響追跡装置について説明する。
***構成の説明***
図1は本実施の形態によるソフトウェア分析装置100の基本的な構成図である。
入力部10は、分析対象とするソフトウェアのソースコードと関連文書を入力する。分析対象とするソフトウェアは通信データを処理するソフトウェアである。また、入力部10は、使用者の指示及び使用者の選択を入力する。
分析部20は、入力部1から入力されたソースコードを分析する。分析部20は、通信データを処理するソフトウェアのソースコードを分析して、通信データを識別するために使用する固定値と前記ソフトウェアを構成するソフトウェア要素とを抽出し、固定値とソフトウェア要素とを対応付ける。
記憶部30は、分析部20で対応付けられた固定値とソフトウェア要素との対応情報を分析結果情報として保存する。記憶部30は、さらに、入力部10から得られたソースコード、設計書、試験仕様書といった付帯情報及び関連文書などをソフトウェアと関連付けて保存しておく。
変更影響解析部40は、記憶部30に保存した分析結果情報に基づいて、ソフトウェアの依存関係を求める。変更影響解析部40は、記憶部30に蓄積しているソフトウェアの分析結果からソフトウェア間の変更影響範囲の情報を作成する。
表示部50は、前記変更影響解析部で求めた依存関係を表示する。表示部5は、変更影響解析部40で作成した変更影響範囲の情報を使用者に表示する。
図1に基づき、本実施の形態に係るソフトウェア分析装置100のハードウェア構成を説明する。
ソフトウェア分析装置100は、入力装置60、プロセッサ70、記憶装置80、及び、表示装置90から構成される。
入力装置60は、具体的にはキーボード、マウス、入力デバイスである。入力デバイスは、具体的には、リーダ、スキャナである。入力装置60は、通信インタフェース、メモリスティックインタフェースなどの入力インタフェースでもよい。
プロセッサ70は、プロセッシングを行うICであり、プログラムを実行することにより、分析部20と変更影響解析部40との処理を実現する。ICは、Integrated Circuitの略である。プロセッサ70は、具体的には、CPU、DSP、GPUである。CPUは、Central Processing Unitの略である。DSPは、Digital Signal Processorの略である。GPUは、Graphics Processing Unitの略である。プロセッサ70は、処理回路でもよい。
記憶装置80は、具体的には、RAM及びHDDである。RAMは、Random Access Memoryの略である。HDDは、Hard Disk Driveの略である。記憶装置80は、ROM及びフラッシュメモリといった他のハードウェアで構成されてもよい。ROMは、Read Only Memoryの略である。
表示装置90は、具体的には、ディスプレイ装置、液晶表示装置、プロジェクタ装置である。
プロセッサ70によって実現される各機能の処理の結果を示す情報とデータと信号値と変数値は、記憶装置80、又は、プロセッサ70内のレジスタ又はキャッシュメモリに記憶される。以下の説明では、プロセッサ70によって実現される各機能の処理の結果を示す情報とデータと信号値と変数値は、記憶装置80に記憶されるものとして説明する。
プロセッサ70によって実現される各機能を実現するプログラムは、記憶装置80に記憶されている。しかし、このプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスクといった可搬記憶媒体に記憶されてもよい。
ソフトウェア分析装置100のハードウェアは、具体的には、パーソナルコンピュータで実現できるものである。
図2は、複数の装置で構成される複数のソフトウェアシステムを模式的に表したものである。簡単のために装置2台で構成される1:1のシステムを記述しているが、本実施の形態は、接続する装置の数にかかわらず適用できる。
装置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は、会社の部署が“製造部”の処理をするものとする。
図3は、通信プロトコルとして定められているフォーマットの例であり、通信路上を通してやり取りするデータの一例を示している。
宛先データ21は、送信先の装置を決定するために使用される値であり、具体的には、宛先アドレスである。
接続識別子22は、後に続くデータ本体23を受信した装置で適切な機能に振り分けるために付与されている値であり、プロトコルによって機能(データの内容)ごとに定められた固定値(定数)である。接続識別子22は、他のソフトウェアとの通信を行う際に通信内容の識別のために付与または参照する固定値の具体例である。
接続識別子22の具体的な値は、以下のものである。
部署が“経理部”なら、接続識別子=1。
部署が“営業部”なら、接続識別子=2。
部署が“製造部”なら、接続識別子=3。
部署が“AAA”なら、接続識別子=4。
部署が“BBB”なら、接続識別子=5。
部署が“CCC”なら、接続識別子=6。
接続識別子22の値は、会社Aのシステム全体で共通の固定値であり、通信プロトコルであらかじめ定められたものである。
データ本体23は、実際に送受信するデータの内容であり、データの値が格納される。
チェックデータ24は、通信の品質を担保するために付与するCRC(Cyclic Redundancy Code)等の値である。
図2における各機能F1〜F6は、図3におけるデータ本体23の値を作成・解釈する機能を含むものである。
図2における接続点14は、図3における接続識別子22の値を設定する機能、または、接続識別子22の値によって対応する機能F1〜F6を決定する機能を有する。
図4は、ソフトウェア1のソースコードの例である。図5は、ソフトウェア2のソースコードの例である。図4と図5とも、仮想のプログラミング言語によるソースコードである。図4と図5において、「//」は、注釈の開始を意味しており、各行の「//」以降の記述は注釈情報である。各行の意味は、注釈情報を読めば理解できるので、ここでは、説明を簡単にする。
ソフトウェア1は、会社Aの経理部、営業部、製造部のデータを作成して送信するプログラムである。
ソフトウェア2は、会社Aの経理部、営業部、製造部のデータを受信して処理するプログラムである。
通常、ソフトウェアは、1単位以上のソフトウェア要素を有している。ソフトウェア要素とは、一塊の意味があるルーチンである。ソフトウェア要素の具体例は、機能F1〜F6の各機能、各関数、各ファンクションモジュールである。あるいは、ソフトウェア要素とは、関数、クラス、サブルーチン、外部ルーチンでもよい。一つのソフトウェア内に一つのソフトウェア要素のみがある場合は、ソフトウェア=ソフトウェア要素である。
図4のソフトウェア1は、以下の6個のソフトウェア要素を有している。
1.初期値設定
2.MAIN
3.接続点
4.機能F1
5.機能F2
6.機能F3
図5のソフトウェア2は、以下の6個のソフトウェア要素を有している。
1.初期値設定
2.接続点
3.MAIN
4.機能F4
5.機能F5
6.機能F6
***動作の説明***
以下、図6と図7を用いて、ソフトウェア分析装置100のソフトウェア分析方法について説明する。
分析部20は、ソースコードを分析し、分析結果情報と共に、ソースコードと、ソースコードのバージョンと、分析時に使用した接続点と、接続識別子となる変数・定数とを記憶部30に記憶しておく。
ステップS10:ソースコード取得処理部210によるソースコード取得工程
分析部20のソースコード取得処理部210は、入力部10からソースコードを取得する。
ステップS20:固定値抽出処理部220による固定値抽出工程
分析部20の固定値抽出処理部220は、入力部10から取得したソースコードを分析して、ソースコードから接続識別子を固定値として抽出し、さらに接続識別子に関連するソフトウェア要素を抽出する。
図7に示すように、固定値抽出処理部220では、以下の方法1〜方法5を組み合わせて接続識別子を固定値として抽出する。抽出結果は使用者によって追加・削除することもできる。
方法1:注釈解析部201がソースコードの注釈情報を参照する。
注釈解析部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の代入」
また、以上の分析の結果、ソフトウェア1は、接続識別子=1、2、3を用いており、接続識別子のシンボル名が「ID1、ID2、ID3」であることがわかる。換言すれば、ソフトウェア1は、接続識別子=1、2、3に関連するソフトウェアであり、接続識別子=4、5、6など接続識別子=1、2、3以外の接続識別子には関係がないソフトウェアであることがわかる。
方法2:指定部202は、表示部50にソースコードを開示し、使用者に接続点または接続識別子を選択させる。
指定部202は、使用者が分析時に指定したソースコード上の記述を使用して、通信内容の識別のために付与する接続識別子を抽出する。
使用者がそのソフトウェアに対する接続点又は接続識別子を知っている場合、解析に使用するソースコードの場所を指定して接続点又は接続識別子を指定する。
使用者が接続点又は接続識別子を選択した後の処理は、前述した注釈解析部201と同様の処理をすることにより、そのソフトウェアが、いずれの接続識別子を用いているソフトウェアであるか判定できる。
方法3:過去参照部203は、過去に分析済みの類似ソフトウェアの接続点の情報を参照する。
過去参照部203は、過去に分析済みの類似構造を持つソフトウェアの分析結果を参照して、通信内容の識別のために付与する接続識別子を抽出する。
過去に分析に使用した類似の構造を持つソフトウェアが存在する場合、過去参照部203は、過去の分析時に使用した接続点又は接続識別子となる変数・定数と同一名称の変数又は定数を今回の分析に使用するソースコードから抽出し、接続点又は接続識別子とする。類似の構造を持つソフトウェアの典型として、同一ソフトウェアの過去バージョンがある。
方法4:提示選択部204は、変数・定数の参照文を使用者に提示し、接続点または接続識別子を選択させる。
提示選択部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」
方法5:既知値利用部205は、既知の接続点又は接続識別子から推定する。
既知値利用部205は、既知の接続識別子と同様に扱われている定数、又は、既知の接続識別子が代入されている変数に直接・間接的に代入されている固定値を接続識別子として抽出する。
接続点では、送信データとして接続識別子となる定数を設定している。言い換えると、接続点では、変数に対して定数の代入を直接的又は間接的に実施している。そこで、既知値利用部205は、既知の接続点で代入されている変数に代入されているほかの値又は、代入されている定数と同様に扱われている(同じテーブルのカラムに使用されている、等)定数を接続識別子とする。
既知値利用部205は、「接続ID」が接続識別子のシンボル名であることが既知である場合、図4に示すソフトウェア1の接続点では、以下のとおり、「接続ID」に対して3個の代入文があるため、ID1、ID2、ID3を接続識別子であると判断することができる。
「IF 部署=“経理部” THEN 接続ID=ID1
IF 部署=“営業部” THEN 接続ID=ID2
IF 部署=“製造部” THEN 接続ID=ID3」
あるいは、既知値利用部205は、ID1が接続識別子のシンボル名であることが既知である場合、図4に示すソフトウェア1では、以下のとおり、ID1=1と同様に、ID2=2、ID3=3が記述されているのでID2、ID3も接続識別子のシンボル名であると判断することができる。
「VAR ID1=1 //接続識別子=1の代入
VAR ID2=2 //接続識別子=2の代入
VAR ID3=3 //接続識別子=3の代入」
あるいは、また、既知値利用部205は、以下のとおり、接続ID=ID1と同様に、接続ID=ID2、接続ID=ID3と記述されているので、ID2、ID3も接続識別子のシンボル名であると判断することができる。
「IF 部署=“経理部” THEN 接続ID=ID1
IF 部署=“営業部” THEN 接続ID=ID2
IF 部署=“製造部” THEN 接続ID=ID3」
分析部20は、注釈解析部201と、指定部202と、過去参照部203と、提示選択部204と、既知値利用部205を組み合わせて、ソフトウェアを分析する。
また、以上の分析の結果、ソフトウェア1は、接続識別子=1、2、3を固定値として用いており、接続識別子のシンボル名が「ID1、ID2、ID3」であることがわかる。
また、同様の分析の結果、ソフトウェア2は、接続識別子=1、2、3を固定値として用いており、接続識別子のシンボル名が「識別1、識別2、識別3」であることがわかる。
ステップS30:プログラム要素抽出処理部230によるプログラム要素抽出工程
分析部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は異なるプログラム要素の差分を差分情報として検出する。
ステップS40:関係強さ計算処理部240による関係強さ計算工程
分析部20の関係強さ計算処理部240では、ソフトウェア要素ごとに、接続識別子との関係の強さを計算する。関係強さ計算処理部240は、例えば接続識別子と直接的な参照関係にある要素を「強」とし、その要素の出力に依存するなど間接的な依存関係にある要素をその介在する要素の数によって「弱」とする。
また、具体例として、以下のように接続識別子=1とソフトウェア要素Aとの関係の強さを計算する。
接続識別子=1の場合に、ソフトウェア要素Aが必ず実行されデータの内容が更新される場合、依存関係を「強」とする。
接続識別子=1の場合に、ソフトウェア要素Aが必ず実行されデータの内容が更新されないが参照される場合、依存関係を「中」とする。
接続識別子=1の場合に、ソフトウェア要素Aが接続識別子=1を参照しているだけの場合、依存関係を「弱」とする。
ソフトウェア要素Aが接続識別子=1を全く利用していない場合、依存関係を「無」とする。
ステップS50:記憶処理部250による記憶工程
分析部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」であるから、シンボル名を用いてはテーブルが作成できない。
これにより、記憶処理部250は、図8に示すテーブル31を記憶部30に構築する。
図中のテーブル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において、各記号の意味は以下のとおりである。
テーブル31において、「強」、「中」、「弱」、「×」等は依存の強度を示す。「強」、「中」、「弱」、「×」の代わりに数値でもよい。
「強」=プログラム要素と接続識別子の依存関係が「強」
「中」=プログラム要素と接続識別子の依存関係が「中」
「弱」=プログラム要素と接続識別子の依存関係が「弱」
「×」=プログラム要素と接続識別子の依存関係が「無」
たとえば、接続識別子=2を見ると、接続識別子=2に対して「機能F2」要素と「機能F5」要素とは関連が強く、「機能F1」要素、「機能F3」要素、「機能F4」要素、「機能F6」要素は関連がないことを示している。
分析部20で接続識別子に対する参照関係を分析しなかった場合は、記憶処理部250は、ソフトウェア=ソフトウェア要素として、要素の単位としてプログラム全体を使用することができる。
あるいは、分析部20で接続識別子に対する参照関係を分析したが、ソフトウェア要素が一つだけ検出された場合、ソフトウェア=ソフトウェア要素として、要素の単位としてプログラム全体を使用することができる。
図8では、記憶処理部250が、ソフトウェア4=ソフトウェア要素として、プログラム全体をソフトウェア要素として使用している。
分析部20の記憶処理部250は、記憶部30に分析対象のソフトウェアの接続点又は接続識別子のシンボル名に関する情報を合わせて保存する。これら接続点又は接続識別子のシンボル名に関する情報は、分析部20の方法3によって接続点又は接続識別子を抽出するために使用する。
分析部20の記憶処理部250は、記憶部30に、接続識別子にかかる情報としてプログラム要素の依存関係の強さのほかに、依存関係の表示時に関連情報として表示するために使用者が分析時に関連情報として登録した各種関連文書を合わせて記憶しておく。
分析部20が同一のソフトウェアの異なるバージョンに対して分析を実施した場合、記憶処理部250は、接続識別子の分析結果情報のほかに、プログラム要素が変更されているかを示す変更情報と差分情報とを記憶部30に引き渡す。記憶部30では分析結果情報と合わせて、プログラム要素に対応して変更情報と差分情報とを保存する。
分析部20は、図8に示すテーブル31をソフトウェアの分析のたびに作成して分析結果情報を蓄積してゆく。分析部20が、ソフトウェア1、2、3、4を順に分析した場合、分析部20は、まず、テーブル31のソフトウェア1の部分だけ登録することができる。次に、分析部20がソフトウェア2を分析することにより、テーブル31のソフトウェア2の部分が追加登録できる。次に、分析部20がソフトウェア3を分析することにより、テーブル31のソフトウェア3の部分が追加登録され、さらに、分析部20がソフトウェア4を分析することにより、テーブル31のソフトウェア4の部分が追加登録できる。
以上が、分析部20の処理である。
分析部20の分析では、各ソフトウェアの分析をして分析結果情報を蓄積し、テーブル31を構築するだけであり、ソフトウェア間の依存関係の解析は後述する変更影響解析部40が実行する。
ステップS60:変更影響解析部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に、依存関係の有無又は強さを図又は表を用いてグラフィカルに表示する。このとき、使用者は、表示する単位を「ソフトウェア」「ソフトウェアのプログラム要素」「ソフトウェアのプログラム要素が含まれるファイル」「ソフトウェアのプログラム要素が含まれるファイルの存在するフォルダ」「使用者が定義したプログラム要素のまとまり」などから選択することができる。
図9は、依存関係の有無をソフトウェアごとに表示した場合の例である。
変更影響解析部40は、ソフトウェアまたはソフトウェア要素をノードとし、依存関係の有無によって接続された有向または無向のグラフを表示部50に表示する。
変更影響解析部40は、少なくとも、ソフトウェア間のリンク部分の線の長さ、線の太さ、線の色、線の種類、及び、線への注記(注釈文字)のいずれかによって依存の強さを示すことができる。又は、変更影響解析部40は、線の長さ、線の太さ、線の色、線の種類、及び、線への注記(注釈文字)の2つ以上の組み合わせによって依存の強さを示すことができる。図9では、依存関係の強さを、線の長さと、線の太さと、線の種類とによって表示している。
変更影響解析部40は、分析時に登録した設計文書又は試験仕様などの関連文書もこの図と関連付けて表示する。
変更影響解析部40は、依存関係を表すリンクについて、送受信の方向によって向きを持たせる場合がある。図9では、ソフトウェア4からソフトウェア3に向きを持たせている。
また、変更影響解析部40は、表示するソフトウェア要素の単位については、異なる単位を組み合わせて図10のように「ソフトウェア1とソフトウェア2の各機能との関連」といった表示を行うことができる。
変更影響解析部40は、依存関係を表で表示する場合は、図8のテーブル31をそのまま表示部50に表示する。図8のテーブル31は、通信内容の識別のために付与する接続識別子と、ソフトウェア又はソフトウェアの各要素をそれぞれ軸に持つ表であり、変更影響解析部40は、依存関係の有無または依存関係の度合いを記号あるいは数値で示した表を表示部50に表示する。
あるいは、図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とは、依存関係がないことがわかる。
また、分析部20が同一ソフトウェアの複数バージョンについて分析を実施している場合、記憶部30にはソフトウェア要素の変更有無を示す変更情報と差分情報が保存されている。変更影響解析部40は、保存されている任意の2バージョン間のソフトウェア要素の変更情報と差分情報を参照し、その変更情報と差分情報とに基づいて変更又は差分のあるソフトウェア又はソフトウェア要素を抽出して複数バージョン間で変更されたプログラム要素を表示部50に表示する。その際、変更影響解析部40は、変更情報と差分情報があることを表示部50に表示する。
表示部50は、入力部10で使用者が設定した内容に沿って依存関係を表示する部位であり、使用者は表示部50に表示された内容を参照してソフトウェア変更時の影響範囲を追跡する。
使用者は、表示部50に表示しているソフトウェア又はソフトウェア要素を任意に選択することができる。変更影響解析部40は、使用者が選択したソフトウェア又はソフトウェア要素のみを表示部50に表示する。あるいは、変更影響解析部40は、使用者が選択したソフトウェア又はソフトウェア要素を表示部50から削除して非表示にする。
変更影響解析部40は、使用者が表示部50に表示されたソフトウェアまたはプログラム要素を選択した場合、その選択されたソフトウェアまたはプログラム要素と依存関係のあるソフトウェアまたはプログラム要素のみを表示する。その際に、変更影響解析部40は、依存関係の強さに応じて依存関係を強調表示する。
例えば、図9において、使用者が表示部50に表示されたソフトウェア3を選択した場合、その選択されたソフトウェア3と依存関係のあるソフトウェア1、4とのみを表示する。
これにより、使用者が選択した変更予定ソフトウェア又は変更予定ソフトウェア要素と、他のソフトウェア又は他のソフトウェアのプログラム要素との依存関係が明確になり、容易に依存関係を確認する依存関係可視化装置が提供できる。
***実施の形態の効果の説明***
以上のように、本実施の形態にかかる変更影響分析装置は、複数のソフトウェア又は機器で構築したシステムにおいてそれらのソフトウェア間の依存関係を使用者に提供することができるため、ソフトウェア変更時に変更影響を調査・追跡する場合に適する。
***他の構成の説明***
通信プロトコルで規定された接続識別子を例にして、通信データを識別するために使用する固定値を説明したが、通信プロトコルで規定された固定値でなくてもよく、通信データを識別するために使用する固定値であれば、どのような固定値でも構わない。
また、通信データを識別するために使用する固定値でなくてもよく、固定値とは、システム内に存在する全ソフトウェアあるいは全ハードウェアあるいは全ファームウェアでデータを識別するために統一して使用される不変値であればよい。
また、固定値とは、数値に限らず、記号、符号でもよい。また、固定値の名前は、どのような名前でもよく、固定値の名前は、識別ID、識別タグ、ID、属性値などでも構わない。
また、分析対象となるソフトウェアは、直接通信を司る通信ソフトウェアでもよいし、通信ソフトウェアとデータを譲受するデータ処理ソフトウェアでもよい。接続識別子22とデータ本体23とを対にしてデータを譲受するデータ処理ソフトウェアであれば、分析対象とすることができる。
また、使用者の指示によって関係強さ計算処理部240の操作は実行しないことも可能である。その場合、表示部50への依存関係の表示時に依存関係の強弱の表示ができなくなる。
また、変更影響解析部40および表示部50が処理するのに必要な情報が含まれていれば、記憶部30への記録の方式は問わない。
また、変更影響解析部40は、図9又は図10に示す図形と、図8又は図11に示すテーブルとを表示部50の同一画面に表示してもよい。
また、記憶部30がソフトウェア分析装置100とは別に存在していてもよく、記憶部30がソフトウェア分析装置100とは別に存在している場合は、複数のソフトウェア分析装置100が分析部20の分析結果を共有することができる。
また、入力部10又は表示部50がソフトウェア分析装置100とは別に存在していてもよく、入力部10又は表示部50がソフトウェア分析装置100とは別に存在している場合は、複数のユーザーがソフトウェア分析装置100を共有することができる。
また、分析部20が分析するソースコードは、あらかじめ記憶部30に記憶しておき、分析部20は、記憶部30に記憶したソースコードを分析してもよい。
また、分析部20は、同一のソフトウェアのバージョンが異なるソフトウェア要素の変更情報と差分情報とを分析しなくてもよく、変更情報のみを分析してもよい。あるいは、差分情報のみを分析してもよい。
また、変更影響解析部40は、記憶部30に保存されている接続識別子とプログラム要素の依存関係を参照する以外にも、独自にソースコードを解析して依存関係を検出するようにしてもよい。これは、分析部20の分析段階でプログラム要素への依存関係を解析しないことによる分析時間の短縮又は、記憶部30に保存しておくデータの縮小などを目的に実施する。
また、分析部20と変更影響解析部40との処理を、一つのプログラムで同時に実行してもよい。あるいは、分析部20の一部の処理を変更影響解析部40が実行してもよいし、変更影響解析部40の一部の処理を分析部20が実行してもよい。
10 入力部、11 装置、12 装置、13 通信路、14 接続点、20 分析部、21 宛先データ、22 接続識別子、23 データ本体、24 チェックデータ、30 記憶部、31 テーブル、40 変更影響解析部、50 表示部、60 入力装置、70 プロセッサ、80 記憶装置、90 表示装置、100 ソフトウェア分析装置、201 注釈解析部、202 指定部、203 過去参照部、204 提示選択部、205 既知値利用部、210 ソースコード取得処理部、220 固定値抽出処理部、230 プログラム要素抽出処理部、240 関係強さ計算処理部、250 記憶処理部。

Claims (13)

  1. データを処理するソフトウェアのソフトウェア分析装置であって、
    データを処理するソフトウェアのソースコードを分析して、データを識別するために使用する固定値と前記ソフトウェアを構成するソフトウェア要素とを抽出し、前記固定値と前記ソフトウェア要素とを対応付ける分析部と、
    前記分析部で対応付けられた前記固定値と前記ソフトウェア要素との対応情報を分析結果情報として保存する記憶部と、
    前記記憶部に保存した前記分析結果情報に基づいて、ソフトウェアの依存関係を求める変更影響解析部と、
    前記変更影響解析部で求めた依存関係を表示する表示部と
    を備えたソフトウェア分析装置。
  2. 前記分析部は、前記固定値を抽出する注釈解析部を有し、
    前記注釈解析部は、前記ソースコードに記載された注釈情報を使用して前記固定値を抽出する請求項1に記載のソフトウェア分析装置。
  3. 前記分析部は、前記固定値を抽出する指定部を有し、
    前記指定部は、使用者が指定したソースコードの記述を使用して前記固定値を抽出する請求項1又は2に記載のソフトウェア分析装置。
  4. 前記分析部は、前記固定値を抽出する過去参照部を有し、
    前記過去参照部は、過去に分析済みの類似構造を持つソフトウェアの分析結果を参照して前記固定値を抽出する請求項1から3いずれか1項に記載のソフトウェア分析装置。
  5. 前記分析部は、前記固定値を抽出する提示選択部を有し、
    前記提示選択部は、前記ソースコードの参照文と代入文との少なくともいずれかを使用者に提示し、使用者に固定値を選択させることにより、前記固定値を抽出する請求項1から4いずれか1項に記載のソフトウェア分析装置。
  6. 前記分析部は、固定値を抽出する既知値利用部を有し、
    前記既知値利用部は、前記ソースコードにおいて既知の固定値と同様に扱われている定数、又は、前記ソースコードにおいて既知の固定値が代入されている変数に直接又は間接的に代入されている固定値を抽出する請求項1から5いずれか1項に記載のソフトウェア分析装置。
  7. 前記変更影響解析部は、前記固定値とソフトウェア要素とを縦軸と横軸とに持ち、ソフトウェア要素の依存関係の有無又は度合いを前記表示部に表示する請求項1から6いずれか1項に記載のソフトウェア分析装置。
  8. 前記変更影響解析部は、ソフトウェア要素をノードとし、依存関係の有無によって接続された有向又は無向の図を、前記表示部に表示する請求項1から6いずれか1項に記載のソフトウェア分析装置。
  9. 前記変更影響解析部は、ソフトウェア要素間の依存関係の強さを、少なくとも、線の太さと、線の長さと、線の種類と、線の色と、注釈文字とのいずれか、又は、線の太さと線の長さと線の種類と線の色と注釈文字との2つ以上の組み合わせによって表示する請求項8に記載のソフトウェア分析装置。
  10. 前記変更影響解析部は、表示部に表示したソフトウェア要素について、使用者が選択したソフトウェア要素を表示又は非表示又は強調表示する請求項1から9いずれか1項に記載のソフトウェア分析装置。
  11. 前記分析部は、同一のソフトウェアのバージョンが異なるソフトウェア要素の変更情報又は差分情報を分析し、
    前記記憶部は、前記変更情報又は前記差分情報を保存し、
    前記変更影響解析部は、前記記憶部に保存されている前記変更情報又は前記差分情報を参照し、前記変更情報又は前記差分情報のあるソフトウェア要素を前記表示部に表示する請求項1から10いずれか1項に記載のソフトウェア分析装置。
  12. 前記記憶部は、前記ソースコードの情報又は前記ソースコードに関連した関連文書の情報を保存し、
    前記変更影響解析部は、ソフトウェア要素とともに、前記ソースコードの情報又は前記関連文書の情報を前記表示部に表示する請求項1から11いずれか1項に記載のソフトウェア分析装置。
  13. システムによって統一された固定値を使用するソフトウェアのソフトウェア分析方法であって、
    ソフトウェアのソースコードを取得するソースコード取得工程と、
    前記ソースコードから前記固定値を抽出する固定値抽出工程と、
    前記ソースコードからプログラム要素を抽出して、前記固定値と前記プログラム要素との関連を抽出するプログラム要素抽出工程と、
    前記固定値と前記プログラム要素との関連を分析結果情報として記憶部に記憶する記憶工程と、
    前記記憶部に記憶された複数のソフトウェアのソースコードの分析結果情報から複数のソフトウェアの依存関係を解析する変更影響解析工程と
    を備えたソフトウェア分析方法。
JP2018500113A 2016-02-17 2017-02-14 ソフトウェア分析装置及びソフトウェア分析方法 Active JP6440895B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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