ICONIXについて
ICONIX(アイコニクス)とは
ICONIX(ICONIXプロセス)とは
ICONIXとは、Doug Rosenberg(ダグ・ローゼンバーグ)氏によって開発された、ユースケース駆動開発型のソフトウェア開発方法論です。
Rosenberg氏の著書である「Applying Use Case Driven Object Modeling With Uml: An Annotated E-Commerce Example(2001年刊行)」と「Use Case Driven Object Modeling with UML: Theory and Practice(2007年刊行:ユースケース駆動開発実践ガイド)」でICONIXプロセスが提唱され、ソフトウェア開発のためのUMLモデリング手法として広まりました。
また、2005年に刊行された「Agile Development with ICONIX Process」では、アジャイルプロジェクトにおけるICONIXプロセスの使い方が提唱されています。
ICONIXプロセスの概要
ICONIXプロセスは、ユースケースを起点とする「動的モデル」と、ドメインモデルを起点とする「静的モデル」を関連付けながら、コードに落とし込んでいく開発手法です。
動的モデルでは、システムの要求をUMLユースケース図で可視化し、ロバストネス図を使用してシステムの動的な振る舞いを明確にしながら、ユースケースの修正を重ねていきます。
そして、ユースケース図とロバストネス図を基に作成したシーケンス図にその振る舞いを割り当てます。
静的モデルでは、ドメインモデルのブラッシュアップを重ねて、クラス図を作成します。
システムの要求を満たすモデルを完成させて、そこからプログラムの実装・テストを実施して開発を完了させます。
ICONIXプロセスの具体的な流れ
ICONIXプロセスは下記の流れで開発を進めていきます。
なお、ICONIXプロセスでは、前フェーズへの手戻り を許容しています。
最初から完全性を求めず、プロセスの中で何度も修正してブラッシュアップしていく点が特徴的な開発手法です。
- ドメインモデリング(要求定義)
- 開発をする範囲(ドメイン)を認識してドメインモデル(プロジェクトの用語集)を作成します。
- ユースケースモデリング(要求定義)
- 顧客の要求とシステムの振る舞いを分析して、要求仕様(ユースケース)を定義します。
- ロバストネス分析(分析と予備設計)
- ユースケースの曖昧性を除去するためのロバストネス分析を行い、分析と設計の間にあるギャップを認識します。
- シーケンス図の作成(詳細設計)
- ユースケース図、ロバストネス図で定めたオブジェクトに対して、シーケンス図にシステムの振る舞いを割り当てます。
- クラス図の作成(詳細設計)
- ドメインモデル図とシーケンス図からクラス図を作成します。これは詳細設計のアウトプットとなります。
- 実装
- 完成させたモデルから、プログラムコードを生成します。
- テスト
- ロバストネス図のコントロールオブジェクトをそのままテストケースとすることが出来ます。
ドメインモデリング
ドメインモデリングとは
ドメインモデリングとは、システムに関する業務知識(ドメイン)を簡潔に整理(要約・モデル化)し、その関係性を明らかにすることです。
ドメインモデリングの成果物は、ドメインモデルであり、これはシステム化する対象とその関係性を表現した用語集(ユビキタス言語)となります。
ドメインモデルを作成することで、メンバー内でドメインに対する認識を合わせ、ドメインに対する理解を深めることができます。
ユビキタス言語とは
ユビキタス言語とは、ドメインに対して、同じ言葉を使い、同じモノを認識するための定義のことを指します。
ユビキタス (ubiquitous)とは、遍在(いつでもどこでも存在すること)という意味です。
ユビキタス言語を使うことで、プロジェクト専用の言語をメンバーで共通認識することができ、円滑にコミュニケーションが行えます。
ドメインモデリングの注意点
最初に作成したドメインモデルは完全である必要はありません。最初は2時間以内の作成が推奨されています。
ドメインモデルは、その後の開発プロセスの中で何度も修正され、ブラッシュアップされていきます。
まずは全体を網羅していき、属性や振る舞いは記述せず、シンプルなドメイン名のみでモデリングを行います。
ユースケースモデリング
ユースケースモデリングとは
ユースケースモデリングとは、ドメインモデルを元にして、「ユースケース図」と「ユースケース記述」を作成することです
ここで重要なのは、ユースケースはドメインモデルの用語を用いて記述する点です。
もし、ユースケースがドメインオブジェクトと紐づいていなければ、ユースケース駆動になりません。
ユースケース記述とは
ユースケース記述とは、そのユースケースが具体的にどのように振る舞うかを説明したものです。
ユースケース図1つにつき、1つのユースケース記述を作成します。
なお、ユースケース記述はシステム開発者以外の人やエンドユーザーでも理解できるような書き方が望ましいです。
ドメインモデルの改良
ユースケース分析を行いながら、ドメインモデルも反復的に改良していきます。
ユースケースモデリングの中でドメインモデルに登場しない用語が出てきた場合、その必要性を検討して、ドメインモデルを更新します。
ロバストネス分析(Robustness Analysis)
ロバストネス分析とは
ロバストネス分析とは、ユースケースモデルから、ロバストネス図を作成して分析する手法です。
具体的には、ユースケースを処理ステップごとに分解して、それぞれを分析(詳細設計前に実施する予備設計)します。
この分析により、ユースケースの不足、仕様漏れなどを発見できるため、要求モデル(ドメインモデルとユースケースモデル)を「堅牢」にすることができます。
ロバストネス(Robustness)とは
ロバストネスとは「堅牢性」、外部要因によって影響されにくい性質、という意味です。
ロバストネス分析における「堅牢性」とは、再度分析を実施しても同じ結論を得られることを意味します。
つまり、ユースケースの曖昧性を除去し、分析と設計の間にあるギャップを埋めて、要求モデルを堅牢にすることを示します。
ロバストネス図 (Robustness Model) とは
ロバストネス図とは、ユースケースに示された振る舞いを図式化したものです。
ロバストネス図とユースケース記述には1対1の相関関係があり、漏れなく表現されていることが要求されます。
もしも作図できないケースがあるならば、それは検討漏れであるため、再度要求モデルを見直して分析を再開します。
ロバストネス図で登場するオブジェクト
ロバストネス図は以下の4種類のオブジェクトを使って、ユースケースを表現していきます。
名前 | 記号 | 説明 |
---|---|---|
アクター |
システムと対話をするオブジェクト(人間、外部システム)です。 名詞で表現すること。 | |
バウンダリオブジェクト(boundary) |
システムとシステム外部の境界を示すインターフェースです。 具体的には、画面、HTMLページ、システムインターフェースなどが該当します。 名詞で表現すること。 | |
エンティティオブジェクト(entity) |
ドメインモデルを表現するオブジェクトです。 具体的には、データ(DB、ファイルなど)や情報などが該当します。 名詞で表現すること。 | |
コントローラ(controller ) |
バウンダリとエンティティを繋ぐ役割を持ち、各要素とその相互作用を管理するオブジェクトです。 具体的には、システムの処理やソフトウェアの機能が該当します。 動詞で表現すること。 |
ロバストネス図の例
ログイン処理を表現したロバストネス図です。
初回のロバストネス図は簡素な図となりますが、例えば認証処理をより詳細化してユースケースを更新した場合には、ロバストネス図もより詳細化していきます。
ブラッシュアップを重ねていき、要求モデルを堅牢にしていきます。