JP6636873B2 - ソースコードからの仕様抽出装置 - Google Patents

ソースコードからの仕様抽出装置 Download PDF

Info

Publication number
JP6636873B2
JP6636873B2 JP2016134681A JP2016134681A JP6636873B2 JP 6636873 B2 JP6636873 B2 JP 6636873B2 JP 2016134681 A JP2016134681 A JP 2016134681A JP 2016134681 A JP2016134681 A JP 2016134681A JP 6636873 B2 JP6636873 B2 JP 6636873B2
Authority
JP
Japan
Prior art keywords
source code
scoring
rule
block
role
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.)
Active
Application number
JP2016134681A
Other languages
English (en)
Other versions
JP2018005746A (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2016134681A priority Critical patent/JP6636873B2/ja
Publication of JP2018005746A publication Critical patent/JP2018005746A/ja
Application granted granted Critical
Publication of JP6636873B2 publication Critical patent/JP6636873B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、既存システムにおけるソースコードからの仕様抽出に関する。
現状、旧システムから新システムへのリプレース開発では、旧システムの正確なドキュメントが残されておらず旧システムのログやソースコードから仕様を再生する必要がある。
特に、エンタープライズシステムにおけるサービス等の業務ルールの仕様を分析する場合には、ソースコードを参照し、ある業務項目がいかなる値を持ったときにどのルールが適用されるのかという業務ルールの仕様を開発者が理解する必要がある。
しかしながら、ソースコードは膨大にあり、かつ、業務ルールに直接貢献しないコードも多数含まれるため、有識者の知見に頼らないと業務ルールの仕様の理解は困難となっているが実情である。
上記に関連する従来技術として、特許第4820924号公報(特許文献1)と特許4838553号公報(特許文献2)がある。
特許文献1には、情報処理システムに使用されるソースコードから、コード種類、コード組み合せ、コード配置といった処理機能を単位プログラムとして抽出する機能と、抽出された単位プログラムの順序から単位プログラムを統合し処理プログラムの物理モデルとして出力する技術が記載されている。
また、特許文献2には、通信文およびドキュメント内のキーワード特徴、語彙特徴および文パターンの特徴について、与えられたトレーニングデータにより学習を行い、スコアリングを行うことで、通信の優先順位を決定する技術が記載されている。
特許4820924号公報 特許4838553号公報
特許文献1の発明は、ソースコードから各情報の抽出を行う。しかしながら、すべてのソースコードの文を等しく扱っているため、例えば、業務ルールの仕様を実現するための仕様と、システム構築上記述せざるを得ない実装レベルの仕様が混在してしまう。
また、特許文献2の発明は、ドキュメント内のキーワードやパターンでスコアリングを行う。しかしながら、自然言語で書かれた文章を対象としており、字面上の特徴しか把握することができず、ソースコード上で定義される構造を特徴として把握することができない。
従って、特許文献1及び2の発明は、ソースコードから業務ルールの仕様を理解するために利用することは難しい。
上記課題を解決するために、本発明では、ソースコードを条件文と処理文として分け、条件文を「業務ルール判断」「データチェック・形式変換判断」「システムエラーチェック判断」「プログラムフロー制御判断」の4種類の役割に分類した上で、以下の処理を行う。
分析対象システムのソースコードであって、条件文と処理分とからなるブロック情報で構成されるソースコードから仕様を抽出するために、分析対象システムのソースコードを受け付け、受け付けたソースコードの制御関係を分析し、受け付けたソースコードと分析された制御関係の結果を保持し、保持されるソースコードとその制御関係の結果から、ソースコードを構成する各ブロック情報の貢献役割のスコアリングを行い、貢献役割のスコアリング結果に基づき、スコアが高いソースコードの貢献役割を出力する。
本発明によれば、分析対象である既存システムのソースコードを構成する各ブロック情報の確度の高い貢献役割を出力することによって、開発者は、業務ルールの仕様の理解に必要なソースコードだけを注目して見ることができる。その結果、従来のように有識者の知見に頼らなくても業務ルール仕様の理解をすることができ、従来よりも効率的になる。また、機械化により、既存システムの業務ルールの仕様について漏れなく確認することができる。最終的には業務ルールの仕様の再生を効率的に漏れなく行うことができる。
本実施例におけるソースコードからの仕様抽出装置100の構成図の例である。 ソースコード依存関係分析プログラム120によりソースコードの制御関係を分析した結果であるソースコード制御関係分析結果テーブルT161の例である。 ソースコード依存関係分析プログラム120により変数間の依存関係を分析した結果であるデータ依存関係分析結果テーブルT162の例である。 貢献役割スコアリングプログラム130内の特徴的な機能構成の一例を説明する図である。 記述評価部131で用いる記述評価部関連スコアリングルールテーブルT181の一例をである。 依存関係評価部132で用いる依存関係評価部関連スコアリングルールテーブルT182の一例である。 プロジェクト固有情報評価部133で用いるプロジェクト固有情報評価部関連スコアリングルールテーブルT183の一例である。 データ項目辞書テーブルT171の例および部品構成テーブルT172の例である。 相関評価部134で用いる、相関評価部関連スコアリングテーブルT184の一例である。 貢献役割スコアリングプログラム130の動作の流れの一例を示すフローチャートS100である。 結果出力プログラム150による出力結果の一例である。
以下、実施例を図面を用いて説明する。
本実施例では、ソースコードからの仕様抽出装置100の例を説明する。
図1は、本実施例におけるソースコードからの仕様抽出装置100の構成図の例である。
既存システム画面仕様抽出装置100は、CPU(Central Processing Unit)101、メモリ102、外部記憶装置103、入力装置106、出力装置107、通信装置108を有し、バス104を介してCPU101、メモリ102、外部インターフェース105が接続されている。また外部インターフェース105には、外部記憶装置103、入力装置106、出力装置107、通信装置108が接続されている。
外部記憶装置103は、CPU101において実行される処理プログラムとしてソースコード入力プログラム110、ソースコード依存関係分析プログラム120、貢献役割スコアリングプログラム130、結果出力プログラム150を保持している。これらのプログラムは外部記憶装置103よりメモリ102に読み出されCPU101で実行される。
また、外部記憶装置103は、ソースコード解析結果記録部160と、プロジェクト情報記録部170と、スコアリングルール記録部180とを有する。
ソースコード入力プログラム110の実行によって、入力装置106もしくは通信装置108を通じ、分析対象システムのソースコードが受け付けられ、ソースコード解析結果記録部160に格納される。
ソースコード依存関係分析プログラム120の実行によって、ソースコード解析結果記録部160よりソースコード群が読み出され、ソースコードは条件部と処理部からなるブロックへと分割される。また、ソースコードの制御関係に基づき、当該ブロック処理がすべて完了した後に実行される後続ブロックと、呼び出し関係を含む当該ブロックの処理を実現する、構造の子の関係となるブロックとが分析され、ソースコード解析結果記録部160へ記録される。
図2は、ソースコード依存関係分析プログラム120の実行によりソースコードの制御関係が分析された結果であるソースコード制御関係分析結果テーブルT161の例である。ソースコード制御関係分析結果テーブルT161は、格納される情報としてブロックの識別子であるブロックNoT1610と、当該ブロックが所属するクラスやメソッド、ファイルなどを一意に識別するモジュール名T1611と、当該ブロックの条件文、条件の判断結果及び処理文とを含む情報を保持するブロック情報T1612と、当該ブロック処理がすべて完了した後に実行される後続ブロックのブロックNoを参照する後続ブロックNoT1613と、呼び出し関係を含む当該ブロックの処理を実現する、構造の子の関係となるブロックのブロックNoを参照する子ブロックNoT1614とを含む。
意味をレコードT1615を用いて説明する。
ブロックNo”11”のブロックは、モジュール”StatsEvaluater.evaluate”に含まれるブロックであり、当該ブロックの先頭で条件文”if(caseStats == 1)”が評価される。評価の結果が真(True)であれば、そのままT1615の処理文を実行する。この処理文内では、子ブロックであるブロックNo”20”で示されるブロックへ制御が移る。子ブロック内の処理を含むT1615の処理がすべて完了した後、制御は後続ブロックNoの示すブロックNo”13”へ移る。
ソースコード依存関係分析プログラム120の実行によって、ソースコード解析結果記録部160よりソースコード群が読み出され、各ブロックをまたがる変数に関する依存関係が分析され、ソースコード解析結果記録部160へ記録される。データ依存関係とは、ある変数から他の変数への直接代入や、ある変数へ他のいくつかの変数に関する演算結果を代入した際に生じる関係の事を指し、例えば、”X = Y + Z”という演算代入文があった場合、変数Xと変数Y、変数Xと変数Zの間にはデータの依存関係が生じる。
図3は、ソースコード依存関係分析プログラム120の実行により変数間の依存関係が分析された結果であるデータ依存関係分析結果テーブルT162の例である。データ依存関係分析結果テーブルT162は、データの依存関係群を識別するデータ依存IDのT1620と、対象となる変数が所属するモジュールを識別するモジュール名T1621と、変数を識別する変数名T1622と、当該変数の属性を示す変数属性T1623とを含む。レコードT1624、レコードT1625およびレコードT1626はそれぞれ同一のデータ依存関係にある変数群(IDはD1000)であり、レコードT1624は、モジュール名”AcountInScreen.in”における変数”ankenJotai”を示し、変数属性として”画面フォーム”に関連付けられていることを示す。同様にT1625,1626もそれぞれのモジュールにおける変数名と属性を示している。
図1に戻り、貢献役割スコアリングプログラム130の実行によって、ソースコードの依存関係が分析され格納されたソースコード解析結果記録部160内のソースコード制御関係分析結果テーブルT161について、データ依存関係分析結果テーブルT162やプロジェクト情報記録部170に格納されている情報を参照しながら、スコアリングルール記録部180に格納されたスコアリングルールに基づき、各ブロックの貢献役割のスコアリングが行われる。
図4は、貢献役割スコアリングプログラム130内の特徴的な機能構成の一例を説明する図である。
本実施例において、貢献役割スコアリングプログラム130は、スコアリング対象とする特徴量のカテゴリ別に、記述評価部131と、依存関係評価部132と、プロジェクト固有情報評価部133と、相関評価部134とから構成される。
また、本実施例においては、貢献役割スコアリングプログラム130の実行によって、プログラムの貢献役割を、「業務ルール判断処理」「データチェック・形式変換判断処理」「システムエラーチェック判断処理」「プログラムフロー制御判断処理」として、各ブロックのどの役割の判断や処理を実現しているかが分類される。
なお、この4分類はあくまで一例であり、抽出を目的とする仕様により増減があってもかまわない。
記述評価部131の実行によって、ソースコードの記述そのものに対するスコアリングが行われる。例えば、プログラム文型・予約語評価部1310と、処理種別評価部1311と、プログラムイディオム評価部1312とから構成される。
図5に、記述評価部131で用いる記述評価部関連スコアリングルールテーブルT181の一例を示す。本スコアリングルールは、スコアリングルール記録部180にあらかじめ格納されている。記述評価部関連スコアリングルールテーブルT181は、当該ルールのカテゴリT1810と、当該ルールを識別するルールIDT1811と、評価内容であるスコアリングルールT1812と、当該ルールが対象とする対象言語T1813と、判定対象のブロックが当該ルールを満たした際に、どの役割へ貢献しているかの尤度を役割種別(「業務ルール判断処理」「データチェック・形式変換判断処理」「システムエラーチェック判断処理」「プログラムフロー制御判断処理」)ごとにスコアを定めたブロック役割種別加算スコアT1814とを含む。
なお、図5で示しているブロック役割種別加算スコアT1814はあくまで一例であり、図に掲載した数値に限られるものではない。
プログラム文型・予約語評価部1310の実行によって、ソースコード解析結果記録部160のソースコード制御関係分析結果テーブルT161より1ブロックずつ読み込み、記述評価部関連スコアリングルールテーブルT181のカテゴリT1810が”文型・予約語”であるものが順次評価されていく。
例えば、レコードT1815に示されるルールであれば、読み込んだブロックの条件文がIF文であるかどうかを判定し、もし、IF文であれば、「業務ルール判断処理」「データチェック・形式変換判断処理」「システムエラーチェック判断処理」の役割に各々+1をスコア加点する。「プログラムフロー制御判断処理」の役割には0点を加点する。尚、以下では省略するが、貢献役割スコアリングプログラム130の各ルール判断において、読み込んだブロックにおいてルールが成立した際は、その成立したルールIDをブロックNoに紐付け、逐次記録しておく。
同様に、処理種別評価部1311は、読み込んだブロックについて、カテゴリT1810が”処理種別”であるものを順次評価していく。
例えば、レコードT1816に示されるルールであれば、読み込んだブロックの処理部に文字列演算が含まれるか否かを判定し、もし、文字列演算が含まれていれば「業務ルール判断処理」、「データチェック・形式変換判断処理」、「システムエラーチェック判断処理」、および「プログラムフロー制御判断処理」の役割に、各々0、+1、−1、−1をスコアとして加算する。
また、同様に、プログラムイディオム評価部1312の実行によって、読み込んだブロックについて、カテゴリT1810が”プログラムイディオム”であるものが順次評価されていく。
例えば、レコードT1817に示されるルールであれば、読み込んだブロックの条件部にNullとの比較演算が含まれるか否かを判定し、もし、Nullとの比較演算が含まれていれば「業務ルール判断処理」、「データチェック・形式変換判断処理」、「システムエラーチェック判断処理」、および「プログラムフロー制御判断処理」の役割に、各々0、0、+1、+0.5をスコアとして加算する。
図4に戻り、依存関係評価部132の実行によって、ソースコードの依存関係について分析された結果に基づくスコアリングが行われ、例えば、データ依存関係評価部1320から構成される。
図6に、依存関係評価部132で用いる依存関係評価部関連スコアリングルールテーブルT182の一例を示す。当該スコアリングルールは、スコアリングルール記録部180にあらかじめ格納されている。依存関係評価部関連スコアリングルールテーブルT182は、記述評価部関連スコアリングルールテーブルT181と同様、カテゴリT1820と、ルールIDT1821と、スコアリングルールT1822と、対象言語T1823と、ブロック役割種別加算スコアT1824とを含む。なお、図6で示しているブロック役割種別加算スコアT1824はあくまで一例であり、図に掲載した数値に限られるものではない。
データ依存関係評価部1320の実行によって、ソースコード解析結果記録部160ソースコード制御関係分析結果テーブルT161より1ブロックずつ読み込み、依存関係評価部関連スコアリングルールテーブルT182のカテゴリT1820が”データ依存”であるものが順次評価されていく。
評価においては、ソースコード解析結果記録部160に格納されたデータ依存関係分析結果テーブルT162が参照される。
例えば、レコードT1825に記載されたルールを判定する際には、読み込んだブロックの条件文、及び処理文の変数を抽出し、モジュール名および変数名で依存関係評価部関連スコアリングルールテーブルT182を検索する。検索された変数に付与されたデータ依存IDを取得し、再度当該データ依存IDでデータ依存関係分析結果テーブルT162を検索する。得られた変数群の変数属性を参照し、その中に値が「画面フォーム」であるものが存在すれば、本ルールは成立したとし、評価対象であるブロックの「業務ルール判断処理」、「データチェック・形式変換判断処理」、「システムエラーチェック判断処理」、および「プログラムフロー制御判断処理」の役割に、各々+2、+2、−1、−1をスコアとして加算する。
図4に戻り、プロジェクト固有情報評価部133の実行によって、分析対象システムの開発プロジェクト固有の特徴に基づくスコアリングが行われ、例えば、項目辞書利用評価部1330と部品構成評価部1331から構成される。
図7に、プロジェクト固有情報評価部133の実行で用いられるプロジェクト固有情報評価部関連スコアリングルールテーブルT183の一例を示す。本スコアリングルールはスコアリングルール記録部180にあらかじめ格納されている。プロジェクト固有情報評価部関連スコアリングルールテーブルT183は、記述評価部関連スコアリングルールテーブルT181などと同様、カテゴリT1830と、ルールIDT1831と、スコアリングルールT1832と、対象言語T1833と、ブロック役割種別加算スコアT1834とを含む。
なお、図7で示しているプロジェクト固有情報評価部関連スコアリングルールテーブルT183はあくまで一例であり、図に掲載した数値に限られるものではない。
項目辞書利用評価部1330の実行によって、評価対象のブロックで利用される変数名やモジュール名などに、分析対象システムのデータ項目辞書に定められた名称が利用されているか否かに基づくスコアリングが行われ、プロジェクト情報記録部170にあらかじめ格納された分析対象システムのデータ項目辞書テーブルが参照される。
図8にデータ項目辞書テーブルT171の例を示す。データ項目辞書テーブルT171は、項目IDと、項目名と、項目変数名と、説明とを含む情報である。
項目辞書利用評価部1330の実行によって、ソースコード解析結果記録部160のソースコード制御関係分析結果テーブルT161より1ブロックずつ読み込み、プロジェクト固有情報評価部関連スコアリングルールテーブルT183のカテゴリT1830が”項目辞書活用”であるものが順次評価されていく。
例えば、レコードT1835に記載されたルールを判定する際には、まず、項目辞書利用評価部1330は読み込んだブロックの条件文より変数名を抽出し、データ項目辞書テーブルT171の項目変数名に完全一致する文字列が存在するか否かが検索される。完全一致するものが存在すれば、本ルールは成立したとし、評価対象であるブロックの「業務ルール判断処理」、「データチェック・形式変換判断処理」、「システムエラーチェック判断処理」、および「プログラムフロー制御判断処理」の役割に、各々+1、+1、0、0をスコアとして加算する。
部品構成評価部1331の実行によって、評価対象のブロックが所属する、クラスやメソッドなどのモジュール名やその所属パッケージなどの構成情報に基づくスコアリングが行われ、プロジェクト情報記録部170にあらかじめ格納された分析対象システムの部品構成テーブルが参照される。
図8に、部品構成テーブルT172の例を示す。部品構成テーブルT172は、構成IDと、構成名と、グループとを含む情報である。
部品構成評価部1331の実行によって、ソースコード解析結果記録部160のソースコード制御関係分析結果テーブルT161より1ブロックずつ読み込み、プロジェクト固有情報評価部関連スコアリングルールテーブルT183のカテゴリT1830が”部品構成”であるものが順次評価されていく。
例えば、レコードT1836に記載されたルールを判定する際には、まず、部品構成評価部1331は読み込んだブロックのモジュール名を抽出し、部品構成テーブルT172の構成名に一致するものが検索される。一致するものが存在すれば、本ルールは成立したとし、評価対象であるブロックの「業務ルール判断処理」、「データチェック・形式変換判断処理」、「システムエラーチェック判断処理」、および「プログラムフロー制御判断処理」の役割に、各々+1、+1、0、0をスコアとして加算する。
図4に戻り、相関評価部134の実行によって、これまで記述評価部131、依存関係評価部132、プロジェクト固有情報評価部133で述べてきたようなスコアリングルールの判定結果に基づくスコアリングが行われ、例えば、分類結果前後関係評価部1340と評価相関ルール評価部1341とから構成される。
図9に、相関評価部134の実行で用いられる、相関評価部関連スコアリングテーブルT184の一例を示す。本スコアリングルールはスコアリングルール記録部180にあらかじめ格納されている。相関評価部関連スコアリングテーブルT184は、記述評価部関連スコアリングルールテーブルT181などと同様、カテゴリT1840と、ルールIDT1841と、スコアリングルールT1842と、対象言語T1843と、ブロック役割種別加算スコアT1844とを含む。
なお、図9で示している相関評価部関連スコアリングルールテーブルT184はあくまで一例であり、図に掲載した数値に限られるものではない。
分類結果前後関係評価部1340の実行によって、評価対象であるブロックの前後のブロックにおいて貢献役割スコアリングプログラム130が仮付与した分類の種類に基づくスコアリングが行われる。後述するが、すでに貢献役割スコアリングプログラム130の実行でブロックの分類が付与されているのは、複数回の実行を想定しているためである。
項目辞書利用評価部1330の実行によって、ソースコード解析結果記録部160のソースコード制御関係分析結果テーブルT161より1ブロックずつ読み込み、プロジェクト固有情報評価部関連スコアリングルールテーブルT184のカテゴリT1840が”分類前後関係”であるものが順次評価されていく。
例えば、レコードT1845に記載されたルールを判定する際には、まず、ソースコード制御関係分析結果テーブルT161の後続ブロックNoに基づき、評価対象ブロックの直前のブロックが抽出される。抽出された直前ブロックのブロック貢献役割種別が「業務ルール判断処理」であれば本ルールは成立したとし、評価対象であるブロックの「業務ルール判断処理」、「データチェック・形式変換判断処理」、「システムエラーチェック判断処理」、および「プログラムフロー制御判断処理」の役割に、各々+1、0、0、0をスコアとして加算する。
評価相関ルール評価部1341の実行のよって、評価対象のブロックにおいて、これまでに述べた記述評価部131、依存関係評価部132、プロジェクト固有情報評価部133、相関評価部134の各スコアリングルールの成立および不成立の結果に基づくスコアリングが行われる。評価相関ルール評価部1341の実行によって、ソースコード解析結果記録部160のソースコード制御関係分析結果テーブルT161より1ブロックずつ読み込み、プロジェクト固有情報評価部関連スコアリングルールテーブルT184のカテゴリT1840が”ルール相関”であるものが順次評価されていく。
例えば、レコードT1846に記載されたルールを判定する際には、まず、評価対象のブロックNoに基づき、ソースコード解析結果記録部160より、評価対象ブロックの成立ルールリストが取得される。抽出された成立ルールリストの中に、「R00001」および「R30001」が同時に含まれれば本ルールは成立したとし、評価対象であるブロックの「業務ルール判断処理」、「データチェック・形式変換判断処理」、「システムエラーチェック判断処理」、および「プログラムフロー制御判断処理」の役割に、各々+1、0、0、0をスコアとして加算する。尚、本例の意味は、R00001すなわち「条件部がIF文である」およびR30001「同一データIDに変数属性『画面フォーム』を含む変数が存在する」が同時に成立する場合、「業務ルール判断処理」である尤度がスコア上高まるということである。
なお、本例においてプロジェクト固有情報評価部関連スコアリングルールテーブルT184のカテゴリT1840が”ルール相関”であるものは2つのルールIDが同時に成立するもののみを挙げているが、当然2つ以上複数のルールIDの相関関係を扱うことができるし、不成立であることを条件とすることもできる。
以上、貢献役割スコアリングプログラム130の実行によって、記述評価部131、依存関係評価部132、プロジェクト固有情報評価部133、相関評価部134の各部の実行により評価されたスコアリング結果に基づき、各ブロックについて尤度の高い貢献役割分類が付与される。本実施例においては、スコアが最高となった分類を、当該ブロックの貢献役割分類として説明するが、閾値や、相対的な倍率に基づき、1つのブロックが複数の役割に属するよう分類を行ってもかまわない。
以上、図4を用いて、貢献役割スコアリングプログラム130を構成する各評価機能の働きについて説明した。次に、図10を用いて、貢献役割スコアリングプログラム130の実行が全体としてどのように振る舞うかについて説明する。
図10は、貢献役割スコアリングプログラム130で実行される動作の流れの一例を示すフローチャートS100である。
まず、ソースコード解析結果記録部160内のブロック処理履歴が初期化され、また、現在の状態の各ブロックに割り当てられた項目役割分類が退避し記録され、以降の処理に備える(ステップS1001)。
次に、ソースコード解析結果記録部160内のソースコード制御関係分析結果テーブルT161が参照され、未処理のブロックが存在するか否かをチェックされる(ステップS1012)。もし、未処理のブロックが存在すればステップS1003が実行され、未処理のブロックが存在しなければステップS1008へ処理を進める。以降では、未処理のブロックが存在した場合を説明する。
次に、ソースコード解析結果記録部160内のソースコード制御関係分析結果テーブルT161より未処理のブロックが1ブロック読み出される(S1003)。
次に、S1003で読み出したブロックに対して、記述評価部131を用いてスコアリング処理が実施される(S1004)。 次に、S1003で読み出したブロックに対して、依存関係評価部132を用いてスコアリング処理が実施される(S1005)。
次に、S1003で読み出したブロックに対して、プロジェクト固有情報評価部133を用いてスコアリング処理が実施される(S1006)。
次に、S1003で読み出したブロックに対して、相関評価部134を用いてスコアリング処理が実施される(S10047)。
以上の処理が、ソースコード制御関係分析結果テーブルT161内のブロックすべてで実施される。
さらに、S1002で未処理のブロックが存在しないと判定された場合について、以下に説明する。
まず、スコアリングが実施されたソースコード制御関係分析結果テーブルT161の各ブロックが参照され、各々のブロックについて、スコアが最も高い役割分類について、当該ブロックの貢献役割分類が割り当てられる(S1008)。
例えば、ブロックNo”11”のブロックの「業務ルール判断処理」、「データチェック・形式変換判断処理」、「システムエラーチェック判断処理」、および「プログラムフロー制御判断処理」の役割スコアがそれぞれ、”+20.3”、”+12.5”、”+1.0”、”−2.1”であった場合、ブロックNo”11”の貢献役割分類は「業務ルール判断処理」である。
、S1008で得られた各ブロックの貢献役割分類と、S1001で退避記録されていた各ブロックの貢献分類の差分が計算される(S1009)。
そして、S1009の結果が参照され、差分の有無がチェックされる(S1010)。もし差分が存在しなければ処理を終了する。差分が存在すれば、S1001へ処理を進める。
以上のようにして、S1008で得られた結果が、直前の実行と比較して安定するまで処理が繰り返し実行される。繰り返しの実行がされる場合、S1004〜S1006は各回結果が同様となるため、省略して処理が進められてもよい。
図1に戻り、結果出力プログラム150の実行によって、貢献役割スコアリングプログラム130の実行により、ソースコード解析結果記録部160へ書き込まれた各ブロックの貢献役割分類に基づき、出力結果が構成され、出力装置107もしくは通信装置108を通じて、開発者に対して分類結果を提示される。
図11は、結果出力プログラム150による出力結果の一例である。各ソースコードのブロックに対して、貢献役割スコアリングプログラム130で決定した貢献役割分類を合わせて示したり、目的に応じて、例えば、業務ルール判断処理の抽出の際には、貢献役割分類が「業務ルール判断処理」のものを強調表示(注目優先度に「◎」を付記するなど)したりすることで、着目すべきブロックの確認を容易にする。
上述した本発明の実施形態は、本発明の説明のための例示であり、本発明の範囲をそれら実施形態のみに限定する趣旨ではない。例えば、上述した実施例は本説明を分かり易く説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。
また、上述の各構成、機能、処理部、処理手段などは、それらの一部または全部を例えば集積回路で設計する等によりハードウェアで実現しても良い。また、上述の各構成、機能などは、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。下記機能を実現するプログラム、テーブル、ファイルなどの情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記憶装置、または、ICカード、SDカード、DVD等の記憶媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際にはほとんどすべての構成が相互に接続されていると考えてもよい。
100 ソースコードからの仕様抽出装置
101 CPU
102 メモリ
103 外部記憶装置
104 バス
105 外部インターフェース
106 入力装置
107 出力装置
108 通信装置
110 ソースコード入力プログラム
120 ソースコード依存関係分析プログラム
130 貢献役割スコアリングプログラム
131 記述評価部
132 依存関係評価部
133 プロジェクト固有情報評価部
134 相関評価部
140 役割別ソースコード抽出プログラム
150 結果出力プログラム
160 ソースコード解析結果記録部
170 プロジェクト情報記録部
180 スコアリングルール記録部

Claims (3)

  1. 分析対象システムのソースコードであって、条件文と処理分とからなるブロック情報で構成されるソースコードから仕様を抽出するための仕様抽出装置であって、
    分析対象システムのソースコードを受け付けるソースコード入力実行部と、
    受け付けたソースコードの制御関係を分析するソースコード依存関係分析実行部と、
    受け付けたソースコードと分析された制御関係の結果が保持されるソースコード解析結果記録部と、
    保持されるソースコードと分析された制御関係の結果から、ソースコードを構成する各ブロック情報の貢献役割のスコアリングを行う貢献役割スコアリング実行部と、
    貢献役割のスコアリング結果に基づき、スコアが高いソースコードの貢献役割を出力する結果出力部と、
    を備えることを特徴とする仕様抽出装置。
  2. 前記ソースコードを構成する前記各ブロック情報の貢献役割は、業務ルール判断処理、データチェック・形式変換判断処理、システムエラーチェック判断処理、及び、プログラムフロー制御判断処理であることを特徴とする請求項1に記載の仕様抽出装置。
  3. 前記貢献役割のスコアリングを行うためのスコアリングルールであって、前記ソースコードの記述、前記ソースコードと分析された制御関係の結果、あるいは、分析対象システムに固有の特徴に関するスコアリングルールを保持するスコアリングルール記録部をさらに備え、
    前記スコアリングルールに基づき貢献役割のスコアリングを行うことを特徴とする請求項1に記載の仕様抽出装置。
JP2016134681A 2016-07-07 2016-07-07 ソースコードからの仕様抽出装置 Active JP6636873B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016134681A JP6636873B2 (ja) 2016-07-07 2016-07-07 ソースコードからの仕様抽出装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016134681A JP6636873B2 (ja) 2016-07-07 2016-07-07 ソースコードからの仕様抽出装置

Publications (2)

Publication Number Publication Date
JP2018005746A JP2018005746A (ja) 2018-01-11
JP6636873B2 true JP6636873B2 (ja) 2020-01-29

Family

ID=60946395

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016134681A Active JP6636873B2 (ja) 2016-07-07 2016-07-07 ソースコードからの仕様抽出装置

Country Status (1)

Country Link
JP (1) JP6636873B2 (ja)

Also Published As

Publication number Publication date
JP2018005746A (ja) 2018-01-11

Similar Documents

Publication Publication Date Title
US20220091827A1 (en) Pruning Engine
US10884893B2 (en) Detecting software build errors using machine learning
US10430469B2 (en) Enhanced document input parsing
KR102310487B1 (ko) 속성 단위 리뷰 분석 장치 및 방법
JP5534280B2 (ja) テキストクラスタリング装置、テキストクラスタリング方法、およびプログラム
EP1542138A1 (en) Learning and using generalized string patterns for information extraction
US20160188569A1 (en) Generating a Table of Contents for Unformatted Text
US10592236B2 (en) Documentation for version history
EP3683683A1 (en) Test cycle optimization using contextual association mapping
CN102567456A (zh) 正则表达式的有条件的执行
Shah et al. Towards benchmarking feature type inference for automl platforms
US11093223B2 (en) Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods
JP6636873B2 (ja) ソースコードからの仕様抽出装置
CN113688240B (zh) 威胁要素提取方法、装置、设备及存储介质
Eyal-Salman et al. Identifying traceability links between product variants and their features
CN113900956A (zh) 测试用例的生成方法、装置、计算机设备及存储介质
KR102269737B1 (ko) 딥러닝 기반의 정보 분류 방법 및 그 장치
CN111898762A (zh) 深度学习模型目录创建
Senkýr et al. Patterns for Checking Incompleteness of Scenarios in Textual Requirements Specification.
US11461672B2 (en) Plug-and-ingest framework for question answering systems
Mathur Improving classification results using class imbalance solutions & evaluating the generalizability of rationale extraction techniques
KR102661819B1 (ko) 시간적 관계정보의 컨텍스트 이해를 위한 오픈 도메인 정보 활용 방법
JP7438386B2 (ja) 協力リンク作成システムおよび協力リンク作成方法
CN112667855B (zh) 区块链数据管理方法、电子设备及计算机存储介质
KR20230102544A (ko) 산업 직업 코드분류 시스템 및 그 방법

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20170111

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20170113

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190131

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20190226

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190326

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191128

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: 20191210

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191219

R150 Certificate of patent or registration of utility model

Ref document number: 6636873

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150