JP2019096131A - プログラム関連分析装置 - Google Patents

プログラム関連分析装置 Download PDF

Info

Publication number
JP2019096131A
JP2019096131A JP2017225962A JP2017225962A JP2019096131A JP 2019096131 A JP2019096131 A JP 2019096131A JP 2017225962 A JP2017225962 A JP 2017225962A JP 2017225962 A JP2017225962 A JP 2017225962A JP 2019096131 A JP2019096131 A JP 2019096131A
Authority
JP
Japan
Prior art keywords
program
relevance
business
programs
data block
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.)
Pending
Application number
JP2017225962A
Other languages
English (en)
Inventor
秀朗 伊藤
Hideo Ito
秀朗 伊藤
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 JP2017225962A priority Critical patent/JP2019096131A/ja
Publication of JP2019096131A publication Critical patent/JP2019096131A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】情報システムの仕様を把握する現行調査の実施を支援する。【解決手段】プログラム関連分析装置は、プログラムファイルを構文解析しプログラムとプログラム内で宣言される変数群であるデータブロックの関係を抽出するプログラム構文解析部111と、プログラムファイルの構文解析の結果に基づいて複数のプログラムの間の業務的な関連性を表すプログラム関連度を算出するプログラム関連度算出部112と、プログラム関連度に基づいて複数のプログラムをプログラム群に分類しプログラム群で共通して出現するデータブロック群から業務名称を抽出する業務名称抽出部113と、プログラム群と業務名称とを表示する出力装置15とを有する。【選択図】図1

Description

本発明は、プログラム関連分析装置に関する。
企業のITシステム等の情報システムの再構築、新システムの開発などにおいて現行システムの課題を把握してTo−Be像(次期の業務やシステム)を検討するために、ITシステムの仕様を把握する現行調査を実施する。
しかし、社会基盤を支えるような大規模なITシステムは、リリースから数十年が経過し、仕様書の陳腐化及びベテラン開発者の引退などのために、現行調査がしばしば難航する。
開発スケジュールの都合で現行調査が十分に実施されないために、開発の後工程(テスト、運用開始後など)で仕様把握漏れを発見し、設計のやり直しなどの手戻りが発生して開発コストが膨らんでしまうこともある。
このような状況下で、現に稼動しているITシステムのプログラムファイルを解析し、仕様を可視化する技術は有効な手段となり得る。
特許文献1には、業務と業務データ項目との関連情報を元に業務とプログラムを関連付けることで、プログラム関連図において同一業務に属するプログラム群を抽出し分類して表示する技術が開示されている。
特開2015−102878号公報
特許文献1では、業務と業務データ項目の関連情報を予め明らかにする必要がある。しかし、関連情報を記載した仕様書が陳腐化するなどして、関連情報を明らかにできないことが起こり得る。このため、情報システムの仕様を把握する現行調査の実施が困難となる。
本発明の目的は、情報システムの仕様を把握する現行調査の実施を支援することにある。
本発明の一態様のプログラム関連分析装置は、業務システムの複数のプログラムのプログラムファイルを分析して、複数の前記プログラムを業務単位で分類するプログラム関連分析装置であって、前記プログラムファイルを構文解析し、前記プログラムと前記プログラム内で宣言される変数群であるデータブロックの関係を抽出するプログラム構文解析部と、前記プログラムファイルの構文解析の結果に基づいて、複数の前記プログラムの間の業務的な関連性を表すプログラム関連度を算出するプログラム関連度算出部と、前記プログラム関連度に基づいて、複数の前記プログラムをプログラム群に分類し、前記プログラム群で共通して出現するデータブロック群から業務名称を抽出する業務名称抽出部と、前記プログラム群と前記業務名称とを表示する出力装置とを有することを特徴とする。
本発明に一態様よれば、情報システムの仕様を把握する現行調査の実施を支援することができる。
実施例のプログラム関連分析装置の構成を示す図である。 実施例のプログラム関連分析装置の処理の流れを示したフローチャートである。 プログラム構文解析部が構文解析するプログラムファイルの例を示す図である。 プログラム構文解析結果の例を示す図である。 プログラム関連度算出部の処理の流れを示したフローチャートである。 プログラム関連度の例を示す図である。 業務名称抽出部の処理S300を示したフローチャートである。 プログラム空間分布の例を示す図である。 業務名称抽出部の処理S300後の画面表示例を示す図である。 業務名称抽出部の処理S400を示したフローチャートである。 プログラム分類結果の例を示す図である。 業務名称抽出結果126の例を示す図である。 業務名称抽出部の処理S400後の画面表示例を示す図である。
以下、図面を用いて実施例について説明する。
図1を参照して、実施例のプログラム関連分析装置の構成について説明する。
プログラム関連分析装置10は、プロセッサ11、主記憶装置12、記憶装置13、入力装置14、出力装置15及び通信装置16を備え、それぞれが内部バスなどにより接続されている。プロセッサ11は、記憶装置13に格納されたデータ(プログラムファイルなど)を主記憶装置12に読み込み、実行することで様々な処理を行う。
記憶装置13は、プログラムファイルを構文解析するプログラム構文解析部111、プログラム解析結果を元にプログラム間の業務的な関連性を算出するプログラム関連度算出部112、互いに関連するプログラム群で分類し各プログラム群で共通して出現するデータブロック群を元に業務名称を抽出する業務名称抽出部113、プログラムファイル121、プログラム構文解析結果122、プログラム関連度123、プログラム空間分布124、プログラム分類結果125及び業務名称抽出結果126を格納する。
図2のフローチャートを参照して、実施例のプログラム関連分析装置10の処理について説明する。
プログラム関連分析装置10は、操作するユーザが入力装置14を通じて送信した処理開始トリガを契機として処理を開始する。
まず、プログラム関連分析装置10は、プログラム構文解析部111において、プログラムファイル121に格納されたプログラムファイルを構文解析し、プログラム識別子、データブロック識別子を抽出し、プログラム構文解析結果(格納部)122に格納する(S100)。
ここで、データブロックとは、プログラム内で宣言される変数群を指し、COBOL言語ではCOPY原文、C言語では構造体、オブジェクト指向言語ではクラスなどが該当する。データブロックは、プログラム開発者がプログラムの可読性及び保守性の向上のために対象業務において一塊にすべき複数の変数を纏めたものであり、対象業務の特性の断片を有していると考えることができる。
図3は、COBOL言語で記述されたプログラムファイルの一例を示している。
ファイル名称PGM2017.cblは、処理を記述したプログラムファイルで、行番号00004でプログラムの識別子”PGM2017”を宣言している。行番号00005以降のDATA部において、COPY原文CO210、C0619、C1013を複写し、行番号00201以降で処理を記述する。
また、ファイル名称C0619.cblはCOPY原文のプログラムファイルで、行番号00002で集団項目である受注起票データORDERDATAを宣言している。行番号00004で基本項目である受注日YYYYMMDDを宣言している。行番号00006で基本項目である届け先ADDRESSを宣言している。行番号00008で基本項目である数量AMOUNTを宣言している。行番号00010で基本項目である商品番号ITEMIDを宣言している。行番号00012で基本項目である商品名称ITEMNAMEを宣言している。なお、アスタリスク“*”は、コメント行であることを示している。
プログラム構文解析部111は、図3を例にすれば、プログラム識別子として“PGM2017”を抽出し、データブロック識別子として“C0210”、“C0619”、“C1013”を抽出する。これらの情報を抽出する手段は、既存のコンパイラ技術を利用することで実現可能である。
図4は、プログラム構文解析結果122の一例を示している。
例えば、プログラム識別子=“P001”であるプログラムは、4のデータブロック識別子C001、C002、C003、C004を有している。
次に、プログラム関連分析装置10は、プログラム関連度算出部112において、プログラム構文解析結果122に格納されたプログラム構文解析結果からプログラム間の業務的な関連性を算出してプログラム関連度123に格納する(S200)。
図5は、プログラム関連度算出部112における処理の一例を説明するフローチャートである。
まず、プログラム関連度算出部112は、プログラム構文解析部111の処理完了を以って、処理S200を開始する。
プログラム関連度算出部112は、プログラム構文解析結果122よりプログラム識別子の一覧を取得する(S210)。
次に、プログラム関連度算出部112は、取得したプログラム識別子の一覧から2つを選択する(S220)。
次に、プログラム関連度算出部112は、S220で選択したプログラムについて、データブロックを要素とする集合(それぞれ集合X、Yとする)に対し、積集合の要素数(=|X∩Y|)を和集合の要素数(=|X∪Y|)で除算する(S230)。
2つの集合について積集合を和集合で除算した値はJaccard係数と呼ばれ、集合の類似度算出手法の1つである。
実施例では、例としてJaccard係数を用いたが、他の係数(Dice係数、Simpson係数など)を用いても良い。なお、本ステップ(S230)はプログラムの全組合せについて実施するが、集合類似度の対称性、自明な類似度計算(自集合の類似度は1)に基づいて計算量を減らすなどの工夫を実施してもよい。
次に、プログラム関連度算出部112は、次のプログラムの組み合わせがあればS220に戻り処理を継続し、なければ処理を完了する(S240)。
図6は、プログラム関連度123の一例を示している。
縦、横にそれぞれプログラム識別子を並べ、その交点の数値が当該プログラム間の業務的な関連度を指している。
次に、プログラム関連分析装置10は、業務名称抽出部113において、プログラム関連度123に格納されたプログラム関連度を元にクラスタリングし、互いに関連するプログラム群に分類するための閾値を受け付ける(S300)。
図7は、業務名称抽出部113において、処理S300の一例を説明するフローチャートである。
まず、業務名称抽出部113は、プログラム関連度算出部112の処理完了またはユーザが入力装置14を通じ送信した処理継続トリガを契機として、処理S300を開始する。
次に、業務名称抽出部113は、プログラム関連度(格納部)123に格納されたプログラム関連度を読み込み、距離行列に変換する(S310)。
一般的に関連度と距離は負の相関を持つ概念であり、例えば、「距離:=1−プログラム関連度」、「距離:=exp(−a*プログラム関連度)、但しaは正定数」などの変換式が考えられる。以下では、変換式「距離:=1−プログラム関連度」を採用する。
次に、業務名称抽出部113は、前記距離行列を元に、各プログラムの空間分布を求める(S320)。距離行列から各要素の空間分布を求める手法は多次元尺度構成法として知られており、既存の手法の中から適切なものを選択することで実現可能である。
図8は、プログラム空間分布124の例を示しており、距離行列を元に、古典的多次元尺度構成法(Classical Multidimensional Scaling)を用いて求めた二次元平面における各プログラムの座標を格納している。
次に、業務名称抽出部113は、S320で求めた各プログラムの空間分布を元にクラスタリングする(S330)。
次に、業務名称抽出部113は、各プログラムの空間分布とクラスタリング結果を表示するとともに、プログラム群に分類するための閾値の入力をユーザに求める(S340)。
図9は、業務名称抽出部113における画面表示例である。
画面要素910は、プログラム空間分布124をもとに二次元平面におけるプログラムの分布を表示する。画面要素920は、S330におけるクラスタリングの過程を表現したデンドログラムを表示する。画面要素930は、閾値を入力するテキスト入力欄である。画面要素940は、画面要素930に入力された閾値を元にプログラムの分類処理(後述する)を開始するボタンである。
なお、実施例では閾値入力手段としてテキスト入力欄とボタンの画面要素で実現しているがこれに限らない。例えば、スライドバーなどの画面要素を用いることで、ユーザはバーを動かすことで閾値を選択し、スライドバーからフォーカスを外すことで次の処理を開始することも可能である。
次に、プログラム関連分析装置10は、業務名称抽出部113において、ユーザが入力した閾値に基づいてプログラム群に分類し、それぞれのプログラム群で出現するデータブロック群から業務名称を抽出する(S400)。
図10は、業務名称抽出部113において、処理S400の一例を説明するフローチャートである。
まず、業務名称抽出部113は、ユーザによる閾値の入力操作を以って処理S400を開始する。
次に、業務名称抽出部113は、入力された閾値を元にプログラム群に分類し、その結果をプログラム分類結果125に格納する(S410)。以下では、画面要素920のデンドログラムについて、ユーザが閾値=0.8を入力したとして、実施例の説明を進める。このとき、プログラムは、P001、P002、P003で構成するプログラム群(グループ1とする)とP004、P005で構成するプログラム群(グループ2とする)に分類される。
図11は、プログラム分類結果125の例を示している。
次に、業務名称抽出部113は、プログラム分類結果125のグループの中から1つを選択する(S420)。
次に、業務名称抽出部113は、S420で選択したグループに含まれる各プログラムで出現するデータブロックを、プログラム構文解析結果122から読み込む(S430)。例えば、プログラム分類結果125の例(図11)においてグループ1を選択した場合、含まれるプログラムはP001、P002、P003であり、それらのプログラムで出現するデータブロックは、C001、C002、C003、C004、C005となる。
次に、業務名称抽出部113は、S430で読み込んだ全てのデータブロックから業務名称を抽出し、業務名称抽出結果126に格納する(S440)。業務名称を抽出する方法は、データブロック内に記述されたコメントで構成される文書と見立てて、tf−idf法などの既存の文書要約技術を適用することで実現可能である。
図12は、業務名称抽出結果126の一例を示している。
図13は、業務名称抽出部113におけるS400の処理後の画面表示例である。
プログラムの空間分布を表示した画面要素910において、プログラム分類結果125を元に点線枠などでグループを示し、業務名称抽出結果126を元に各グループに業務名称をラベリングしている。
最後に、プログラム関連分析装置10は、操作するユーザが入力装置14を通じ送信した処理停止トリガを取得すれば処理を完了し、一方でユーザが入力装置14を通じ送信した処理継続トリガを取得すればS300に戻って処理を継続する。
実施例によれば、ITシステムのプログラムファイルを与えることで、ITシステムを業務単位に自動でスコープ分割することができ、ITシステムに詳しくないシステムエンジニアであっても効率的に理解できる。この結果、情報システムの仕様を把握する現行調査の実施を支援することができる。
上述した実施形態は、本発明の説明のための例示であり、本発明の範囲を実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。例えば、プログラム関連分析装置10を、単体の計算機で構築しても良いし、クライアント−サーバシステムとして構築してもよい。クライアント−サーバシステムで構築する場合、サーバ側でプログラム関連分析装置10の主な処理を実行し、クライアント側で表示処理のみを実行してもよい。
10 プログラム関連分析装置
11プロセッサ
12 主記憶装置
13 記憶装置
14 入力装置
15 出力装置
16 通信装置
111 プログラム構文解析部
112 プログラム関連度算出部
113 業務名称抽出部
121 プログラムファイル
122 プログラム構文解析結果
123 プログラム関連度
124 プログラム空間分布
125 プログラム分類結果
126 業務名称抽出結果

Claims (7)

  1. 業務システムの複数のプログラムのプログラムファイルを分析して、複数の前記プログラムを業務単位で分類するプログラム関連分析装置であって、
    前記プログラムファイルを構文解析し、前記プログラムと前記プログラム内で宣言される変数群であるデータブロックの関係を抽出するプログラム構文解析部と、
    前記プログラムファイルの構文解析の結果に基づいて、複数の前記プログラムの間の業務的な関連性を表すプログラム関連度を算出するプログラム関連度算出部と、
    前記プログラム関連度に基づいて、複数の前記プログラムをプログラム群に分類し、前記プログラム群で共通して出現するデータブロック群から業務名称を抽出する業務名称抽出部と、
    前記プログラム群と前記業務名称とを表示する出力装置と、
    を有することを特徴とするプログラム関連分析装置。
  2. 前記プログラム関連度算出部は、
    前記プログラムが有する前記データブロックを要素とする集合の類似度を算出することを特徴とする請求項1に記載のプログラム関連分析装置。
  3. 前記プログラム関連度に基づいた前記プログラムの分類のための閾値の入力を促すための入力装置を更に有し、
    前記業務名称抽出部は、
    前記入力装置から入力された前記閾値に基づいて、前記プログラムを分類して前記業務名称を抽出することを特徴とする請求項1に記載のプログラム関連分析装置。
  4. 前記業務名称抽出部は、
    前記プログラム関連度を距離行列に変換し、
    前記距離行列に基づいて前記プログラムの空間分布を求め、
    前記プログラムの前記空間分布に基づいてクラスタリングし、
    前記出力装置は、
    前記プログラムの空間分布と前記クラスタリングの結果を表示することを特徴とする請求項1に記載のプログラム関連分析装置。
  5. 前記業務名称抽出部は、
    前記データブロック内に記述されたコメントで構成される文書を参照して前記業務名称を抽出することを特徴とする請求項1に記載のプログラム関連分析装置。
  6. 前記出力装置は、
    前記プログラムの前記空間分布に基づいて二次元平面における前記プログラムの分布を表示し、
    前記クラスタリングの過程を表現したデンドログラムを表示することを特徴とする請求項4に記載のプログラム関連分析装置。
  7. 前記出力装置は、
    前記プログラムの前記空間分布において、前記プログラムの分類結果を点線枠で表示し、前記プログラム群に前記業務名称をラベリングして表示することを特徴とする請求項6に記載のプログラム関連分析装置。
JP2017225962A 2017-11-24 2017-11-24 プログラム関連分析装置 Pending JP2019096131A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017225962A JP2019096131A (ja) 2017-11-24 2017-11-24 プログラム関連分析装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017225962A JP2019096131A (ja) 2017-11-24 2017-11-24 プログラム関連分析装置

Publications (1)

Publication Number Publication Date
JP2019096131A true JP2019096131A (ja) 2019-06-20

Family

ID=66971917

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017225962A Pending JP2019096131A (ja) 2017-11-24 2017-11-24 プログラム関連分析装置

Country Status (1)

Country Link
JP (1) JP2019096131A (ja)

Similar Documents

Publication Publication Date Title
JP6928552B2 (ja) 影響分析
US9104720B2 (en) Generation of technical description of report from functional description of report
KR20220080002A (ko) 소스 코드에서 작동하는 소프트웨어 도구를 위한 기계 학습 모델 자동 생성
JP6090850B2 (ja) ソースプログラム解析システム、ソースプログラム解析方法およびプログラム
CN108255837B (zh) 一种sql解析器及方法
KR102172255B1 (ko) 분산형 컴퓨팅 태스크를 실행하기 위한 방법 및 장치
CN113962597A (zh) 一种数据分析方法、装置、电子设备及存储介质
JP2010237841A (ja) 動作検証装置および動作検証プログラム
JP6781819B2 (ja) タスク処理方法及び分散コンピューティングフレームワークシステム
CN112632082A (zh) 一种创建Flink作业的方法及装置
US20100030732A1 (en) System and method to create process reference maps from links described in a business process model
Li et al. Optimizing ml inference queries under constraints
CN110580170A (zh) 软件性能风险的识别方法及装置
CN115857918A (zh) 数据处理方法、装置、电子设备及存储介质
JP2019096131A (ja) プログラム関連分析装置
Van Wijk et al. Reproducibility in pharmacometrics applied in a phase III trial of BCG-vaccination for COVID-19
Grafberger et al. mlwhatif: What If You Could Stop Re-Implementing Your Machine Learning Pipeline Analyses over and over?
US9619463B2 (en) Document decomposition into parts based upon translation complexity for translation assignment and execution
JP2011113298A (ja) 流用ソースコード解析システム及びプログラム並びに記録媒体
JP6790199B2 (ja) コードリーディング支援装置、及び、コードリーディング支援方法、並びに、コードリーディング支援プログラム
JP5600826B1 (ja) 非構造化データ処理システム、非構造化データ処理方法およびプログラム
CN112445910B (zh) 一种信息分类方法及系统
Kimball et al. A Method and Tool for Automated Induction of Relations from Quantitative Performance Logs
JP2010020558A (ja) データ構造の形状を解析する装置及び方法
EP3432153A1 (en) Classification of xml elements according to attributes