(57)【要約】【課題】システムの改善箇所の優先度を評価できるようにする。【解決手段】ソフトウェア構造解析部１０１１は、ソースコードにおけるプログラム間の呼び出し関係とデータとの関係性を解析し、プログラムをノード、プログラムの呼び出し関係を方向付きエッジとしたグラフ構造を生成し、特性解析部１０２１は、ソースコードの解析結果およびプログラムが実行される業務システム３０の稼働情報または障害情報に基づいて、業務システム３０の特性値をノードごとに算出し、改善箇所解析部１０２３は、特性値に基づいてノードをマージし、ノードのマージ結果に基づいてグラフ構造を再構築する。【選択図】図２
2019101830.tif 000002
【特許請求の範囲】
【請求項１】
システム特性評価装置と、
表示装置とを備え、
前記システム特性評価装置は、
ソースコードにおけるプログラム間の呼び出し関係とデータとの関係性を解析し、プログラムをノード、プログラムの呼び出し関係を方向付きエッジとしたグラフ構造を生成するソフトウェア構造解析部と、
前記ソースコードの解析結果および前記プログラムが実行されるシステムのシステム情報に基づいて、前記システムの特性値を前記ノードごとに算出する特性解析部と、
前記特性値に基づいて前記ノードをマージし、前記ノードのマージ結果に基づいて前記グラフ構造を再構築する改善箇所解析部とを備え、
前記表示装置は、前記改善箇所解析部で再構築されたグラフ構造のノードとエッジとをシンボル化して表示するシステム特性評価システム。
【請求項２】
前記システム情報は、前記システムの稼働情報または障害情報である請求項１に記載のシステム特性評価システム。
【請求項３】
前記特性解析部は、前記稼働情報、前記障害情報、前記プログラムの構造情報および前記プログラムの変更履歴のそれぞれに対して特性値を付与し、
前記改善箇所解析部は、前記特性値に基づいて前記ノードをマージする請求項２に記載のシステム特性評価システム。
【請求項４】
前記稼働情報は前記プログラムの処理時間または実行時間帯であり、前記障害情報は前記システムの障害発生頻度であり、前記構造情報は、プログラム数、特殊構文数またはデータ重要度であり、前記変更履歴は前記プログラムの改修頻度または同時改修数である請求項３に記載のシステム特性評価システム。
【請求項５】
前記特性解析部は、前記特性値を特性項目ごとに算出し、
前記改善箇所解析部は、
前記特性項目ごと付与された条件を前記特性値が満たすかどうかをノードごとに判断し、
前記判断結果に基づいて選択したノードをマージし、
前記ノードの実行時系列情報に基づいて前記ノードのエッジを設定する請求項１に記載のシステム特性評価システム。
【請求項６】
前記改善箇所解析部は、前記ソースコードのエッジとノードからなるグラフ構造において、前記ノードの実行時系列順に前記ノードを配置し、
前記表示装置は、前記実行時系列順に前記ノードのシンボルを表示する請求項１に記載のシステム特性評価システム。
【請求項７】
前記改善箇所解析部は、
前記ノードおよび前記エッジを前記表示装置に表示させるシンボルを前記ノードおよび前記エッジにそれぞれ設定し、
前記特性値に応じて前記シンボルの種類、色、太さ、大きさまたは表示位置を変更し、
前記表示装置は、前記種類、色、太さ、大きさまたは表示位置が変更されたシンボルを表示する請求項６に記載のシステム特性評価システム。
【請求項８】
前記改善箇所解析部は、前記特性項目の指定に基づいて前記グラフ構造のノードとエッジを変更し、
前記表示装置は、前記ノードとエッジの変更が反映されたシンボルを表示する請求項４にシステム特性評価システム。
【請求項９】
前記ソースコードと前記ソースコードの変更履歴を保持するソースコード管理装置と、
前記システムの稼働情報を含むアプリケーションログを保持する業務システムと、
前記システムの障害履歴報を保持する障害管理装置とをさらに備える請求項２に記載のシステム特性評価システム。
【請求項１０】
ソースコードの構造解析に基づいて、前記ソースコードに関する静的情報を生成する構造解析部と、
前記ソースコードに関する動的情報を取得し、前記ソースコードの静的情報および動的情報に基づいて、前記ソースコードにおけるプログラムが実行されるシステムの特性を評価する特性評価部とを備えるシステム特性評価装置。
【請求項１１】
前記ソースコードの動的情報は、前記システムの稼働情報または障害情報、あるいは前記ソースコードの変更履歴である請求項１０に記載のシステム特性評価装置。
【請求項１２】
前記稼働情報は前記プログラムの処理時間または実行時間帯であり、前記障害情報は前記システムの障害発生頻度であり、前記変更履歴は前記プログラムの改修頻度または同時改修数である請求項１１に記載のシステム特性評価装置。
【請求項１３】
前記ソースコードの静的情報は、前記ソースコードにおけるプログラムをノード、前記プログラムの呼び出し関係を方向付きエッジとしたグラフ構造である請求項１０に記載のシステム特性評価装置。
【請求項１４】
前記特性評価部は、
前記ソースコードの静的情報および動的情報に基づいて、前記ソースコードに含まれるプログラムが実行されるシステムの特性値を前記ノードごとに算出する特性解析部と、
前記特性値に基づいて前記ノードをマージし、前記ノードのマージ結果に基づいて前記グラフ構造を再構築する改善箇所解析部とを備える請求項１３に記載のシステム特性評価装置。
【請求項１５】
前記ソースコードの特性の特性項目ごとに閾値が設定され、
前記改善箇所解析部は、前記特性項目ごとに前記特性値と前記閾値を比較し、前記比較結果に基づいてマージ対象のノードを選択する請求項１４に記載のシステム特性評価装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムの設計、開発および保守などに適用可能なシステム特性評価システムおよびシステム特性評価装置に関する。
【背景技術】
【０００２】
顧客等の要請に応じて、生産管理システムのような大規模情報システムの刷新が求められることがある。このような情報システムは仕様書とソースコードの乖離が大きく、開発してから数十年経過しているものも多く存在する。このため、管理されているソースコードの利用可否を把握するだけでも莫大な工数がかかり、全体のソフトウェア構造や設計指針などを把握することも困難である場合が多い。
【０００３】
また、このような情報システムは性質の異なる機能を複数持つ場合も少なくないため、機能改善要望も多数存在する場合が多い。そのような状況では、機能に対する全ての改善要望を取り込むことは難しく、情報システムを稼動させながら優先度の高い改善要望から対処していかざるを得ない。
【０００４】
このような中で、ソースコードの構成要素間の依存関係および依存種類を解析し、依存種類ごとに重要度を指定することにより、ソースコードを修正した際の影響範囲を抽出し、影響度の評価を支援する技術がある。（特許文献１）
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−２３０５３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に開示された技術は、ソースコードの解析結果から得られた既存の構造、すなわち静的情報を元に改修対象を選定する。このような構造の解析結果だけからでは、現行の業務利用状況や保守性、あるいは改修実績等の時系列変化を考慮した改修優先度の判断は困難である。
【０００７】
例えば、ソースコード解析の結果、構造に問題があったとしても、業務利用上問題のないプログラムであれば、改修の優先度は低くなる可能性が高い。
また、処理時間や可用性のような非機能性の改善についても、夜間に実施されるバッチ処理と、日中のユーザが起動して実行する処理では、処理時間が同じでも後者の処理の方が改善優先度は高くなる可能性が高い。
【０００８】
一方で、多数のユーザが個々の目的に応じて個々のタイミングで利用するシステムでは、各機能の優先度は実行時間帯に左右されない可能性が高い。このように、改修対象を決定するためには、システムの利用方法や開発の実績などをシステムの特徴を示す特性として認識した上で実施することが望ましい。
【０００９】
本発明は、上記事情に鑑みなされたものであり、その目的は、システムの改善箇所の優先度を評価することが可能なシステム特性評価システムおよびシステム特性評価装置を提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、第１の観点に係るシステム特性評価システムは、システム特性評価装置と、表示装置とを備える。前記システム特性評価装置は、ソースコードにおけるプログラム間の呼び出し関係とデータとの関係性を解析し、プログラムをノード、プログラムの呼び出し関係を方向付きエッジとしたグラフ構造を生成するソフトウェア構造解析部と、前記ソースコードの解析結果および前記プログラムが実行されるシステムのシステム情報に基づいて、前記システムの特性値を前記ノードごとに算出する特性解析部と、前記特性値に基づいて前記ノードをマージし、前記ノードのマージ結果に基づいて前記グラフ構造を再構築する改善箇所解析部とを備える。前記表示装置は、前記改善箇所解析部で再構築されたグラフ構造を表示する。
【発明の効果】
【００１１】
本発明によれば、システムの改善箇所の優先度を評価することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施形態に係るシステム特性評価システムの概略構成を示すブロック図である。
【図２】図２は、図１のシステム特性評価装置の略構成を示すブロック図である。
【図３】図３は、図１のシステム特性評価システムの具体的な構成を示すブロック図である。
【図４】図４は、図１のシステム特性評価装置のハードウェア構成を示すブロック図である。
【図５】図５は、図３のノード情報テーブルの内容の一例を示す図である。
【図６】図６は、図３のエッジ情報テーブルの内容の一例を示す図である。
【図７】図７は、図３の特性データの一例を示す図である。
【図８】図８は、図３のソフトウェア構造解析部の動作を示すフローチャートである。
【図９】図９は、図３の特性解析部の動作を示すフローチャートである。
【図１０】図１０は、特性項目指定時における図３の改善箇所解析部の動作フローを示す図である。
【図１１】図１１は、図３の改善箇所解析部の動作を示すフローチャートである。
【図１２】図１２は、図５のノード情報テーブルおよび図５のエッジ情報テーブルに基づいて構築されたグラフ構造の表示画面の一例を示す図である。
【図１３】図１３は、図１２の表示画面に選択ノードの特性値を表示させた例を示す図である。
【図１４】図１４は、図１の表示装置に表示される再構築後のグラフ構造の表示画面の一例を示す図である。
【図１５】図１５は、図１４の再構築後のグラフ構造に対応したノード情報テーブルの内容の一例を示す図である。
【図１６】図１６は、図１４の再構築後のグラフ構造に対応したエッジ情報テーブルの内容の一例を示す図である。
【発明を実施するための形態】
【００１３】
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１４】
図１は、実施形態に係るシステム特性評価システムの概略構成を示すブロック図である。
図１において、システム特性評価システムには、システム特性評価装置１０、表示装置２０、業務システム３０、ソースコード管理装置４０および障害管理装置５０が設けられている。システム特性評価装置１０、表示装置２０、業務システム３０、ソースコード管理装置４０および障害管理装置５０は、ネットワーク７０を介して接続されている。ネットワーク７０は、インターネットやデジタル専用線などのＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）であってもよいし、イーサネット（登録商標）やＷｉＦｉなどのＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）であってもよいし、ＷＡＮとＬＡＮが混在していてもよい。ネットワーク７０は、有線であってもよいし、無線であってもよいし、有線と無線が混在していてもよい。
【００１５】
システム特性評価装置１０は、ソースコードの静的情報および動的情報に基づいて、ソースコードにおけるプログラムが実行される業務システム３０の特性を評価することができる。ソースコードに関する静的情報とは、ソースコードの実行に関して変化しない情報である。ソースコードに関する静的情報として、ソースコードにおけるプログラムをノード、プログラムの呼び出し関係を方向付きエッジとしたグラフ構造を挙げることができる。ソースコードに関する動的情報とは、ソースコードの実行に関して変化可能な情報である。ソースコードに関する動的情報は、業務システム３０のシステム情報を含むことができる。業務システム３０のシステム情報として、業務システム３０の稼働情報および障害情報を挙げることができる。
【００１６】
表示装置２０は、ユーザ８０の操作に基づいて、業務システム３０の特性の評価結果を表示することができる。業務システム３０は、ユーザ９０の業務に関する各種プログラムを実行することができる。ソースコード管理装置４０は、業務システム３０で実行されるソースコードを管理することができる。障害管理装置５０は、業務システム３０の障害を管理することができる。
【００１７】
システム特性評価装置１０は、ソースコード管理装置４０からソースコードを取得することができる。システム特性評価装置１０は、ソースコードの構造解析に基づいてソースコードの静的情報を生成することができる。システム特性評価装置１０は、業務システム３０、ソースコード管理装置４０および障害管理装置５０からソースコードに関する動的情報を取得することができる。
【００１８】
この時、システム特性評価対象である業務システム３０のアプリケーションログを業務システム３０から取得し、業務システム３０のソースコードおよびソースコードの変更履歴をソースコード管理装置４０から取得し、業務システム３０に関わる障害履歴を障害管理装置５０から取得することができる。そして、システム特性評価装置１０は、ソースコードの構造解析に基づいてソースコードのグラフ構造を生成することができる。また、システム特性評価装置１０は、ソースコードの要素ごとに各種情報を解析した特性値を管理することができる。ソースコードの要素とは、ソースコードに含まれるプログラムである。このプログラムは、シェルスクリプトであってもよい。各種情報とは、ソースコードに関する静的情報および動的情報である。特性値は、プログラムが実行される業務システム３０の特徴の評価に用いることができる。特性値は、プログラムの実装や構造の観点、プログラムの修正履歴の観点、プログラムの利用の観点で設定された特性項目について数値で評価することができる。
【００１９】
そして、システム特性評価装置１０は、ソースコードのグラフ構造をシンボル化し、表示装置２０に表示させることができる。ユーザ８０は表示装置２０を視認することで、ソースコードの改善の優先度を判断することができる。
【００２０】
ここで、システム特性評価装置１０は、ソースコードに関する静的情報だけでなく、ソースコードに関する動的情報も参照しつつ、業務システム３０の特性を評価することにより、業務システム３０の現行の業務利用状況や保守性、あるいはソースコードの改修実績等の時系列変化が反映されたソースコードの改善の優先度を判断することができる。
【００２１】
例えば、ソースコードの構造解析の結果、その構造に問題があったとしても、業務システム３０で業務利用上問題のないプログラムであれば、ソースコードの改善の優先度を低くすることができる。
また、プログラムの処理時間や可用性のような非機能性の改善についても、夜間に実施されるバッチ処理と、日中のユーザが起動して実行する処理では、処理時間が同じでも、後者の処理に用いられるプログラムの改善の優先度を高くすることができる。
【００２２】
さらに、多数のユーザ９０が個々の目的に応じて個々のタイミングで利用する業務システム３０では、プログラムの実行時間帯に左右されないように各機能の改善の優先度を設定することができる。
【００２３】
なお、図１の例では、システム特性評価装置１０がネットワーク７０を介して業務システム３０およびソースコード管理装置４０に接続された構成を示したが、業務システム３０の一機能としてシステム特性評価装置１０を用いるようにしてもよいし、ソースコード管理装置４０の一機能としてシステム特性評価装置１０を用いるようにしてもよい。
【００２４】
図２は、図１のシステム特性評価装置の略構成を示すブロック図である。
図２において、システム特性評価装置１０には、構造解析部１０１１および特性評価部１０２が設けられている。構造解析部１０１には、ソフトウェア構造解析部１０１およびソフトウェア構造データ１１１が設けられている。特性評価部１０２には、特性解析部１０２１、特性値算出部１０２２、改善箇所解析部１０２３、特性データ１１２および表示用ソフトウェア構造データ１１３が設けられている。
【００２５】
構造解析部１０１は、ソースコードの構造解析に基づいて、ソースコードに関する静的情報を生成する。特性評価部１０２は、ソースコードの静的情報および動的情報に基づいて、ソースコードにおけるプログラムが実行される業務システム３０の特性を評価する。
【００２６】
ソフトウェア構造解析部１０１１は、ソースコード管理装置４０から収集したソースコードを解析し、ノードとなるプログラムまたはデータ、エッジとなるプログラム間の呼び出し関係やプログラムとデータの呼び出し関係を特定し、ソフトウェア構造データ１１１に格納する。
【００２７】
特性解析部１０２１は、ソフトウェア構造データ１１１に格納したノードごとに、業務システム３０の特性を解析する。具体的には、特性データ１１２に格納された特性項目について、業務システム３０から収集したアプリケーションログと、ソースコード管理装置４０から収集した変更履歴と、障害管理装置５０から収集した障害履歴などに基づいて特性値を算出し、ソフトウェア構造データ１１１に格納する。
【００２８】
特性値算出部１０２２は、ソフトウェア構造データ１１１に格納したノードごとに、各特性項目の特性値を算出する。特性値算出部１０２２は特性項目ごとに設けることができる。この時、特性値算出部１０２２を指定するＩＤを特性項目と紐付けて特性データ１１２に設定することができる。特性値算出部１０２２は、特性解析部１０２１に呼び出され動作することができる。
【００２９】
なお、図２の例では、特性値算出部１０２２を特性解析部１０２１と別個に設けた構成を示したが、特性解析部１０２１の一機能として特性値算出部１０２２を構成するようにしてもよい。
【００３０】
改善箇所解析部１０２３は、表示装置２０にて受け付けた特性項目に対し、ソフトウェア構造データ１１１に格納された各プログラムおよびデータの特性値が、特性データ１１２に格納された閾値を越えているかを判定することができる。さらに、改善箇所解析部１０２３は、その判定結果に基づいてソフトウェア構造データ１１１を再構築し、表示用ソフトウェア構造データ１１３に格納する。
【００３１】
以下、システム特性評価装置１０の動作について図１および図２を参照しながら説明する。
ソフトウェア構造解析部１０１１はソースコード管理システム４０から対象業務システム３０のソースコードを取得し、プログラム（関数）とデータ、およびプログラム間の呼び出し関係と、プログラムとデータ間の呼び出し関係を解析する。そして、ソフトウェア構造解析部１０１１は、プログラムとプログラムが参照するデータをノード、プログラムの呼び出し関係およびプログラムとデータの参照関係を方向付きエッジとするグラフ構造を生成し、ソフトウェア構造データ１１１に格納する。
【００３２】
次に、特性解析部１０２１は、ソフトウェア構造データ１１１に格納したノードに対し、特性値を解析する。特性解析部１０２１は、特性項目ごとに紐づけられた特性値算出部１０２２を呼び出し、プログラムごとに解析対象とするデータを解析し、その解析結果をソフトウェア構造データ１１１に格納する。
【００３３】
さらに、システム特性評価装置１０は、特性値を格納したソフトウェア構造データ１１１に基づいて、ノードを実行時系列順に配置する。そして、特性値に応じて各ノードおよび各エッジに種類、色、太さ、大きさまたは表示位置を設定し、その設定情報に基づいて各ノードおよび各エッジをシンボル化することができる。そして、そのシンボル化された情報を、ネットワーク７０を介して表示装置２０に送信する。表示装置２０は、そのシンボル化された情報に基づいて、各ノードおよび各エッジに種類、色、太さ、大きさまたは表示位置を設定し、各ノードを実行時系列順に表示する。
【００３４】
次に、システム特性評価装置１０は、表示装置２０からユーザ８０が指定した特性項目を受け付けると、改善箇所解析部１０２３を動作させる。改善箇所解析部１０２３は、ノードの各特性値に対し、特性データ１１２に格納された閾値を超えるかどうかをノードごとに判定する。そして、改善箇所解析部１０２３は、閾値を超えたノードは改善候補とし、ソフトウェア構造データ１１１のノードをそのまま表示用ソフトウェア構造データ１１３のノードとする。閾値を超えなかったノードは他の閾値を超えなかったノードとマージし、そのマージされたノードを表示用ソフトウェア構造データ１１３のノードとする。また、そのマージされたノードに対してエッジを設定し、そのエッジを表示用ソフトウェア構造データ１１３のエッジとする。
【００３５】
さらに、改善箇所解析部１０２３は、マージされたノードに対して特性値を再算出する。特性値を算出する場合、改善箇所解析部１０２３は、特性解析部１０２１を呼び出し、特性解析部１０２１に特性値を再算出させることができる。なお、マージされたノードの特性値は、元のノードの特性値に基づいて算出することができる。
【００３６】
そして、システム特性評価装置１０は、再算出された特性値に応じて各ノードおよび各エッジに種類、色、太さ、大きさまたは表示位置を設定し、その設定情報に基づいて各ノードおよび各エッジをシンボル化することができる。そして、そのシンボル化された情報を、ネットワーク７０を介して表示装置２０に送信する。表示装置２０は、そのシンボル化された情報に基づいて、各ノードおよび各エッジに種類、色、太さ、大きさまたは表示位置を設定し、各ノードを実行時系列順に表示する。
【００３７】
これにより、ユーザ８０は、グラフ構造の配置に基づいてソフトウェアの構造と実行順序およびプログラム間の関係性を確認しつつ、指定した特性項目について改善対象となるノードを容易に確認することができる。このため、ユーザ８０は、業務上の位置づけ等を勘案しながら、ソースコードにおける改善対象を容易に特定することができる。
【００３８】
また、システム特性評価装置１０は、特性値が閾値を超えなかったノード同士をマージすることにより、ソフトウェアの構造と実行順序およびプログラム間の関係性を損なくことなく、優先度の低いノードの表示数を減らすことができる。このため、プログラムが数百以上もあるような大規模情報システムにおいても、ユーザ８０は、業務上の位置づけ等を勘案しながら、ソースコードにおける改善対象を容易に特定することができる。
【００３９】
さらに、ソースコードの変更に伴って仕様書とソースコードの乖離が大きくなり、全体のソフトウェア構造や設計指針などを把握することが困難である場合においても、ユーザ８０は、業務上の位置づけ等を勘案しながら、ソースコードにおける改善対象を容易に特定することができる。
【００４０】
また、業務システム３０が性質の異なる機能を複数も持ち、機能改善要望も多数存在する場合においても、機能に対する全ての改善要望を取り込みつつ、ソースコードにおける改善対象を容易に特定することができる。
【００４１】
図３は、図１のシステム特性評価システムの具体的な構成を示すブロック図である。
図３において、ソフトウェア構造データ１１１には、ノード情報テーブル１１１１およびエッジ情報テーブル１１１２が設けられている。表示用ソフトウェア構造データ１１３には、表示用ノード情報テーブル１１３１および表示用エッジ情報テーブル１１３２が設けられている。業務システム３０には、アプリケーションログ３００１が保持されている。ソースコード管理装置４０には、ソースコード４００１およびソースコード４００１の変更履歴４００２が保持されている。障害管理装置５０には、業務システム３０に関わる障害履歴５００１が保持されている
【００４２】
ソフトウェア構造解析部１０１１は、対象業務システム３０のソースコード４００１をソースコード管理装置４０から取得し、プログラム（関数）とデータ、プログラム間の呼び出し関係、プログラムとデータの呼び出し関係を解析する。ソフトウェア構造解析部１０１１は、その解析結果に基づいて、プログラムおよびデータをノードとしてノード情報テーブル１１１１を更新し、プログラムの呼び出し関係と、プログラムとデータの呼び出し関係を方向付きエッジとしてエッジ情報テーブル１１１２を更新する。
【００４３】
次に、特性解析部１０２１は、ソフトウェア構造解析部１０１１で更新されたソフトウェア構造データ１１１を取得する。また、特性解析部１０２１は、ネットワーク７０を介し、ソースコード管理装置４０から変更履歴４００１を取得し、業務システム３０からアプリケーションログ３００１を取得し、障害管理装置５０から障害履歴５００１を取得する。そして、特性解析部１０２１は、特性テーブル１１２１に格納した特性項目に対応する特性値算出部１０２２を動作させ、その特性項目の特性値をノードごとに算出する。そして、特性解析部１０２１は、各特性項目について算出した特性値をノードごとにノード情報テーブル１１１１に格納する。
【００４４】
次に、ユーザ８０から指定された特性項目をシステム特性評価装置１０が受け付けると、改善箇所解析部１０２３を動作する。改善箇所解析部１０２３は、ノード情報テーブル１１１１および特性テーブル１１２１を参照し、ノード情報テーブル１１１１の各ノードが特性テーブル１１２１に設定された閾値を超えているかどうかを判定する。さらに、改善箇所解析部１０２３は、その判定結果に基づいて表示用のグラフ構造を再構築し、その再構築されたグラフ構造のプログラムおよびデータをノードとして表示用ノード情報テーブル１１３１に格納し、その再構築されたグラフ構造のプログラムの呼び出し関係と、プログラムとデータの呼び出し関係を方向付きエッジとして表示用エッジ情報テーブル１１３２に格納する。
【００４５】
図４は、図１のシステム特性評価装置のハードウェア構成を示すブロック図である。
図４において、システム特性評価装置１０には、主制御部１０３、主記憶部１０４、入力部１０５、出力部１０６および通信部１０７が設けられている。主制御部１０３には、プロセッサ１０３１およびＲＡＭ１０３２が設けられている。
【００４６】
主制御部１０３は、主記憶部１０４に記録されたプログラムをＲＡＭ１０３２にロードし、そのプログラムをプロセッサ１０３１が実行することで、システム特性評価装置１０における情報処理を制御する。
主記憶部１０４は、システム特性評価装置１０に関する情報を不揮発的に記憶する。主記憶部１０４は、磁気ディスク装置であってもよいし、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）であってもよい。
【００４７】
主記憶部１０４には、ソフトウェア構造解析プログラム１０１１Ｐ、特性解析プログラム１０２１Ｐ、特性値算出プログラム１０２２Ｐ、改善箇所解析プログラム１０２３Ｐ、ソフトウェア構造データ１１１、特性データ１１２および表示用ソフトウェア構造データ１１３が記憶される。特性値算出プログラム１０２２Ｐは、特性項目ごとに設けることができる。
【００４８】
プロセッサ１０３１がソフトウェア構造解析プログラム１０１１Ｐを実行することでソフトウェア構造解析部１０１を実現することができる。プロセッサ１０３１が特性解析プログラム１０２１Ｐを実行することで特性解析部１０２１を実現することができる。プロセッサ１０３１が特性値算出プログラム１０２２Ｐを実行することで特性値算出部１０２２を実現することができる。プロセッサ１０３１が改善箇所解析プログラム１０２３Ｐを実行することで改善箇所解析部１０２３を実現することができる。
【００４９】
入力部１０５は、システム特性評価装置１０に関する情報を手動で入力する必要がある際に、ユーザがシステム特性評価装置１０に対して入力する。
出力部１０６は、システム特性評価装置１０に関する情報を出力する必要がある際に、システム特性評価装置１０がユーザに対して出力する。
通信部１０７は、ネットワーク７０を介して、表示装置２０、業務システム３０、ソースコード管理装置４０および障害管理装置５０と接続し、表示装置２０、業務システム３０、ソースコード管理装置４０および障害管理装置５０と通信する。
【００５０】
図５は、図３のノード情報テーブルの内容の一例を示す図である。
図５において、ノード情報テーブル１１１１には、プログラムまたはデータごとに割り当てられたノードＩＤ５０１と、各ノードに対して、プログラム名またはデータ名を識別可能な処理名称５０２と、プログラムやデータの種別５０３と、プログラム実行に関する業務システム３０の特性５０４を格納する。
【００５１】
特性５０４には、少なくとも１以上の設定された特性項目が格納される。特性５０４として、特性５０４の実数値５０４１と、正規化等を実施した特性値５０４２とをそれぞれ格納することができる。
【００５２】
図５の例では、シェルスクリプトがＣＯＢＯＬ言語やＣ言語で実装されたプログラムを呼び出し、プログラムがデータを呼び出すシステムのノードの格納例を示した。また、特性項目として処理時間が設定されている例を示した。
【００５３】
図６は、図３のエッジ情報テーブルの内容の一例を示す図である。
図６において、エッジ情報テーブル１１１２には、図５で示したプログラム間の呼び出し関係またはプログラムとデータの参照関係ごとに一意に特定可能なエッジＩＤ５１１と、エッジの呼び出し元ノードＩＤ５１２、エッジの呼び出し先ノードＩＤ５１３を格納する。呼び出し元ノードＩＤおよび呼び出し先ノードＩＤは、ノード情報テーブル１１１１に格納したノードＩＤ５０１を使用する。
【００５４】
なお、エッジは方向付きのため、参照元と参照先のノードを特定できるよう分割して保持することができる。例えば、一つのプログラムから複数のプログラムを呼び出している場合は、呼び出し元プログラムＩＤが同一で、呼び出し先プログラムＩＤが異なるエッジＩＤが作成される。
【００５５】
また、ノード情報テーブル１１１１には、プログラム間の呼び出しか、プログラムとデータの呼び出しかが識別できるよう、関係性の種類５１４も格納することができる。図６の例では、プログラムの呼び出し順を「ｎｅｘｔ」、データの参照関係を「ｉｎ」または「ｏｕｔ」で表現した。また、シェルスクリプトがプログラムを呼び出す場合など、階層構造になったプログラム群において、上位階層のプログラムが下位階層のプログラムを呼び出す関係性として「ｃａｌｌ」で表現した。なお、この関係性の種類５１４は、ソフトウェア構造に応じて適宜変更することが可能である。
【００５６】
図７は、図３の特性データの一例を示す図である。
図７において、特性テーブル１１２１は、ノード情報テーブル１１１１で管理する特性項目ごとに、特性ＩＤ６０１、特性名６０２、閾値６０３および特性値算出部ＩＤ６０４を格納する。特性ＩＤ６０１は、特性項目を一意に特定可能なＩＤである。特性名６０２はノード情報テーブル１１１１および表示装置２０に表示する特性の名称を示すことができる。閾値６０３は、ユーザ８０が指定した特性項目の特性が数値で表されている時の改善対象となり得るノードの特性の基準である。
【００５７】
閾値６０３は、特性５０４の実数値５０４１または特性値５０４２に対して予め設定することができる。図７では、特性５０４の実数値５０４１に対して閾値６０３を設定した例を示した。ただし、閾値６０３の設定に用いる基準は変更することも可能である。例えば、管理者による変更を行ってもよいし、システム改修前後の特性値５０４２の履歴を取得しておき、その時の実績値を元に閾値６０３を設定してもよい。
【００５８】
特性値算出部ＩＤ６０４は、特性ＩＤを解析するプログラムを一意に特定可能なＩＤである。
【００５９】
なお、図７の例では、特性項目として管理する特性名を、処理時間、プログラム数、特殊構文数、データの重要度、実装言語の特殊構文数、実行時間帯、障害発生頻度、改修頻度、同時改修数、呼び出しプログラム数のばらつきとしたが、その他の特性項目を設定してもよい。
【００６０】
図８は、図３のソフトウェア構造解析部の動作を示すフローチャートである。
図８において、ソフトウェア構造解析部１０１１は、ソースコード管理装置４０のリポジトリにソースコードが追加あるいは変更されたことの検知をトリガとして動作することができる。
【００６１】
この時、ソフトウェア構造解析部１０１１は、業務システム３０のソースコード４００１をソースコード管理装置４０から取得し、ソースコード４００１の解析を行う（Ｓ７０１）。具体的には、ソフトウェア構造解析部１０１１は、ソースコード４００１におけるプログラムとデータの識別、プログラムとデータの関係性、プログラムの呼び出し関係等を特定する。
【００６２】
次に、ソフトウェア構造解析部１０１１は、ソースコード４００１の解析結果に基づいて、特定したプログラムとデータをノードとしてノードＩＤを割り当て、ノード情報テーブル１１１１を更新する（Ｓ７０２）。
【００６３】
次に、処理とデータの呼び出し関係および参照関係を解析し、その解析結果に基づいて、エッジ情報テーブル１１１２を更新する（Ｓ７０３）。
【００６４】
システム特性評価装置１０は、図８の処理により、表示装置２０に表示させるフトウェア構造の要素の変更を管理することができる。
【００６５】
図９は、図３の特性解析部の動作を示すフローチャートである。
図９において、特性解析部１０２１は、ソフトウェア構造データ１１１が変更された場合、または、定期的に動作することができる。この時、特性解析部１０２１は、ノード情報テーブル１１１１からノードＩＤ５０１を取得する（Ｓ８０１）。
【００６６】
次に、特性解析部１０２１は、特性テーブル１１２１から特性項目ごとに特性値算出部ＩＤ６０４を取得し、ソフトウェア構造データ１１１からソフトウェア構造を取得し、ソースコード管理装置４０から変更履歴４００１を取得し、業務システム３０からアプリケーションログ３００１を取得し、障害管理装置５０から障害履歴５００１を取得する。
（Ｓ８０２）。
【００６７】
次に、特性解析部１０２１は、特性項目ごとに特性値算出部１０２２を動作させ、全ての特性項目についての特性値５０４２を算出する（Ｓ８０３）。
【００６８】
次に、特性解析部１０２１は、全てのノードの特性値５０４２を算出したかどうかを判断する（Ｓ８０４）。そして、全てのノードの特性値５０４２を算出していない場合、Ｓ８０３に戻り、全てのノードの特性値５０４２を算出するまで、Ｓ８０３およびＳ８０４の処理を繰り返す。そして、特性解析部１０２１は、全てのノードの特性値５０４２を算出すると、その特性値５０４２を特性５０４の実数値５０４１とともにノード情報テーブル１１１１に格納する（Ｓ８０５）。
【００６９】
システム特性評価装置１０は、図９の処理により、ノードの特性値５０４２の変更を管理することができる。
【００７０】
以下、図７に記載した特性テーブル１２１１の特性名６０２ごとに解析方法の具体例を示す。
【００７１】
特性ＩＤＩ１の処理時間については、アプリケーションログ３００１を解析し、処理の開始時刻と終了時刻から処理時間を算出する。
特性ＩＤＩ２のプログラム数については、ソースコード４００１を解析し、呼び出し関係を持つプログラムに対し、あるプログラムが他のプログラムを呼び出している数を算出する。
【００７２】
特性ＩＤＩ３の特殊構文数については、ソースコード４００１を解析し、処理の実装方法について実装言語で一般的でない構文や処理をしようしている回数を算出する。特に、ＣＯＢＯＬ言語などレガシー言語を実装言語として使用しているプログラムでは、開発日の古いプログラムほど使用頻度が多く、改修しにくい原因となっている場合がある。
【００７３】
特性ＩＤＩ４のデータ重要度については、ソースコード４００１を解析し、当該データを参照するプログラム数や複数機能間での参照数を元に設定する。ある機能でしか参照されないローカルデータと、様々な機能で参照されるデータがあった場合、後者を重要度が高くなるように設定する。
特性ＩＤＩ５の実行時間帯については、アプリケーションログ３００１やバッチ設定情報を参照し、プログラムが実行される時刻情報を設定する。
【００７４】
特性ＩＤＩ６の障害発生頻度については、障害情報５００１を解析し、予め設定された期間の障害発生回数を算出する。
特性ＩＤＩ７の改修頻度については、変更履歴４００２を解析し、プログラムの改修回数を算出する。
特性ＩＤＩ８の同時改修数については、変更履歴４００２を解析し、各改修で同時に変更されるプログラムの数を算出する。
【００７５】
特性ＩＤＩ９の呼び出しプログラム数ばらつきについては、ソースコード４００１を解析し、あるプログラムから呼び出しているプログラムの数を解析し、同階層のプログラム同士で比較した場合の標準偏差やパーセンタイル値などを設定する。
【００７６】
なお、特性項目ごとに算出する特性値については、算出値そのものだけでなく、パーセンタイル値やＮ段階のランクとしてもよい。
【００７７】
図１０は、特性項目指定時における図３の改善箇所解析部の動作フローを示す図である。
図１０において、表示装置２０は、システム特性評価装置１０からソフトウェア構造データ１１１および特性データ１１２を取得し（Ｓ９０１）、特性値に応じて配置したソフトウェア構造１１１と特性名６０２を表示する（Ｓ９０２）。
【００７８】
次に、ユーザ９０が特性名６０２を指定すると（Ｓ９０３）、表示装置２０は、その特性名６０２の特性項目に対応する特性ＩＤ６０１をシステム特性評価装置１０の特性評価部１０２に送信する（Ｓ９０４）。
【００７９】
特性評価部１０２の改善箇所解析部１０２３は、受信した特性ＩＤ６０１に設定された閾値６０３に基づいて、ソフトウェア構造データ１１１１に格納された各ノードの特性値が閾値を超えているかどうかを判断する（Ｓ９０５）。各ノードの特性値が閾値を超えているかどうかを判断することにより、ソースコード４００１の改善箇所を判断することができる。なお、図７に示すように、特性５０４の実数値５０４１に対して閾値６０３が設定されている場合、各ノードの特性５０４の実数値５０４が閾値６０３を超えているかどうかを判断するようにしてもよい。
【００８０】
次に、改善箇所解析部１０２３は、改善箇所の解析において改善候補とならなかったノード同士をマージして表示用ノードと表示用エッジを生成し、表示用ソフトウェア構造データ１１３を作成する（Ｓ９０６）。
【００８１】
次に、表示用ソフトウェア構造データ１１３を作成すると、特性評価部１０２は、表示用ソフトウェア構造データ１１３の表示を表示装置２０に指示する（Ｓ９０７）。そして、表示装置２０は、表示用ソフトウェア構造データ１１３を特性評価部１０２から取得し（Ｓ９０８）、再構成されたノードとエッジを特性値に応じて配置して表示する（Ｓ９０９）。
【００８２】
図１１は、図３の改善箇所解析部の動作を示すフローチャートである。
図１１において、改善箇所解析部１０２３は、ユーザが特性項目を指定した場合に動作する。この時、改善箇所解析部１０２３は、ノード情報テーブル１１１１と特性テーブル１１２１を読み込み、特性テーブル１１２１から特性項目ごとに閾値を取得する（Ｓ１００１）。
【００８３】
次に、改善箇所解析部１０２３は、ノード情報テーブル１１１１の各ノードに対し、特性項目ごとに特性５０４の実数値５０４１が閾値６０３を超えるかを判定する（Ｓ１００２）。なお、図７の特性テーブル１１２１では、特性５０４の実数値５０４１に対する閾値６０３の代わりに、特性値５０４２に対する閾値を設定するようにしてもよい。この時、特性項目ごとに特性値５０４２が閾値を超えるかを判定することができる。
【００８４】
次に、改善箇所解析部１０２３は、全ノードを実行時間帯にソートする（Ｓ１００３）。
【００８５】
次に、改善箇所解析部１０２３は、閾値６０３を超えたノードは改善候補としてそのまま扱う。一方、閾値６０３を超えなかったノードは非改善候補とする。そして、改善箇所解析部１０２３は、非改善候補とされたノード同士をマージし、マージされたノードの特性値を再度算出する（Ｓ１００４）。マージされたノードの特性値は、マージ前の各ノードの特性値に基づいて算出することができる。
【００８６】
マージ方法は、Ｓ１００３で実行時間帯順にソートしたノードに対し、改善候補ノード間の複数の非改善候補ノードを特定してマージする。例えば、非改善候補ノードが実行時間帯順に連続して配置されている場合は、それらの非改善候補ノード同士をマージすることができる。一方、非改善候補ノード間に改善候補ノードがある場合には、それらの非改善候補ノード同士をマージしないようにすることができる。これにより、ソフトウェア構造におけるノードの実行順序およびプログラム間の関係性を損なうことなく、改善の優先度の低いノードの表示数を減らすことができ、改善対象となるノードを視認性を向上させることができる。
【００８７】
また、マージしたノードの特性値は、特性項目に応じて設定することができる。この時、マージされたノードの特性値は、マージ前のノードの特性値の和であってもよいし、マージ前のノードの特性値の最大値であってもよい。例えば、処理時間や特殊構文数など、包含関係にならないノードについては、マージ前のノードの和を取ることでマージされたノードの特性値を算出することができる。データの重要度や実行時間帯などについては、マージ前のノードの最大値をマージされたノードの特性値とすることができる。なお、マージ対象ノードは、ユーザの指定した特性値を超えないようにマージし、複数ノードとしてもよい。
【００８８】
次に、改善箇所解析部１０２３は、ノードを実行時系列順でソートし、ノードの実行時刻に基づいてエッジを設定する（Ｓ１００５）。
【００８９】
次に、改善箇所解析部１０２３は、生成したノード情報とエッジ情報を、表示用ソフトウェア構造データ１１３の表示用ノード情報テーブル１１３１と表示用エッジ情報テーブル１１３２に格納する（Ｓ１００６）。
【００９０】
図１２は、図５のノード情報テーブルおよび図５のエッジ情報テーブルに基づいて構築されたグラフ構造の表示画面の一例を示す図である。
図１２において、表示画面１１０１には、ノード１１０３とエッジ１１０５からなるソフトウェア構造と、ユーザ８０が指定可能な特性項目１１０２を表示することができる。図１２の例では、処理性能、稼動時間帯、プログラム数および特殊構文数を表示した。
【００９１】
表示画面１１０１にソフトウェア構造を表示させる場合、ノード１１０３とエッジ１１０５に表示用のシンボルを設定することができる。このシンボルとしては、図形、記号または文字などを用いることができる。図１２の例では、プログラムおよびデータを示すノード１１０３を丸、呼び出し関係を示すエッジ１１０５を矢印で示した。
【００９２】
なお、ノード１１０３は呼び出し関係の最初のノードの実行時系列順１１０４に表示することができる。図１２の例では、Ｓ１からＳ５のノードが最初に実行され、その後、Ｓ６からＳ１４のノードが実行されることを示している。
【００９３】
プログラムやデータを示すノードは、ノードの種類や、特性値算出部１０２２データから得られる特性値の大きさに応じて色や濃淡、形の大きさなど表示方法を変更してもよい。例えば、ノード１１０３は、処理時間の大きさをノードの大きさで表示している。このようにノードの表現を変更することにより、全体のノードのうち、ある値が高いノードの把握が容易になる。
【００９４】
なお、シェルスクリプトがプログラムを呼び出すような階層構造となっているシステムにおいては、上位階層となるシェルスクリプトのノードの関係性のみを表示しておき、ユーザ８０の指定に応じて呼び出し関係を展開してもよい。例えば、上位階層のノードＳ１〜Ｓ１４が表示画面１１０１に表示されている時に、ノードＳ１１を表示画面１１０１で選択したものとする。この時、ノードＳ１１の階層構造１１０７を表示画面１１０１に表示させることができる。
【００９５】
ノードＳ１１の階層構造１１０７では、中位階層のノードＰ１１、Ｐ１２および下位階層のノードＤ１１〜Ｄ１３が設けられているものとする。この時、ノードＳ１〜Ｓ１４のシンボルと、ノードＰ１１、Ｐ１２のシンボルと、ノードＤ１１〜Ｄ１３のシンボルを互いに異ならせるようにしてもよい。図１２の例では、ノードＰ１１、Ｐ１２を正方形、ノードＤ１１〜Ｄ１３を菱形で示した。
【００９６】
これにより、最初は業務システム３０のソフトウェア構成全体を上位階層のノードＳ１〜Ｓ１４で確認し、その後、ユーザの関心のあるノードに対象を絞って階層構造に展開し、詳細なプログラムとデータの関係性の把握を進めることが可能となる。
【００９７】
図１３は、図１２の表示画面に選択ノードの特性値を表示させた例を示す図である。
図１３において、例えば、表示画面１１０１にてノード１１０３を押下すると、ノード１１０３に関する特性表１１０６が表示される。特性表１１０６には、押下したノード１１０３の特性値が特性項目ごとに表示される。特性表１１０６は、ノード情報テーブル１１１１の特性５０４から作成することができる。これにより、ユーザ８０は、表示画面１１０１に表示された多数のノード１１０３のうち、自分が関心のあるノード１１０３の特性値を確認することができる。
【００９８】
また、ユーザ８０が特性項目１１０２の項目名を押下すると、指定した特性項目の閾値を元にノード１１０３の特性値と閾値とが比較される。この時、閾値を超えなかったノードは非改善候補とされ、非改善候補とされたノード同士がマージされる。そして、そのマージされたノードに基づいてグラフ構造が再構築され、その再構築されたグラフ構造が表示される。この表示方法は、特に、プログラムの実行時間の変動が少ないバッチシステムに適用した場合に効果がある。
【００９９】
図１４は、図１の表示装置に表示される再構築後のグラフ構造の表示画面の一例を示す図である。
図１４の表示画面１２０１では、特性項目として処理性能、稼動時間帯およびプログラム数が指定された場合を示した。
【０１００】
ここで、処理性能が処理時間であるものとすると、図５からノードＳ１の処理時間が７ｓｅｃ、ノードＳ２の処理時間が５ｓｅｃであることが判る。図７から処理時間の閾値が１０ｓｅｃであることが判る。このため、処理時間について、各ノードＳ１、Ｓ２の処理時間は閾値を下回っていると判断される。このため、ノードＳ１、Ｓ２は非改善候補ノードとされる。さらに、ノードＳ１、Ｓ２は実行時系列順１１０４で連続している。この結果、ノードＳ１、Ｓ２はマージされ、新たにノードＳ１＋２が生成される。この時、ノードＳ１＋２の特性の実数値として、元のノードＳ１、Ｓ２の特性の実数値の和とすることができる。また、ノードＳ１＋２の特性の実数値に対して特性値が与えられる。そして、ノードＳ１＋２を押下することにより、ノードＳ１＋２の特性表１２０６を表示することができる。
【０１０１】
一方、図５からノードＳ３の処理時間が２５０ｓｅｃであることが判る。図７から処理時間の閾値が１０ｓｅｃであることが判る。このため、処理時間について、各ノードＳ３の処理時間は閾値以上と判断される。このため、ノードＳ３は改善候補ノードとされ、そのまま扱われる。
【０１０２】
図１５は、図１４の再構築後のグラフ構造に対応したノード情報テーブルの内容の一例を示す図である。なお、このノード情報テーブル１１３１は、ノードＳ１、Ｓ２がマージされることでノードＳ１＋２が生成された場合を示す。
【０１０３】
図１５において、ノード情報テーブル１１３１には、プログラムまたはデータごとに割り当てられたノードＩＤ１３０１と、各ノードに対して、プログラム名またはデータ名を識別可能な処理名称１３０２と、プログラムやデータの種別１３０３と、プログラム実行に関する業務システム３０の特性１３０４を格納する。
【０１０４】
特性１３０４には、少なくとも１以上の設定された特性項目が格納される。特性１３０４として、特性１３０４の実数値１３０４１と、正規化等を実施した特性値１３０４２とをそれぞれ格納することができる。
【０１０５】
ここで、ノード情報テーブル１１３１には、改善箇所解析部１０２３が動作した結果、図５のノードのうちマージされたノードの情報と、マージされなかったノードの情報が格納される。また、マージされたノードについては、特性値はマージ後に再度算出した値を格納する。図１５では、シェルスクリプトのノードＳ１、Ｓ２がマージされたノードＳ１＋２として格納された例を示した。ノードＳ１＋２の処理時間についても、元のシェルスクリプトのノードＳ１、Ｓ２の処理時間を合算した値が格納されている。
【０１０６】
図１６は、図１４の再構築後のグラフ構造に対応したエッジ情報テーブルの内容の一例を示す図である。
図１６において、ノードＳ１、Ｓ２をマージすることで、それらのノードＳ１、Ｓ２に付されていたエッジも変化する。このため、ノードＳ１、Ｓ２のマージ結果に伴って、図６のエッジ情報テーブル１１１２が図１６のエッジ情報テーブル１１３２に更新される。
【０１０７】
エッジ情報テーブル１１３２には、図５で示したプログラム間の呼び出し関係またはプログラムとデータの参照関係ごとに一意に特定可能なエッジＩＤ１３１１と、エッジの呼び出し元ノードＩＤ１３１２、エッジの呼び出し先ノードＩＤ１３１３を格納する。呼び出し元ノードＩＤおよび呼び出し先ノードＩＤは、ノード情報テーブル１１３１に格納したノードＩＤ１３０１を使用する。また、ノード情報テーブル１１３２には、プログラム間の呼び出しか、プログラムとデータの呼び出しかが識別できるよう、関係性の種類１３１４も格納することができる。
【０１０８】
以上の処理を行うことにより、ソフトウェア構造だけでなく、開発状況や稼動状況を踏まえた改善対象候補を把握することができ、システム刷新時の刷新対象の検討工数を削減することができる。
【０１０９】
なお、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせてもよい。
本実施例では生産管理を例として述べたが、他の分野にも適用が可能である。
【符号の説明】
【０１１０】
１０  システム特性評価装置、２０  表示装置、３０  業務システム、４０  ソースコード管理装置、５０  障害管理装置、１０１  ソフトウェア構造解析部、１０２  特性評価部、１０１１  ソフトウェア構造解析部、１０２１  特性解析部、１０２２  特性値算出部、１０２３  改善箇所解析部、１１１  ソフトウェア構造データ、１１２  特性データ、１１３  表示用ソフトウェア構造データ
【図１】
2019101830.tif 000003
【図２】
2019101830.tif 000004
【図３】
2019101830.tif 000005
【図４】
2019101830.tif 000006
【図５】
2019101830.tif 000007
【図６】
2019101830.tif 000008
【図７】
2019101830.tif 000009
【図８】
2019101830.tif 000010
【図９】
2019101830.tif 000011
【図１０】
2019101830.tif 000012
【図１１】
2019101830.tif 000013
【図１２】
2019101830.tif 000014
【図１３】
2019101830.tif 000015
【図１４】
2019101830.tif 000016
【図１５】
2019101830.tif 000017
【図１６】
2019101830.tif 000018