「物語」の利用は,要求工学の初期段階において,有益な情報を引き出したり,その確認をするのに役立つ.それは,物事が現状システムにおいてどう動作し,新システムにおいてどう動作すべきかの具体的な例となるからである(p.67)
ここでは,2つの方法を示している.一つは,絵コンテ(storyboard)と呼ぶ方法であり,もう一つがシナリオ(scenario)と呼ぶ方法である.
絵コンテは,ある時点のシステム状態を記述する.登場人物は,システムに関係する人たちである.絵コンテは,静的なもの.システムと登場人物の関係を記したものとなる.
いわゆる5W1Hを加えることで,よりシナリオ的になものを作ることができる.下記は,例である 1.
- 誰が,(物語の登場人物として)参加するのか
- 何が,そこでは起きるのか
- どうやって,特定のエピソード(挿話)を通して,それが起きるのか
- どうして起きるのか
- もし,あれやこれやのイベントが起きたらどうなるか
- 結果として,何かまずくなるか
これは,絵コンテを作成しながら,自分自身に問いかけるときに使うことができる.或いは,絵コンテを見ながらの質疑と考えることもできる.
3番目からは,物語的とは言いづらい.或いは,物語的かもしれないが,このままだと救いがない.ちなみに,ここでは,エピソードというのは,物語の筋と比べ,より詳細な登場人物ーシステム間のやりとりになる.
5番目は,先取りをするとユースケースにおける代替系列ないしは例外系列に相当する.これが主系列だとすると,物語としては,6のままでは終われず,続きを考える必要がある.
シナリオは,目的を達成するために,システムのコンポーネント(もちろん,そこにはユーザも含む)間で,どのような情報のやりとりがあるかを示す.時系列の流れとして示す.
シナリオには,2つの軸があるとしている.
ポジティブ vs. ネガティブ
ポジティブなシナリオとは,新システムが振る舞うべきイベントの流れを示す.会議管理システムの例だと,開催者が会議を希望する日程の範囲と場所を提示する.参加予定者が,可能な出席日を連絡する.全員参加できる日の中から,開催日を決めて,参加予定者に連絡する.そういう流れである.
一方でネガティブ流れとは,次のようなものである.ある出席者が,候補日の全てで都合が悪いとした.システムはそれを,参加者全員にフォワードし,再考を促したという流れである.特に先の例と違いはなさそうだが,プライバシーの観点から問題があるかもしれない.個人の予定を他者に通知してはいけないとすると,このシナリオは,そう動作してはいけないものとして提示されることになる.
ポジティブシナリオは,システムが振る舞うべき例として示され,ネガティブなシナリオは,システムが振る舞うべきではない例として示される.
正常 vs. 異常
正常シナリオは,普通に考えつくものである.全てが予定通りで,システムが正しく機能を実行する場合である.異常シナリオは,先の5に似ている.いわゆる,What-if (もし,〜だったら)で考える.例えば,先の会議管理システムでいえば,そもそも参加予定者が誰も返事しなかったら,と考えることである.
これを思いつくのは,とても難しい.そのため,What-ifを支援する多くの方法がある.しかし,良いプログラマにとって,異常シナリオを考えることは,慣れたことかもしれない.
(nil)
Notes:
- ここでは,WHO・WHAT・HOW・WHYしかでてこない. ↩