企業のIT資産を最適化し、レガシーシステムを現代的なアーキテクチャへ移行させるには、既存のソフトウェアが「どのように構築され、どう動作しているか」を正確に把握することが不可欠です。Knowledge Discovery Metamodel (KDM) は、Object Management Group (OMG) が策定した公開仕様であり、既存のソフトウェアシステムとその動作環境を表現するための共通の中間表現を提供します。
KDMは、いわゆる「ソフトウェアマイニング(ソフトウェア工学における知識発見)」の手法を標準化することを目的としています。これにより、異なるベンダーのツール間でも、アプリケーション・ライフサイクル管理 (ALM) ツールにおける深い意味論的な統合が可能になります。
Key Facts
- OMGによる標準化: ソフトウェアの近代化、ITポートフォリオ管理、ソフトウェア保証のための基盤として設計された。
- 広範な表現力: 単なるソースコードだけでなく、動作環境やUI、データ構造を含むシステム全体を記述できる。
- 相互運用性の確保: MOF (Meta-Object Facility) を利用し、XMI形式でのデータ交換やAPIによるツール連携を実現する。
- 階層構造: インフラ、プログラム要素、リソース、抽象化の4つのレイヤーで構成されている。
KDMの目的と基本コンセプト
KDMの最大の目標は、システムの保守、進化、評価、そして近代化に携わるツール同士の相互運用性を確保することです。これは単なるデータ形式ではなく、エンタープライズソフトウェアの多面的な知識を記述するための「オントロジー(概念体系)」として機能します。
KDMの設計における核心的な概念は「コンテナ」です。あるエンティティが他のエンティティを所有するという構造を持つため、システムの詳細度(粒度)を柔軟に調整して表現することが可能です。また、動作の精密な意味論を定義する「micro-KDM」を備えており、これは実行可能なモデルではありませんが、静的解析を行うための高精度な中間表現として機能します。
さらに、KDMは漸進的な解析をサポートしています。最初に抽出した知識を分析し、そこからさらに深い知識を抽出してKDM形式で書き戻すという、KDM空間内での変換を繰り返すことで、システムの理解を深めていくことができます。
KDMのアーキテクチャ
KDMの仕様は、役割に応じて4つのレイヤーに整理されており、それぞれに専門的なパッケージが割り当てられています。
1. インフラストラクチャ・レイヤー (Infrastructure Layer)
すべての基盤となるレイヤーです。共通コアを提供する「Core」、既存システムのアーティファクトを管理する「kdm」、そしてメタモデルの要素から実際のソースコードまでを紐付けるトレーサビリティを確保する「Source」パッケージで構成されます。また、RDF (Resource Description Framework) との整合性も考慮されています。
2. プログラム要素レイヤー (Program Elements Layer)
ソフトウェアの内部構造と挙動を記述します。「Code」パッケージでは、クラス、メソッド、変数などのプログラミング言語に依存する要素を表現し(ISO/IEC 11404に準拠)、「Action」パッケージでは、ステートメント間の制御フローやデータフローといった低レベルの動作を捉えます。
3. リソース・レイヤー (Resource Layer)
ソフトウェアが動作する外部環境を表現します。OSやミドルウェアを扱う「Platform」、ユーザーインターフェースを記述する「UI」、イベントや状態遷移を管理する「Event」、そしてリレーショナルデータベースなどの永続データを扱う「Data」(CWM仕様に準拠)が含まれます。
4. 抽象化レイヤー (Abstractions Layer)
ドメイン知識や論理的な構造を表現します。ビジネスルールを記述する「Conceptual」(SBVRに準拠)、サブシステムやレイヤーなどの論理構成を示す「Structure」、そしてエンジニアリング視点での構成を扱う「Build」パッケージで構成されます。

KDMの仕様まとめ
KDMの構造と各レイヤーの役割を以下の表にまとめます。
| レイヤー | 主なパッケージ | 記述対象・役割 |
|---|---|---|
| インフラストラクチャ | Core, kdm, Source | 共通基盤、インベントリ管理、ソースコードへの追跡 |
| プログラム要素 | Code, Action | データ型、クラス、制御フロー、データフロー |
| リソース | Platform, UI, Event, Data | 実行環境、ユーザーインターフェース、イベント、永続データ |
| 抽象化 | Conceptual, Structure, Build | ビジネスルール、論理構成、エンジニアリングビュー |
KDMの沿革
KDMの歩みは2003年11月、OMGのArchitecture-Driven ModernizationタスクフォースによるRFP(提案依頼書)の発行から始まりました。当時の目的は、既存のソフトウェア資産を変換し、再利用可能なコンポーネントを発見したり、他の言語やMDA (Model Driven Architecture) へ移行させたりするための共通リポジトリ構造を構築することでした。
2004年から2005年にかけて、世界5カ国の30以上の組織や12社が協力して仕様策定に取り組みました。2006年5月に最終化段階に入り、2007年3月に正式な「KDM 1.0」がリリースされました。その後も改良が重ねられ、2011年7月に確定したバージョン1.3が最新の仕様となっています。
Frequently Asked Questions
KDMを導入することでどのようなメリットがありますか?
特定の言語やプラットフォームに依存しない共通表現を用いるため、異なるツール間でのデータ交換が可能になります。これにより、特定の言語に強いベンダーと、変換技術に強いベンダーが連携して、効率的なシステム近代化ソリューションを提供できるようになります。
micro-KDMとは何ですか?
KDMの中で、特にソフトウェアの「動作(挙動)」を精密に表現するためのセマンティック基盤です。仮想マシンのような役割を果たし、既存システムの静的解析を行うための高精度な中間表現として利用されます。
KDMはソースコードのみを解析するものですか?
いいえ。KDMはコードだけでなく、OSやミドルウェアなどの実行プラットフォーム、ユーザーインターフェース、データベースなどの永続データ、さらにはビジネスルールなどの抽象的な概念まで、システム全体を包括的に表現することを目的としています。
KDMの最新バージョンは何ですか?
2011年7月に最終化されたバージョン1.3が最新の仕様です。
KDMはどのようにして拡張されますか?
KDMには拡張メカニズムが備わっており、特定のドメインやアプリケーション、あるいは実装固有の知識を必要に応じて追加することが可能です。
References
- "document lt/03-11-04". Omg.org. Retrieved 2019-08-05.
- "KDM 1.0". Omg.org. 2018-08-01. Retrieved 2019-08-05.
- "Overview of the OMG Knowledge Discovery Metamodel (KDM) Spec". Kdmanalytics.com. Retrieved 2019-08-05.