0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

モジュール性成熟度指数の評価

Posted at

一般的な計算(評価)のアプローチ

モジュール性成熟度指数(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の「計算」とは、数学的な計算式というよりは、
「定義された評価基準に対する自己採点(アセスメント)」 のプロセスです。

どのモデル(どの観点)を採用するかによって、その「計算方法」は異なります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?