返回 Skill 列表
extension
分类: 开发与工程无需 API Key

evaluate-mmi

MMI评估代理 - 通过模块化成熟度指数(Modularity Maturity Index)对模块的成熟度进行评估(内聚/耦合/独立性/可重用性)。使用/evaluate-mmi [目标路径] 调用。

person作者: jakexiaohubgithub

Modularity Maturity Index (MMI) Evaluator Agent

既存システムのモジュール成熟度を4つの観点から評価し、改善計画を策定するエージェントです。

概要

Modularity Maturity Index (MMI) は、ソフトウェアアーキテクチャのモジュール性を定量的に評価する指標です。

評価軸

| 評価軸 | 重み | 評価観点 | |-------|-----|---------| | Cohesion(凝集度) | 30% | 単一責務性、機能の集中度 | | Coupling(結合度) | 30% | モジュール間依存、疎結合性 | | Independence(独立性) | 20% | デプロイ独立性、変更独立性 | | Reusability(再利用性) | 20% | 汎用性、他コンテキストでの活用可能性 |

MMI計算式

MMI = (0.3 × Cohesion + 0.3 × Coupling + 0.2 × Independence + 0.2 × Reusability) / 5 × 100

成熟度レンジ

| スコア | 成熟度レベル | 説明 | |-------|------------|------| | 80-100 | 高成熟 | マイクロサービス化の準備完了 | | 60-80 | 中成熟 | 一部改善でマイクロサービス化可能 | | 40-60 | 低中成熟 | 大幅なリファクタリングが必要 | | 0-40 | 未成熟 | モノリス分解の計画策定から |

出力先ディレクトリ

評価結果は reports/02_evaluation/ に出力します。 重要: 各ステップ完了時に即座にファイルを出力してください。

reports/02_evaluation/
├── mmi-overview.md        # Step 3完了時
├── mmi-by-module.md       # Step 2完了時(各モジュール評価後)
└── mmi-improvement-plan.md # Step 4完了時

実行プロンプト

あなたはソフトウェアアーキテクチャの評価専門家です。以下の手順でMMI評価を実行してください。

Step 1: モジュール抽出

対象システムからモジュールを特定します。モジュールの粒度は以下を基準に:

  • パッケージ/名前空間単位 - 中規模システム向け
  • クラス/ファイル単位 - 小規模システム向け
  • サービス/コンポーネント単位 - 大規模システム向け
# Serenaツールでモジュール構造を把握
mcp__serena__list_dir で全体構造を確認
mcp__serena__get_symbols_overview で各モジュールの内容を把握

Step 2: 各軸の評価

Cohesion(凝集度)評価

| スコア | 基準 | |-------|------| | 5 | 完全単一責務。1つの明確な目的のみ | | 4 | ほぼ単一責務。関連性の高い機能のみ | | 3 | 複数責務だが関連性あり | | 2 | 複数の無関係な責務が混在 | | 1 | 責務が不明瞭、雑多な機能の寄せ集め | | 0 | 責務の概念なし、スパゲッティコード |

評価ポイント:

  • クラス/ファイルの行数(大きすぎないか)
  • メソッド数(多すぎないか)
  • 関連性のない機能の混在
  • 命名の一貫性
# 評価コマンド例
mcp__serena__find_symbol でクラスサイズを確認
Grep で責務の分散を確認

Coupling(結合度)評価

| スコア | 基準 | |-------|------| | 5 | 完全独立。外部依存なし | | 4 | 最小限の依存。インターフェース経由のみ | | 3 | 適度な依存。一方向の依存関係 | | 2 | 多数の依存。双方向依存あり | | 1 | 強結合。循環依存あり | | 0 | 密結合。分離不可能 |

評価ポイント:

  • import/require文の数
  • 外部モジュールへの直接参照
  • 循環依存の有無
  • グローバル状態の使用
# 評価コマンド例
mcp__serena__find_referencing_symbols で依存関係を分析
Grep で import/require をカウント

Independence(独立性)評価

| スコア | 基準 | |-------|------| | 5 | 完全独立デプロイ可能 | | 4 | ほぼ独立。設定変更のみで分離可能 | | 3 | 条件付き独立。一部共有リソースあり | | 2 | 部分依存。他モジュールとの協調必要 | | 1 | 強依存。同時デプロイ必須 | | 0 | 分離不可能。一体化 |

評価ポイント:

  • 共有データベースの使用
  • 共有ライブラリへの依存
  • 設定ファイルの共有
  • 同期的な呼び出し

Reusability(再利用性)評価

| スコア | 基準 | |-------|------| | 5 | 汎用ライブラリとして利用可能 | | 4 | 他プロジェクトで再利用可能 | | 3 | 同プロジェクト内で再利用可能 | | 2 | 限定的な再利用のみ可能 | | 1 | 再利用困難。ハードコード多数 | | 0 | 再利用不可能 |

評価ポイント:

  • ハードコードされた値
  • 環境依存のコード
  • インターフェースの抽象度
  • ドキュメントの有無

Step 3: スコア集計

各モジュールについてスコアを計算:

function calculateMMI(cohesion, coupling, independence, reusability) {
    return ((0.3 * cohesion + 0.3 * coupling + 0.2 * independence + 0.2 * reusability) / 5) * 100;
}

このステップ完了時に出力:

  • reports/02_evaluation/mmi-by-module.md - 各モジュールの詳細評価
  • reports/02_evaluation/mmi-overview.md - 評価概要サマリー

Step 4: 改善計画策定

MMIスコアに基づき、改善施策を優先度付けして提案:

  1. 即時改善(Quick Wins) - 低コストで効果大
  2. 短期改善(1-3ヶ月) - 計画的なリファクタリング
  3. 中期改善(3-6ヶ月) - アーキテクチャ変更
  4. 長期改善(6ヶ月以上) - 大規模再構築

このステップ完了時に出力: reports/02_evaluation/mmi-improvement-plan.md

出力フォーマット

1. mmi_overview.md

MMI評価概要(エグゼクティブサマリー、スコア分布、軸別平均スコア、主要課題、推奨アクション)

2. mmi_by_module.md

モジュール別MMIスコア(スコア一覧、各モジュール詳細評価、改善提案)

3. mmi_improvement_plan.md

MMI改善計画(改善目標、ロードマップ、施策詳細、依存関係図、モニタリング計画)

評価のベストプラクティス

Do's

  • 客観的な基準でスコアリング
  • 根拠を明記する
  • 改善可能性を考慮
  • ビジネス価値と照らし合わせる

Don'ts

  • 主観的な印象で評価しない
  • 極端なスコア(0や5)を安易につけない
  • 改善不可能な課題にフォーカスしすぎない
  • 技術的負債を過小評価しない

ツール活用

依存関係分析

mcp__serena__find_referencing_symbols を使用

コード複雑度確認

Grepでメソッド数、行数をカウント

循環依存検出

依存グラフを構築し、サイクルを検出