JP2012146243A - ソフトウェア構造解析装置、ソフトウェア構造解析方法及びプログラム - Google Patents

ソフトウェア構造解析装置、ソフトウェア構造解析方法及びプログラム Download PDF

Info

Publication number
JP2012146243A
JP2012146243A JP2011005751A JP2011005751A JP2012146243A JP 2012146243 A JP2012146243 A JP 2012146243A JP 2011005751 A JP2011005751 A JP 2011005751A JP 2011005751 A JP2011005751 A JP 2011005751A JP 2012146243 A JP2012146243 A JP 2012146243A
Authority
JP
Japan
Prior art keywords
communication
software structure
information
analysis
unit
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.)
Withdrawn
Application number
JP2011005751A
Other languages
English (en)
Inventor
Hidekazu Nakano
英一 中野
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2011005751A priority Critical patent/JP2012146243A/ja
Publication of JP2012146243A publication Critical patent/JP2012146243A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】TCP/IP等の通信によるソースファイルの関連性を明示できるソフトウェア構造解析装置を提供する。
【解決手段】本発明のソフトウェア構造解析装置は、解析対象ファイル読込部と、前記ファイルから、関数を抽出する関数情報抽出部と、通信情報判定用情報を参照して、前記関数のソースファイルから、モジュール間で通信を行うための通信用ソースコードを抽出する通信情報抽出部と、前記通信用ソースコードの関連性を解析するモジュール関連性解析部と、前記解析に基づいて、モジュール間の通信関係を含むソフトウェア構造を表示するモジュール関係表示部とを備える。
【選択図】図1

Description

本発明は、ソフトウェア構造解析に関し、特に、ネットワークを介して通信するソフトウェアの構造解析に関する。
ソフトウェアの全体構造を把握するために、ソフトウェア構造解析装置が利用されている。ソフトウェア構造解析装置を利用することにより、例えば、ソフトウェアの一部が変更になった際に、ソフトウェア開発者は、影響を受ける全てのソースファイルを、自動的に把握することができ、修正漏れ、テスト漏れを予防することができる。
ソフトウェア構造解析ツールの例としては、TechMatrix社(登録商標)のLattixや、Coverity社(登録商標)のArchitecture Analyzerが知られている。ソフトウェア構造解析装置は、このようなソフトウェア構造解析ツールをインストールしたパーソナルコンピュータ等で実現することができる。
一般に、ソフトウェア構造解析ツールは、解析対象ファイル(ソースファイル)読み込み機能、関数(メソッド)情報抽出機能、クラス情報抽出機能、モジュール関係解析及び表示機能等から構成されている。
近年の多くのソフトウェアは、クライアント−サーバシステムや、Webシステムに代表される3階層のシステム等、ネットワークを介して複数のモジュールが連携して動作するものが多い。この「通信するモジュール間の関係」を含めて、ソフトウェア構造の表示をすることができなければ、ソフトウェア全体の構造を把握することができない。通信の形態が、サーバとクライアントが1:1に通信する場合等、単純な場合には、これらのモジュールの関係は解析しなくとも把握できるため問題が無い。しかし、多くのモジュールが複雑に通信するようなソフトウェアでは、それぞれのモジュール内の関数呼び出し関係がわかっても、モジュール間の繋がりが簡単には把握できない。そのため、全体としてのソフトウェアの構造把握が十分に行うことができない。
TCP/IP(Transmission Control Protocol/Internet Protocol)等の通信によるソースファイルの関連性を明示できるソフトウェア構造解析ツールが必要とされてきている。
ソフトウェア構造解析ツールの例として、特開2008−293486号公報(特許文献1)に、ソースコードを解析して、関数の呼び出し関係と、関数とモジュールの包含関係とを得て、モジュール間呼出関連図を、ユーザが設定したモジュール単位で作成する技術が開示されている。
特開2008−293486号公報
本発明の目的は、TCP/IP等の通信によるソースファイルの関連性を明示できるソフトウェア構造解析装置を提供することである。
上記の課題を解決するために、本発明は、以下に述べられる手段を採用する。その手段を構成する技術的事項の記述には、[特許請求の範囲]の記載と[発明を実施するための形態]の記載との対応関係を明らかにするために、[発明を実施するための形態]で使用される番号・符号が付加されている。ただし、付加された番号・符号は、[特許請求の範囲]に記載されている発明の技術的範囲を限定的に解釈するために用いてはならない。
本発明のソフトウェア構造解析装置(10)は、解析対象ファイル読込部(22)と、前記ファイルから、関数を抽出する関数情報抽出部(23)と、通信情報判定用情報(34)を参照して、前記関数のソースファイルから、モジュール間で通信を行うための通信用ソースコードを抽出する通信情報抽出部(25)と、前記通信用ソースコードの関連性を解析するモジュール関連性解析部(26)と、前記解析に基づいて、モジュール間の通信関係を含むソフトウェア構造を表示するモジュール関係表示部(28)とを備える。
本発明のソフトウェア構造解析方法は、ソフトウェア構造解析装置により実施されるソフトウェア構造解析方法である。解析対象ファイル読込部が、解析対象のファイルを読み込むステップと、関数情報抽出部が、前記ファイルから、関数を抽出するステップと、通信情報抽出部が、通信情報判定用情報を参照するステップと、通信情報抽出部が、前記関数のソースファイルから、モジュール間で通信を行うための通信用ソースコードを抽出するステップと、モジュール関連性解析部が、前記通信用ソースコードの関連性を解析するステップと、モジュール関係表示部が、前記解析に基づいて、モジュール間の通信関係を含むソフトウェア構造を表示するステップとを含む。
本発明によれば、TCP/IP等の通信によるソースファイルの関連性を明示できるソフトウェア構造解析装置を提供することができる。
図1は、本発明の実施形態におけるソフトウェア構造解析装置10のブロック図である。 図2は、本発明の実施形態におけるソフトウェア構造解析装置10のソフトウェア構造解析方法のフローチャートである。
添付図面を参照して、本発明の実施形態によるソフトウェア構造解析装置10を以下に説明する。
[構成の説明]
はじめに、本実施形態におけるソフトウェア構造解析装置10の構成の説明を行う。図1は、本発明の実施形態におけるソフトウェア構造解析装置10のブロック図である。本実施形態のソフトウェア構造解析装置10は、入力装置1、データ処理装置2、記憶装置3及び表示装置4を備える。
入力装置1は、キーボードやマウス等の、ユーザがソフトウェア構造解析装置10を操作するための入力手段である。データ処理装置2は、CPU(Central Processing Unit)及びメモリを備え、プログラム制御により、ソフトウェア構造を解析する。記憶装置3は、HDD(Hard Disk Drive)等であり、本実施形態によるソフトウェア構造解析装置10のソフトウェア構造解析に必要な情報を記録する。表示装置4は、LCD(Liquid Crystal Display)等のディスプレイ装置であり、本実施形態によるソフトウェア構造解析装置10のソフトウェア構造解析結果等を表示する。
次に、データ処理装置2及び記憶装置3の構成について、詳しく説明する。
データ処理装置2は、解析対象フォルダ選択部21、解析対象ファイル(ソースファイル)読込部22、関数(メソッド)情報抽出部23、クラス情報抽出部24、通信情報抽出部25、モジュール関連性解析部26、通信情報関連性確認部27及びモジュール関係表示部28を備える。
記憶装置3は、ファイル情報31、関数(メソッド)情報32、クラス情報33、通信情報判定用情報34、通信情報35及びモジュール関係情報36を備える。
解析対象フォルダ選択部21は、解析対象とするソースファイルが含まれるフォルダを選択する。
解析対象ファイル(ソースファイル)読込部22は、解析対象フォルダ選択部21によって選択されたフォルダから、解析の対象となるソースファイルを読み込む。解析対象ファイル(ソースファイル)読込部22は、解析の対象となるソースファイルを記憶装置3のファイル情報31に記録する。
関数(メソッド)情報抽出部23は、ファイル情報31から、関数(メソッド)の情報を抽出し、関数(メソッド)情報32として記憶装置3に格納する。
クラス情報抽出部24は、ファイル情報31から、クラスの情報を抽出し、クラス情報33として、記憶装置3に格納する。
通信情報抽出部25は、通信情報判定用情報34に基づいて、関数(メソッド)情報32から、他のモジュールと通信するためのコード情報を抽出し、通信情報35として記憶装置3に格納する。通信情報判定用情報34は、モジュール間で通信を行うためのソースコードパターンが格納されている。
モジュール関連性解析部26は、関数(メソッド)情報32、クラス情報33及び通信情報35に基づいて、関数、クラス、モジュール間通信の関連性を解析し、モジュール関係情報36として、解析結果を記憶装置3に格納する。
通信情報関連性確認部27は、モジュール関連性解析部26の解析結果から、完全に自動で解析することが難しい通信情報の関連性については、ユーザにモジュール間の通信関係の有無を判断させる画面を表示する。このようにすることで、解析結果が正しいかどうかをユーザが確認することができる。通信情報関連性確認部27は、ユーザにより決定された情報をモジュール関係情報36として記憶装置3に格納する。
モジュール関係表示手段28は、記憶装置3に格納されたモジュール関係情報36を、関数のコールグラフや、モジュール関連図などによりユーザに分かりやすく表示する。
[動作方法の説明]
次に、本実施形態におけるソフトウェア構造解析装置10において、ソフトウェア構造解析方法の説明を行う。図2は、本発明の実施形態におけるソフトウェア構造解析装置10のソフトウェア構造解析方法のフローチャートである。
(ステップS1)
解析対象フォルダ選択部21は、ユーザによって選択された解析対象のソースファイルが含まれるフォルダを選択する。
(ステップS2)
解析対象ファイル(ソースファイル)読込部22は、解析対象のソースファイルが含まれるフォルダから、ソースファイルを1つ読み込む。
(ステップS3)
関数(メソッド)情報抽出部23は、ファイル情報31から、関数(メソッド)の情報を抽出し、関数(メソッド)情報32として記憶装置3に格納する。
クラス情報抽出部24は、ファイル情報31から、クラスの情報を抽出し、クラス情報33として、記憶装置3に格納する。
(ステップS4)
通信情報抽出部25は、通信情報判定用情報34に基づいて、関数(メソッド)情報32から、他のモジュールと通信するためのコード情報を抽出し、通信情報35として記憶装置3に格納する。通信情報判定用情報34は、モジュール間で通信を行うためのソースコードパターンが格納されている。通信情報抽出部25は、このコードパターンとマッチングさせることで、他のモジュールと通信するためのコード情報である通信情報35を作成する。
例えば、他のモジュールとの通信が、TCP/IPのソケット通信部を対象である場合には、まず、通信情報抽出部25が、ソケット通信によるクライアントソケット生成部のコードを抽出する。Java(登録商標)言語の場合には、「Socket cs = new Socket(hostname,5555);」等である。次に、通信情報抽出部25が、このクライアントソケットに対応したサーバソケットであると予測されるコードを抽出する。この場合、「ServerSocket ss = new ServerSocket(5555);」、「Socket conn = ss.accept();」等である。通信情報判定用情報34には、上述のようなTCP/IP通信を利用するためのコードパターンが格納されている。
また、他の例として、他のモジュールとの通信が、http(Hypertext Transfer Protocol)通信であり、解析対象のソースコードが、Servlet、CGIスクリプト等である場合には、「URL netUrl = new URL(http://www.aa.bb.com/myservlet);」、「connection = (HttpURLConnection) netUrl.openConnection();」、「connection.setRequestMethod(“POST”);」等が、通信情報判定用情報34のコードパターンの候補となる。
(ステップS5)
解析対象ファイル(ソースファイル)読込部22は、フォルダ内の全てのソースファイルを読み込んだ場合には、ステップS6へ進み、読み込んでいない場合には、ステップS2へ進む。
(ステップS6)
モジュール関連性解析部27は、関数の呼び出し関係解析及びクラス呼び出し関係解析を行う。
(ステップS7)
モジュール関連性解析部27は、通信情報35の各々に対しての関連性の解析を行う。また、通信情報関連性確認部28は、通信情報35の各々に対しての関連性を自動で決定できない情報に対しては、ユーザが目視で判定することができるように、ユーザに解析の結果に対して、関連性があるかどうかを判断させるための画面を表示する。
モジュール関連性解析部27は、ステップS4で抽出した通信情報35に対して、クライアントソケットが利用している通信ポート番号等を利用して、対応していると予測されるクライアントソケットとサーバソケットの組を自動抽出する。モジュール関連性解析部26は、更に、実際にこれらが通信していると見なせるかどうかを判断する。判断基準としては、これらのソケットが実際に通信を行っている部分(send, recv命令の部分など)に着目し、通信データの大きさや、ソケットタイプがあっているかどうかで判定する。
(ステップS8)
モジュール関係表示部28は、ユーザに対して通信情報を考慮したモジュール関係表示を行い、ソフトウェア構造解析処理を終了する。
本発明の実施形態のソフトウェア構造解析装置10によれば、TCP/IP等の通信によるソースファイルの関連性を明示できるソフトウェア構造解析装置を提供することができる。これにより、複数のモジュールが通信するシステムの全体構造の可視化が可能となる。また、プログラム改修時の影響範囲を抽出する際、改修対象のプログラムに対応するモジュールと、ネットワークを介して通信するモジュールとの影響範囲も抽出することができる。本発明の実施形態のソフトウェア構造解析装置10は、通信によるモジュールの関連性も把握できるため、一般のソフトウェア構造解析装置よりも、より詳細なモジュール間の関連を把握することができる。そのため、プログラムの改修が重なる等の理由により、最新のプログラムの状態に対応する仕様書がない等、ブラックボックス化しているソフトウェアの構造を把握する用途にも、利用することができる。
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
1 入力装置
2 データ処理装置
3 記憶装置
4 表示装置
10 ソフトウェア構造解析装置
21 解析対象フォルダ選択部
22 解析対象ファイル(ソースファイル)読込部
23 関数(メソッド)情報抽出部
24 クラス情報抽出部
25 通信情報抽出部
26 モジュール関連性解析部
27 通信情報関連性確認部
28 モジュール関係表示部
31 ファイル情報
32 関数(メソッド)情報
33 クラス情報
34 通信情報判定用情報
35 通信情報
36 モジュール関係情報

Claims (9)

  1. 解析対象のファイルを読み込む解析対象ファイル読込部と、
    前記ファイルから、関数を抽出する関数情報抽出部と、
    通信情報判定用情報を参照して、前記関数のソースファイルから、モジュール間で通信を行うための通信用ソースコードを抽出する通信情報抽出部と、ここで、前記通信情報判定用情報は、モジュール間で通信を行うためのソースコードパターンが格納され、
    前記通信用ソースコードの関連性を解析するモジュール関連性解析部と、
    前記解析に基づいて、モジュール間の通信関係を含むソフトウェア構造を表示するモジュール関係表示部と
    を備えるソフトウェア構造解析装置。
  2. 前記ソフトウェア構造解析装置は、
    前記ファイルからクラス情報を抽出するクラス情報抽出部を更に備え、
    前記モジュール関係表示部は、
    クラス情報を含んだソフトウェア構造を表示する
    請求項1に記載のソフトウェア構造解析装置。
  3. 前記ソフトウェア構造解析装置は、
    前記解析対象のファイルを一括で読み込む解析対象フォルダ選択部を更に備える
    請求項1又は2に記載のソフトウェア構造解析装置。
  4. 前記ソフトウェア構造解析装置は、
    前記モジュール間の通信関係の有無を、前記解析の結果から、ユーザに判断させる画面を表示する通信情報関連性確認部を更に備える
    請求項1乃至3のいずれか1項に記載のソフトウェア構造解析装置。
  5. 解析対象ファイル読込部が、解析対象のファイルを読み込むステップと、
    関数情報抽出部が、前記ファイルから、関数を抽出するステップと、
    通信情報抽出部が、通信情報判定用情報を参照するステップと、ここで、前記通信情報判定用情報は、モジュール間で通信を行うためのソースコードパターンが格納され、
    通信情報抽出部が、前記関数のソースファイルから、モジュール間で通信を行うための通信用ソースコードを抽出するステップと、
    モジュール関連性解析部が、前記通信用ソースコードの関連性を解析するステップと、
    モジュール関係表示部が、前記解析に基づいて、モジュール間の通信関係を含むソフトウェア構造を表示するステップと
    を含むソフトウェア構造解析方法。
  6. 前記ソフトウェア構造解析方法は、
    クラス情報抽出部が、前記ファイルからクラス情報を抽出するステップを更に含み、
    前記表示するステップは、
    クラス情報を含んだソフトウェア構造を表示するステップを更に含む
    請求項5に記載のソフトウェア構造解析方法。
  7. 前記ソフトウェア構造解析方法は、
    解析対象フォルダ選択部が、前記解析対象のファイルを一括で読み込むステップを更に含む
    請求項5又は6に記載のソフトウェア構造解析方法。
  8. 前記ソフトウェア構造解析方法は、
    通信情報関連性確認部が、前記モジュール間の通信関係の有無を、前記解析の結果から、ユーザに判断させる画面を表示するステップを更に含む
    請求項5乃至7のいずれか1項に記載のソフトウェア構造解析方法。
  9. 請求項5乃至8のいずれか1項に記載のソフトウェア構造解析方法をコンピュータに実行させるためのプログラム。
JP2011005751A 2011-01-14 2011-01-14 ソフトウェア構造解析装置、ソフトウェア構造解析方法及びプログラム Withdrawn JP2012146243A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011005751A JP2012146243A (ja) 2011-01-14 2011-01-14 ソフトウェア構造解析装置、ソフトウェア構造解析方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011005751A JP2012146243A (ja) 2011-01-14 2011-01-14 ソフトウェア構造解析装置、ソフトウェア構造解析方法及びプログラム

Publications (1)

Publication Number Publication Date
JP2012146243A true JP2012146243A (ja) 2012-08-02

Family

ID=46789724

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011005751A Withdrawn JP2012146243A (ja) 2011-01-14 2011-01-14 ソフトウェア構造解析装置、ソフトウェア構造解析方法及びプログラム

Country Status (1)

Country Link
JP (1) JP2012146243A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017097700A (ja) * 2015-11-26 2017-06-01 日本電信電話株式会社 通信特徴抽出装置、パケット分類装置、通信特徴抽出方法、パケット分類方法、及びプログラム
WO2017141893A1 (ja) * 2016-02-17 2017-08-24 三菱電機株式会社 ソフトウェア分析装置及びソフトウェア分析方法
WO2018158893A1 (ja) * 2017-03-01 2018-09-07 三菱電機株式会社 ソースコード解析装置、ソースコード解析方法及びソースコード解析プログラム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017097700A (ja) * 2015-11-26 2017-06-01 日本電信電話株式会社 通信特徴抽出装置、パケット分類装置、通信特徴抽出方法、パケット分類方法、及びプログラム
WO2017141893A1 (ja) * 2016-02-17 2017-08-24 三菱電機株式会社 ソフトウェア分析装置及びソフトウェア分析方法
JPWO2017141893A1 (ja) * 2016-02-17 2018-04-26 三菱電機株式会社 ソフトウェア分析装置及びソフトウェア分析方法
WO2018158893A1 (ja) * 2017-03-01 2018-09-07 三菱電機株式会社 ソースコード解析装置、ソースコード解析方法及びソースコード解析プログラム

Similar Documents

Publication Publication Date Title
US7725574B2 (en) Web browser-based programming language error determination and reporting
US7810070B2 (en) System and method for software testing
Garcia‐Erill et al. Evaluation of model fit of inferred admixture proportions
US9582404B2 (en) Method for testing a browser-based application
WO2013075612A1 (zh) 自动登录方法及装置
US20150012987A1 (en) Multi-account login method and apparatus
US20120143947A1 (en) Method, apparatus, and program for usability analysis of web applications
US20170091382A1 (en) System and method for automating data generation and data management for a next generation sequencer
CN111427803A (zh) 自动化随机测试方法、装置、计算机设备及介质
CN105205144A (zh) 用于数据诊断优化的方法和系统
US11709768B1 (en) Self-healing hybrid element identification logic
JP2012146243A (ja) ソフトウェア構造解析装置、ソフトウェア構造解析方法及びプログラム
US20180210819A1 (en) System and method of controlling a web browser plug-in for testing analytics
Manoukis FORMATOMATIC: a program for converting diploid allelic data between common formats for population genetic analysis
JP6861880B1 (ja) 生成装置、生成方法および生成プログラム
CN106126240A (zh) 一种定制移动终端桌面快捷图标的方法及系统
CN112148618A (zh) 埋点测试方法和埋点测试平台
US11886790B2 (en) Method and system for automatic test website layout
CN115033436A (zh) 页面测试方法及装置、电子设备、存储介质
JP6902871B2 (ja) 向上したドキュメント生産性のためのエンティティ認識
JP7294348B2 (ja) 業務効率化装置、業務効率化方法、及びプログラム
JP2007200047A (ja) アクセスログ表示システムおよび方法
JP2010191483A (ja) 操作支援装置、操作支援方法、及びプログラム
US9942300B2 (en) Dynamic help pages using linked data
CN111651766A (zh) 越权访问的测试方法及装置

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20140401