(57)【特許請求の範囲】
【請求項１】
プログラムのソースコードに含まれる項目の中から、前記プログラムに対して入力されるデータ又は前記プログラムから出力されるデータを格納する第１の項目を、前記ソースコードを参照して特定する特定部と、
前記ソースコードを構成する所定の範囲ごとに、当該所定の範囲において参照されている前記第１の項目の数と、当該所定の範囲において前記第１の項目が参照されている回数とに基づく指標値を、当該所定の範囲に付与する付与部と、
前記各所定の範囲に対する前記指標値の付与結果を出力する出力部と、
を有することを特徴とする情報処理装置。
【請求項２】
前記特定部は、前記ソースコードに適用される文法に基づいて、前記プログラムに対して入力されるデータ又は前記プログラムから出力されるデータを格納する第２の項目を特定し、前記ソースコードにおける項目間の代入関係を辿ることで前記第２の項目に到達する第３の項目を特定し、前記第２の項目と前記第３の項目とを、前記第１の項目として特定する、
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記出力部は、前記所定の範囲の間の関係に基づいて前記各所定の範囲に対応付けられる位置が定まる地図において、前記各所定の範囲に対応付けられた位置に当該所定の範囲に付与された前記指標値に応じた大きさを有する図形を配置する、
ことを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記出力部は、前記所定の範囲のうち所定の文字列を含む所定の範囲に対する前記指標値の付与結果を出力する、
ことを特徴とする請求項１乃至３いずれか一項記載の情報処理装置。
【請求項５】
前記付与部は、前記ソースコードにおいて前記第１の項目を含む文のうち、所定の条件に合致する文に含まれる前記第１の項目については、前記所定の範囲において参照されている数、又は前記所定の範囲において参照されている回数に含めない、
ことを特徴とする請求項１乃至４いずれか一項記載の情報処理装置。
【請求項６】
コンピュータに、
プログラムのソースコードに含まれる項目の中から、前記プログラムに対して入力されるデータ又は前記プログラムから出力されるデータを格納する第１の項目を、前記ソースコードを参照して特定し、
前記ソースコードを構成する所定の範囲ごとに、当該所定の範囲において参照されている前記第１の項目の数と、当該所定の範囲において前記第１の項目が参照されている回数とに基づく指標値を、当該所定の範囲に付与し、
前記各所定の範囲に対する前記指標値の付与結果を出力する、
処理を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及びプログラムに関する。
【背景技術】
【０００２】
コンピュータシステムは、構築されてから歳月を経ると、改良を行う必要性や、システム全体の構成を見直す必要性が生じることがある。改良や見直し等が行われる場合に、既存のプログラムの一部について修正を行うために、既存のシステムの仕様の理解が必要とされることが有る。
【０００３】
既存のシステムの仕様、特に、人が行う業務の一部の作業を自動化するために実装された業務システムの仕様を理解とするとき、人が行うどんな業務が実装されているか、という「業務ロジック」を分析することが求められる。コンピュータシステムを事業の変化に迅速に対応させるためには、業務ロジックを理解して、変更できるようにしておくことが有効であると考えられているからである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−１２２４０７号公報
【特許文献２】特開２００９−１１６６３８号公報
【特許文献３】特開平６−２１４７７２号公報
【特許文献４】特開２０１２−６８９４６号公報
【特許文献５】特許第４８２０９２４号公報
【非特許文献】
【０００５】
【非特許文献１】H. Huang, W.T. Tsai, S.Bhattacharya, X.P. Chen, Y.Wang, J.Sun: Business Rules Extraction from Legacy Code, COMPSAC '96 Proceedings of the 20th Conference on Computer Software and Applications, 1996
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、多くの業務システムには、業務ロジックのみが実装されているわけではなく、システムが動作するための制御ロジックが混在して実装されている。制御ロジックとは、例えば、業務に特化しないアプリケーション間の連携に関する処理や資源管理に関する処理当該である。具体的には、画面から入力されたデータの形式のチェックや、当該データのデータベースへの保存等、業務に依存しない処理が一例として挙げられる。
【０００７】
大規模なシステムのソースコードは複雑であるため、斯かるソースコードから業務ロジックを見つけ出すのは容易ではない。また、大規模なシステムでは、業務ロジック自体も大規模であるため、業務ロジックの中でも重要な部分を見つけ出すのは困難である。
【０００８】
そこで、一側面では、プログラム中において業務ロジックに関連する重要な部分の特定を支援することを目的とする。
【課題を解決するための手段】
【０００９】
一つの案では、情報処理装置は、プログラムのソースコードに含まれる項目の中から、前記プログラムに対して入力されるデータ又は前記プログラムから出力されるデータを格納する第１の項目を、前記ソースコードを参照して特定する特定部と、前記ソースコードを構成する所定の範囲ごとに、当該所定の範囲において参照されている前記第１の項目の数と、当該所定の範囲において前記第１の項目が参照されている回数とに基づく指標値を、当該所定の範囲に付与する付与部と、前記各所定の範囲に対する前記指標値の付与結果を出力する出力部と、を有する。
【発明の効果】
【００１０】
一側面によれば、プログラム中において業務ロジックの関連する重要な部分の特定を支援することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施の形態における分析装置のハードウェア構成例を示す図である。
【図２】本発明の実施の形態における分析装置の機能構成例を示す図である。
【図３】入出力項目取得処理の処理手順の一例を説明するためのフローチャートである。
【図４】分析対象のプログラムのソースコードの一例を示す図である。
【図５】入出力項目情報の構成例を示す図である。
【図６】ＣＳＶ形式の入出力項目情報の例を示す図である。
【図７】プログラム単位の集計範囲の特定処理の処理手順の一例を説明するためのフローチャートである。
【図８】集計範囲情報の一例を示す図である。
【図９】セクション単位の集計範囲の特定処理の処理手順の一例を説明するためのフローチャートである。
【図１０】条件文単位の集計範囲の特定処理の処理手順の一例を説明するためのフローチャートである。
【図１１】業務要因量（Ｒ１）に関する点数と業務計算量（Ｒ１−ｃｏｍｐ）に関する点数の付与処理の処理手順の一例を説明するためのフローチャートである。
【図１２】除外情報の構成例を示す図である。
【図１３】プログラム単位の集計範囲における業務要因量（Ｒ１）に関する点数情報の一例を示す図である。
【図１４】プログラム単位の集計範囲における業務計算量（Ｒ１−ｃｏｍｐ）に関する点数情報の一例を示す図である。
【図１５】業務判断多重度（Ｒ２）に関する点数の付与処理の処理手順の一例を説明するためのフローチャートである。
【図１６】プログラム単位の集計範囲における業務判断多重度（Ｒ２）に関する点数情報の一例を示す図である。
【図１７】優先情報の設定処理の処理手順の一例を説明するためのフローチャートである。
【図１８】指定業務情報の一例を示す図である。
【図１９】プログラム単位の各集計範囲の合計値の降順でのソート結果の一例を示す図である。
【図２０】散布図の一例を示す図である。
【図２１】ソフトウェア地図上での可視化の一例を示す図である。
【図２２】セクション単位の集計範囲における業務要因量（Ｒ１）に関する点数情報の一例を示す図である。
【図２３】セクション単位の集計範囲における業務計算量（Ｒ１−ｃｏｍｐ）に関する点数情報の一例を示す図である。
【図２４】セクション単位の集計範囲における業務判断多重度（Ｒ２）に関する点数情報の一例を示す図である。
【図２５】セクション単位の各集計範囲の合計値の降順でのソート結果の一例を示す図である。
【図２６】条件文単位の集計範囲における業務要因量（Ｒ１）に関する点数情報の一例を示す図である。
【図２７】条件文単位の集計範囲における業務判断多重度（Ｒ２）に関する点数情報の一例を示す図である。
【図２８】条件文単位の各集計範囲の合計値の降順でのソート結果の一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態における分析装置のハードウェア構成例を示す図である。図１の分析装置１０は、それぞれバスＢで相互に接続されているドライブ装置１００、補助記憶装置１０２、メモリ装置１０３、ＣＰＵ１０４、インタフェース装置１０５、表示装置１０６、及び入力装置１０７等を有する。
【００１３】
分析装置１０での処理を実現するプログラムは、記録媒体１０１によって提供される。プログラムを記録した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００１４】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従って分析装置１０に係る機能を実現する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。表示装置１０６はプログラムによるＧＵＩ（Graphical User Interface）等を表示する。入力装置１０７はキーボード及びマウス等であり、様々な操作指示を入力させるために用いられる。
【００１５】
なお、記録媒体１０１の一例としては、ＣＤ−ＲＯＭ、ＤＶＤディスク、又はＵＳＢメモリ等の可搬型の記録媒体が挙げられる。また、補助記憶装置１０２の一例としては、ＨＤＤ（Hard Disk Drive）又はフラッシュメモリ等が挙げられる。記録媒体１０１及び補助記憶装置１０２のいずれについても、コンピュータ読み取り可能な記録媒体に相当する。
【００１６】
図２は、本発明の実施の形態における分析装置の機能構成例を示す図である。図２において、分析装置１０は、入出力項目取得部１１、集計範囲特定部１２、点数付与部１３、優先情報設定部１４、及び出力部１５等を有する。これら各部は、分析装置１０にインストールされる１以上のプログラムが、ＣＰＵ１０４に実行させる処理により実現される。分析装置１０は、また、プログラム記憶部１２１、除外情報記憶部１２２、及び指定業務情報記憶部１２３等を利用する。これら各記憶部は、例えば、補助記憶装置１０２、又は分析装置１０にネットワークを介して接続可能な記憶装置等を用いて実現可能である。
【００１７】
プログラム記憶部１２１には、分析対象とされる１以上のプログラムのソースファイルが記憶されている。本実施の形態では、ＣＯＢＯＬによって記述されたプログラムが対象とされる。本実施の形態において、１プログラムは、１つのソースファイルに対応する。なお、ソースファイルは、ソースコードが記述されたファイルである。
【００１８】
入出力項目取得部１１は、プログラム記憶部１２１に記憶されているソースファイルから入出力項目を取得（抽出）する。項目とは、ＣＯＢＯＬにおいて、変数に相当する。入出力項目とは、本実施の形態において、プログラムに対して入力されるデータ又はプログラムから出力されるデータを格納する項目をいう。入出力項目取得部１１は、文法や項目間の代入関係の追跡等に基づいて、入出力項目を特定する。
【００１９】
本実施の形態では、プログラムに対して入力されるデータ又はプログラムから出力されるデータが、業務に関係するデータであると考える。すなわち、本実施の形態では、斯かるデータに関する判断処理や計算処理等が、「業務ロジック」に相当する部分であると考えられる。そこで、入出力項目取得部１１は、業務ロジックとの関連が深い部分を特定するために、ソースファイルから入出力項目を取得し、取得された入出力項目を示す入出力項目情報を出力する。なお、入出力項目に対応するデータの一例として、画面を介して入出力されるデータ、帳票に出力されるデータ、ファイル若しくはデータベース等から入力されるデータ、又はファイル若しくはデータベース等へ出力されるデータ等が挙げられる。
【００２０】
集計範囲特定部１２は、ソースファイルにおいて、点数の集計単位とする範囲（以下、「集計範囲」という。）を特定し、特定された集計範囲を示す情報である集計範囲情報を出力する。点数とは、業務ロジックの複雑さ又は重要度を評価するために、入出力項目ごとに付与される値である。本実施の形態では、集計範囲の単位として、プログラム、セクション、条件文が有る。プログラムは、ソースファイル単位である。セクションは、ＣＯＢＯＬにおけるセクション単位である。条件部は、条件文単位である。いずれの単位が集計範囲の単位とされるかについては、予めユーザによって選択される。
【００２１】
すなわち、膨大なプログラムを対象とした場合、業務ロジックも膨大となるため、全ての業務ロジックを一度に理解するのは困難である。そこで、本実施の形態では、優先して理解すべき重要な業務ロジック（例えば、理解が難しい業務ロジック等）が含まれている部分を特定可能とするために、プログラム群又はプログラムは、１以上の集計範囲に分割される。
【００２２】
点数付与部１３は、集計範囲情報に基づいて特定される集計範囲ごとに、当該集計範囲に含まれる入出力項目に対して点数を付与する。本実施の形態では、業務要因量（Ｒ１）、業務判断多重度（Ｒ２）、及び業務計算量（Ｒ１−ｃｏｍｐ）の３種類の指標値に関する点数が付与される。
【００２３】
業務要因量（Ｒ１）とは、集計範囲内の条件文において参照される入出力項目の項目数である。業務判断多重度（Ｒ２）とは、集計範囲内の条件文において、入出力項目別に参照される回数の中で最大の回数である。業務計算量（Ｒ１−ｃｏｍｐ）とは、集計範囲内計算式において参照される入出力項目の項目数である。
【００２４】
なお、上記の点数を計算する際に、入出力項目情報に基づいて入出力項目が特定される。また、除外情報記憶部１２２に記憶されている除外情報に基づいて、形式的なチェック等に関する条件部や計算式は、加点対象から除外される。除外情報は、形式的なチェック等に関する条件部や計算式等を特定するための情報であり、予めユーザによって設定される。
【００２５】
優先情報設定部１４では、集計範囲ごとに各入出力項目に付与された点数を集計し、集計結果に基づいて、各集計範囲に対して優先付けを行う。優先付けに際し、指定業務情報記憶部１２３に記憶されている指定業務情報に基づいて、優先付けの対象とされる集計範囲が絞り込まれてもよい。指定業務情報とは、特定の業務等に関するキーワード等を示す情報であり、ユーザによって予め設定される。指定業務情報が設定されている場合、例えば、指定業務情報が示すキーワードを含む集計範囲のみが、優先付けの対象とされる。
【００２６】
出力部１５は、優先付けの結果（又は点数付与部１３による点数の付与を結果）を示す情報を出力する。
【００２７】
以下、分析装置１０が実行する処理手順について説明する。図３は、入出力項目取得処理の処理手順の一例を説明するためのフローチャートである。
【００２８】
ステップＳ１０１において、入出力項目取得部１１は、分析対象として指定されたプログラムのソースコードから、全ての項目名を取得する。
【００２９】
図４は、分析対象のプログラムのソースコードの一例を示す図である。図４には、ＣＯＢＯＬで記述されたソースコードが示されている。各行において先頭の５桁の数字は、行番号を示す。００００１は、１行目を示す。プログラム内のデータ項目は、ＤＡＴＡ  ＤＩＶＩＳＩＯＮ（６行目）の内部にある各ＦＩＬＥ  ＳＥＣＴＩＯＮ（７〜１４行目）、ＬＩＮＫＡＧＥ  ＳＥＣＴＩＯＮ（２２〜３２行目）、ＷＯＲＫＩＮＧ−ＳＴＯＲＡＧＥ  ＳＥＣＴＩＯＮ（１５〜２１行目）の内部に定義されている。
【００３０】
続いて、入出力項目取得部１１は、全ての項目名のうち、ＦＩＬＥ  ＳＥＣＴＩＯＮにおいて定義されている項目名に係る項目を（Ｓ１０２でＹｅｓ）、入出力項目であると判定する（Ｓ１１３）。ＦＩＬＥ  ＳＥＣＴＩＯＮの項目は、ファイルに格納されていたデータが代入される項目であるため、文法上から明らかに入出力項目に該当するからである。
【００３１】
続いて、入出力項目取得部１１は、全ての項目のうち、ＬＩＮＫＡＧＥ  ＳＥＣＴＩＯＮにおいて定義されている項目名に係る項目を（Ｓ１０３でＹｅｓ）、入出力項目であると判定する（Ｓ１１３）。ＬＩＮＫＡＧＥ  ＳＥＣＴＩＯＮの項目は、他のプログラムへ出力される引数又は他のプログラムから入力される引数であり、文法上から明らかに入出力項目に該当するからである。
【００３２】
続いて、入出力項目取得部１１は、全ての項目のうち、ＷＯＲＫＩＮＧ−ＳＴＯＲＡＧＥ  ＳＥＣＴＩＯＮにおいて定義されている項目名の中で、ＣＡＬＬ文の引数として利用されている項目名に係る項目を（Ｓ１０４でＹｅｓ）、入出力項目であると判定する（Ｓ１１３）。ＷＯＲＫＩＮＧ−ＳＴＯＲＡＧＥ  ＳＥＣＴＩＯＮにおいて定義されている項目は、そのことだけで入出力項目であるか否かは判定できない。そこで、ＣＡＬＬ文の引数として利用されているか否かが判定される。ＣＡＬＬ文は、他のプログラムを呼び出すための文であり、ＣＡＬＬ文の引数は、他のプログラムへの入力データ又は他のプログラムからの出力データに該当する。したがって、ＷＯＲＫＩＮＧ−ＳＴＯＲＡＧＥ  ＳＥＣＴＩＯＮの項目の中で、ＣＡＬＬ文の引数として利用されている項目であれば、入出力項目として判定される。
【００３３】
続いて、入出力項目取得部１１は、分析対象のソースコードから、全てのＭＯＶＥ文及び全てのＣＯＭＰＵＴＥ文を取得する（Ｓ１０５）。すなわち、項目に対して代入が行われる文が取得される。
【００３４】
続いて、入出力項目取得部１１は、取得されたいずれかのＭＯＶＥ文又はいずれかのＣＯＭＰＵＴＥ文において、代入元又は代入先の項目名を取得する（Ｓ１０６）。なお、取得される項目名からは、既に入出力項目として判定された項目の項目名は除かれる。
【００３５】
続いて、入出力項目取得部１１は、取得された項目名のうち、集団項目に係る項目名については（Ｓ１０７でＹｅｓ）、集団項目以下の全ての項目の代入関係をソースコードから取得する（Ｓ１０８）。一方、入出力項目取得部１１は、取得された項目名のうち、基本項目に係る項目名については（Ｓ１０７でＮｏ）、当該基本項目の代入関係をソースコードから取得する（Ｓ１０９）。
【００３６】
項目の代入関係とは、当該項目を代入先とする項目を、代入先が無くなるまで再帰的に辿ることで、又は当該項目を代入元とする項目を代入元が無くなるまで再帰的に辿ることで得られる、項目間の関係をいう。
【００３７】
続いて、入出力項目取得部１１は、同一の項目に対して、複数の代入関係が得られた場合には、複数の代入関係のうち、最初の代入関係以外を削除する（Ｓ１１０）。最初の代入関係とは、行番号が最も小さい行での代入を起点とする代入関係をいう。
【００３８】
続いて、入出力項目取得部１１は、代入関係（すなわち、代入元又は代入先）を辿ることで、ＦＩＬＥ  ＳＥＣＴＩＯＮの項目、ＬＩＮＫＡＧＥ  ＳＥＣＴＩＯＮの項目、又はＣＡＬＬ文の引数に到達する項目を（Ｓ１１１でＹｅｓ）、入出力項目であると判定する（Ｓ１１３）。一方、入出力項目取得部１１は、代入関係（すなわち、代入元又は代入先）を辿ることで、ＦＩＬＥ  ＳＥＣＴＩＯＮの項目、ＬＩＮＫＡＧＥ  ＳＥＣＴＩＯＮの項目、又はＣＡＬＬ文の引数に到達しない項目を（Ｓ１１１でＮｏ）、入出力項目ではないと判定する（Ｓ１１２）。なお、集団項目については、当該集団項目の配下のいずれかの基本項目が入出力項目であると判定されれば、当該集団項目も入出力項目であると判定される。
【００３９】
図４に示されるソースコードに関して、図３の処理が実行されることにより、例えば、図５に示されるような入出力項目情報が得られる。
【００４０】
図５は、入出力項目情報の構成例を示す図である。図５には、図３の処理結果として出力される入出力項目情報が表形式で示されている。表の各行は、項目名、項目種別、及び入出力判定を含む。項目名は、項目の名前である。項目種別は、項目が基本項目であるか集団項目であるか、項目の階層、及びデータ形式等を示す情報である。入出力判定は、図３の処理によって、入出力項目であると判定されたか否かを示す情報である。
【００４１】
（１）の表は、ＦＩＬＥ  ＳＥＣＴＩＯＮから取得された項目を含む。すなわち、当該表には、０１レコードの「ＵＲＩＡＧＥ−ＲＥＣＯＲＤ」（図４の１１行目）、０３レコードの「ＦＤ−ＫＡＩＩＮＢＡＮＧＯ」、「ＦＤ−ＫＵＢＵＮ」、及び「ＦＤ−ＫＩＮＧＡＫＵ」の４つの項目が含まれている。ＦＩＬＥ  ＳＥＣＴＩＯＮで定義されている項目は、入出力項目であると判定されるため、入出力判定の値は、「○」となっている。「○」は、入出力項目であることを示す。
【００４２】
（２）の表は、ＬＩＮＫＡＧＥ  ＳＥＣＴＩＯＮから取得された項目を含む。すなわち、図４の２３行目〜３２行目に定義されている項目である。図４のＬＩＮＫＡＧＥ  ＳＥＣＴＩＯＮで定義されている項目は、入出力項目であると判定されるため、入出力判定の値は、「○」となっている。
【００４３】
（３）の表は、ＷＯＲＫＩＮＧ−ＳＴＯＲＡＧＥ  ＳＥＣＴＩＯＮから取得された項目を含む。ＷＯＲＫＩＮＧ−ＳＴＯＲＡＧＥ  ＳＥＣＴＩＯＮに定義されている項目は、そのことだけで自動的に入出力項目であるとは判定されない。例えば、０１レコードのＷＫ−ＦＬＧの入出力判定の値は、入出力項目でないことを示す「×」である。すなわち、ＷＫ−ＦＬＧは、ＣＡＬＬ文の引数として利用されていない。そこで、ＷＫ−ＦＬＧについては、代入関係が取得される。図４には、３５行目、３７行目、４８行目、５０行目、５２行目、５４行目、５６行目、５９行目、６０行目、及び６６行目にＭＯＶＥ文が含まれており、６５行目にＣＯＭＰＵＴＥ文が含まれている。ＷＫ−ＦＬＧは、集団項目であるため、配下の基本項目であるＦＬＧも合わせて代入関係が取得される。しかし、いずれのＭＯＶＥ文及びＣＯＭＰＵＴＥ文においても、ＷＫ−ＦＬＧ及びＦＬＧは、代入元又は代入先ではない。したがって、ＷＫ−ＦＬＧ及びＦＬＧは、入出力項目ではないと判定される。一方、ＷＯＲＫＩＮＧ−ＳＴＯＲＡＧＥ  ＳＥＣＴＩＯＮ内にあるＷＫ−ＩＯについては、５７行目のＣＡＬＬ文の引数に利用されているため、入出力項目であると判定される。
【００４４】
なお、図５では、見易さを考慮して表形式によって入出力項目情報を示したが、実際には、入出力項目情報は、ＣＳＶ（Comma Separated Values）形式で記述されたデータでもよい。図６は、ＣＳＶ形式の入出力項目情報の例を示す図である。
【００４５】
図６において、（１）には、ＦＩＬＥ  ＳＥＣＴＩＯＮから取得された項目が含まれている。（２）には、ＬＩＮＫＡＧＥ  ＳＥＣＴＩＯＮから取得された項目が含まれている。（３）には、ＷＯＲＫＩＮＧ−ＳＴＯＲＡＧＥ  ＳＥＣＴＩＯＮから取得された項目が含まれている。また、図６の各行には、各項目の項目名、項目の階層、項目の一意名（上位の階層から定義した名前）、項目が属するセクション名、入出力判定のそれぞれの値がカンマで区切られて記されている。入出力判定の値は、１（入出力項目である）又は０（入出力項目でない）である。
【００４６】
続いて、集計範囲特定部１２が実行する処理について説明する。集計範囲がプログラム単位であることが設定されている場合、集計範囲特定部１２は、図７の処理を実行する。
【００４７】
図７は、プログラム単位の集計範囲の特定処理の処理手順の一例を説明するためのフローチャートである。
【００４８】
ステップＳ２０１において、集計範囲特定部１２は、分析対象のプログラムのソースコードの最初の行から順に、一つの文（一つの行）を取得する。取得された文を、以下「対象文」という。続いて、集計範囲特定部１２は、対象文が、プログラムの開始文であるか否かを判定する（Ｓ２０２）。本実施の形態では、プログラムの処理部分であるＰＲＯＣＥＤＵＲＥ  ＤＩＶＩＳＩＯＮの部分がプログラムの範囲とされる。したがって、ステップＳ２０１では、対象文が、ＰＲＯＣＥＤＵＲＥ  ＤＩＶＩＳＩＯＮの開始を示す記述であるか否かが判定される。
【００４９】
対象文が、ＰＲＯＣＥＤＵＲＥ  ＤＩＶＩＳＩＯＮの開始を示す記述である場合（Ｓ２０２でＹｅｓ）、集計範囲特定部１２は、対象文が属する行の行番号を、集計範囲の開始行の行番号として記録する（Ｓ２０３）。
【００５０】
一方、対象文が、ＰＲＯＣＥＤＵＲＥ  ＤＩＶＩＳＩＯＮの開始を示す記述でない場合（Ｓ２０２でＮｏ）、集計範囲特定部１２は、対象文が、ＰＲＯＣＥＤＵＲＥ  ＤＩＶＩＳＩＯＮの最後の文であるか否かを判定する（Ｓ２０４）。対象文が、ＰＲＯＣＥＤＵＲＥ  ＤＩＶＩＳＩＯＮの最後の文である場合（Ｓ２０４でＹｅｓ）、集計範囲特定部１２は、対象文が属する行の行番号を、集計範囲の終了行の行番号として記録する（Ｓ２０５）。
【００５１】
ステップＳ２０１〜Ｓ２０５が、ソースコードの全での文について実行されると（Ｓ２０６でＹｅｓ）、集計範囲特定部１２は、ステップＳ２０３及びＳ２０５における記録結果を、集計範囲情報として出力する（Ｓ２０７）。
【００５２】
図８は、集計範囲情報の一例を示す図である。図８において、（１）が、図７の処理によって出力される集計範囲情報の一例である。すなわち、図４において、３３行目が、ＰＲＯＣＥＤＵＲＥ  ＤＩＶＩＳＩＯＮの開始を示す記述に該当し、６８行目が、ＰＲＯＣＥＤＵＲＥ  ＤＩＶＩＳＩＯＮの終了を示す記述に該当する。したがって、開始行を示すＢｅｇｉｎに対して３３行目が記録され、終了行を示すＥｎｄに対して６８行目が記録されている。
【００５３】
なお、集計範囲がプログラム単位である場合、複数のプログラムが分析対象として指定される可能性が有る。その場合、図３及び図７は、プログラムごとに実行される。
【００５４】
集計範囲がセクション単位であることが設定されている場合、集計範囲特定部１２は、図９の処理を実行する。
【００５５】
図９は、セクション単位の集計範囲の特定処理の処理手順の一例を説明するためのフローチャートである。なお、集計範囲となるセクションは、ＰＲＯＣＥＤＵＲＥ  ＤＩＶＩＳＩＯＮ内のセクションである。
【００５６】
ステップＳ３０１において、集計範囲特定部１２は、分析対象のプログラムのソースコードのＰＲＯＣＥＤＵＲＥ  ＤＩＶＩＳＩＯＮの最初の行から順に、一つの文（一つの行）を取得する。取得された文を、以下「対象文」という。続いて、集計範囲特定部１２は、対象文が、セクションの開始文であるか否かを判定する（Ｓ３０２）。セクションの開始文は、ＰＲＯＣＥＤＵＲＥ  ＤＩＶＩＳＩＯＮの開始文、又は「ＳＥＣＴＩＯＮ」で始まる文である。対象文が、セクションの開始を示す記述である場合（Ｓ３０２でＹｅｓ）、集計範囲特定部１２は、対象文が属する行の行番号を、集計範囲の開始行の行番号として記録する（Ｓ３０３）。
【００５７】
一方、対象文が、セクションの開始文でない場合（Ｓ３０２でＮｏ）、集計範囲特定部１２は、対象文が、セクションの最後の文であるか否かを判定する（Ｓ３０４）。対象文が、セクションの最後の文である場合（Ｓ３０４でＹｅｓ）、集計範囲特定部１２は、対象文が属する行の行番号を、集計範囲の終了行の行番号として記録する（Ｓ３０５）。
【００５８】
ステップＳ３０１〜Ｓ３０５が、ソースコードのＰＲＯＣＥＤＵＲＥ  ＤＩＶＩＳＩＯＮ内の全での文について実行されると（Ｓ３０６でＹｅｓ）、集計範囲特定部１２は、ステップＳ３０３及びＳ３０５における記録結果を、集計範囲情報として出力する（Ｓ３０７）。
【００５９】
図８において、（２）が、図９の処理によって出力される集計範囲情報の一例である。すなわち、図４において、３３行目から４４行目までが１つ目のセクションである。また、４５行目から６８行目までが２つ目のセクションである。したがって、（２）には、２つのセクションのそれぞれの開始行及び終了行が記録されている。この場合、２つの集計範囲が存在することになる。
【００６０】
また、集計範囲が条件文単位であることが設定されている場合、集計範囲特定部１２は、図１０の処理を実行する。
【００６１】
図１０は、条件文単位の集計範囲の特定処理の処理手順の一例を説明するためのフローチャートである。なお、条件文とは、ＩＦ文又はＥＶＡＬＵＡＴＥ文である。
【００６２】
ステップＳ４０１において、集計範囲特定部１２は、分析対象のプログラムのソースコードの最初の行から順に、一つの文（一つの行）を取得する。取得された文を、以下「対象文」という。続いて、集計範囲特定部１２は、対象文が、条件開始文であるか否かを判定する（Ｓ４０２）。具体的には、対象文が、ＩＦ文又はＥＶＡＬＵＡＴＥ文であるか否かが判定される。対象文が、条件開始文である場合（Ｓ４０２でＹｅｓ）、集計範囲特定部１２は、対象文が、他の条件文の内側の条件文であるか否かを判定する（Ｓ４０３）。すなわち、条件文は、他の条件文の内部に定義することができる。ステップＳ４０３では、対象文を条件開始文とする条件文が、他の条件文の内部に定義されているか否かが判定される。
【００６３】
対象文が他の条件文の内側でない場合（Ｓ４０３でＮｏ）、集計範囲特定部１２は、対象文が属する行の行番号を、集計範囲の開始行の行番号として記録する（Ｓ４０４）。一方、対象文が他の条件文の内側である場合（Ｓ４０３でＹｅｓ）、対象文は、集計範囲の開始行とならない。本実施の形態において、他の条件文の内側の条件文は、独立して集計範囲とはされないからである。
【００６４】
一方、対象文が条件開始文でない場合（Ｓ４０２でＮｏ）、集計範囲特定部１２は、対象文が、条件終了文であるか否かを判定する（Ｓ４０５）。具体的には、対象文が、ＥＮＤ−ＩＦ文又はＥＮＤ−ＥＶＡＬＵＡＴＥ文であるか否かが判定される。対象文が、条件終了文である場合（Ｓ４０５でＹｅｓ）、集計範囲特定部１２は、対象文が、他の条件文の内側の条件終了文であるか否かを判定する（Ｓ４０６）。
【００６５】
対象文が他の条件文の内側でない場合（Ｓ４０６でＮｏ）、集計範囲特定部１２は、対象文が属する行の行番号を、集計範囲の終了行の行番号として記録する（Ｓ４０７）。一方、対象文が他の条件文の内側である場合（Ｓ４０６でＹｅｓ）、対象文は、集計範囲の終了行とならない。
【００６６】
ステップＳ４０１〜Ｓ４０７が、ソースコードの全での文について実行されると（Ｓ４０８でＹｅｓ）、集計範囲特定部１２は、ステップＳ４０４及びＳ４０７における記録結果を、集計範囲情報として出力する（Ｓ４０９）。
【００６７】
図８において、（３）が、図１０の処理によって出力される集計範囲情報の一例である。すなわち、図４には、一番外側の条件文として、５つの条件文が有る。したがって、５つの条件文のそれぞれについて、開始行及び終了行が記録されている。
【００６８】
続いて、点数付与部１３が実行する処理について説明する。図１１は、業務要因量（Ｒ１）に関する点数と業務計算量（Ｒ１−ｃｏｍｐ）に関する点数の付与処理の処理手順の一例を説明するためのフローチャートである。図１１において、ステップＳ５０３〜Ｓ５０８は、業務要因量（Ｒ１）に関する点数を付与する手順であり、ステップＳ５１０〜Ｓ５１５は、業務計算量（Ｒ１−ｃｏｍｐ）に関する点数を付与する手順である。なお、図１１の処理は、集計範囲情報が示す集計範囲ごとに実行される。
【００６９】
ステップＳ５０１において、点数付与部１３は、処理対象の集計範囲の最初の行から順に、一つの文（一つの行）を取得する。取得された文を、以下「対象文」という。続いて、点数付与部１３は、対象文が条件文であるか否かを判定する（Ｓ５０２）。条件文とは、厳密には、図１０における条件開始文に該当する。なお、ステップＳ５０２の判定は、他の条件文の内側であるか否かは問われない。
【００７０】
対象文が条件文である場合（Ｓ５０２でＹｅｓ）、点数付与部１３は、対象文に含まれる項目名を取得する（Ｓ５０３）。すなわち、条件判定の対象とされている項目名が取得される。取得された項目名を、以下「対象項目名」という。なお、対象項目名は、複数取得される場合も有る。１つの条件文において複数の項目が、参照される場合も有るからである。対象項目名が複数である場合、ステップＳ５０４以降は、対象項目名ごとに実行される。
【００７１】
続いて、点数付与部１３は、対象項目名が、入出力項目情報に含まれているか否かを判定する（Ｓ５０４）。すなわち、対象項目名に係る項目が、入出力項目であるか否かが判定される。
【００７２】
対象項目名が、入出力項目情報に含まれている場合（Ｓ５０４でＹｅｓ）、点数付与部１３は、対象文又は対象項目名が、除外情報に指定されたパターンに該当するか否かを判定する（Ｓ５０５）。
【００７３】
図１２は、除外情報の構成例を示す図である。図１２において、除外情報は、ＣＳＶ形式で示されている。各行の第１フィールドは、当該行が示す除外情報の適用候補を示す。第２フィールドは、当該行が示す除外情報が適用される条件を示す。
【００７４】
例えば、図１２において１〜４行目は、ＩＦ文において、ＮＵＭＥＲＩＣ、ＡＬＰＨＡＢＥＴＩＣ、０、又はＺＥＲＯと比較される項目が、点数の付与対象から除外されることを示す。このような条件文は、業務に依存する処理ではなく、データ形式のチェック処理に該当する可能性が高いからである。５行目は、ＩＤＸを一部又は全部に含む項目名は、点数の付与対象から除外されることを示す。ＩＤＸを項目名に含む項目は、何らかのインデックス等、業務に依存するデータではない可能性が高いからである。
【００７５】
対象文又は対象項目名が、除外情報に指定されたパターンに該当しない場合（Ｓ５０５でＮｏ）、点数付与部１３は、対象項目名に対して、業務要因量（Ｒ１）に関する点数を付与済みであるか否かを判定する（Ｓ５０６）一つの項目名に対して、重複して点数が付与されないようにするためである。
【００７６】
対象項目名に対して、業務要因量（Ｒ１）に関する点数を付与済みでない場合（Ｓ５０６でＮｏ）、点数付与部１３は、対象項目名に対し、業務要因量（Ｒ１）に関する点数を付与する（Ｓ５０７）。本実施の形態では、便宜上、付与される点の単位は２点である。但し、付与される点の単位は、１点でもよいし、３点以上でもよい。続いて、点数付与部１３は、対象項目名に対応付けて業務要因量（Ｒ１）に関する点数を記録する（Ｓ５０８）。なお、対象項目名が入出力項目情報に含まれていない場合（Ｓ５０４でＮｏ）、対象項目名又は対象文が除外情報に指定されたパターン（条件）に合致する場合（Ｓ５０５でＹｅｓ）、又は対象項目名に対して業務要因量（Ｒ１）に関する点数を付与済みである場合（Ｓ５０６でＹｅｓ）、対象項目名に対して点数は付与されずにステップＳ５１６に進む。
【００７７】
一方、対象文が条件文でない場合（Ｓ５０２でＮｏ）、点数付与部１３は、対象文が計算式であるか否かを判定する（Ｓ５０９）。計算式とは、ＣＯＭＰＵＴＥ文、ＡＤＤ文、ＳＵＢＴＲＡＣＴ文、ＭＵＬＴＩＰＬＹ文、又はＤＩＶＩＤＥ文である。対象文が、計算式でない場合（Ｓ５０９でＮｏ）、ステップＳ５１６に進む。
【００７８】
対象文が計算式である場合（Ｓ５０９でＹｅｓ）、ステップＳ５１０〜Ｓ５１５において、ステップＳ５０３〜Ｓ５０８と同様の処理が実行される。但し、ステップＳ５１３では、対象項目名に対して業務計算量（Ｒ１−ｃｏｍｐ）に関する点数を付与済みであるか否かが判定される。また、ステップＳ５１４では、対象項目名に対して業務計算量（Ｒ１−ｃｏｍｐ）に関する点数が付与される。更に、ステップＳ５１５では、対象項目名に対応付けられて業務計算量（Ｒ１−ｃｏｍｐ）に関する点数が記録される。
【００７９】
ステップＳ５０１〜Ｓ５１５が、処理対象の集計範囲の全ての文について実行されると（Ｓ５１６でＹｅｓ）、図１１の処理は終了する。
【００８０】
図４に示されるソースコードに関して、図６及び図８の（１）が適用されて図１１の処理が実行された場合（すなわち、集計範囲がプログラム単位である場合）、例えば、図１３及び図１４に示される処理結果が得られる。
【００８１】
図１３は、プログラム単位の集計範囲における業務要因量（Ｒ１）に関する点数情報の一例を示す図である。図１３における（１）〜（３）の表は、図５における（１）〜（３）の表に対応する。但し、図１３の各表には、点数の列が追加されている。点数の列の値は、図１１のステップＳ５０８において記録される、業務要因量（Ｒ１）に関する点数である。プログラム単位の集計範囲は、図８の（１）より、図４の３３行目から６８行目までである。したがって、この範囲の各文が図１１の処理対象とされる。
【００８２】
図４の３６行目に条件文が存在し、当該条件文において、ＫＵＢＵＮ１が参照されている。ＫＵＢＵＮ１は、図６の入出力項目情報によれば入出力項目である。したがって、図１３の（２）において、ＫＵＢＵＮ１に対して２点が付与されている。なお、３６行目では、ＫＵＢＵＮ１に関して、００、０１、０２、及び０３の４つの定数と比較されているが、業務要因量（Ｒ１）に関する点数は、１つの項目名に対して重複して付与されないため、ＫＵＢＵＮ１には、２点のみが付与される。同様に、ＫＵＢＵＮ１は、４６行目の条件文（ＥＶＡＬＵＡＴＥ文）でも参照されるが、４６行目について点数は付与されない。
【００８３】
また、図４の４０行目の条件文で参照されているＫＡＩＩＮＢＡＮＧＯも入出力項目であるため、２点が付与されている。また、５８行目の条件文で参照されているＷＫ−ＥＲＲも入出力項目であるため、２点が付与されている。一方、６２行目のＩＦ文で参照されているＦＬＧは、入出力項目ではないため、点数は付与されない。
【００８４】
また、図１４は、プログラム単位の集計範囲における業務計算量（Ｒ１−ｃｏｍｐ）に関する点数情報の一例を示す図である。図１４における（１）〜（３）の表は、図５における（１）〜（３）の表に対応する。但し、図１４の各表には、点数の列が追加されている。点数の列の値は、図１１のステップＳ５１５において記録される、業務計算量（Ｒ１−ｃｏｍｐ）に関する点数である。
【００８５】
図４の６５行目のＣＯＭＰＵＴＥ文では、Ｏ−ＫＯＵＮＹＵＫＡＩＳＵ及びＩ−ＫＯＵＮＹＵＫＡＩＳＵが参照されている。図６によれば、これらはいずれも入出力項目であるため、それぞれ２点ずつ付与されている。
【００８６】
続いて、業務判断多重度（Ｒ２）に関する点数の付与処理について説明する。図１５は、業務判断多重度（Ｒ２）に関する点数の付与処理の処理手順の一例を説明するためのフローチャートである。図１５の処理は、図１１の処理の前又は後に実行されてもよいし、図１１の処理と並列的に実行されてもよい。なお、図１５の処理も、集計範囲情報が示す集計範囲ごとに実行される。
【００８７】
図１５において、ステップＳ６０１〜Ｓ６０５は、図１１のステップＳ５０１〜Ｓ５０５と同じ処理である。ステップＳ６０６において、点数付与部１３は、対象項目名に対し、業務判断多重度（Ｒ２）に関する点数を加算する。ここで、業務判断多重度（Ｒ２）に関する点数は、対象文である条件文において対象項目名が参照される回数×２によって算出される。参照される回数とは、比較される回数である。２が乗ぜられるのは、点数の単位が２点だからである。
【００８８】
例えば、対象文が、３６行目のＩＦ文である場合、ＫＵＢＵＮ１は、４つの定数と比較されている。したがって、この場合、４×２＝８が、ＫＵＢＵＮ１に対して加算される。また、対象文が、４６行目のＥＶＡＬＵＡＴＥ文である場合、当該ＥＶＡＬＵＡＴＥ文に属するＷＨＥＮ指定の回数（但し、「ＷＨＥＮ  ＯＴＨＥＲ」は除く）が、比較される回数に相当する。したがって、この場合、３×２＝６が、ＫＵＢＵＮ１に対して加算される。なお、図１５では、図１１のステップＳ５０６に対応する処理は実行されない。したがって、同一の項目名に対して複数回点数が加算されうる。続いて、点数付与部１３は、対象項目名に対応付けられて記録されている業務判断多重度（Ｒ２）に関する点数を更新する（Ｓ６０７）。ステップＳ６０１〜Ｓ６０７が、処理対象の集計範囲の全ての文について実行されると（Ｓ６０８でＹｅｓ）、図１５の処理は終了する。
【００８９】
図４に示されるソースコードに関して、図６及び図８の（１）が適用されて図１５の処理が実行された場合（すなわち、集計範囲がプログラム単位である場合）、例えば、図１６に示される処理結果が得られる。
【００９０】
図１６は、プログラム単位の集計範囲における業務判断多重度（Ｒ２）に関する点数情報の一例を示す図である。図１６における（１）〜（３）の表は、図５における（１）〜（３）の表に対応する。但し、図１６の各表には、点数の列が追加されている。点数の列の値は、図１５のステップＳ６０７において更新される、業務判断多重度（Ｒ２）に関する点数である。
【００９１】
例えば、ＫＵＢＵＮ１は、図４の３６行目のＩＦ文で４回参照され、４６行目のＥＶＡＬＵＡＴＥ分で３回参照されているため、（４＋３）×２＝１４点が付与されている。
【００９２】
続いて、優先情報設定部１４及び出力部１５が実行する処理について説明する。図１７は、優先情報の設定処理の処理手順の一例を説明するためのフローチャートである。
【００９３】
ステップＳ７０１において、優先情報設定部１４は、集計範囲ごとに、業務要因量（Ｒ１）に関する点数を集計する。集計範囲がプログラム単位であれば、図１３の点数の合計が算出される。図１３の点数の集計結果は、６点である。ステップＳ７０１における集計結果が、各集計範囲に対する業務要因量（Ｒ１）である。
【００９４】
続いて、優先情報設定部１４は、集計範囲ごとに、業務判断多重度（Ｒ２）に関する点数の最大値を特定する（Ｓ７０２）。集計範囲がプログラム単位であれば、図１６の点数の中の最大値が特定される。図１６の点数の最大値は、１４点である。ステップＳ７０２における特定結果が、各集計範囲に対する業務判断多重度（Ｒ２）である。
【００９５】
続いて、優先情報設定部１４は、集計範囲ごとに、業務計算量（Ｒ１−ｃｏｍｐ）に関する点数を集計する（Ｓ７０３）。集計範囲がプログラム単位であれば、図１４の点数の合計が算出される。図１４の点数の集計結果は、４点である。ステップＳ７０３における集計結果が、各集計範囲に対する業務計算量（Ｒ１−ｃｏｍｐ）である。
【００９６】
続いて、優先情報設定部１４は、集計範囲間の優先付け（優劣判定）に、指標値（Ｒ１、Ｒ２、Ｒ１−ｃｏｍｐ）の合計値を利用するか否かを判定する（Ｓ７０４）。当該判定は、例えば、ユーザによる設定に基づく。すなわち、ステップＳ７０４では、当該合計値を利用して優先付けを行うことが設定されているか否かが判定される。
【００９７】
当該合計値を利用することが設定されている場合（Ｓ７０４でＹｅｓ）、優先情報設定部１４は、指定業務情報記憶部１２３に指定業務情報が記憶されているか否か（指定業務情報が設定されているか否か）を判定する（Ｓ７０５）。指定業務情報記憶部１２３に指定業務情報が記憶されている場合（Ｓ７０５でＹｅｓ）、優先情報設定部１４は、優先付けの対象とする集計範囲を、指定業務情報に基づいて絞り込む（Ｓ７０６）。
【００９８】
図１８は、指定業務情報の一例を示す図である。指定業務情報は、１以上のキーワード（文字列）を含む情報である。ステップＳ７０６では、指定業務情報に含まれているいずれかのキーワードを含む集計範囲が優先付けの対象として選択される。例えば、集計範囲がプログラム単位であれば、指定業務情報に含まれているいずれかのキーワードを含むプログラムが、優先付けの対象とされる。図４において、５６行目に「ＨＩＮＭＥＩ」が含まれている。したがって、図４に示されるプログラムは、優先付けの対象とされる。なお、指定業務情報に含まれている全てのキーワードを含むことが、優先付けの対象として選択されることの条件とされてもよい。
【００９９】
項目名は、業務の内容と密接な関係を有する場合が有る。項目名は、業務に関連する情報に基づいて命名される傾向に有るからである。このような場合に、特定の業務に関するキーワードを指定業務情報として設定しておくことで、当該特定の業務に関する集計範囲（プログラム、セクション、又は条件文等）を優先付けの対象とすることができる。その結果、特定の業務に関する集計範囲を、優先して分析の対象とすることができる。
【０１００】
なお、指定業務情報が記憶されていない場合（Ｓ７０５でＮｏ）、各集計範囲が優先付けの対象とされる。
【０１０１】
続いて、優先情報設定部１４は、優先付けの対象とされた集計範囲ごとに、各指標値の合計値を算出する（Ｓ７０７）。すなわち、集計範囲ごとに、Ｒ１＋Ｒ２＋Ｒ１−ｃｏｍｐが計算される。続いて、出力部１５は、各集計範囲の合計値の降順でのソート結果を出力する（Ｓ７０８）。出力の形態は、所定のものに限定されない。表示装置１０６への表示であってもよいし、プリンタへの出力であってもよい。又は、ネットワークを介して所定の端末に送信されてもよい。
【０１０２】
図１９は、プログラム単位の各集計範囲の合計値の降順でのソート結果の一例を示す図である。図１９には、プログラム単位の集計範囲ごとに、優先順位、プログラム名、業務要因量（Ｒ１）、業務判断多重度（Ｒ２）、業務計算量（Ｒ２）、及び合計値がＣＳＶ形式で示されている。１行目の集計範囲は、図４のプログラムに対応する。２行目の集計範囲は、非図示の他のプログラムに対応する。
【０１０３】
ユーザは、図４に示されるソート結果を見て、ＴＥＳＴＰＧ０１に係るプログラムの方が、相対的に複雑である可能性が高いことを知ることができ。当該プログラムを優先して分析すべきことを判断することができる。
【０１０４】
一方、指標値（Ｒ１、Ｒ２、Ｒ１−ｃｏｍｐ）の合計値を利用することが設定されていない場合（Ｓ７０４でＮｏ）、出力部１５は、２つの指標値に基づいて、散布図を生成する（Ｓ７０９）。
【０１０５】
図２０は、散布図の一例を示す図である。図２０では、横軸が業務要因量（Ｒ１）であり、縦軸が業務判断多重度（Ｒ２）である２次元座標系に対して、各集計範囲がプロットされた散布図が示されている。
【０１０６】
横軸にマッピングされている業務要因量（Ｒ１）は、条件文で参照されている項目の数である。一方、縦軸にマッピングされている業務判断多重度（Ｒ２）は、各項目についての条件文での参照回数の最大値である。したがって、縦軸の値が大きく、横軸の値が小さいプロット（集計範囲）は、条件文で参照されている項目の数は多いが、参照回数が少ない部分であることが分かる。縦軸の値が小さく、横軸の値が大きいプロット（集計範囲）は、条件文で参照されている項目の数は少ないが、参照回数が多い部分であることが分かる。一方、縦軸及び横軸の双方の値が大きいプロット（集計範囲）は、条件文で参照されている項目の数及び参照回数共に多い部分であることが分かる。したがって、斯かる集計範囲の複雑度は高いものと推測できる。
【０１０７】
なお、散布図が表示される場合、優先情報設定部１４は、プロットごとに散布図の原点からの距離を算出し、距離に基づいて各集計範囲に対して優先付けを行ってもよい。例えば、距離が長い方が優先度が高くされ、距離が短い方が優先度が低くされる。２つの軸の値が大きい領域は、当該距離が長くなるからである。又は、横軸に対する閾値と、縦軸に対する閾値とによって、散布図の領域が４分割されてもよい。４分割された領域に対して優先付けが行われてもよい。また、散布図の横軸は、業務要因量（Ｒ１）＋業務計算量（Ｒ１−ｃｏｍｐ）であってもよい。
【０１０８】
又は、出力部１５は、図２１に示されるようなソフトウェア地図を生成してもよい。図２１は、ソフトウェア地図上での可視化の一例を示す図である。
【０１０９】
図２１に示されるソフトウェア地図では、３次元空間が、２次元上に表現されている。すなわち、矩形Ｒ１は、奥行きを有する平面である。各プログラムの関係を示すソフトウェア地図が、当該底面に対してマッピングされている。ソフトウェア地図は、例えば、http://pr.fujitsu.com/jp/news/2012/02/29.html、特開２０１３−１４８９８７号公報、特開２０１３−１５２５７６号公報等に記載された技術が用いられて作成されてもよい。
【０１１０】
ソフトウェア地図上で、各プログラムがマッピングされる位置は、各プログラム間の関係に基づいて定まる。各プログラムがマッピングされた位置には、当該プログラムに対して計算されたＲ１、Ｒ２、及びＲ１−ｃｏｍｐの合計値に応じた大きさを有する図形が配置されている。図２１では、当該合計値に応じた高さを有するビルが配置された例が示されている。ソフトウェア地図上では、関連が強いプログラム同士が近い位置にマッピングされる。したがって、例えば、高いビルが密集している領域Ａ１にマッピングされているプログラム群は、業務ロジックが複雑である可能性が高いことが分かる。一方、低いビルが密集している領域Ａ２にマッピングされているプログラム群は、業務ロジックが単純である可能性が高いことが分かる。したがって、ユーザは、いずれのグループのプログラム群を優先的に分析すべきてあるかについての有益な判断材料を得ることができる。
【０１１１】
なお、上記では、集計範囲がプログラム単位である場合についての処理結果の具体例を示したが、以下において、集計範囲がセクション単位である場合の処理結果の具体例を示す。以下の具体例は、いずれも図４に示したソースコードに基づく。
【０１１２】
図２２は、セクション単位の集計範囲における業務要因量（Ｒ１）に関する点数情報の一例を示す図である。すなわち、図２２は、セクションごとに図１１の処理が実行された場合に得られる業務要因量（Ｒ１）に関する点数の付与結果である。
【０１１３】
図４に示したプログラムのＰＲＯＣＥＤＵＲＥ  ＤＩＶＩＳＩＯＮは、図８の（２）に示されるように、２つのセクションを含む。１つ目のセクションは、３３行目から４４行目までであり、２つ目のセクションは、４５行目から６８行目までである。図４において（１）は、１つ目のセクションに対応し、（２）は、２つ目のセクションに対応する。
【０１１４】
１つ目のセクションは、３６行目と４０行目とに条件文を含む。それぞれの条件文では、ＫＵＢＵＮ１又はＫＡＩＩＮＢＡＮＧＯを項目名とする入出力項目が参照されている。したがって、（１）では、ＫＵＢＵＮ１又及びＫＡＩＩＮＢＡＮＧＯのそれぞれに対して２点が付与された結果が示されている。
【０１１５】
２つ目のセクションでは、ＫＵＢＵＮ１及びＷＫ−ＥＲＲのそれぞれの入出力項目が条件文で参照されている。したがって、（２）では、ＫＵＢＵＮ１及びＷＫ−ＥＲＲのそれぞれに対して２点が付与された結果が示されている。なお、ＫＵＢＵＮ１は、（１）及び（２）の双方に含まれているが、これは、同じ項目であっても、セクションごとに点数が付与されるためである。
【０１１６】
また、図２３は、セクション単位の集計範囲における業務計算量（Ｒ１−ｃｏｍｐ）に関する点数情報の一例を示す図である。
【０１１７】
図４のプログラムにおいて、１番目のセクションには、計算式は含まれていないため、図２３において１番目のセクションに対応する表は示されていない。すなわち、図２３は、２番目のセクションの６５行目の計算式に含まれているＩ−ＫＯＵＮＹＵＫＡＩＳＵ及びＯ−ＫＯＵＮＹＵＫＡＩＳＵのそれぞれに対して２点が付与された結果を示す。
【０１１８】
更に、図２４は、セクション単位の集計範囲における業務判断多重度（Ｒ２）に関する点数情報の一例を示す図である。図２４において、（１）は、１番目のセクションに対応し、（２）は、２番目のセクションに対応する。
【０１１９】
１番目のセクションでは、３６行目において、ＫＵＢＵＮ１が４回参照されている。また、４０行目において、ＫＡＩＮＢＡＮＧＯが１回参照されている。したがって、（１）では、ＫＵＢＵＮ１に対して４×２＝８点が付与され、ＫＡＩＮＢＡＮＧＯに対して２点が付与された結果が示されている。
【０１２０】
２番目のセクションでは、４６行目から５５行目までにおいて、ＫＵＢＵＮ１が３回参照され、５８行目において、ＷＫ−ＥＲＲが１回参照されている。したがって、（２）では、ＫＵＢＵＮ１に対して３×２＝６点が付与され、ＷＫ−ＥＲＲに対して２点が付与された結果が示されている。
【０１２１】
図２２〜図２４に基づいて、図１７の処理が実行されると、例えば、図２５に示されるようなソート結果が得られる。
【０１２２】
図２５は、セクション単位の各集計範囲の合計値の降順でのソート結果の一例を示す図である。図２５の形式は、基本的に図１９と同じであるが、第３フィールドは、セクション名を示す。第４フィールド以降は、図１９の第３フィールド以降と同じである。
【０１２３】
図２５において、１行目は、２番目のセクションに対応し、２行目は、１番目のセクションに対応する。すなわち、１行目のセクションの方が複雑であると判定された結果が示されている。
【０１２４】
なお、図２５は、図１８に示した指定業務情報が適用されていない場合に得られるソート結果を示す。仮に、当該指定業務情報が適用された場合、１番目のセクションは、ソート結果に含まれない。１番目のセクションには、ＨＩＮＭＥＩ又は品名が含まれていないからである。
【０１２５】
続いて、集計範囲が条件文単位である場合の処理結果の具体例を示す。以下の具体例は、いずれも図４に示したソースコードに基づく。
【０１２６】
図２６は、条件文単位の集計範囲における業務要因量（Ｒ１）に関する点数情報の一例を示す図である。図４には、５つの条件文が含まれているが、６２行目のＩＦ文で参照されている項目は、入出力項目ではない。したがって、図２６では、４つの条件文で参照されているそれぞれの入出力項目に対して２点が付与された結果が、（１）〜（４）に示されている。
【０１２７】
また、図２７は、条件文単位の集計範囲における業務判断多重度（Ｒ２）に関する点数情報の一例を示す図である。図２７では、４つの条件文において参照されている入出力項目について、それぞれの条件文における参照回数に応じた点数が付与された結果が、（１）〜（４）に示されている。
【０１２８】
なお、図４に示される条件文は、いずれも計算式を内側に含まないため、いずれの条件文に対しても、業務計算量（Ｒ１−ｃｏｍｐ）に関する点数は、０点となる。
【０１２９】
図２６及び図２７に基づいて、図１７の処理が実行されると、例えば、図２８に示されるようなソート結果が得られる。
【０１３０】
図２８は、条件文単位の各集計範囲の合計値の降順でのソート結果の一例を示す図である。図２８の形式は、基本的に、図１９と同じであるが、第３フィールドは、条件文の行番号を示し、第４フィールドは、条件文がＩＦ文であるのかＥＶＡＬＵＡＴＥ文であるのかを示す。第５フィールド以降は、図１９の第３フィールド以降と同じである。図２８において、５行目は、５番目の条件文に対応する。
【０１３１】
なお、集計範囲が、セクション単位又は条件文単位である場合においても、散布図又はソフトウェア地図等が生成されてもよい。
【０１３２】
上述したように、本実施の形態によれば、プログラム中において、業務ロジックとの関連性が高い項目（入出力項目）を特定し、各集計範囲における入出力項目の参照状況に基づいて、各集計範囲に対して優先付けを行うことができる。したがって、プログラム中において業務ロジックに関連する重要な部分の特定を支援することができる。その結果、ユーザは、例えば、限られた時間内で、理解が困難である複雑な業務ロジックを優先して分析することが出来き、効率的にソフトウェア資産を理解することができる。
【０１３３】
なお、本実施の形態は、ＣＯＢＯＬ以外の言語（例えば、Ｃ言語や他のプログラミング言語等）によって記述されたプログラムに関して適用されてもよい。この場合、セクションは、例えば、関数等に置き換えられてもよい。
【０１３４】
なお、本実施の形態において、分析装置１０は、情報処理装置又はコンピュータの一例である。入出力項目取得部１１は、特定部の一例である。点数付与部１３及び優先情報設定部１４は、付与部の一例である。
【０１３５】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【０１３６】
以上の説明に関し、更に以下の項を開示する。
（付記１）
プログラムのソースコードに含まれる項目の中から、前記プログラムに対して入力されるデータ又は前記プログラムから出力されるデータを格納する第１の項目を、前記ソースコードを参照して特定する特定部と、
前記ソースコードを構成する所定の範囲ごとに、当該所定の範囲において参照されている前記第１の項目の数と、当該所定の範囲において前記第１の項目が参照されている回数とに基づく指標値を、当該所定の範囲に付与する付与部と、
前記各所定の範囲に対する前記指標値の付与結果を出力する出力部と、
を有することを特徴とする情報処理装置。
（付記２）
前記特定部は、前記ソースコードに適用される文法に基づいて、前記プログラムに対して入力されるデータ又は前記プログラムから出力されるデータを格納する第２の項目を特定し、前記ソースコードにおける項目間の代入関係を辿ることで前記第２の項目に到達する第３の項目を特定し、前記第２の項目と前記第３の項目とを、前記第１の項目として特定する、
ことを特徴とする付記１記載の情報処理装置。
（付記３）
前記出力部は、前記所定の範囲の間の関係に基づいて前記各所定の範囲に対応付けられる位置が定まる地図において、前記各所定の範囲に対応付けられた位置に当該所定の範囲に付与された前記指標値に応じた大きさを有する図形を配置する、
ことを特徴とする付記１又は２記載の情報処理装置。
（付記４）
前記出力部は、前記所定の範囲のうち所定の文字列を含む所定の範囲に対する前記指標値の付与結果を出力する、
ことを特徴とする付記１乃至３いずれか一項記載の情報処理装置。
（付記５）
前記付与部は、前記ソースコードにおいて前記第１の項目を含む文のうち、所定の条件に合致する文に含まれる前記第１の項目については、前記所定の範囲において参照されている数、又は前記所定の範囲において参照されている回数に含めない、
ことを特徴とする付記１乃至４いずれか一項記載の情報処理装置。
（付記６）
コンピュータに、
プログラムのソースコードに含まれる項目の中から、前記プログラムに対して入力されるデータ又は前記プログラムから出力されるデータを格納する第１の項目を、前記ソースコードを参照して特定し、
前記ソースコードを構成する所定の範囲ごとに、当該所定の範囲において参照されている前記第１の項目の数と、当該所定の範囲において前記第１の項目が参照されている回数とに基づく指標値を、当該所定の範囲に付与し、
前記各所定の範囲に対する前記指標値の付与結果を出力する、
処理を実行させることを特徴とするプログラム。
（付記７）
前記特定する処理は、前記ソースコードに適用される文法に基づいて、前記プログラムに対して入力されるデータ又は前記プログラムから出力されるデータを格納する第２の項目を特定し、前記ソースコードにおける項目間の代入関係を辿ることで前記第２の項目に到達する第３の項目を特定し、前記第２の項目と前記第３の項目とを、前記第１の項目として特定する、
ことを特徴とする付記６記載のプログラム。
（付記８）
前記出力する処理は、前記所定の範囲の間の関係に基づいて前記各所定の範囲に対応付けられる位置が定まる地図において、前記各所定の範囲に対応付けられた位置に当該所定の範囲に付与された前記指標値に応じた大きさを有する図形を配置する、
ことを特徴とする付記６又は７記載のプログラム。
（付記９）
前記出力する処理は、前記所定の範囲のうち所定の文字列を含む所定の範囲に対する前記指標値の付与結果を出力する、
ことを特徴とする付記６乃至８いずれか一項記載のプログラム。
（付記１０）
前記付与する処理は、前記ソースコードにおいて前記第１の項目を含む文のうち、所定の条件に合致する文に含まれる前記第１の項目については、前記所定の範囲において参照されている数、又は前記所定の範囲において参照されている回数に含めない、
ことを特徴とする付記６乃至９いずれか一項記載のプログラム。
【符号の説明】
【０１３７】
１０          分析装置
１１          入出力項目取得部
１２          集計範囲特定部
１３          点数付与部
１４          優先情報設定部
１５          出力部
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
１０６        表示装置
１０７        入力装置
１２１        プログラム記憶部
１２２        除外情報記憶部
１２３        指定業務情報記憶部
Ｂ            バス
【図１】
0006409658.tif 000002
【図２】
0006409658.tif 000003
【図３】
0006409658.tif 000004
【図４】
0006409658.tif 000005
【図５】
0006409658.tif 000006
【図６】
0006409658.tif 000007
【図７】
0006409658.tif 000008
【図８】
0006409658.tif 000009
【図９】
0006409658.tif 000010
【図１０】
0006409658.tif 000011
【図１１】
0006409658.tif 000012
【図１２】
0006409658.tif 000013
【図１３】
0006409658.tif 000014
【図１４】
0006409658.tif 000015
【図１５】
0006409658.tif 000016
【図１６】
0006409658.tif 000017
【図１７】
0006409658.tif 000018
【図１８】
0006409658.tif 000019
【図１９】
0006409658.tif 000020
【図２０】
0006409658.tif 000021
【図２１】
0006409658.tif 000022
【図２２】
0006409658.tif 000023
【図２３】
0006409658.tif 000024
【図２４】
0006409658.tif 000025
【図２５】
0006409658.tif 000026
【図２６】
0006409658.tif 000027
【図２７】
0006409658.tif 000028
【図２８】
0006409658.tif 000029