JP2018120341A - 業務仕様分析支援装置、業務仕様分析支援方法、及びプログラム - Google Patents

業務仕様分析支援装置、業務仕様分析支援方法、及びプログラム Download PDF

Info

Publication number
JP2018120341A
JP2018120341A JP2017010348A JP2017010348A JP2018120341A JP 2018120341 A JP2018120341 A JP 2018120341A JP 2017010348 A JP2017010348 A JP 2017010348A JP 2017010348 A JP2017010348 A JP 2017010348A JP 2018120341 A JP2018120341 A JP 2018120341A
Authority
JP
Japan
Prior art keywords
program
analysis support
function
slice
specification analysis
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
JP2017010348A
Other languages
English (en)
Other versions
JP6668271B2 (ja
Inventor
周平 野尻
Shuhei Nojiri
周平 野尻
良介 土屋
Ryosuke Tsuchiya
良介 土屋
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 JP2017010348A priority Critical patent/JP6668271B2/ja
Publication of JP2018120341A publication Critical patent/JP2018120341A/ja
Application granted granted Critical
Publication of JP6668271B2 publication Critical patent/JP6668271B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】業務システムを構成しているソースコードに基づく業務仕様の分析作業を効率よく行う。【解決手段】業務仕様分析支援装置は、業務システムを構成しているプログラムのソースコードによって実現される機能と上記機能の影響を受ける複数の変数との複数の組み合わせの夫々をスライシング基準とした複数のプログラムスライスを求めるプログラムスライス算出部と、求めたプログラムスライスを構成する部品の夫々について、上記プログラムスライスの夫々に対する特有性の度合いを示す指標を求める特有性算出部と、上記指標に基づき上記部品の夫々の有用性を判定する有用性判定部と、有用と判定された上記部品に関する情報である有用情報をソースコードに基づき生成する有用情報生成部と、を備える。【選択図】図5

Description

本発明は、業務仕様分析支援装置、業務仕様分析支援方法、及びプログラムに関する。
特許文献1には、「プログラムドキュメントを作成する際の手助けとなる情報を出力するプログラムドキュメント作成補助装置に於いて、下位関数に至るまでの呼び出し関係を含むプログラムドキュメントの作成を容易にする情報を出力する。」、「キーワード検索部は、プログラムドキュメントの作成対象ソースプログラムを検索し、キーワード(変数名)を含む検索一致行を出力する。検索結果解析部は、その行の命令部分,コメント部分を含む分類データを出力する。検索結果解析部は、検索一致行に、キーワード,対応引数名が関数を呼び出す為の引数として設定されている場合は、呼び出し先の関数名を出力する。引数解析部は、関数内に於けるキーワードと対応する対応引数名を求め、引数検索部は、対応引数名を含む引数一致行を出力する。検索結果解析部は、引数一致行についても同様の処理を行う。」と記載されている。
特許文献2には、「既存のプログラム情報を解析して業務ルール情報を作成し、業務ルール情報とオブジェクト情報とからオブジェクトのメソッドを生成する方法において、メソッド種別に基づいて精度の高いメソッドを生成する。」、「業務ルール種判定は業務ルール情報とデータ項目情報を入力し、業務ルールの種別を判定して業務ルール情報を作成する。オブジェクト情報は各オブジェクトの属性の名称と種別を設定する。メソッド設定表はルール種別と属性種別とから定まるメソッド種別を設定する。業務ルール選択は対応するオブジェクトが存在する業務ルールを選択し、メソッド種特定はメソッド設定表を参照してメソッド種を特定し、メソッド設定以下の処理を経てメソッドを生成し、メソッド情報に格納する。」と記載されている。
特許文献3には、「複雑化された既存プログラムの論理を容易に抽出し、更に抽出された論理を再利用できるように整理し、新たなプログラム構造を生成する作業の効率化を図る。」、「既存プログラムを入力し、該プログラムの各トランザクションを、個々のデータ要素に分解し、分解したデータ要素を一対のデータ要素(2項オブジェクト)にて表現してその固有のプロセスより構成されるカプセルに置換し、カプセル化した該情報の重複排除を行い、再利用が可能なデータ蓄積構造へ格納し、カプセル化した該情報よりプログラム論理を抽出する。」と記載されている。
特許文献4には、「情報処理システムに使用されるソースプログラムから、従来に比較して、細かく、かつ一定の粒度により、業務モデル及び物理モデルを対応させて抽出するリバースエンジニアリング支援装置を提供する。」、「リバースエンジニアリング支援装置は、ソースプログラムの業務仕様の抽出を行う装置であり、ソースプログラムのソースコードから、コード種類、コード組合せ及びコード配置と、処理機能を示す単位プログラムとの対応関係が予め設定された第1ルールに従い、ソースコードから、処理機能に対応する単位プログラムを抽出する処理機能抽出部と、単位プログラムの処理機能の種類、組合せ及び配置順番と、単位プログラムの配置順番の変更、統廃合処理との対応関係を予め設定した第2ルールに従い、単位プログラムの配置順の変更、統合及び廃棄の統廃合処理を行い、物理モデルとして出力する処理機能統廃合部とを有する。」と記載されている。
特開平10−63493号公報 特開平10−240508号公報 特開平6−214772号公報 特許第4820924号公報
一般に業務システムのリプレースにおいては、新システムが既存のシステムの業務仕様の多くを踏襲していることが多く、新システムの開発者は旧システムの業務仕様を把握しておく必要がある。とくにリプレースが単なるソースコードのストレートコンバージョンに留まらず、業務仕様をBRMS(Business Rules Management System)に管理するアーキテクチャへ変更するような場合、開発者等は旧システムの業務仕様を詳細に把握しておく必要がある。
しかし既存のシステムのドキュメントが存在しない、存在していても内容が正確でなかったり最新の状態に更新されていない、といったことも多く、そうした場合、開発者等は、既存システムのログ情報や最新の業務仕様が反映されたソースコードを分析して既存システムの仕様を把握しなければならない。しかし業務システムが抱えるソースコードの量は一般に膨大であり、またソースコードには業務仕様に直接貢献しない記述も多く含まれているため、分析に際しては多大な労力と時間、知見や経験を要する。そのため、作業の効率化が課題となっている。
ここで上記の特許文献1〜4には、プログラムの仕様を分析する技術が記載されている。しかしいずれの技術も、把握可能な業務仕様は低水準(プログラムのコール関係などの可視化)のものに限られ、またいずれの技術も全てのプログラムを等価に扱っているため、プログラムに反映されている業務仕様を必ずしも効率よく把握することはできない。また特許文献1の方法では業務仕様の理解のために開発者等がドキュメントの全体を理解する必要があるので人的負担が大きい。また特許文献2、3の方法では、例えば、複数の構造(モジュール、メソッド等)に跨がって実現されているような業務仕様については把握することができない。
本発明は、こうした背景に鑑みてなされたものであり、ソースコードに基づく業務仕様の分析作業を支援する、業務仕様分析支援装置、業務仕様分析支援方法、及びプログラムを提供することを目的としている。
本発明のうちの一つは、業務仕様分析支援装置であって、業務システムを構成しているプログラムのソースコードによって実現される機能と前記機能の影響を受ける複数の変数との複数の組み合わせの夫々をスライシング基準とした複数のプログラムスライスを求めるプログラムスライス算出部と、求めた前記プログラムスライスを構成する部品の夫々について、前記プログラムスライスの夫々に対する特有性の度合いを示す指標を求める特有性算出部と、前記指標に基づき前記部品の夫々の有用性を判定する有用性判定部と、有用と判定された前記部品に関する情報である有用情報を前記ソースコードに基づき生成する有用情報生成部と、を備える。
その他、本願が開示する課題、及びその解決方法は、発明を実施するための形態の欄、及び図面により明らかにされる。
本発明によれば、業務システムを構成しているソースコードに基づく業務仕様の分析作業を効率よく行うことができる。
部品の有用性を判定する方法の一態様を説明する図である。 部品の有用性を判定する方法の一態様を説明する図である。 部品の有用性を判定する方法の一態様を説明する図である。 業務仕様分析支援装置のハードウェア構成を示す図である。 業務仕様分析支援装置の機能及び業務仕様分析支援装置が記憶するデータを示す図である。 ソースコードの一例である。 部品情報テーブルの一例である。 スライス定義情報テーブルの一例である。 プログラム依存グラフの一例である。 スライス情報テーブルの一例である。 指標テーブルの一例である。 正規化指標テーブルの一例である。 有用性判定結果テーブルの一例である。 有用情報の一例である。 有用情報の一例である。 有用部品情報生成処理を説明するフローチャートである。 指標算出処理の詳細を説明するフローチャートである。 有用性判定処理の詳細を説明するフローチャートである。
以下、実施形態について適宜図面を参照しつつ詳細に説明する。尚、以下の説明において、同一の又は類似する構成に共通の符号を付して重複した説明を省略することがある。
[概要]
企業や官公庁等の組織における業務支援を目的として導入されているエンタープライズシステム等の情報処理システム(以下、業務システムと称する。)は、業務仕様(業務ルール、業務ロジック、ビジネスルール等)の実装の観点から、一般に次のような特徴を有している。
(1)業務システムを実現しているソフトウェアのソースコードは、何らかの観点でメソッド化やモジュール化がなされている。
(2)業務システムの機能は、モジュールの組み合わせによって実現されている。
(3)モジュールは、業務システムのある機能に特有(固有)の処理を実現するものと、複数の機能について共通の処理を実現するものとに分類される。
(4)業務システムの機能は、入力側のリソース(画面、ファイル、データベース等)から取得されるデータに対して何らかの処理を施すことにより、出力側のリソースに出力するデータを生成する。
(5)業務仕様は、入力側のリソースから出力側のリソースを作成する際に通過するモジュールに必ず実現されている。
(6)業務システムの機能の処理対象となるデータは当該機能がサポートする業務に関して構造化されたオブジェクトである。
本実施形態で説明する業務仕様分析支援装置(以下、支援装置10と称する。)は、業務システムが有する上記の特徴を踏まえ、以下の主たる機能を備える。
支援装置10は、業務システムを構成しているプログラムのソースコードによって実現される機能と当該機能の影響を受ける複数の変数(変数群や機能の影響を受けるデータに
関するオブジェクト(例えば、データベースのテーブルやDAO(Data Access Object)等)であってもよい。)との複数の組み合わせの夫々をスライシング基準(slicing criterion)とした複数のプログラムスライスを求める。また支援装置10は、求めたプログ
ラムスライスを構成する部品の夫々について、上記プログラムスライスの夫々に対する特有性(あるプログラムスライスに特有の部品であること)の度合いを示す指標を求める。尚、本実施形態では、上記特有性が高い程、上記指標は大きな値をとるものとする。支援装置10は、上記指標に基づき上記部品の夫々の有用性を判定し、有用と判定された部品(以下、有用部品と称する。)に関する情報である有用情報をソースコードに基づき生成する。
上記の有用性の判定に際し、支援装置10は、例えば、特定のプログラムスライスに対する特有性が高い(指標が予め定められた閾値を超える)部品を有用部品と判定する。尚、有用部品は業務仕様を抽出する観点からみて特徴のある情報を含んでいる可能性が高い。
上記判定について図1とともに説明する。同図には上記組み合わせの夫々をスライシング基準とする複数のプログラムスライス(機能Xと変数A、機能Xと変数B、機能Xと変数Cの夫々をスライシング基準とするプログラムスライスS01〜S03)を例示している。
同図において、M1〜M5の符号を付した楕円は夫々一つの部品を示す。本例の場合、支援装置10は、部品M2についてはプログラムスライスS01に対して、部品M3についてはプログラムスライスS02に対して、部品M4についてはプログラムスライスS03に対して、夫々、特有性が高いと判定し、これらの部品を有用部品と判定する。一方、部品M1、M5については、いずれもプログラムスライスS01〜S03に共通に用いられている部品であるので特有性が低く、支援装置10は、これらの部品は業務仕様を把握する観点からの有用性は低いと判定する。
また上記有用性の判定に際し、支援装置10は、例えば、複数の上記機能の夫々について、一の機能と当該機能の影響を受ける複数の変数との複数の組み合わせの夫々をスライシング基準とする複数のプログラムスライスを求める。そして支援装置10は、特定の機能についてのプログラムスライスに対する特有性の指標が予め定められた閾値を超える部品を有用部品と判定する。尚、このようにして有用部品と判定された部品は、特定の機能の主たる部品(メインメソッド、メインモジュール、ファサード(Facade)等)である可能性が高く、業務仕様を把握する観点からの有用性は高い(業務仕様を把握する観点から特徴のある情報を含んでいる可能性が高い)。
この場合の上記判定について図2とともに説明する。同図には上記組み合わせの夫々をスライシング基準とする複数のプログラムスライス(機能Xと変数A、機能Xと変数B、機能Xと変数C、機能Yと変数D、機能Yと変数Eの夫々をスライシング基準とするプログラムスライスS01〜S05)を例示している。同図において、M1〜M8の符号を付した楕円は夫々一つの部品を示す。本例の場合、支援装置10は、部品M1は機能XについてのプログラムスライスS01〜S03に対する特有性が高いと判定し、部品M1を有用部品と判定する。また支援装置10は、部品M6は機能YについてのプログラムスライスS04〜S05に対する特有性が高いと判定し、部品M6を有用部品と判定する。
また上記有用性の判定に際し、支援装置10は、例えば、複数の上記機能の夫々について、一の機能と当該機能の影響を受ける複数の変数との複数の組み合わせの夫々をスライシング基準とする複数のプログラムスライスを求める。そして支援装置10は、特定の変数についてのプログラムスライスに対する特有性の指標が予め定められた閾値を超える部
品を有用部品と判定する。尚、このようにして有用部品と判定された部品は、データの編集や検証を行っている部品やDAOメソッド等である可能性が高く、業務仕様を把握する観点からの有用性は高い(特徴のある情報を含んでいる可能性が高い)。
この場合の上記判定について図3とともに具体的に説明する。同図には上記組み合わせの夫々をスライシング基準とする複数のプログラムスライス(機能Xと変数A、機能Yと変数A、機能Zと変数A、機能Pと変数B、機能Qと変数Bの夫々をスライシング基準とするプログラムスライスS01〜S05)を例示している。同図において、M1〜M8の符号を付した楕円は夫々一つの部品を示す。本例の場合、支援装置10は、部品M5は変数AについてのプログラムスライスS01〜S03に対する特有性が高いと判定し、部品M5を有用部品と判定する。また支援装置10は、部品M8は変数BについてのプログラムスライスS04〜S05に対する特有性が高いと判定し、部品M8を有用部品と判定する。
[装置構成]
続いて、以上の仕組みを実現するための具体的な装置構成について説明する。
図4に支援装置10のハードウェア構成を示している。支援装置10は、情報処理装置(コンピュータ)であって、プロセッサ11、主記憶装置12、補助記憶装置13、入力装置14、出力装置15、及び通信装置16を備える。これらは図示しないバス等の通信手段を介して互いに通信可能に接続されている。
プロセッサ11は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)を用いて構成されている。プロセッサ11が、主記憶装置12に格納されているプログラムを読み出して実行することにより、支援装置10の様々な機能が実現される。主記憶装置12は、プログラムやデータを記憶する装置であり、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)、不揮発性半導体メモリ(NVRAM(Non Volatile RAM))等である。
補助記憶装置13は、例えば、ハードディスクドライブ、SSD(Solid State Drive
)、光学式記憶装置(CD(Compact Disc)、DVD(Digital Versatile Disc)等)、ストレージシステム、ICカード、SDメモリカードや光学式記録媒体等の記録媒体の読取/書込装置、クラウドサーバの記憶領域等である。補助記憶装置13に格納されているプログラムやデータは主記憶装置12に随時ロードされる。補助記憶装置13は、例えば、ネットワークストレージのように通信手段を介して接続するものであってもよい。
入力装置14は、外部入力を受け付けるユーザインタフェースであり、例えば、キーボード、マウス、タッチパネル等である。出力装置15は、処理経過や処理結果等の各種情報を提供するユーザインタフェースであり、例えば、画面表示装置(液晶モニタ、LCD(Liquid Crystal Display)、グラフィックカード等)、印字装置等である。尚、例えば、通信装置16を介して他の装置との間で情報の入力や出力を行う構成、即ち、通信装置16が、入力装置14や出力装置15として機能する構成としてもよい。
通信装置16は、LANやインターネット等の通信手段を介して行われる他の装置との間の通信を実現する有線方式または無線方式の通信インタフェースであり、例えば、NIC(Network Interface Card)や無線通信モジュール等である。
図5に支援装置10の機能及び支援装置10が管理もしくは記憶するデータを示している。同図に示すように、支援装置10は、ソースコード管理部211、部品情報管理部212、スライス定義情報管理部213、スライス算出部214、指標算出部215、指標正規化部216、有用性判定部217、及び有用情報生成部218の各機能を(機能部、
処理部)を備える。これらの機能は、例えば、支援装置10のプロセッサ11が、主記憶装置12や補助記憶装置13に格納されているプログラムを読み出して実行することにより実現される。またこれらの機能は、例えば、画面情報生成装置100が備えるハードウェア(ASIC(Application Specific Integrated Circuit)等)によって実現される
。尚、支援装置10は、これらの機能以外に、例えば、オペレーティングシステム、デバイスドライバ、DBMS(DataBase Management System)等が動作するものであってもよい。
同図に示すように、支援装置10は、ソースコード251、部品情報テーブル252、スライス定義情報テーブル253、プログラム依存グラフ254、スライス情報テーブル255、指標テーブル256、正規化指標テーブル257、有用性判定結果テーブル258、及び有用情報260の各データを記憶する。支援装置10は、これらのデータを、例えば、ファイルシステムやDBMSによって管理する。
ソースコード管理部211は、例えば、入力装置14や通信装置16を介してソースコードを取得し、取得したソースコードをソースコード251として記憶する。
図6はソースコード251の一例(一部省略行有り)である。ソースコード251は、支援装置10による分析の対象となる業務システムの機能を実現するソフトウェアの実行コードの生成元となるデータである。ソースコード251は、所定のプログラミング言語(例えば、C言語、各種オブジェクト指向言語(C++、C#等)、各種オブジェクト指向スクリプト言語(JavaScript(登録商標)等)、各種マークアップ言語(H
TML(Hyper Text Markup Language)、XML(Extensible Markup Language)等)で記述された記述文を含む。
部品情報管理部212は、ソースコード251に含まれている部品に関する情報(部品の所在や内容等。以下、部品情報と称する。)を部品情報テーブル252に管理する。部品情報テーブル252の内容は、例えば、入力装置14や通信装置16を介してユーザが設定する。
尚、本実施形態では、部品がソースコード251の一行分の記述(以下、コード片とも称する。)である場合を例として説明するが、部品の態様は限定されない。部品は、例えばソースコード251に含まれているメソッドやモジュールの一又は複数単位等であってもよい。
図7に部品情報テーブル252の一例を示す。同図に示すように、部品情報テーブル252は、コード片ID2521、モジュール名2522、記述位置2523、文種別2524、実体2525の各項目を含む一つ以上のレコード(行)で構成される。一つのレコードは一つの部品に対応している。
コード片ID2521には、コード片ごとに付与される識別子(以下、コード片IDと称する。)が設定される。モジュール名2522には、当該コード片が記述されているモジュール(本例ではファイル)の識別子(本例ではファイル名。以下、モジュール名と称する。)が設定される。記述位置2523には、モジュール名2522で特定されるモジュールにおいて当該コード片が記述されている位置(以下、記述位置とも称する。)を示す情報が設定される。文種別2524には、コード片の種別(コード片が定義文であることを意味する「定義」、実行文であることを意味する「実行」、条件文であることを意味する「条件」等。以下、文種別と称する。)が設定される。実体2525には、部品の実体(本例ではコード片そのもの)が設定される。
図5に戻り、スライス定義情報管理部213は、スライシング基準等のプログラムスライスの算出に際して必要な情報をスライス定義情報テーブル253に管理する。スライス定義情報テーブル253の内容は、例えば、入力装置14や通信装置16を介してユーザが設定する。
図8にスライス定義情報テーブル253の一例を示す。同図に示すように、スライス定義情報テーブル253は、スライスID2531、開始位置2532、終了位置2533、及び追跡変数2534の各項目を含む一つ以上のレコード(行)で構成される。一つのレコードは、支援装置10が算出するプログラムスライスの一つに対応している。
スライスID2531には、プログラムスライスごとに付与される識別子(以下、スライスIDと称する。)が設定される。開始位置2532には、プログラムスライスの開始位置を特定する情報が設定される。本例では、コード片ID、モジュール名、及び位置(行番号)によってプログラムスライスの開始位置を特定している。開始位置2532には、プログラムスライスの終了位置を特定する情報が設定される。本例では、コード片ID、モジュール名、及び位置(行番号)によってプログラムスライスの終了位置を特定している。追跡変数2534には、プログラムスライスが追跡の対称とする変数(以下、追跡変数と称する。)が設定される。
開始位置2532と終了位置2533とで特定されるソースコード251により実現される機能は、図1乃至図3とともに説明した「機能」に相当する。また追跡変数2534は、図1乃至図3とともに説明した「変数」に相当する。ユーザは、入力装置14等のユーザインタフェースを介してスライス定義情報テーブル253を設定することで、図1乃至図3とともに説明したような様々な観点でソースコード251から有用部品を抽出することができる。
図5に戻り、スライス算出部214は、スライス定義情報テーブル253に基づき、ソースコード251のプログラムスライスを求める。スライス算出部214は、例えば、業務システムを実現するソフトウェアの全部、又は上記ソフトウェアの一部(例えば、特定のアプリケーションに関するソフトウェア)についてのソースコード251を対象としてプログラムスライスを算出する。スライス算出部214は、算出した結果をスライス情報テーブル255に記憶する。尚、プログラムスライスには、動的スライス、静的スライス、動的スライスと静的スライスを併用するもの(Call−Markスライス、Statement−Markスライス、D3スライス、部分解析法等)等が知られているが、スライス算出部214が算出するプログラムスライスの種類は必ずしも限定されない。
図9はプログラムスライスを求める際に用いられるプログラム依存グラフ254(PDG(Program Dependence Graph))の一例である。スライス算出部214は、プログラムスライスの算出に際し、例えば、同図に示すようなプログラム依存グラフ254を生成する。同図に示すプログラム依存グラフ254は、図6のソースコード251の内容、図7の部品情報テーブル252の内容、及び図8のスライス定義情報テーブル253の内容と対応している。同図に示すように、太い実線で示す矢線はデータ依存関係を、破線で示す矢線は直列の制御依存関係を、一点鎖線で示す矢線は条件分岐を含む制御依存関係を、細い実線で示す矢線は呼出の制御依存関係を、夫々示す。
図10は、支援装置10が図9に示したプログラム依存グラフ254に基づき生成するスライス情報テーブル255の一例である。同図において、スライスID2551には前述したスライスIDが設定される。コード片ID2552には前述したコード片IDが設定される。
スライス情報テーブル255において、スライスID2551とコード片ID2552とで特定される欄(セル)には、「0」又は「0」以外の正の整数が設定される。本例では、プログラムスライスの構成部品のコード片の欄に「0」以外の正の整数を設定し、構成部品でないコード片IDの欄には「0」を設定している。本例ではプログラムスライスの構成部品のコード片の欄に基礎値として「1」を設定している。
また本例では、スライスID2551が「S01」のプログラムスライスのコード片ID2552が「P07」の構成部品について、当該部品が条件文であることに基づく補正(重み付け)を行い、基礎値「1」を3倍して「3」を設定している。またスライスID2551が「S02」のプログラムスライスのコード片ID2552が「P07」の構成部品について、当該部品が条件文であることから補正を行い、基礎値「1」を2倍して「2」を設定している。
図5に戻り、指標算出部215は、スライス算出部214によって求められたプログラムスライス(スライス算出部214によって生成されたスライス情報テーブル255)に基づき前述した指標を算出し、算出結果を指標テーブル256に格納する。
図11は指標テーブル256の一例である。同図において、スライスID2561にはスライスIDが設定される。またコード片ID2562にはコード片IDが設定される。同図に示すように、プログラムスライスの構成部品となるコード片IDの欄に指標が設定されている。
本例では、図10に示すスライス情報テーブル255の各欄に設定されている数値に基づき指標を算出している。即ち、図10のスライス情報テーブル255においてスライスID2551で特定されるプログラムスライスの列の数値の合計値(本例では「S01」については「17」、「S02」については「20」)を分母とし、図10に示すスライス情報テーブル255の各欄に設定されている数値を上記合計値で除算した値を求め、求めた上記値に、さらにスライスID2551で特定される各列(本例では「S01」と「S02」で特定される各列)間での特有性(各列間の共通部品でない部品ほど特有性が高い)に応じた値を乗算した値を指標として設定している。尚、本例では、上記各列間での特有性を、以下に示すようなTF/IDF(Term Frequency/Inverse Document Frequency)類似の方法で求めている。
例えば、図10において、スライスID2551が「S01」のプログラムスライスの部品である「P01」については、このプログラムスライスの構成部品(コード片)の数値の合計値(列合計)が「17」、設定されている数値が「1」であり、この部品「P01」はスライスID2551が「S02」のプログラムスライスの部品でもあるので(スライスID2551が夫々「S01」、「S02」の2つのプログラムスライスの共通部品)、上記数値として「2/2」(2つ(分母)のプログラムスライスのうちの2つ(分子)のプログラムスライスの部品であるという意味)の逆数(2/2)を乗算した「1/17×(2/2)=「0.058823529」を図11の指標テーブル256の該当欄に設定している。
また例えば、図10において、スライスID2551が「S02」のプログラムスライスの部品である「P04」については、このプログラムスライスの構成部品(コード片)の数値の合計値(列合計)が「20」、設定されている数値が「1」であり、この部品「P04」はスライスID2551が「S02」のプログラムスライスのみについての部品であるので(スライスIDが「S02」のプログラムスライスに特有の部品)、上記数値として「1/2」(2つ(分母)のプログラムスライスのうちの1つ(分子)のプログラムスライスの部品であるという意味)の逆数(2/1)を乗算した「1/20×(2/1
)=「0.1」を図11の指標テーブル256の該当欄に設定している。
図5に戻り、指標正規化部216は、指標算出部215によって求められた指標を正規化し、正規化した指標を正規化指標テーブル257に記憶する。
図12は、図11に示した指標テーブル256に基づき指標正規化部216が生成した正規化指標テーブル257の一例である。同図において、スライスID2571にはスライスIDが設定される。またコード片ID2572にはコード片IDが設定される。
本例では、プログラムスライスの各構成部品に設定されている数値うち最大の数値(列内の最大値)を「1」として正規化している。例えば、図11の指標テーブル256においてスライスID2561が「S01」のプログラムスライスは、コード片ID2562が「P07」の構成部品の数値が最大であるので、これを「1」として同列の各数値を正規化している。また例えば、図11の指標テーブル256においてスライスID2561が「S02」のプログラムスライスは、コード片ID2562が「P11」の構成部品の数値が最大であるので、これを「1」として同列の各数値を正規化している。
図5に戻り、有用性判定部217は、正規化指標テーブル257に基づき、ソースコード251から業務仕様を把握しようとする際に有用な部品を選択する。具体的には、有用性判定部217は、正規化指標テーブル257の指標が予め設定された閾値を超える部品(コード片)を選択し、選択した結果を設定した有用性判定結果テーブル258を生成する。
図13に図12に示す正規化指標テーブル257に基づき有用性判定部217が生成する有用性判定結果テーブル258を示す。同図において、有用性判定部217が有用と判定した数値(部品(コード片))に「*」の記号が設定されている。本例では閾値を「0
.3」に設定している。閾値は、例えば、ユーザが経験則や実験に基づき、入力装置14等のユーザインタフェースを介して自由に設定することができる。また閾値は、例えば機械学習等の手法を用いて自動的に求めてもよい。
図5に戻り、有用情報生成部218は、ソースコード251と有用性判定結果テーブル258とに基づき、業務仕様を把握しようとする際に有用な部品に関する情報(有用情報260)を生成し、生成した有用情報260を出力装置15や通信装置16から出力する。
図14及び図15に有用情報260の一例を示す。図14に示す有用情報260は、ソースコード251の記述中に、有用部品の記述部分を強調表示した内容を含む。また図15に示す有用情報260は、ソースコード251における有用部品の記述部分を集約(抜粋)した内容を含む。同図に示すように、各有用部品の記述には、有用部品の所在(有用部品が所属するファイル名やクラス名等)、部品間の呼出関係、プログラムスライシングを行った範囲を示す情報等を含む。有用情報260を参照することで、ユーザはソースコード251の全体を読み込むことなく業務仕様を効率よく把握することができる。
[処理例]
図16は、支援装置10が、ソースコードに基づき有用情報260を生成する際に行う処理(以下、有用部品情報生成処理S1600と称する。)を説明するフローチャートである。以下、同図とともに有用部品情報生成処理S1600について説明する。
まずソースコード管理部211は、既に入力装置14や通信装置16を介して分析の対象となるソースコード251を取得して記憶する(S1611)。
続いて、部品情報管理部212が、ソースコード251に基づき部品情報テーブル252を生成する(S1612)。
続いて、スライス定義情報管理部213が、入力装置14や通信装置16を介して入力される情報に基づきスライス定義情報テーブル253を生成する(S1613)。
続いて、スライス算出部214がプログラムスライスを算出し、算出結果をスライス情報テーブル255に格納する(S1614)。
続いて、指標算出部215が、スライス情報テーブル255に基づき特有性の指標を算出し、算出結果を指標テーブル256に格納する(S1615)。尚、この処理(以下、指標算出処理S1615と称する。)の詳細については後述する。
続いて、有用性判定部217が、指標テーブル256に基づき部品の有用性を判定し、評価結果を有用性判定結果テーブル258に格納する(S1616)。尚、この処理(以下、有用性判定処理S1616と称する。)の詳細については後述する。
続いて、有用情報生成部218が、有用性判定結果テーブル258に基づき有用情報260を生成し、生成した有用情報260を出力装置15から出力する。
図17は、図16に示した指標算出処理S1615の詳細を説明するフローチャートである。以下、同図とともに指標算出処理S1615について説明する。
指標算出部215は、スライス情報テーブル255から未選択のプログラムスライス(スライスIDで特定されるプログラムスライス)を一つ選択する(S1711)。
続いて、指標算出部215は、スライス情報テーブル255の選択中のプログラムスライス(以下、選択中スライスと称する。)の各構成部品(コード片)の欄に基礎値(正の整数)を設定する(S1712)。
続いて、指標算出部215は、スライス情報テーブル255の各構成部品(コード片)の基礎値を補正(重み付け)する(S1713)。
続いて、指標算出部215は、スライス情報テーブル255に未選択のプログラムスライスがあるか否かを判定する(S1714)。未選択のプログラムスライスがあれば(S1714:YES)、S1711の処理に戻る。未選択のプログラムスライスがなければ(S1714:NO)、S1715の処理に進む。
S1715では、指標算出部215は、スライス情報テーブル255の各プログラムスライスについて構成部品の値の総和(各列の総和)を求める。
続いて、指標算出部215は、各プログラムスライスについて算出した総和を用いて各プログラムスライスの構成部品の指標を求める(S1716)。
続いて、指標算出部215は、算出した指標を設定した指標テーブル256を生成する(S1717)。その後、処理は図16のS1616に進む。
図18は、図16に示した有用性判定処理S1616の詳細を説明するフローチャートである。以下、同図とともに説明する。
まず指標正規化部216が、指標テーブル256から未選択のプログラムスライス(スライスIDで特定されるプログラムスライス)を一つ選択する(S1811)。
続いて、指標正規化部216が、選択中のプログラムスライスの指標を正規化し(S1812)、結果を正規化指標テーブル257に反映する(S1813)。
続いて、指標正規化部216は、指標テーブル256に未選択のプログラムスライスがあるか否かを判定する(S1814)。未選択のプログラムスライスがあれば(S1814:YES)、S1811の処理に戻る。未選択のプログラムスライスがなければ(S1814:NO)、S1815の処理に進む。
S1815では、有用性判定部217が、正規化指標テーブル257から未選択のプログラムスライスを一つ選択する。
続いて、有用性判定部217が、選択中のプログラムスライスの各構成要素の正規化された指標を閾値と比較して有用性を判定し(S1816)、結果を有用性判定結果テーブル258に反映する(S1817)。
続いて、有用性判定部217は、正規化指標テーブル257に未選択のプログラムスライスがあるか否かを判定する(S1818)。未選択のプログラムスライスがあれば(S1818:YES)、S1815の処理に戻る。未選択のプログラムスライスがなければ(S1818:NO)、図16のS1617の処理に進む。
以上、詳細に説明したように、本実施形態の支援装置10によれば、業務システムにおけるソースコードから業務仕様を効率よく把握するために有用な情報(メソッド、モジュール、コード片等)を抽出することができる。このため、例えば、業務システムのリプレース等に際し、新システムの開発者等は、既存のシステムの業務仕様を効率よく把握することができる。
尚、本発明は上記の実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、上記の実施の形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、上記実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また上記の各構成、機能部、処理部、処理手段等は、それらの一部または全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリやハードディスク、SSD(Solid State Drive)等の記録装置、また
はICカード、SDカード、DVD等の記録媒体に置くことができる。
また上記の各図において、制御線や情報線は説明上必要と考えられるものを示しており、必ずしも実装上の全ての制御線や情報線を示しているとは限らない。例えば、実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
また以上に説明した支援装置10の各種機能部、各種処理部、各種データベースの配置形態は一例に過ぎない。各種機能部、各種処理部、各種データベースの配置形態は、支援装置10が備えるハードウェアやソフトウェアの性能、処理効率、通信効率等の観点から
最適な配置形態に変更し得る。
また前述したデータベースの構成(スキーマ(Schema)等)は、リソースの効率的な利用、処理効率向上、アクセス効率向上、検索効率向上等の観点から柔軟に変更し得る。
10 支援装置、211 ソースコード管理部、212 部品情報管理部、213 スライス定義情報管理部、214 スライス算出部、215 指標算出部、216 指標正規化部、217 有用性判定部、218 有用情報生成部、251 ソースコード、252
部品情報テーブル、253 スライス定義情報テーブル、254 プログラム依存グラフ、255 スライス情報テーブル、256 指標テーブル、257 正規化指標テーブル、258 有用性判定結果テーブル、260 有用情報、S1600 有用部品情報生成処理、S1615 指標算出処理、S1616 有用性判定処理

Claims (15)

  1. 業務システムを構成しているプログラムのソースコードによって実現される機能と前記機能の影響を受ける複数の変数との複数の組み合わせの夫々をスライシング基準とした複数のプログラムスライスを求めるプログラムスライス算出部と、
    求めた前記プログラムスライスを構成する部品の夫々について、前記プログラムスライスの夫々に対する特有性の度合いを示す指標を求める特有性算出部と、
    前記指標に基づき前記部品の夫々の有用性を判定する有用性判定部と、
    有用と判定された前記部品に関する情報である有用情報を前記ソースコードに基づき生成する有用情報生成部と、
    を備える、業務仕様分析支援装置。
  2. 請求項1に記載の業務仕様分析支援装置であって、
    前記プログラムスライス算出部は、複数の前記機能の夫々について、一の前記機能と当該機能の影響を受ける複数の変数との複数の組み合わせの夫々をスライシング基準とした複数のプログラムスライスを求め、
    前記有用性判定部は、特定の前記機能についての前記プログラムスライスに対する前記有用性の指標が予め定められた閾値を超える前記部品を有用な部品と判定する、
    業務仕様分析支援装置。
  3. 請求項1に記載の業務仕様分析支援装置であって、
    前記プログラムスライス算出部は、複数の前記機能の夫々について、一の前記機能と当該機能の影響を受ける複数の変数との複数の組み合わせの夫々をスライシング基準とした複数のプログラムスライスを求め、
    前記有用性判定部は、特定の前記変数についての前記プログラムスライスに対する前記有用性の指標が予め定められた閾値を超える前記部品を有用な部品と判定する、
    業務仕様分析支援装置。
  4. 請求項1乃至3のいずれか一項に記載の業務仕様分析支援装置であって、
    前記有用性判定部は、特定の前記プログラムスライスに対する前記有用性の指標が予め定められた閾値を超える前記部品を有用と判定する、
    業務仕様分析支援装置。
  5. 請求項1乃至3のいずれか一項に記載の業務仕様分析支援装置であって、
    前記特有性算出部は、前記部品ごとに重み付けを行って前記特有性の度合いを求める、
    業務仕様分析支援装置。
  6. 請求項1乃至3のいずれか一項に記載の業務仕様分析支援装置であって、
    前記部品は、ソースコードの一部、メソッド、及びモジュールのうちの少なくともいずれかである、
    業務仕様分析支援装置。
  7. 請求項1乃至3のいずれか一項に記載の業務仕様分析支援装置であって、
    前記変数は、変数群又は前記機能の影響を受けるデータに関するオブジェクトである、
    業務仕様分析支援装置。
  8. 請求項1乃至3のいずれか一項に記載の業務仕様分析支援装置であって、
    前記有用情報生成部は、前記ソースコードの記述中に、有用と判定された前記部品の記述部分を強調表示した内容を含む情報を前記有用情報として生成する、
    業務仕様分析支援装置。
  9. 請求項1乃至3のいずれか一項に記載の業務仕様分析支援装置であって、
    前記有用情報生成部は、前記ソースコードにおける有用と判定された前記部品の記述部分を集約した内容を含む情報を前記有用情報として生成する、
    業務仕様分析支援装置。
  10. 請求項1乃至3のいずれか一項に記載の業務仕様分析支援装置であって、
    前記スライシング基準の設定を受け付けるユーザインタフェースを備える、
    業務仕様分析支援装置。
  11. 情報処理装置が、
    業務システムを構成しているプログラムのソースコードによって実現される機能と前記機能の影響を受ける複数の変数との複数の組み合わせの夫々をスライシング基準とした複数のプログラムスライスを求める第1ステップ、
    求めた前記プログラムスライスを構成する部品の夫々について、前記プログラムスライスの夫々に対する特有性の度合いを示す指標を求める第2ステップ、
    前記指標に基づき前記部品の夫々の有用性を判定する第3ステップ、
    有用と判定された前記部品に関する情報である有用情報を前記ソースコードに基づき生成する第4ステップ、
    を実行する、業務仕様分析支援方法。
  12. 請求項11に記載の業務仕様分析支援方法であって、
    前記情報処理装置が、
    前記第1ステップにおいて、複数の前記機能の夫々について、一の前記機能と当該機能の影響を受ける複数の変数との複数の組み合わせの夫々をスライシング基準とした複数のプログラムスライスを求め、
    前記第3ステップにおいて、特定の前記機能についての前記プログラムスライスに対する前記有用性の指標が予め定められた閾値を超える前記部品を有用な部品と判定する、
    業務仕様分析支援方法。
  13. 請求項11に記載の業務仕様分析支援方法であって、
    前記情報処理装置が、
    前記第1ステップにおいて、複数の前記機能の夫々について、一の前記機能と当該機能の影響を受ける複数の変数との複数の組み合わせの夫々をスライシング基準とした複数のプログラムスライスを求め、
    前記第3ステップにおいて、特定の前記変数についての前記プログラムスライスに対する前記有用性の指標が予め定められた閾値を超える前記部品を有用な部品と判定する、
    業務仕様分析支援方法。
  14. 請求項11乃至13のいずれか一項に記載の業務仕様分析支援方法であって、
    前記情報処理装置が、前記第3ステップにおいて、特定の前記プログラムスライスに対する前記有用性の指標が予め定められた閾値を超える前記部品を有用と判定するステップ、
    を実行する、業務仕様分析支援方法。
  15. 情報処理装置に、
    業務システムを構成しているプログラムのソースコードによって実現される機能と前記機能の影響を受ける複数の変数との複数の組み合わせの夫々をスライシング基準とした複数のプログラムスライスを求める機能と、
    求めた前記プログラムスライスを構成する部品の夫々について、前記プログラムスライ
    スの夫々に対する特有性の度合いを示す指標を求める機能と、
    前記指標に基づき前記部品の夫々の有用性を判定する機能と、
    有用と判定された前記部品に関する情報である有用情報を前記ソースコードに基づき生成する機能と、
    を実現するためのプログラム。
JP2017010348A 2017-01-24 2017-01-24 業務仕様分析支援装置、業務仕様分析支援方法、及びプログラム Active JP6668271B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017010348A JP6668271B2 (ja) 2017-01-24 2017-01-24 業務仕様分析支援装置、業務仕様分析支援方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017010348A JP6668271B2 (ja) 2017-01-24 2017-01-24 業務仕様分析支援装置、業務仕様分析支援方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2018120341A true JP2018120341A (ja) 2018-08-02
JP6668271B2 JP6668271B2 (ja) 2020-03-18

Family

ID=63043841

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017010348A Active JP6668271B2 (ja) 2017-01-24 2017-01-24 業務仕様分析支援装置、業務仕様分析支援方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP6668271B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021077264A (ja) * 2019-11-13 2021-05-20 富士通株式会社 解析プログラム、解析方法及び解析装置
JP2022505340A (ja) * 2018-10-18 2022-01-14 株式会社デンソー データ引数を動的に識別し、ソースコードを計装するためのシステムと方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022505340A (ja) * 2018-10-18 2022-01-14 株式会社デンソー データ引数を動的に識別し、ソースコードを計装するためのシステムと方法
JP7201078B2 (ja) 2018-10-18 2023-01-10 株式会社デンソー データ引数を動的に識別し、ソースコードを計装するためのシステムと方法
JP2021077264A (ja) * 2019-11-13 2021-05-20 富士通株式会社 解析プログラム、解析方法及び解析装置

Also Published As

Publication number Publication date
JP6668271B2 (ja) 2020-03-18

Similar Documents

Publication Publication Date Title
US11868158B1 (en) Generating search commands based on selected search options
JP4097263B2 (ja) ウェブアプリケーションモデル生成装置、ウェブアプリケーション生成支援方法及びプログラム
JP4878624B2 (ja) 文書処理装置および文書処理方法
US20170132638A1 (en) Relevant information acquisition method and apparatus, and storage medium
CN112433874A (zh) 一种故障定位方法、系统、电子设备及存储介质
Zhou et al. Augmenting bug localization with part-of-speech and invocation
JP2019204246A (ja) 学習データ作成方法及び学習データ作成装置
JP6668271B2 (ja) 業務仕様分析支援装置、業務仕様分析支援方法、及びプログラム
Yang et al. HDD: a hypercube division-based algorithm for discretisation
US9678970B2 (en) Database storage reclaiming program
Kılınç et al. Multi‐level reranking approach for bug localization
JP2013041385A (ja) 文献検索方法、文献検索装置及び文献検索プログラム
WO2016093839A1 (en) Structuring of semi-structured log messages
Swe et al. Bug localization approach using source code structure with different structure fields
JP2019219848A (ja) ソースコード解析方法およびソースコード解析装置
US20180181550A1 (en) Screen information generation device and screen information generation method
JP4288247B2 (ja) 履歴作成装置、活動履歴作成方法、及び活動履歴作成プログラム
JP5379627B2 (ja) 検索制御装置、検索制御方法、及びプログラム
CN112699642B (zh) 复杂医疗文书的索引提取方法及装置、介质及电子设备
CN115344661A (zh) 设备停机诊断方法、装置、电子设备及存储介质
JP6802109B2 (ja) ソフトウェア仕様分析装置、及びソフトウェア仕様分析方法
US20180189499A1 (en) Dynamic security report generator
CN116483735B (zh) 一种代码变更的影响分析方法、装置、存储介质及设备
CN115292370A (zh) 一种业务单据数据处理方法、装置、介质
CN116361293A (zh) 资源管理方法、装置、电子设备和存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190312

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200130

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200226

R150 Certificate of patent or registration of utility model

Ref document number: 6668271

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150