連載
» 2015年07月01日 10時00分 公開

レガシー迷宮を攻略する「ソフトウェア地図」とは?5分で分かる最新キーワード解説(2/3 ページ)

[土肥正弘,ドキュメント工房]

「ソフトウェア地図」は何をしてくれるのか

 ソフトウェア地図の裏には、アプリケーション機能を実現するプログラム間およびデータ間の依存関係をスコアリングして、多次元分析するマイニング技術が利用される。従来、プログラム解析にはコード自動解析ツールが利用され、サブシステムの切り分けやプログラム間およびデータ間の依存関係を自動的に判別することはできたが、全体の中で利用頻度が高い部分、品質に影響する部分、機能拡張すべき部分、業務ロジックの複雑度が高い部分を見分けるような、より高い視点からの分析は容易でなかった。

 また、解析の結果は技術者なら理解できても業務部門や経営層、時には運用管理部門の人にさえ難しく、コストなどの議論の材料にするにはさらに手間をかけて情報加工する必要もあった。

 ソフトウェア地図技術は、マイニング技術により発見した機能コンポーネントを、その階層構造や関係性によって2次元に配置し、コンポーネントがそれぞれ街区としてまとまるようにした。街区にある建物は個々のプログラムを示し、その複雑度、修正頻度、利用頻度などを建物の高さで表示する。

 これにより、図2のように現状とソースコードとのギャップや保守難易度、利用頻度による投資効果の判定が容易になる。富士通では、同社の資産分析サービスで従来3カ月程度かかる現状分析が、ソフトウェア地図技術により1.5カ月に短縮できるとする。

図2 ソフトウェア地図の役割(出典:富士通)

 定期的にソフトウェア地図を描くことにより、経年変化が把握できることもポイントだ。将来の品質予測や改善計画立案に役立てられる。さらに構造の適正化による保守コスト削減、再利用可能な機能コンポーネントの抽出と利用など、開発部門にも運用管理部門にもメリットが生まれる。

業務ロジックの複雑度も可視化可能に

 ソフトウェア地図の開発から3年を経て、富士通ではさらに業務ロジックの視点からの自動解析、可視化技術を付け加えた。

 業務ロジックとプログラムとの対応を理解するには、一般的に「決定表(デシジョンテーブル)」を作成し、ロジックを表の形にする作業がいる。決定表には、条件項目、場合分けの数、出力値計算の項目数などが書き込まれる。この表が大きいほど業務ロジックが複雑だと判断でき、優先して内容を理解する必要があると見なせる。

 これはBRMS(Business Rule Management System)の根幹部分であるが、時間をかけて詳細な分析が必要なので大規模アプリケーションの分析はなかなか難しい。そこで同社は決定表を作成せず、次の3項目に着目して業務ロジックの複雑度を計算できるようにした。

(1)業務要因量

 条件式に現れる項目数など

(2)業務判断多重度

 条件式の項目で参照されている回数の最大値(場合分けの数)など

(3)業務計算量

 計算式に現れる項目数

 特徴は、業務に強く結び付いた入出力項目のみに対象を限定したこと、業務要因量として条件に関わる項目を数えていること、条件分岐の数以外に計算式に関わる項目も数えるようにしたことだ。

 これにより、入力パラメータの形式チェックのように条件が多くて一見複雑だが業務ロジックとはあまり関係のないコードは排除し、業務ロジックとして役割を持つ部分の複雑度だけが判定できるようになった。

 業務ロジックの複雑度を、機能コンポーネントごとのソフトウェア地図に盛り込んだのが上掲の図1下のグラフだ。低いビルしかない街区は、業務ロジックを含まない部分、あるいはシンプルな部分であり、仕様理解は後回しでよさそうだ。高いビルの多い街区ほど重要なロジックが含まれていると考えられるので、そのプログラムの調査を優先したい。そんな判断ができるところが特長だ。

 富士通では約1200本のCOBOLプログラムを対象に試行した上、同プログラムを人手で確認する社内実験を行った。そこでは業務ロジックを含まないソースが約3割もあった。余計な部分を最初から省いて調査できることで手間は大きく削減できそうだ。また、開発者が重要でないと感じるプログラムは抽出されなかった。

 なお、業務ロジックの分析や可視化技術は機能コンポーネント単位の他、プログラム単位、あるいはもっと細かい単位(COBOLならセクション単位、Javaならメソッド単位)で複雑度を判定できる。

 必ずしもソフトウェア地図とセットで利用しなくともよく、例えば開発環境と組み合わせれば、業務ロジックの複雑度の高いプログラムを色付けして表示したり、ソースコードの中の行を色分けして表示したりすることもできる。図3はEclipseと組み合わせて開発、保守業務の支援用に使った例だ。

開発環境と組み合わせて開発、保守支援 図3 開発環境と組み合わせて開発、保守支援(出典:富士通)

Copyright © ITmedia, Inc. All Rights Reserved.

会員登録(無料)

ホワイトペーパーや技術資料、導入事例など、IT導入の課題解決に役立つ資料を簡単に入手できます。