daisuzz.log

ロバストネス分析について

最近はドメインモデリングやコンテキストマッピングなどDDDの文脈で言う所の戦略的設計の具体的な取り組み方がよくわかっていないので、「ユースケース駆動開発実践ガイド」(以下リンク参照)を読んでいます。

今回はその中で紹介されている、ロバストネス分析について、どういうものか、なぜやるのか、どうやってやるのか、を自分の頭の整理も兼ねて書いていきたいと思います。

ロバストネス分析とは?

ロバストネス分析とは、システムのユースケースを記述した文章を基に、オブジェクトを用いた図(ロバストネス図)を作成する作業です。 ロバストネス分析を行うことによって、ユースケースを記述した文章からクラス図やシーケンス図といったUML静的モデルが作りやすくなります。

ロバストネス分析をなぜやるのか?

ロバストネス分析を行う目的は主に3つあります。

第一に、静的モデルを作りやすくすることです。書籍に詳しく解説されていますが、ロバストネス分析ICONIXプロセスというソフトウェア開発プロセスの中で使われています。ICONIXプロセスでは、ドメインモデリングユースケース作成 → ロバストネス分析UML静的モデリング→...という流れで開発をしていくので、ロバストネス分析が終わった段階でUML静的モデリングがしやすくなっていることが重要です。そのため、ロバストネス図にはユースケースが漏れなく表現されていることが要求されます。

第二に、ユースケースの記述から曖昧さをなくすことです。ロバストネス図を作成していると、うまくオブジェクトでユースケースで表現できないときや、作成したロバストネス図ユースケースを比較すると微妙に異なる表現をしているときが出てくるときがあります。こういうときは、ユースケースの記述を見直して、書き方に問題がないかをチェックします。こういったチェックをしてユースケースの記述から曖昧さをなくすことで、実際にシステムを実装した後の仕様の抜けや漏れを減らすことに繋がっていきます。

第三に、見逃していたドメインオブジェクトを発見することです。第二のユースケースの記述から曖昧さをなくすことと同様、ロバストネス図を作成していると、ユースケースの記述にはなかった語彙や概念が出てくることがあります。新しい語彙が出てきたときやより的確に表現する語彙が出てきたときは、その語彙をユビキタス言語としてドメインモデルに反映させます。こうすることで、ソフトウェアと実際の業務で使われている語彙のズレを無くしていき、メンバー同士、チーム同士の認識の齟齬が起きないようにしていきます。

ロバストネス図の作り方

ロバストネス図で登場するオブジェクト

ロバストネス図は以下の4種類のオブジェクトを使って、ユースケースを表現していきます。

  • アクター

  • バウンダリオブジェクト

  • エンティティオブジェクト

  • コントローラ

アクター

システムと対話をするオブジェクト(人間, 外部システム)です。例えば、「ユーザ」です。 アクターの名前は必ず名詞を使うようにします。 表記はUMLユースケース図と同じように棒人間で表現します。

f:id:dais39:20190519150822p:plain

バウンダリオブジェクト

システム外部との境界を表現するオブジェクトです。例えば、「ログインページ」や「申請ページ」です。 バウンダリオブジェクトの名前は必ず名詞を使うようにします。 バウンダリオブジェクトは以下のように表記します。

f:id:dais39:20190519150908p:plain

エンティティオブジェクト

ドメインモデルを表現するオブジェクトです。例えば、「アカウント情報」や「申請情報」です。 エンティティオブジェクトの名前は必ず名詞を使うようにします。 エンティティオブジェクトは以下のように表記します。

f:id:dais39:20190519151414p:plain

コントローラ

ソフトウェアの機能を表現するオブジェクトです。例えば「ID, パスワードをチェックする」「申請情報の入力チェックをする」です。 コントローラの名前は必ず動詞を使うようにします。 コントローラは以下のように表記します。

f:id:dais39:20190519151631p:plain

ロバストネス図を書いていく

書籍では他にもいくつかルールやTipsが紹介されていたのですが、まずは以下のルールや方針に則って書いていくことをおすすめします。

実際にユースケースロバストネス分析で簡単に表現したものが以下になります。

f:id:dais39:20190519154724p:plain

この例では、「Actorはログインページにアクセスする。Actorはログイン情報としてIDとパスワードを入力してログインボタンをクリックする。システムはIDとパスワードをチェックして、問題なければTOPページを表示する。ログインに失敗した場合はエラーメッセージとともにログインページを表示する。」というユースケースロバストネス図として表現してみました。

おわりに

今回はロバストネス分析について、どういうものか、なぜやるのか、どうやってやるのか、について書籍を読んで学んだことをまとめてみました。 実際にロバストネス図から静的モデルを作成するところは、まだよくわかっていないので、これからやっていきたいと思います。おわり。