4. Improve Your Architecture with the Modularity Maturity Index
モジュール性成熟度指数 (Modularity Maturity Index: MMI)を用いて、ソフトウェアシステムの技術的負債の量を計測。
解決すべき技術的負債を見つけ、アーキテクチャを持続可能なものにし、メンテナンスのコストを削減する。
4.1 Technical Debt
2つのタイプの技術的負債。実装上の負債と設計とアーキテクチャの負債。
実装上の負債は、いわゆる不吉な匂いのコード。自動化された方法で検出可能
設計とアーキテクチャの負債は、クラスやパッケージ、それらの依存関係に一貫性がなく複雑でアーキテクチャとマッチしない。広範なアーキテクチャのレビューが必要。
4.2 Origination of Technical Debt
ソフトウェア開発は絶え間のない学習プロセスであり、ソリューションが最初から正解であることは稀である。
システムを拡張していくと必然的に技術的負債が発生する。メンテナンス/変更とアーキテクチャ改善を繰り返し続けなければならない。
アーキテクチャ侵食で負債が大きくなったら、リファクタリングによって保守コストが低い状態に戻すか、別のソフトウェアへのリプレイスが必要。
4.3 Assessment with the MMI
モジュール性成熟度指数 (Modularity Maturity Index: MMI)は、モジュール性、階層性、パターン一貫性の3原則に基づいたメトリクスによって技術的負債の状態を評価する。
4.4 Modularity
高凝縮疎結合、プログラム要素の責務、大規模クラス/メソッド/パッケージの評価
4.5 Hierarchy
クラス循環、パッケージ循環、モジュール循環、レイヤードアーキテクチャ違反の評価
4.6 Pattern Consistency
パターンが損zないし、それがソースコードの中で見つけやすく、一貫して使用されているかの評価
4.7 Calculating the MMI
3つの原則に基づいた指標を定義。0-10の範囲で達成割合を決めてどこに当てはまるかを評価。
- 8-10は技術的負債の割合が低い
- 4-8は技術的負債を抱えているのでリファクタリングが必要
- 4いかが多大な労力をかけなければ保守・拡張ができない。リファクタリングをすべきかリプレースすべきかを慎重に判断
4.8 Architecture Review to Determine the MMI
技術的負債を特定するためのアーキテクチャ分析の流れ
- システムのソースコードを解析ツールで解析して実アーキテクチャを記録
- 解析ツールで目標アーキテクチャと実アーキテクチャを比較
- 可視化された問題に対しての解決策を見つける
- 技術的負債とリファクタリングの可能性をリストアップ
- 解析ツールのいろんなメトリクスを調べてより多くの技術的負債を見つける