JaSST’14 Hokkaido
プログラム類似性の可視化と事例の紹介
日本アイ・ビー・エム株式会社
BAM ( Business Application Modernization )繁在家 学 - Manabu Hanzaikemhanz@jp.ibm.com

JaSST’14 Hokkaido

大半のシステムはレガシー

レガシー

肯定的側面

否定的側面

財産

重荷

活用、拡大したい削減、置換、抑制、除去したい企業のレガシーには肯定的、否定的側面があります ※※IBM 2010 Global Technology Outlook ,Future Of Legacyより引用
JaSST’14 Hokkaido

システムに対する老朽化（レガシー）診断

システムが機能要件を満たしていること

保守・拡張性

保守・拡張が容易であること・プログラムが肥大化していない
・プログラムが複雑化していない
・プログラムの修正範囲が拡大しない
・保守作業量が安定化している継続的サポートがあるITインフラであること
一般的な技術標準に合致していること
設計が適切であること

機能適合性システム老朽化

保守スキル
一般性

技術適合性

保守スキルが属人的でないこと
調達容易なスキルであること（スキルの種類、現在調達容易であること）

プログラム解析（可視化）※ 類似度分析も含む
JaSST’14 Hokkaido

類似性 vs 品質 に対する問い

システム資源の類似性が高いシステムは品質が低いと言えるか？

※※

システム資源 ≒プログラム・バッチなど
品質といっても色々ありますが・・・
例： ISO9126

JaSST’14 Hokkaido

ちなみに・・・レガシーな言語って何？

RPG, 10%Visual Basic,12%
COBOL, 47%
PL/I, 14%

Assembler,17%

レガシーな言語って何 [1]※Khadka, Ravi, et al. "How do professionals perceive
legacy systems and software modernization?." ICSE.
2014.
JaSST’14 Hokkaido

参考資料：

プログラム類似性分析 (1/3)

 類似性分析は、コメントによる影響、変数、構造体メンバーの名前の違いによる影響等を除外して、プログラムの構造に対する類似の度合いをプログラム単位で分析するものです。分析は比較対象のプログラムの全組合せに対して実施します。
 類似性分析の結果は現行システムの状態を表すひとつの指標であり（※１）、今後のモダナイゼーションにおける部分的な再構築、新規開発時のプログラム共通化・統合化検討、及び全体ロードマップ策定に関するインプットのひとつになります。

※１： 類似した機能をプログラムのコピーと改修によって実装することで、プログラムの可読性を確保し、保守の生産性を向上させている場合もあり、類似度と開発保守生産性が必ずしも関連付けられるものではありません。

JaSST’14 Hokkaido

参考資料：

プログラム類似性分析 (2/3)

 ここでは、単純なプログラムの例を用いて、類似性分析の方法を説明します。
 下図の例のように、10命令で構成されているPGM Aと5命令で構成されるPGM Bを比較し、2命令の類似したコードが検出された場合、PGM Aを比較元としたPGM Bとの類似度は 20%となります。一方、PGM Bを比較元とした PGM Aとの類似度は40%となります。
 PGM間の類似箇所の抽出は、共通した文字列（または差分）を抽出する際に一般的に利用されるアルゴリズムを利用して行っています（※１）。
 類似性分析の結果は、類似度マトリックスと呼ばれる行列（マトリックス）を用いて表現します。
類似度マトリックスの横軸と縦軸には分析対象のプログラムが同じ順番（PGMID順）で並んでおり、各行列の値は類似度（単位％）になります。対角線（左上から右下）は自分自身との類似度を比較した結果になり、常に100%になります。
類似度の比較の例
類似度の結果PGM A(10命令)
命令１ ：DCL 変数 型（数値）
命令２ ：DCL 変数 型（数値）
命令３ ：変数 = 変数
命令４ ：変数 = ‘リテラル値’
命令５ ：IF （変数 = 変数)
命令６ ：THEN
命令７ ：DO
命令８ ：変数 = ‘リテラル値’
命令９ ：変数 = 変数
命令１０：END

PGM B
(5命令)
命令１値)
命令２
命令３値’
命令４
命令５：DCL類似した命令数

２命令

PGM Aを比較元とした場合の類似度

20%（= 2 ÷ 10命令）

PGM Bを比較元とした場合の類似度

40%（= 2 ÷ 5命令）

変数 型(数：変数 = 変数 + 変数
：変数 = ‘リテラル：変数 = 変数 - 変数
：変数 = 変数 * 変数

PGM AとPGM Bを比較した結果、２命令が類似しているとして検出された※１：共通した文字列（または差分）抽出として一般的なアルゴリズムである最長共通部分列（LCS： Longest
Common Subsequence）を利用して類似箇所を抽出しています。

類似度マトリックスの結果 [単位：％]
比較元

PGM A

PGM B

PGM A

10040

PGM B20100プログラム
比較先プログラム

JaSST’14 Hokkaido参考資料：

プログラム類似性分析 (3/3)

 以下は類似性分析の結果を類似度マトリックスで表したものです。
 類似性分析の結果を類似度マトリックスを使って説明しますが、より直感的に類似した状況を理解できるよう、マトリックスの値に対して色をつけています。色のつけ方には以下の通り、２種類があります。
– 類似度マトリックス（統合化指標）： 比較先と比較元の双方の類似度が、80%以上～90%未満の箇所を青色、90%以上の箇所を赤色で表示します。結果は対角線に対して常に左右対称に色がつきます。プログラムの統合を検討する際の指標となります。
– 類似度マトリックス（共通化指標）： 比較先、比較元のどちらかの類似度が、80%以上～90%未満の類似度の箇所を青色、90%以上の類似度の箇所を赤色で表示します。類似した命令が比較元または比較先にどの程度含まれているかを視覚化しています。プログラム間で共通化を検討する際の指標となります。

80%以上～90%未満の類似度は青色で表示します。

PGMA
PGMB
PGMC

PGMAPGMB
PGMC

PGMD
PGME
PGMF
PGMG
PGMH
PGMI

PGMD
PGME
PGMF
PGMG
PGMH
PGMI

PGMJ

PGMJ

PGMJ

PGMI

PGMG

PGMF

PGME

PGMD

PGMC

PGMB

PGMA

比較元プログラム
比較先
プログラム

PGMH

類似度マトリックス（統合化指標）プログラム名順
PGMJ

PGMI

PGMH

PGMG

PGMF

PGME

PGMD

PGMC

PGMB

比較元
プログラム
比較先
プログラム
PGMA

90%以上の類似度は赤色で表示します。

プログラム名順

プログラム名順

プログラム名順

類似度マトリックス（共通化指標）比較先、比較
元双方が80％以上～90％未満の場合は青色、90%以上は赤色で表示します。
比較対象の片側だけが80％以上の場合には青色または赤色による表示はされません。
JaSST’14 Hokkaido

プログラム類似性分析の事例
 プログラム言語 PL/IサブシステムB （プログラム）

サブシステムA （プログラム)

サブシステムB (プログラム）

サブシステムA （プログラム）

バッチ

オンライン

バッチ

オンライン

システム規模で正規化した障害頻度は？

JaSST’14 Hokkaido

システム・ソフトウェアを取り巻く状況 ITシステム・ソフトウェアは様々なステークホルダと環境に取り囲まれている※ ITアーキテクトサミット2009
日本ＩＢＭ 榊原彰技術理事 講演資料より 一部改変（「要求の変化に対応する情報システム構築技術の適用に関する調査」IPA-SEC.）JaSST’14 Hokkaido

レガシー・コントロール・ループ

把握

識別・評価

運用
新規問題
回避

改善
移行／
統合

管理

活用
エミュレート

削除

改善：利用または削減

発見

識別・評価

レガシー・コントロール・ループの中で継続して実施が必要なアクション ビジネスを変え、市場の変化に対応可能
運用

 環境の変化に応じてビジネス・オペレーションを管理可能
 他との差別化

レガシーの把握 レガシーを有効に管理するために、資産を把握します。
レガシーの移行、統合
 レガシーを新しいソフトウェアやインフラストラクチャーに移行します。
 ビジネス・モデルやビジネス・プロセスも合わせて検討します。
 クラウドやSOAを活用します。
 レガシー・コードをラップします。 (例: GUI部分の新規追加)
冗長性の除去 ビジネス的価値の高いレガシーを強化します。
 ビジネス的価値の低いレガシーを停止します。
レガシーの活用 レガシーの機能を拡張します。
 他アプリケーションのデータと連携させます。
 データのアプリケーション依存をなくします。
レガシーのエミュレート
 新しいハードウェアで古いコードをエミュレートします。
 他のビジネス・プロセスにより同等の機能を実現します。

レガシー・コントロール・ループがもたらす効果

 ビジネスに不可欠なアプリケーションの運用を強化

レガシーの発見・評価
 論理的、物理的両面からレガシーを見つけ、そのビジネス的価値を評価します。

レガシー管理 ビジネスに必要不可欠なレガシーを維持し続けます。
 レガシーを管理する資源（人的資源やハードウェア等）を強化します。
新たな問題の回避 レガシー運用計画
 レガシー管理カウンシル(「レガシー検証」への投資)※

IBM 2010 Global Technology Outlook ,Future Of Legacyより引用
JaSST’14 Hokkaido

End Of File

JaSST’14 Hokkaido