(57)【要約】      （修正有）【課題】情報システムの仕様を把握する現行調査の実施を支援する。【解決手段】プログラム関連分析装置は、プログラムファイルを構文解析しプログラムとプログラム内で宣言される変数群であるデータブロックの関係を抽出するプログラム構文解析部１１１と、プログラムファイルの構文解析の結果に基づいて複数のプログラムの間の業務的な関連性を表すプログラム関連度を算出するプログラム関連度算出部１１２と、プログラム関連度に基づいて複数のプログラムをプログラム群に分類しプログラム群で共通して出現するデータブロック群から業務名称を抽出する業務名称抽出部１１３と、プログラム群と業務名称とを表示する出力装置１５とを有する。【選択図】図１
2019096131.tif 000002
【特許請求の範囲】
【請求項１】
業務システムの複数のプログラムのプログラムファイルを分析して、複数の前記プログラムを業務単位で分類するプログラム関連分析装置であって、
前記プログラムファイルを構文解析し、前記プログラムと前記プログラム内で宣言される変数群であるデータブロックの関係を抽出するプログラム構文解析部と、
前記プログラムファイルの構文解析の結果に基づいて、複数の前記プログラムの間の業務的な関連性を表すプログラム関連度を算出するプログラム関連度算出部と、
前記プログラム関連度に基づいて、複数の前記プログラムをプログラム群に分類し、前記プログラム群で共通して出現するデータブロック群から業務名称を抽出する業務名称抽出部と、
前記プログラム群と前記業務名称とを表示する出力装置と、
を有することを特徴とするプログラム関連分析装置。
【請求項２】
前記プログラム関連度算出部は、
前記プログラムが有する前記データブロックを要素とする集合の類似度を算出することを特徴とする請求項１に記載のプログラム関連分析装置。
【請求項３】
前記プログラム関連度に基づいた前記プログラムの分類のための閾値の入力を促すための入力装置を更に有し、
前記業務名称抽出部は、
前記入力装置から入力された前記閾値に基づいて、前記プログラムを分類して前記業務名称を抽出することを特徴とする請求項１に記載のプログラム関連分析装置。
【請求項４】
前記業務名称抽出部は、
前記プログラム関連度を距離行列に変換し、
前記距離行列に基づいて前記プログラムの空間分布を求め、
前記プログラムの前記空間分布に基づいてクラスタリングし、
前記出力装置は、
前記プログラムの空間分布と前記クラスタリングの結果を表示することを特徴とする請求項１に記載のプログラム関連分析装置。
【請求項５】
前記業務名称抽出部は、
前記データブロック内に記述されたコメントで構成される文書を参照して前記業務名称を抽出することを特徴とする請求項１に記載のプログラム関連分析装置。
【請求項６】
前記出力装置は、
前記プログラムの前記空間分布に基づいて二次元平面における前記プログラムの分布を表示し、
前記クラスタリングの過程を表現したデンドログラムを表示することを特徴とする請求項４に記載のプログラム関連分析装置。
【請求項７】
前記出力装置は、
前記プログラムの前記空間分布において、前記プログラムの分類結果を点線枠で表示し、前記プログラム群に前記業務名称をラベリングして表示することを特徴とする請求項６に記載のプログラム関連分析装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム関連分析装置に関する。
【背景技術】
【０００２】
企業のＩＴシステム等の情報システムの再構築、新システムの開発などにおいて現行システムの課題を把握してＴｏ−Ｂｅ像（次期の業務やシステム）を検討するために、ＩＴシステムの仕様を把握する現行調査を実施する。
【０００３】
しかし、社会基盤を支えるような大規模なＩＴシステムは、リリースから数十年が経過し、仕様書の陳腐化及びベテラン開発者の引退などのために、現行調査がしばしば難航する。
【０００４】
開発スケジュールの都合で現行調査が十分に実施されないために、開発の後工程（テスト、運用開始後など）で仕様把握漏れを発見し、設計のやり直しなどの手戻りが発生して開発コストが膨らんでしまうこともある。
このような状況下で、現に稼動しているＩＴシステムのプログラムファイルを解析し、仕様を可視化する技術は有効な手段となり得る。
【０００５】
特許文献１には、業務と業務データ項目との関連情報を元に業務とプログラムを関連付けることで、プログラム関連図において同一業務に属するプログラム群を抽出し分類して表示する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１５−１０２８７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１では、業務と業務データ項目の関連情報を予め明らかにする必要がある。しかし、関連情報を記載した仕様書が陳腐化するなどして、関連情報を明らかにできないことが起こり得る。このため、情報システムの仕様を把握する現行調査の実施が困難となる。
本発明の目的は、情報システムの仕様を把握する現行調査の実施を支援することにある。
【課題を解決するための手段】
【０００８】
本発明の一態様のプログラム関連分析装置は、業務システムの複数のプログラムのプログラムファイルを分析して、複数の前記プログラムを業務単位で分類するプログラム関連分析装置であって、前記プログラムファイルを構文解析し、前記プログラムと前記プログラム内で宣言される変数群であるデータブロックの関係を抽出するプログラム構文解析部と、前記プログラムファイルの構文解析の結果に基づいて、複数の前記プログラムの間の業務的な関連性を表すプログラム関連度を算出するプログラム関連度算出部と、前記プログラム関連度に基づいて、複数の前記プログラムをプログラム群に分類し、前記プログラム群で共通して出現するデータブロック群から業務名称を抽出する業務名称抽出部と、前記プログラム群と前記業務名称とを表示する出力装置とを有することを特徴とする。
【発明の効果】
【０００９】
本発明に一態様よれば、情報システムの仕様を把握する現行調査の実施を支援することができる。
【図面の簡単な説明】
【００１０】
【図１】実施例のプログラム関連分析装置の構成を示す図である。
【図２】実施例のプログラム関連分析装置の処理の流れを示したフローチャートである。
【図３】プログラム構文解析部が構文解析するプログラムファイルの例を示す図である。
【図４】プログラム構文解析結果の例を示す図である。
【図５】プログラム関連度算出部の処理の流れを示したフローチャートである。
【図６】プログラム関連度の例を示す図である。
【図７】業務名称抽出部の処理Ｓ３００を示したフローチャートである。
【図８】プログラム空間分布の例を示す図である。
【図９】業務名称抽出部の処理Ｓ３００後の画面表示例を示す図である。
【図１０】業務名称抽出部の処理Ｓ４００を示したフローチャートである。
【図１１】プログラム分類結果の例を示す図である。
【図１２】業務名称抽出結果１２６の例を示す図である。
【図１３】業務名称抽出部の処理Ｓ４００後の画面表示例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面を用いて実施例について説明する。
【００１２】
図１を参照して、実施例のプログラム関連分析装置の構成について説明する。
プログラム関連分析装置１０は、プロセッサ１１、主記憶装置１２、記憶装置１３、入力装置１４、出力装置１５及び通信装置１６を備え、それぞれが内部バスなどにより接続されている。プロセッサ１１は、記憶装置１３に格納されたデータ（プログラムファイルなど）を主記憶装置１２に読み込み、実行することで様々な処理を行う。
【００１３】
記憶装置１３は、プログラムファイルを構文解析するプログラム構文解析部１１１、プログラム解析結果を元にプログラム間の業務的な関連性を算出するプログラム関連度算出部１１２、互いに関連するプログラム群で分類し各プログラム群で共通して出現するデータブロック群を元に業務名称を抽出する業務名称抽出部１１３、プログラムファイル１２１、プログラム構文解析結果１２２、プログラム関連度１２３、プログラム空間分布１２４、プログラム分類結果１２５及び業務名称抽出結果１２６を格納する。
【００１４】
図２のフローチャートを参照して、実施例のプログラム関連分析装置１０の処理について説明する。
プログラム関連分析装置１０は、操作するユーザが入力装置１４を通じて送信した処理開始トリガを契機として処理を開始する。
【００１５】
まず、プログラム関連分析装置１０は、プログラム構文解析部１１１において、プログラムファイル１２１に格納されたプログラムファイルを構文解析し、プログラム識別子、データブロック識別子を抽出し、プログラム構文解析結果（格納部）１２２に格納する（Ｓ１００）。
【００１６】
ここで、データブロックとは、プログラム内で宣言される変数群を指し、ＣＯＢＯＬ言語ではＣＯＰＹ原文、Ｃ言語では構造体、オブジェクト指向言語ではクラスなどが該当する。データブロックは、プログラム開発者がプログラムの可読性及び保守性の向上のために対象業務において一塊にすべき複数の変数を纏めたものであり、対象業務の特性の断片を有していると考えることができる。
【００１７】
図３は、ＣＯＢＯＬ言語で記述されたプログラムファイルの一例を示している。
ファイル名称ＰＧＭ２０１７．ｃｂｌは、処理を記述したプログラムファイルで、行番号００００４でプログラムの識別子”ＰＧＭ２０１７”を宣言している。行番号００００５以降のＤＡＴＡ部において、ＣＯＰＹ原文ＣＯ２１０、Ｃ０６１９、Ｃ１０１３を複写し、行番号００２０１以降で処理を記述する。
【００１８】
また、ファイル名称Ｃ０６１９．ｃｂｌはＣＯＰＹ原文のプログラムファイルで、行番号００００２で集団項目である受注起票データＯＲＤＥＲＤＡＴＡを宣言している。行番号００００４で基本項目である受注日ＹＹＹＹＭＭＤＤを宣言している。行番号００００６で基本項目である届け先ＡＤＤＲＥＳＳを宣言している。行番号００００８で基本項目である数量ＡＭＯＵＮＴを宣言している。行番号０００１０で基本項目である商品番号ＩＴＥＭＩＤを宣言している。行番号０００１２で基本項目である商品名称ＩＴＥＭＮＡＭＥを宣言している。なお、アスタリスク“＊”は、コメント行であることを示している。
【００１９】
プログラム構文解析部１１１は、図３を例にすれば、プログラム識別子として“ＰＧＭ２０１７”を抽出し、データブロック識別子として“Ｃ０２１０”、“Ｃ０６１９”、“Ｃ１０１３”を抽出する。これらの情報を抽出する手段は、既存のコンパイラ技術を利用することで実現可能である。
【００２０】
図４は、プログラム構文解析結果１２２の一例を示している。
例えば、プログラム識別子＝“Ｐ００１”であるプログラムは、４のデータブロック識別子Ｃ００１、Ｃ００２、Ｃ００３、Ｃ００４を有している。
次に、プログラム関連分析装置１０は、プログラム関連度算出部１１２において、プログラム構文解析結果１２２に格納されたプログラム構文解析結果からプログラム間の業務的な関連性を算出してプログラム関連度１２３に格納する（Ｓ２００）。
【００２１】
図５は、プログラム関連度算出部１１２における処理の一例を説明するフローチャートである。
まず、プログラム関連度算出部１１２は、プログラム構文解析部１１１の処理完了を以って、処理Ｓ２００を開始する。
プログラム関連度算出部１１２は、プログラム構文解析結果１２２よりプログラム識別子の一覧を取得する（Ｓ２１０）。
【００２２】
次に、プログラム関連度算出部１１２は、取得したプログラム識別子の一覧から２つを選択する（Ｓ２２０）。
次に、プログラム関連度算出部１１２は、Ｓ２２０で選択したプログラムについて、データブロックを要素とする集合（それぞれ集合Ｘ、Ｙとする）に対し、積集合の要素数（＝｜Ｘ∩Ｙ｜）を和集合の要素数（＝｜Ｘ∪Ｙ｜）で除算する（Ｓ２３０）。
２つの集合について積集合を和集合で除算した値はＪａｃｃａｒｄ係数と呼ばれ、集合の類似度算出手法の１つである。
【００２３】
実施例では、例としてＪａｃｃａｒｄ係数を用いたが、他の係数（Ｄｉｃｅ係数、Ｓｉｍｐｓｏｎ係数など）を用いても良い。なお、本ステップ（Ｓ２３０）はプログラムの全組合せについて実施するが、集合類似度の対称性、自明な類似度計算（自集合の類似度は１）に基づいて計算量を減らすなどの工夫を実施してもよい。
次に、プログラム関連度算出部１１２は、次のプログラムの組み合わせがあればＳ２２０に戻り処理を継続し、なければ処理を完了する（Ｓ２４０）。
【００２４】
図６は、プログラム関連度１２３の一例を示している。
縦、横にそれぞれプログラム識別子を並べ、その交点の数値が当該プログラム間の業務的な関連度を指している。
【００２５】
次に、プログラム関連分析装置１０は、業務名称抽出部１１３において、プログラム関連度１２３に格納されたプログラム関連度を元にクラスタリングし、互いに関連するプログラム群に分類するための閾値を受け付ける（Ｓ３００）。
【００２６】
図７は、業務名称抽出部１１３において、処理Ｓ３００の一例を説明するフローチャートである。
まず、業務名称抽出部１１３は、プログラム関連度算出部１１２の処理完了またはユーザが入力装置１４を通じ送信した処理継続トリガを契機として、処理Ｓ３００を開始する。
【００２７】
次に、業務名称抽出部１１３は、プログラム関連度（格納部）１２３に格納されたプログラム関連度を読み込み、距離行列に変換する（Ｓ３１０）。
一般的に関連度と距離は負の相関を持つ概念であり、例えば、「距離：＝１−プログラム関連度」、「距離：＝ｅｘｐ（−ａ＊プログラム関連度）、但しａは正定数」などの変換式が考えられる。以下では、変換式「距離：＝１−プログラム関連度」を採用する。
【００２８】
次に、業務名称抽出部１１３は、前記距離行列を元に、各プログラムの空間分布を求める（Ｓ３２０）。距離行列から各要素の空間分布を求める手法は多次元尺度構成法として知られており、既存の手法の中から適切なものを選択することで実現可能である。
【００２９】
図８は、プログラム空間分布１２４の例を示しており、距離行列を元に、古典的多次元尺度構成法（Ｃｌａｓｓｉｃａｌ  Ｍｕｌｔｉｄｉｍｅｎｓｉｏｎａｌ  Ｓｃａｌｉｎｇ）を用いて求めた二次元平面における各プログラムの座標を格納している。
【００３０】
次に、業務名称抽出部１１３は、Ｓ３２０で求めた各プログラムの空間分布を元にクラスタリングする（Ｓ３３０）。
次に、業務名称抽出部１１３は、各プログラムの空間分布とクラスタリング結果を表示するとともに、プログラム群に分類するための閾値の入力をユーザに求める（Ｓ３４０）。
【００３１】
図９は、業務名称抽出部１１３における画面表示例である。
画面要素９１０は、プログラム空間分布１２４をもとに二次元平面におけるプログラムの分布を表示する。画面要素９２０は、Ｓ３３０におけるクラスタリングの過程を表現したデンドログラムを表示する。画面要素９３０は、閾値を入力するテキスト入力欄である。画面要素９４０は、画面要素９３０に入力された閾値を元にプログラムの分類処理（後述する）を開始するボタンである。
【００３２】
なお、実施例では閾値入力手段としてテキスト入力欄とボタンの画面要素で実現しているがこれに限らない。例えば、スライドバーなどの画面要素を用いることで、ユーザはバーを動かすことで閾値を選択し、スライドバーからフォーカスを外すことで次の処理を開始することも可能である。
【００３３】
次に、プログラム関連分析装置１０は、業務名称抽出部１１３において、ユーザが入力した閾値に基づいてプログラム群に分類し、それぞれのプログラム群で出現するデータブロック群から業務名称を抽出する（Ｓ４００）。
【００３４】
図１０は、業務名称抽出部１１３において、処理Ｓ４００の一例を説明するフローチャートである。
まず、業務名称抽出部１１３は、ユーザによる閾値の入力操作を以って処理Ｓ４００を開始する。
【００３５】
次に、業務名称抽出部１１３は、入力された閾値を元にプログラム群に分類し、その結果をプログラム分類結果１２５に格納する（Ｓ４１０）。以下では、画面要素９２０のデンドログラムについて、ユーザが閾値＝０．８を入力したとして、実施例の説明を進める。このとき、プログラムは、Ｐ００１、Ｐ００２、Ｐ００３で構成するプログラム群（グループ１とする）とＰ００４、Ｐ００５で構成するプログラム群（グループ２とする）に分類される。
【００３６】
図１１は、プログラム分類結果１２５の例を示している。
次に、業務名称抽出部１１３は、プログラム分類結果１２５のグループの中から１つを選択する（Ｓ４２０）。
【００３７】
次に、業務名称抽出部１１３は、Ｓ４２０で選択したグループに含まれる各プログラムで出現するデータブロックを、プログラム構文解析結果１２２から読み込む（Ｓ４３０）。例えば、プログラム分類結果１２５の例（図１１）においてグループ１を選択した場合、含まれるプログラムはＰ００１、Ｐ００２、Ｐ００３であり、それらのプログラムで出現するデータブロックは、Ｃ００１、Ｃ００２、Ｃ００３、Ｃ００４、Ｃ００５となる。
【００３８】
次に、業務名称抽出部１１３は、Ｓ４３０で読み込んだ全てのデータブロックから業務名称を抽出し、業務名称抽出結果１２６に格納する（Ｓ４４０）。業務名称を抽出する方法は、データブロック内に記述されたコメントで構成される文書と見立てて、ｔｆ−ｉｄｆ法などの既存の文書要約技術を適用することで実現可能である。
【００３９】
図１２は、業務名称抽出結果１２６の一例を示している。
【００４０】
図１３は、業務名称抽出部１１３におけるＳ４００の処理後の画面表示例である。
プログラムの空間分布を表示した画面要素９１０において、プログラム分類結果１２５を元に点線枠などでグループを示し、業務名称抽出結果１２６を元に各グループに業務名称をラベリングしている。
【００４１】
最後に、プログラム関連分析装置１０は、操作するユーザが入力装置１４を通じ送信した処理停止トリガを取得すれば処理を完了し、一方でユーザが入力装置１４を通じ送信した処理継続トリガを取得すればＳ３００に戻って処理を継続する。
【００４２】
実施例によれば、ＩＴシステムのプログラムファイルを与えることで、ＩＴシステムを業務単位に自動でスコープ分割することができ、ＩＴシステムに詳しくないシステムエンジニアであっても効率的に理解できる。この結果、情報システムの仕様を把握する現行調査の実施を支援することができる。
【００４３】
上述した実施形態は、本発明の説明のための例示であり、本発明の範囲を実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。例えば、プログラム関連分析装置１０を、単体の計算機で構築しても良いし、クライアント−サーバシステムとして構築してもよい。クライアント−サーバシステムで構築する場合、サーバ側でプログラム関連分析装置１０の主な処理を実行し、クライアント側で表示処理のみを実行してもよい。
【符号の説明】
【００４４】
１０  プログラム関連分析装置
１１プロセッサ
１２  主記憶装置
１３  記憶装置
１４  入力装置
１５  出力装置
１６  通信装置
１１１  プログラム構文解析部
１１２  プログラム関連度算出部
１１３  業務名称抽出部
１２１  プログラムファイル
１２２  プログラム構文解析結果
１２３  プログラム関連度
１２４  プログラム空間分布
１２５  プログラム分類結果
１２６  業務名称抽出結果
【図１】
2019096131.tif 000003
【図２】
2019096131.tif 000004
【図３】
2019096131.tif 000005
【図４】
2019096131.tif 000006
【図５】
2019096131.tif 000007
【図６】
2019096131.tif 000008
【図７】
2019096131.tif 000009
【図８】
2019096131.tif 000010
【図９】
2019096131.tif 000011
【図１０】
2019096131.tif 000012
【図１１】
2019096131.tif 000013
【図１２】
2019096131.tif 000014
【図１３】
2019096131.tif 000015