一般的な計算(評価)のアプローチ
モジュール性成熟度指数(Modularity Maturity Index - MMI)には、業界標準として統一された単一の計算式はありません。
これは、2+2=4のように数値を当てはめて計算する単一の指標ではなく、多くの場合、特定のモデルやフレームワークに基づいた評価(アセスメント)によって決定される「成熟度レベル」または「スコア」 です。
MMIは、CMMI(能力成熟度モデル統合)のように、あらかじめ定義された
複数の「観点」と「成熟度レベル」 のマトリクスに対して、現在のアーキテクチャがどの段階にあるかを評価(採点)することで算出されます。
ステップ1:成熟度レベルの定義
まず、モデルはモジュール性の成熟度をいくつかのレベル(例:レベル0〜5)に定義します。
レベル0 (Ad-Hoc)
完全にモノリシック。コードは密結合で絡み合っている(スパゲッティコード)。
レベル1 (Aware)
モジュール化の必要性を認識し、一部で論理的な分離を試みている。
レベル2 (Defined)
モジュール間のインターフェースが定義され、依存関係が管理され始めている。
レベル3 (Managed)
モジュールが独立してビルド・テスト可能。凝集原則(CCP, CRPなど)が適用されている。
レベル4 (Independent)
モジュールが独立してデプロイ可能(マイクロサービスなど)。ドメイン境界が明確。
レベル5 (Optimizing)
モジュール間の連携がイベント駆動などで疎結合化され、全体のレジリエンスが高い。
ステップ2:評価観点(ディメンション)の定義
次に、「モジュール性」を測るための評価観点(ディメンション)を定義します。
結合度 (Coupling)
モジュール間の依存関係はどれだけ疎か?(例:同期通信か、非同期か)
凝集度 (Cohesion)
1つのモジュールは、単一の責務(CCPなど)に集中しているか?
インターフェース (Interface)
インターフェースは明確に定義され、安定しているか?(OCPなど)
データ独立性 (Data Decoupling)
各モジュールは自身のデータを所有し、DBを共有していないか?
テスト容易性 (Testability)
モジュールを独立してテストできるか?
デプロイ独立性 (Deployability)
モジュールを他のモジュールと無関係にデプロイできるか?
可観測性 (Observability)
モジュールの振る舞いは外部から観測可能か?
ステップ3: 評価(計算)の実行
「計算」とは、これらの観点(ステップ2)が、各レベル(ステップ1)の基準を満たしているかを 採点(スコアリング) するプロセスです。
例(レベル3の基準)
「すべてのモジュールが独立したCIパイプラインを持つ」
例の評価
20モジュール中、10モジュールしか持っていない → スコア: 50%
すべての観点で採点を行い、その総合スコアや平均レベルに基づいて、
「我々のアーキテクチャのMMIはレベル2.5である」
といった形で 現在の成熟度を「指数化」 します。
結論
MMIの「計算」とは、数学的な計算式というよりは、
「定義された評価基準に対する自己採点(アセスメント)」 のプロセスです。
どのモデル(どの観点)を採用するかによって、その「計算方法」は異なります。