モデリング成熟度

UML/MDAのためのオブジェクト制約言語OCL 第2版 pp. 9 - 13で述べられていたモデリング成熟度(MML, Modeling Maturity Level)が興味具かかったので転載(一部、next49の省略あり)。

なお、ここで用いられている「コーディング」という意味は「(どのような形式であれ)アプリケーションに関する知識と決定から実行可能なプログラミング言語のコードへの最終的な変換」と定義されている。このコーディングを行う人がコーダ。

第0段階:仕様が存在しない

ソフトウェアの仕様が頭の中だけに存在する。誰かが何を開発すべきかについて単に思いつき、それについて何も記述せずに話をする。

  • 開発者同士の間や、開発者とユーザの間にしばしば意見の対立が発生する
  • 小規模アプリケーションの開発には向いているが、大規模で複雑なアプリケーションの場合にはコーディングの前に設計が必要
  • コーダが去ってしまうとコードを理解することが不可能
  • 多くの選択がコーダのその場しのぎの方法で行われている

第1段階:文字を用いる

ソフトウェアの仕様は自然言語を用いた文書として提供される。書式や書き方、説明の詳細度はバラバラな状態。職業ソフトウェア開発の最低段階。

  • 自然言語が本質的にあいまいであるので、仕様もあいまいである
  • コーダは自分の文書に対する個人的な解釈に基づいてビジネス上の決定を行う(next49:他人に読ませることを想定していない?)
  • コードが変更された後で使用を最新の状態に保つことは不可能である

第2段階:図を伴った文書

ソフトウェアの仕様は、全体のアーキテクチャや複雑な詳細を説明するための高水準の図で補強された、自然言語を用いた文書として提供される。

  • 図によって理解しやすくなっている
  • 第1段階の特徴がまだそのまま残っている

第3段階:文書を伴ったモデル

ソフトウェアの仕様は、モデルの集合(とても明確でよく定義された意味を持つ図や文書)で構成されている。付加的な自然言語の文書によって、モデルの背景や動機が説明されており、多くの詳細が記述されているが、モデルが設計や分析の成果物の重要な部分を占めている。

  • 図や形式的な文書がソフトウェアの真の表現である
  • モデルからコードへの変換がほとんど手作業で行われる。
  • まだ、コードが変更された後で使用を最新の状態に保つことは不可能(またはとても困難)である。
  • まだ、コーダがビジネス上の決定を行っているが、システムアーキテクチャに及ぼす影響は少ない。

第4段階:精確なモデル

ソフトウェアの仕様は、とても明確でよく定義された意味を持つ文書や図に矛盾がなく首尾一貫した集合であるという意味でのモデルで記述される。ここでも、モデルの背景や動機を説明するコメントを追加するための自然言語の文書が用いられている。この段階のモデルは、実際のコードと直接リンクを持つことができるほど精確である。しかし、モデルとコードは異なる抽象度を持っている。モデルは、図で表現されたモデリングの言語と言う概念以上のものとなっている。

  • コーダはビジネス上の決定を行わない
  • モデルとコードを最新の状態に保つことは本質であり容易である
  • モデルからコードへの直接の変換により、繰り返しやインクリメンタルな開発が促進される

モデル駆動アーキテクチャMDA, Model Driven Architecture)のゴールとするレベル。

第5段階:モデルだけ

この段階のモデルは、完全で、矛盾がなく、詳細で、正確なシステムの記述となる。この段階では、モデルからのコード生成が完璧にできる。モデルを作成した段階でコーディングも終了という状態。今だ実現されていない究極のゴール。

おわりに

私のモデリング成熟度レベルは1。研究室の学生が卒論や修論で開発するソフトウェアの場合の成熟度レベルは0という状態。何とか私を含めてモデリング成熟度2へ到達したい。