要件定義にまつわる問題と その解決に向けて ver. 1.0 V e r si o n 1 . 0 要 件 定 義 に ま つ わる 問 題 と そ の 解 決 に 向 け て 要件定義にまつわる問題と その解決に向けて この資料の内容 ソフトウェア開発プロセスと要件定義 この資料で取り扱う要件定義の、ソフトウェア開発全体における位置付けと範囲について説 明します。 要件定義の目標 この資料が扱う主題である要件定義の目指すべき完成像について説明します。 要件定義にまつわる問題 要件定義の作業を進める現場で多く見られる事例を紹介しながら、そこにある問題と原因を 考察し、前のセクションで説明した要件定義の完成像との関係を説明します。 要件定義に求められるもの 要件定義に不可欠な、表現力、網羅性、整合性、基本コンセプトのそれぞれについて、そ の理由や背景について説明します。 リレーションシップ駆動要件分析(RDRA) 以上の課題の解決や目標を達成する上で有効な要件分析手法として、当社が提唱してい る「リレーションシップ駆動要件分析」の概要を説明します。 まとめ 資料全体の結論をまとめます。 1 V e r si o n 1 . 0 要 件 定 義 に ま つ わる 問 題 と そ の 解 決 に 向 け て この資料の内容 .....................................................................................................1 ソフトウェア開発プロセスと要件定義 ........................................................................ 1 要件定義の目標 ..................................................................................................... 1 要件定義にまつわる問題 ........................................................................................ 1 要件定義に求められるもの...................................................................................... 1 リレーションシップ駆動要件分析(RDRA)................................................................ 1 まとめ ..................................................................................................................... 1 1. ソフトウェア開発プロセスと要件定義 ....................................................................3 2. 要件定義の目標 .................................................................................................4 3. 要件定義にまつわる問題 ....................................................................................5 3-1. 要件定義で多く見られる事象 ........................................................................... 5 3-1-1. 全体像が見えてこない .............................................................................. 5 3-1-2. 顧客との打合せをリードできない ............................................................... 7 3-1-3. まとまらない会議....................................................................................... 8 3-1-4. シーズ中心 ............................................................................................... 9 3-1-5. 議論がすぐに袋小路に入る ..................................................................... 10 3-2. 問題と原因の整理 ......................................................................................... 11 4. 要件定義に求められるもの................................................................................13 4-1. 表現力と UML .............................................................................................. 13 4-1-1. 複雑な要求の分析 .................................................................................. 14 4-1-2. 顧客との打合せ ...................................................................................... 14 4-1-3. 合意形成 ................................................................................................ 14 4-1-4. 基本コンセプトの検討.............................................................................. 14 4-2. 網羅性........................................................................................................... 15 4-3. 整合性........................................................................................................... 15 4-4. 基本コンセプト ............................................................................................... 15 5. リレーションシップ駆動要件分析 (RDRA)...........................................................17 5-1. 要件定義をうまく進めるには........................................................................... 17 5-2. 基本ダイヤグラム........................................................................................... 18 5-2-1. システム価値 .......................................................................................... 19 5-2-2. システム外部環境 ................................................................................... 19 5-2-3. システム境界 .......................................................................................... 20 5-2-4. システム ................................................................................................. 21 5-3. 関係ダイヤグラム........................................................................................... 22 5-3-1. システム外部環境の関係ダイヤグラム .................................................... 22 5-3-2. システム境界の関係ダイヤグラム............................................................ 23 5-3-3. システムに関する関係ダイヤグラム......................................................... 23 5-4. トレーサビリティチェック .................................................................................. 24 まとめ ..................................................................................................................25 2 V e r si o n 1 . 0 要 件 定 義 に ま つ わる 問 題 と そ の 解 決 に 向 け て 1. ソフトウェア開発プロセスと要件定義 ソフトウェア開発という活動は、一般に右図の ような作業プロセスで構成されます。 開発するソフトウェアには、顧客またはエンド ユーザーが抱えている問題を解決したり、ある いは必要としている何らかの機能を満たすこと が求められます。 この目的を果たすために、まず対象となる業 務を分析して、IT を有効に活用したビジネスの 手法や価値を明確にする必要があります。これ がビジネスモデリングです。 ビジネスモデリング 要件定義 分析 アーキテクチャ構築 設計/実装/テスト 結合/導入テスト 導入 業務の内容が把握できたら、今度はその 図 1:一般的な開発工程 業務に現状どのような問題があり、どのよう に解決することが望まれているのかを洗い 出し、さらに、そのためにソフトウェアがどのような機能を提供する必要があるのか、ということを 定義する必要があります。また、システムとして問題をどのように実現するのかというアーキテク チャの観点から出される要求もあります。こうして出された要求は、最終的にソフトウェアの仕 様に反映されることになります。 このように、ソフトウェア仕様の原点となる要求事項を洗い出し、整理していく活動が要件定 義です。要件定義は、完成したソフトウェアの価値を左右する非常に重要なプロセスであると いえます。 この資料では、ソフトウェア開発におけるこの要件定義の部分を扱います。要件定義におい て一般によく見られる問題点とその原因を考察を示し、問題を解決する一つの答えとして当社 が提唱しているリレーションシップ駆動要件分析(RDRA)の手法について説明します。 3 V e r si o n 1 . 0 要 件 定 義 に ま つ わる 問 題 と そ の 解 決 に 向 け て 2. 要件定義の目標 要件定義に取り組むにあたっては、まず、その目標を理解すると共に、最終成果物のイメー ジを把握しておくことが重要です。 要件定義とは、その言葉どおり、システムに必要な条件を定義することです。しかし、個々の 条件を列挙することが要件定義の本質ではありません。本当に重要なことは、これから作って いくシステムの基本コンセプトを語ることにあります。個々の要件は、そのコンセプトを具現化 するための手段とそこで必要となる条件を表したもので、いわばコンセプトを表現するための 手段と捉えることもできます。要件を一つ一つ定義していくことによって、システムの価値の根 源となるコンセプトの輪郭を浮かび上がらせるわけです。個々の要件を洗い出していく中で、 システムの基本コンセプトを明確に打ち出すこと、それが要件定義の本質的かつ最も重要な 目標です。 ただし、要件を洗い出して列挙するだけで自動的に基本コンセプトが明確になるわけでは ありません。むしろ反対に、そうした目標を達成できるように要件の洗い出しを行うことが重要 です。 明確なコンセプトに基づいて各要件が適切に洗い出された要件定義は、次の3つの特性を 兼ね備えていると考えます。 * 網羅性:コンセプトの具現に必要な要件がもれ、重複なく示されている * 整合性:各要件が基本コンセプトおよび他の要件と整合したものになっている * 表現力:それぞれの要件がわかりやすく表現されている 合 性 整 上の説明だけでは、これら3つの特性がな ぜ重要なのかがよく理解できないかもしれま せん。そこで次のセクションでは、要件定義 において多く見られる事例を見ながら、これ ら3つの特性が重要な理由について説明し ていくことにします。 分析 抽象化 性 羅 網 こうした特性を持つ成果物によってシステ ムの明確なコンセプトが語られること、あるい はそのような成果物を作っていく過程でコン セプトを打ち出していくことが、要件定義とい う活動の目標です。 具象化 基本 コンセプト 表 現 力 図 2:要件定義に求められるもの 4 V e r si o n 1 . 0 要 件 定 義 に ま つ わる 問 題 と そ の 解 決 に 向 け て 3. 要件定義にまつわる問題 3-1. 要件定義で多く見られる事象 前述のように、要件定義においては、まずシステムの明確な基本コンセプトがあること、加え てそれを網羅性、整合性、表現力という3つの特性を兼ね備えた成果物として表現することが 重要です。これらのいずれが欠けていても、要件定義の活動で問題が発生することになります。 以下、こうした事例を見ながら、上記の要素が重要な理由を考えてみましょう。 3-1-1. 全体像が見えてこない 次の図は、新しいソフトウェアの開発、既存製品への新機能の追加などを目的として立ち上 げられたプロジェクトで多く見られる状況を表しています。 図 3:方向性のない作業 要求の整理、既存システムの調査、問題解決策の検討など、一見、彼らは妥当な作業をし ているように見えます。各担当者の作業成果が提出され、プロジェクトで作成したドキュメント の量も順調に増えていきます。成果物ができ上がっていく様子を見たマネージャも、プロジェ クトは問題なく進行していると考えているようです。 こうした作業を一ヶ月も続けると、膨大な量のドキュメントが完成します。しかし、いくらドキュ メントを作っても、いっこうにシステムの全体像が見えてきません。やがてプロジェクトのメンバ ーは、「こんな資料を作って一体何の役に立つのだろうか?」という疑問を抱き始めるようにな ります。このように、実態としては、着手できる作業をとりあえず先に進めているだけなのに、あ たかも要件定義をしているような「つもり」になっているプロジェクトを多く見かけます。 この問題の原因は、要件定義として最終的に完成させる成果物の全体像が見えていないこ とと、その目標に向けて要件をまとめていく思考の枠組みがないところにあります。 要件定義では、全体の整合性を保ちながら相互に関連しあう要件を網羅的に表現する必 要があります。ここに適切な仕事の進め方のヒントがあります。つまり、網羅性によって必要な 情報の枠組みが決まり、整合性を求めることから作業手順が見えてくることになるのです。網 羅性、整合性を意識した成果物の目標を持たずに、機械的に担当を割り振って個人レベルの 5 V e r si o n 1 . 0 要 件 定 義 に ま つ わる 問 題 と そ の 解 決 に 向 け て 作業に突入してしまうと、この事例のように、出てくる成果物は方向性のないものとなり、それら を集めてみてもシステムの全体像は浮かび上がってこないのです。 6 V e r si o n 1 . 0 要 件 定 義 に ま つ わる 問 題 と そ の 解 決 に 向 け て 3-1-2. 顧客との打合せをリードできない ソフトウェア開発の上流工程では、関係者との打合せを通じて要望や意見を収集および分 析し、加えて様々なアイデアを出しながら、要件定義の完成という目標に導いていかなければ なりません。最初から答えが自明であるような場合を除き、単に人間が集まって意見を出しあう だけで方向性が自然に定まることはありませんから、関係者が納得するシステムの全体像をイ メージした上で、戦略的に打合せをリードしていくことが重要になります。ただし、それは必ず しも容易なことではありません。 開発者側で打合せをリードすることの難しさは今に始まったことではありませんが、近年その 度合いがますます高まっているように思われます。ひとつの背景としては、開発者側にスキル と経験が不足していること、具体的には、プロジェクトを最初から最後まで経験したことのない 技術者に要件定義が任されるケースが多くなっていることがあります。たとえば、システムの保 守を中心に仕事をしてきた人が年齢的な理由でプロジェクトリーダーとなり、そのまま要件定義 を担うようになった事例や、ユーザ企業のシステム部門が要件をとりまとめる事例、あるいは、 大手 SIer の担当者でシステム構築の実経験のない人間が要件定義を行っている事例などが 挙げられます。 このような例では、経験不足の担当者が要求をどう組み立てれば良いのかが分からず、教 科書的な手順(最初に業務フローを書き、次に XXX を作成し、・・・)に基づいてを漫然と作業 を進めている状況が多く見られます。 図 4:顧客をリードできない会議s このようなやり方ではユーザに説得力のある提案ができず、会議のイニシアチブを握ること も難しくなります。プロジェクトを混乱させないためにも、総合的に見て妥当と思われる提案を あらかじめ用意し、会議の場で積極的に示していくことで、議論を適切な方向に導いていく必 要があります。そのためには、システム開発全般についての知識と構想力、アイデアを積極的 に提示していく行動力、そして考えを人に伝える表現力が必要です。 開発者側主導で要件定義を提案し、それを関係者が納得して受け入れる状況を作るには、 その内容がわかりやすい形で表現されていることが大前提となります。関係者が納得できるよ うに提案を検討し、UML などの図でわかりやすく表現した資料を用意しておくことで、提案ベ ースで会議をリードしやすくなり、そうすることで、顧客の多様な要望による会議の混乱を防ぐ ことにつながります。高い表現力によって内容の理解が深まれば、参加者の思考が活性化さ れ、より発展的に議論を展開させることも可能になります。要件定義の資料にはその元となる 表現力が必要なのです。 7 V e r si o n 1 . 0 要 件 定 義 に ま つ わる 問 題 と そ の 解 決 に 向 け て 3-1-3. まとまらない会議 下記は、ある開発会議でのやりとりです。 1 月 10 日 Aさん「私は新しい製品に Web サービスの機能を入れるのが良いと思う。なぜなら・・・」 B さん「これからはリッチクライアントが主流になると思う、そうすることで Web 系のシステムと違いが 出せる。」 C さん「私は現在の製品に XXX の問題があるから、それを解決するために YYY の機能を入れるの が良いと思う。」 今日のところは最初の会議でもあり各自の意見(イメージ)を言って終わる。 1 月 13 日 Aさん「最近読んだ本におもしろい記事があって、我々が開発するシステムもその技術を採用するの がいいと思う。」 Bさん「大手ベンダーの XXX が最近 SHT を提唱している。今後はそれが主流になるから我々もそ れでいこう。」 Cさん「営業が今の製品で苦労している部分から DDD を改善した機能があるのがいいな。」 2 月 10 日 Bさん「やはり製品開発にはビジョンが大切だから今日はビジョンを考えてきたよ。プロジェクトがスタ ートして1ヶ月経過したけど、そろそろ基本的な機能だけでもまとめたいんだけど・・・。」 上記の開発会議の流れを見ていると、以下のような傾向が読み取れます。 * Aさんは新しい技術に興味がある * る Bさんは新しい製品は既存のものにない新規性を強く打ち出したいと考えてい * Cさん現状の問題やその改善に関心が向いている これは、実際よく見かける風景です。メンバーの意識も高そうですし、具体的に作業を始め ています。しかし、しばらくすると、会議に参加しているメンバーは一ヶ月前から議論が何も前 進していないと感じ始めます。最初は高かった意識も徐々に低下していきます。 やりとりを見直してみると、毎回の会議で、全体の合意が何も取り交わされていないことがわ かります。各人がただ言いたいことを言って終わっているようにも見えます。本来、会議の目的 はメンバー間でアイデアを共有し、その上で合意を形成していくことですが、それを行わない まま形式的にいくら会議を繰り返しても、議論が収束することはありません。 会議を実りあるものにするには、何を合意するのかという目的を明確にすることと、その合意 を得るための手段を持つことが重要です。前者のためには、要件定義として決定すべき事項 が網羅的にリストアップされていることが前提となります。後者については、合意の出発点とし てアイデアを共有することが必要ですから、やはりここでも、表現力のある形で考えを資料にま とめて人に伝えることが重要になります。 8 V e r si o n 1 . 0 要 件 定 義 に ま つ わる 問 題 と そ の 解 決 に 向 け て 3-1-4. シーズ中心 システムについてのアイディアがあり、ブレーンストーミングによって有望なアイディアがいく つもでてきたとします。そのアイディアを検証または分析すべく、役割を決めて作業を始めま す。そして、その結果を持ち寄り、またブレーンストーミングします。プロトタイプを作成し、実現 可能性や機能の有効性を検証します。一ヶ月がたち、アイディアがそこそこ形になってきます。 Ajax、SOA、DI など、この業界流行りの魅力的なセールストークがちりばめられています。 でも、リーダーは何故か「これでいいのだろうか」という疑問を感じています。「分かってきた ことは沢山あるけれども、その一つ一つがどうもうまくつながっていかない。細部をみると面白 いことや今までになかったものができ上がってくるように思える...でも結局いまひとつ製品の全 体象がつかめていない。このやり方を続けていって本当にシステムのイメージが固まるのだろ うか・・・」。 このような状況を経験したことはないでしょうか。 影響力の大きいステークホルダーが雑 誌や技術プレゼンスなどで触発されて プロジェクトを立ち上げた メンバーもいくつかのアイディアがあ りそれを手がかりに作業を進めた 部長は多分SOAに 関係するシステムを 作ろうと思っているん だよ それが出来れば今までの この問題が解決するよ じゃあ取りあえずSO Aを調べて簡単な検 証を行おう それが出来るならこんな 事が出来るかもしれない 図 5:利用者の姿が見えていない会議 アイディアを出し、その実現可能性を検証し、その有効性を把握するというのは、漠然とした ものを具体化するにはごく当たり前のやり方です。しかし、実際に製品開発をやったことがある 方なら経験があると思いますが、この繰り返しだけでは製品の全体像がつかめてこないのです。 漠然としたニーズをベースにその時々のシーズを組み立ててみてもバラバラな要素の集まりに しかなりません。 この時しっかりとした製品コンセプトがあり、その実現可能性が見えている場合は、製品の方 向性を見失うことはないのですが、コンセプトそのものがぐらついている時は上記のように試行 錯誤を繰り返すことになります。つまり、そのシステムはいったい誰がどのように嬉しいのかとい うことを明確にイメージできる製品コンセプトを打ち出す必要があるのです。 製品コンセプトが必ずしも最初から見えているとは限りません。むしろ、要件定義の過程で コンセプトが固まっていくということも多いでしょう。要求の本質が何なのかを考えることによっ て、そのシステムが提供すべてき価値の本質が見えてくるわけです。そのためには、個々の具 体的な要求を抽象的に表現するための手段を持つことが重要になります。抽象化によって本 質的な構造が洗い出されれば、それを基に製品のコンセプトにまで高めることができるからで す。 9 V e r si o n 1 . 0 要 件 定 義 に ま つ わる 問 題 と そ の 解 決 に 向 け て 3-1-5. 議論がすぐに袋小路に入る 打合せを行っていて議論が袋小路に入ってしまうことがあります。問題に対して打つ手がな くなると議論がストップするか、話がループしてしまいます。大抵は「次回までに各人で解決案 を考えてくるように・・・」ということになって、そこで打ち合わせが終わります。要件定義では特 に、要求事項とその実現可能性の問題で議論が止まってしまいがちです。 以下、コンサルティングの中で経験した事例から、要件定義の場面における要求の衝突とし て代表的なものを挙げます。 競争力のある要求 ⇔ 実現可能性が高いものを実現 製品開発においては競争力のある仕様を実現しようとすると、一般的に過去に経験の無い ことが要求されます。その結果開発スキルの問題や納期、マンパワーなどの問題により、一気 に実現可能性が低くなることがあります。 マーケットへの投入時期 ⇔ 開発期間は十分に欲しい マーケティングの見地からいくとその製品の投入時期というのはとても大事な事です。しかし、 開発現場に銀の弾丸は存在せず、コツコツと開発を進める必要があります。 この二つを両立 することはとても難しい問題です。 仕様は一度に決められない ⇔ 仕様を決めないと開発に入れない 現在のソフトウェアは様々な事ができるようになっています。その結果あることを実現するに も何通りもの実現方式があり、それぞれに一長一短があります。それらの組み合わせが製品の 価値を決めます。そしてそれを紙の上だけでイメージして仕様としてまとめるのはとても難しい ことです。一方もの作りは作るものがはっきりしないと作れないのも事実です。 ・枝葉にこだわると議論が先にすすまない ・現状の問題にばかり目が向いている ・現状の制約を前提条件としてしまう 2 それは分かるけど、それを やるとこっちがうまく回ら なくなるんだよ 1 3 じゃあこういうのはどう? あそこを見直すことで改 善できると想うけど 今のシステムではこ うなっているから、次 はこうしたいんだ。 5 それを今検討す ると難しすぎて先 に進めないよ それをするとXXXに問 題がでてくるんだよ。 図 6:議論が進展しない会議 10 4 V e r si o n 1 . 0 要 件 定 義 に ま つ わる 問 題 と そ の 解 決 に 向 け て 複雑な要求が絡み合って解決の糸口が見出せなくなった場合は、要求を構造化して整理し、 構造間の関係をひもといていくことで問題解決の糸口を探ります。 また、競合する要求によって思考がストップしてしまう場合は、問題の本質がどこにあるのか をもう一度考え直すことが必要です。競合が起こっている範囲だけに思考がとどまっている限 り、がんじがらめの状況から抜け出すことはできないからです。 こうした作業を行っていく上でも、要件定義を視覚化して表現する能力が重要になります。 各要求間の関係を整理してその構造をわかりやすく表現したり、具体的な要求を抽象化する ことで、より全体的な視点から問題の解決方法を探ることができます。 3-2. 問題と原因の整理 これまで見てきた事例の問題点を振り返って整理してみると、次のようにまとめることができ ます。 問題点 原因 ①全体像が見えてこない 要件定義として最終的に完成させる成果物の全体像が見えない。 ②顧客との打合せをリードできない 開発者側にスキルと経験が足りない。 その目標に向けて要件をまとめていく思考の枠組みがない。 脈絡のない話をまとめる手段がない。 考えを整理して人に伝えるための表現手段がない。 ③まとまらない会議 要件定義において何を合意するべきなのかが明らかでない。 ④シーズ中心 システムの明確な製品コンセプトがない。 ⑤議論が袋小路に入る 細部にこだわり、全体的な視点から問題解決を探ることがない。 合意の前提として必要な、アイデアを表現して共有する手段がない。 コンセプトを固めていくために必要な表現手段がない。 複雑に絡み合った要求をひもとくための構造化や抽象化の表現手段が ない。 表1 11 V e r si o n 1 . 0 要 件 定 義 に ま つ わる 問 題 と そ の 解 決 に 向 け て ①全体像が見えてこない ②打合せをリードできない 合 性 基本コンセプトが あいまいなままの 要件定義だから・・ 分析 抽象化 ④シーズ中心 性 羅 網 トレーサビリティが 整合性を維持し、 トレーサビリティのある 構造が要件定義の 手順を明示する。 それによってプロジェク トの作業の進め方に 方向性が出る 網羅性が要件定義に必 要な情報の外枠を決める 整 要件定義の成果物や 最終目標のイメージが 見えないままに作業や 打合せを行うから・・ 要件定義の完成像 具象化 本質的な 要求の把握 抽象化可能な表現を使うこと で本質的な要求の洗い出しや、 本質的な構造を洗い出し、 基本コンセプトまで高める 基本 コンセプト 問題を構造化して整理したり 抽象化して全体的な視点から 解決策を見出さなければ・・ 表 現 力 ⑤議論が袋小路に入る アイデアを表現して 関係者と共有しながら 合意形成していかないと・・ ③まとまらない会議 図 7:事例と要件定義の関係 各事例の解説の中でも触れたように、これらの問題はすべて、要件定義に必要な基本コン セプトと3つの特性のいずれか欠けていることに由来しています。事例で示した問題点と要件 定義の完成像との関係を図で表すと次のようになります。 以上、5つの事例とその考察を通じて、要件定義では、網羅性、整合性、表現力を兼ね備 えた成果物でシステムの基本コンセプトを語ることが重要であることを説明しました。 次に、そうした成果物を実際に作成する作業について検討していきます。 12 V e r si o n 1 . 0 要 件 定 義 に ま つ わる 問 題 と そ の 解 決 に 向 け て 4. 要件定義に求められるもの ここでは、要件定義に求められるものと、それを得るための方法について説明します。 4-1. 表現力と UML 先の事例の考察で表現力の重要性を繰り返し指摘しました。顧客との打合せ、合意形成、 基本コンセプトの検討、要求の分析など、要件定義という活動のさまざまな局面で、メンバー の思考を共有し、拡張していくためには、入り組んだ情報を整理し、わかりやい図的な表現方 法で視覚化するのが有効です。 このための手段として UML のモデルを利用できます。UML には、異なる複数の視点(ビュ ー)からシステムを捉えるダイヤグラムが用意されており、この図を適切に用いることでシステム の全体像を表現できます。 UML(Unified Modeling Language)は、オブジェクト指向分析や設計モデリングで共通し て使用される標準的な表記法です。現在広く使用されている UML 2.0 では、次のように分類 される 13 種類のダイヤグラムが用意されています。 UMLダイヤグラム 構造図 振る舞い図 クラス図 オブジェクト図 ユースケース図 アクティビティ図 状態マシン図 コンポジット構造図 相互作用図 旧ステートチャート図 パッケージ図 2.0で追加 コンポーネント図 シーケンス図 コミュニケーション図 配置図 相互作用概要図 旧コラボレーション図 タイミング図 2.0で追加 図 8:UML ダイヤグラムの分類 構造図 振る舞い図 クラス図 クラスの仕様やクラス間の関係などを定義 オブジェクト図 インスタンスとその関係を定義する パッケージ図 パッケージ(モデルの要素を分類する)を定義する コンポジット構造図 クラスの内部構造を定義する(UML 2.0 で追加) コンポーネント図 コンポーネントを定義する 配置図 システムの物理的な構成を定義する ユースケース図 システムが提供する機能を定義する アクティビティ図 アクションの実行順序を定義する 状態マシン図 状態と状態遷移を定義する シーケンス図 クラス間の相互作用を時系列に定義する コミュニケーション図 クラス間の相互作用をクラス間の関係に着目して定義する 相互作用概要図 相互作用図の実行順序を定義する タイミング図 相互作用と状態遷移に関する時間制約を定義する 表2 13 2.0で追加 V e r si o n 1 . 0 要 件 定 義 に ま つ わる 問 題 と そ の 解 決 に 向 け て なお、この資料では UML そのものの詳細については扱いません。必要に応じて専門の本や 資料などを参照してください。 UML の表現力は、要件定義のさまざまな局面で役立てることができます。以下、いくつかの 例を挙げます。 4-1-1. 複雑な要求の分析 先の事例でも触れたように、システムの全体像が見えないという問題の原因は、要件定義を 行う思考の枠組みがないことですから、その枠組みとなるものを用意すれば問題を解決できま す。UML は、この枠組みの中で複雑な要求を整理する手段として利用できます。対象を抽象 化または具象化したモデルを UML のダイヤグラムとして表現できます。 また、図を使って手早くアイデアを表現できれば、会議の場で資料を作成し、そのままメン バー全員で共有することができます。UML のモデルは、その手段としても利用できます。資料 作成は個人作業とみなされがちですが、全体の方向性が定まるまでは会議の中で共同して進 める方がうまくいきます。まずは、見えているところから作業に着手し、会議の場で方向性を確 認しながら、その場で完成できない詳細部分などを個人作業として割り当てるようにします。 このように、プロジェクトの各メンバーが協調しながら一つの方向に向かって作業を進めるよ うになると要件が固まり始め、システムの全体像が見えるようになります。 4-1-2. 顧客との打合せ 顧客との打合せは話が脱線することも多く、それらとも整合性をとりながら打合せの内容を 組み立てていくには、システムの根幹部分と枝葉の部分を明確に押さえておく必要があります。 図でわかりやすく表現した資料を用意しておくことで、顧客の多様な要望や関心で会議を混 乱させることが少なくなります。また、要件定義までの道筋が見えていることで、打合せのペー ス配分とその打合せで決めておくべき事が明確になり、提案ベースで戦略的に会議をリードで きます。 4-1-3. 合意形成 合意プロセスにおいても対象の可視化(見える化)が有効です。一般に、合意のプロセスで は、次の点に注意する必要があります。 * 何を合意するのか? 対象を可視化し、それを共有することで合意対象を明らかにします。 * どのように合意するのか? 会議の場において、資料を作りながら、その場で合意します。 * 合意したものをどのように表現するのか? ポンチ絵や特定の表記規則に基づく図的な表現形態を利用します。 この可視化手段として UML を利用できます。合意の対象となるものを UML のダイヤグラム で可視化することで、より効率的に合意が行えるようになります。 4-1-4. 基本コンセプトの検討 システムのコンセプトを検討するには、システム化する対象を多角的に捉える必要がありま す。システムの機能や利用方法を多角的に記述していくと、それらを集めた全体を通して、シ ステムが生み出す価値の本質が見えるようになってきます。さらに、個々の要求を抽象化して いったときに、そのシステムの本質的な価値が何なのかを簡潔に語ることができれば、基本コ ンセプトが見出せたことになります。 14 V e r si o n 1 . 0 要 件 定 義 に ま つ わる 問 題 と そ の 解 決 に 向 け て こうした検討においても、イメージがわきやすい図的なモデルの利用が効果的です。UML には異なるビューに対応するモデルのダイヤグラムが用意されているので、それらを利用して さまざまな角度からシステムを記述できるほか、抽象化や具象化の概念も表現できるので、個 別の要求から本質的なコンセプトを見出す作業に効果的です。また、この場合も、アイデアを 視覚化できる成果物を共同で作りながら議論を組み立てていく方法が有効です。この成果物 が以降の議論のベースとなり、それを共通の基盤としてさらにアイデアを発展させていくことが できます。 4-2. 網羅性 一般に、システムには複数の側面があり、対応する視点(ビュー)から性質を記述することで、 全体像を表現することができます。逆に、各ビューからシステムの性質が漏れなく記述されて いるかどうかをチェックすることで、網羅性の確保につなげることができます。UML はこのビュ ーの考え方が基本になっており、各ビューに対応するものとしてダイヤグラムと表記法が定義 されています。要件定義においても、これら複数のビューを意識して対象をモデル化すること で、網羅性を確保することができます。 また、システム内からシステム外へとつなぐ考え方も網羅性に有効です。具体的には、要件 定義を次のような 4 つの領域として対象を捉え、業務とシステムをつなげていきます。 1. システムの価値を捉える 2. システムの外部環境を捉える 3. システム境界を捉える 4. システムの内部構造(データ、ドメイン、ビジネスルール)を捉える この枠組みに沿って分析作業を進めていくことで、要件定義の網羅性を確保できます。 4-3. 整合性 ビューに基づいて洗い出した要件は通常、単独で存在するわけではなく、システムの他の 部分や別の要求と関連しあって存在しています。したがって、要件定義においては、個々の 要件を洗い出すだけでは不十分で、それらが全体として整合性のあるものになっていることを 確認する必要があります。 このためには、常に全体と部分の両方の視点を持ち、モデル同士を関係づけながら要件を ブレークダウンしていくことが重要です。具体的には、異なるビューに基づく複数の基本モデ ルを 1 つのダイヤグラム上に描き、お互いの関係をチェックしながら作業を進める方法が有効 です。こうした手法は、個人作業だけでなく、打合せの議論にも適用することもできます。 個々のビューに対応するモデルを表現した図(基本ダイヤグラム)のセットによって網羅性を 保証したうえで、さらに複数の基本モデルを 1 つの図上に表現した図(関係ダイヤグラム)を 利用して整合性を検証することができます。 4-4. 基本コンセプト 新しいシステムを作り出す時はそのシステムを関係者もしくはユーザに説明しそれが理解さ れることが重要です。機能のてんこ盛りを説明されても、システムの価値を感じることはありま せん。システムを人に説明する場合、そのシステムを使うとどのような事ができて、それがどん なに嬉しいのか、役に立つことなのか、また楽しいことなのかを説明するでしょう。開発するシ ステムについても同じことが言えます。システムが持つ本質的な価値として語れる基本コンセ プトの存在が重要なのです。その上で各々の機能がどのように関わりを持つのかが明らかにな ってくると、自信を持って「このシステムはこうです」と語れるようになります。 15 V e r si o n 1 . 0 要 件 定 義 に ま つ わる 問 題 と そ の 解 決 に 向 け て 現実のプロジェクトにおいて、製品コンセプトが最初からはっきりしていることはまれで、まし てそのコンセプトが適切なものであるという例はさらに少ないでしょう。多くの場合、製品コンセ プトは要件定義をしていく中でメンバーの頭の中に芽生えてくるものです。それが何なのかと いう答えをここで明らかにすることはできません。なぜなら、その答えを生み出すのは、みなさ ん自身だからです。 ただし、そのための活動を効果的に進めるための方法なら示すことができます。次のセクシ ョンでは、この資料の締めくくりとして、当社が提唱するリレーションシップ駆動要件分析 (RDRA: Relationship Driven Requirement Analysis)という要件分析手法の概要につい て説明します。 16 V e r si o n 1 . 0 要 件 定 義 に ま つ わる 問 題 と そ の 解 決 に 向 け て 5. リレーションシップ駆動要件分析 (RDRA) 5-1. 要件定義をうまく進めるには まず、要件定義という作業を上手く進めるための条件について考えてみましょう。 要件定義のゴール 目指すべきものの イメージが示される プロジェクト チーム そこに至る 道筋が示される 図 9:要件定義の道筋 ひとつは、目指すべきもののイメージを明確にしておくことです。的確に表現された要件定 義のイメージを念頭に置いて作業に取り組むことは、常にシステムの本質的な価値を考えなが ら要件を洗練化させていくことにつながります。これには成果物の表現形態をあらかじめ明確 にしておくことが有効です。具体的には、UML の表現力を利用して網羅的かつ整合性のある 形で要件を表現するダイヤグラムのセットを定義しておくことです。 もう一つは、それらのダイヤグラムを使って、どのように作業を進めていくのかという手法を 明らかにしておくことです。言い換えれば、最終成果物という目標に至るまでの道筋を示すと いうことです。 当社では、これらの観点から、UML モデリングに基づいて要件定義を効果的に進めるため の手法として、リレーションシップ駆動要件分析(RDRA: Relationship Driven Requirement Analysis)を提唱しています。RDRA では、成果物を規定する UML ベースの表記法とダイヤ グラムのセット、およびそれを作成するための手法という大きく2つの要素で構成されています (なお、この手法ではダイヤグラムに UML の表記法を利用しますが、必ずしも厳密な UML の 表記規則に縛られるものではありません)。 以下、この手法の概要を紹介します。 17 V e r si o n 1 . 0 要 件 定 義 に ま つ わる 問 題 と そ の 解 決 に 向 け て 5-2. 基本ダイヤグラム RDRA では、システムの要件を UML のモデルを利用して複数の視点から表現します。既に 述べたとおり、要件定義に UML のモデルを適用することで、アイデアを視覚化してプロジェク トメンバーと共有したり、抽象的な思考を支援してコンセプトの導出に役立てるなど、要件定義 のさまざまな場面で効果を上げることができます。 RDRA では、大きく次の 4 つの領域に分けて要件を記述します。 * システム価値(コンテキスト、要求モデル) システムは誰にとってどのような価値があるのかを要求として明らかにする * システムの外部環境(業務モデル、利用シーンモデル、概念モデル) システムの価値を実現するための業務や利用シーンを明らかにし、 システム境界を決める前提を明確にする * システム境界 (ユースケースモデル、画面・帳票モデル、イベントモデル、プロトコルモデル) ユーザとシステムとの境界を明示することでシステムとして必要な インターフェースを明らかにする * システム(データ/ドメイン、機能、ビジネスルール) システム境界を実現するための機能とデータを明らかにする 図 10:要件定義の 4 つの領域 以下、それぞれの分類別に構成概念と対応するダイヤグラムを概説します。 18 V e r si o n 1 . 0 要 件 定 義 に ま つ わる 問 題 と そ の 解 決 に 向 け て 5-2-1. システム価値 「システム価値」では、業務に関わる人、システムに関わる人から要求を集め洗練化しながら 要件へと整理します。関係者の要求をヒアリングして構造化し、その中で粒度を調整しながら 本質的な要求、そして要件へと洗練化していきます。 ここに表現するモデルでシステムの価値を決める人(ロール)とその価値を定義します。 コンテキストモデル まず、システムへの要求を発生させる元になる利害関 係者を洗い出すためにコンテキスト図を描きます。コン テキスト図は、開発時コンテキストと運用時コンテキスト に分けて作成します。 c l as s シ ステ ム コン テ キ スト 業務名 シス テ ム 主 体者2 シス テ ム 主 体者1 < < システ ム > > X x x x システ ム 業 務主体 者5 シ ステ ム 主体者4 システ ム 主体 者3 外部シ ステ ム 図 11 要求モデル c us t o m 機能 要求 要求は機能要求と非機能要求に分けられます。UML で定義されている表記法ではありませんが、右図のよう な要求アイコンを使用して要求モデルのダイヤグラムを 作成します。 新しいサービスを 開始したい 顧客へのサービス を向上させたい 広告収入を増やし たい 難しい操作のシス テムをいれるのは 嫌だ シス テ ム 主 体者1 システ ム 主体者2 顧客とダイレクトに つなぎたい 小規模店舗が新し い市場だ XXXXXXXXXXXXXX YYYYYYYYYYYYYYY シ ステ ム 主 体者3 図 12 5-2-2. システム外部環境 「システム外部環境」では、業務フローまたは利用シーンを使用して、先にあげたシステム 価値を表現します。同時に、業務の中で認識されている概念を明らかにします。これにより、シ ステムの境界線を決める前提となる外部環境の認識を関係者の間で合わせます。 業務フロー コンテキスト図に現れた人(組織)がどのように連携しな がら業務を進めていくのかを明らかにします。 act アクティビティ システム主体者1 システム主体者2 システム主体者3 開始 X x x x x7 X x xx x 4 シ ステ ム 主 体 者 1 X x xx x 6 X x xx x 5 X x x xx 8 X x x x1 X x xx 2 X x xx 3 X x x xx 9 終了 図 13 19 V e r si o n 1 . 0 要 件 定 義 に ま つ わる 問 題 と そ の 解 決 に 向 け て 利用シーン システムがどのように利用されるのかが具体的にイメージで きるように、物語風の説明を個々の要求に対応づけて記述し ます。 a na ly s is 利用 シー ン 来 月、北 海道に旅 行を 予定し ているAさ ん。行き先の 情報を ネットで下調べす ること に し た。後 半の何 日かは札 幌で宿泊 するつもりなので、 近郊の 小樽にも足を 伸ば してみ ようと思 った。 ただ、小樽以 外にも行きたいところは 多く、あまり長い時間は とれ ないの で、 まずは絶 対に外せ ない見 どころの情 報を 示し てくれるサイトを 探す こと にした。 宿 泊 予約は この 下調べ の後で決め ること にし た。予定が 立ったらネットでホテル に予約を 入 れておこう。 見 どころスポットの一覧を 示 したサ イトを 見 つけ、内容 を チェック。観 て周るスポットの 候 補を 挙げ ていく。限られた時間 内でできるだけいろいろ楽し みたいので、行 き先 ごと に近 くのお店や 観光スポットなどもチェックしておくことにし た。 旅の見 どころを 知り たい (from 要 求モデル) 効 率重視 で観て周るだけでは団 体ツアーみ たいで物 足りないの で、1箇所だけ、ちょ っと 変わった場所 を 予定に組み 入れたいと 思った。そういった情報 はやはり地元の 人 に教 えてもらおうと 、地 元の個人 ブログやタ ウン情 報サイトなどを 参考 にあちこち調べ てみ る。自分 が小樽 に行 く日に、町 ぐるみ のイベントが 企画さ れていることが わかっ た。 ブログからは、ほ かにもいろいろと面 白そうな情報 が見つ かりそうな気 もす るけれ ど、 小樽だけにそれ ほどこだわ る理由もなく、このあたりや めることにし た。 旅に役立 つ便利情 報を 入手 したい 情 報利 用 者 (from コンテキストモデル ) 地 元のバ スなどは利用の 仕方が よくわからないので、離 れた地点 間の移動 にはタ ク シー を 利用し ようか 。でも、 お金もかかるし 、今回 は駅と 運河 周辺を 歩いて散 策する だけにす るか。歩 き疲れ たときの休 憩場所 やトイレ を 利 用できる場所などもあらか じ め 調べておくこと に。 (from 要求モデル ) 旅 先で手軽 に情報 を 入 手し たい こうし てひと と おりの情報 を 集めたが 、旅先 でパ ソコンを 見ること はできない。 必要な 情 報は紙 に印刷し ておくこと にし た。かさ ばるけれど仕 方がない。 携帯でサイトを チェッ クすること もできないではないが、 携帯端 末のパワー でパソコン用 のページを 見るの には 時間が かかるし 、パケット代も馬鹿にならない。なにより、 旅先では情 報収集 に煩 わ され ること なく旅そのものを 楽 しみ たい。 万 事に用意 周到なAさ ん、行 き先 の電話 番号や念 のためWebサイトのアドレ スもコピー し て、自 分の携 帯アドレ スにメー ルし ておいた。 どうし ても必 要になったら、このメール か ら必 要な情報 にアクセスできるだろう。 (from 要求 モデル) 天 気、 気温 、 景 色 な ど、 いま現 在の状況 を 見たい いま現在 の小樽 の状況 とし て、天気 、気温 のほか、 スキー場 などに設置し た定点カメラを 制御 して、 画像を 取 り出すこと もできる。 (from 要 求モデル ) 図 14 概念モデル 業務の中で認識されている概念を表す用語の意味とそ れらの間の関係をモデル化してクラス図で表し、プロジェク トのメンバー間で認識を合わせます。 cla s s 業務 概念 モ デ ル X1 x x x Ee e e Dd dd 1 +Ssss +Xxx * 0..1 * 1 Yy yy y Yy yy 1 F ff ff Y yy y2 Tttt3 図 15 5-2-3. システム境界 「システム境界」では、システムと外部環境との境界に位置する部分を捉え、それを表現しま す。まず、人が関わる部分はユースケースと画面・帳表モデルでシステム境界を明らかにしま す。外部システムに関わる部分はイベントモデルとプロトコルモデルでシステム境界を表しま す。 ユースケースモデル 外部から見たシステムの機能をユースケースとして洗い出します。 全てのユースケースを洗い出すことで人(組織)が関わるシステム 境界を明確にしたことになります。 ud ユ ー ス ケー ス X x xxを Yy y yす る Ac t or1 Act or3 X xxxを W w w wす る Act o r4 U uuuを Ll l l す る Act or2 図 16 画面・帳表モデル ui 画 面 Sc re en1 S cree n3 Sc re en2 S cree n4 ユーザーとの直接のインターフェイス部分として、 画面と帳表の構成および項目を明らかにします。 Sc re en5 図 17 20 V e r si o n 1 . 0 要 件 定 義 に ま つ わる 問 題 と そ の 解 決 に 向 け て プロトコルモデル 外部システムとの連携に関する状態遷移を表現した状態マシ ン図です。このダイヤグラムを描くことで、整合性を確保しながら 次の外部イベントを洗い出すことができます。 sm 状態 開始 St a t e 1 S t at e 4 St a t e 5 S t at e 2 St a t e 6 St a t e3 履歴 St a t e7 終了 図 18 イベントモデル プロトコルモデルから抽出され、外部システムとのインターフェ イス仕様を与えます。 s t m イベン ト一 覧 電源オン 電源オフ タイムアウト なお、外部システムが既存のシステムとして存在する場合は、 インターフェイスとしてイベントが先に決まっていることもあります。 その場合は、このシステムに関係するイベントだけを取り上げ、 その関係をプロトコルモデルとして明確にします。 制御終了 一周 完了 操作開始 コン テキ ス トモデ ル:: 定 点 カメラ 停止 移動終了 移動開始 制御終了 図 19 5-2-4. システム 「システム」では、システム内部構造に関係する要件として、データモデルまたはドメインモ デル、機能モデル、ビジネスルールを明らかにします。 データモデル/ドメインモデル 永続化を前提としたデータ構造はデータモデルとして表現 します。永続化に限らず、より一般的にシステム内部のソフトウ ェア構造を表現する場合はドメインモデルと呼ばれます。いず れも、UML のクラスで表現します。 cd デ ー タ モデ ル Jjj j - jjj1: jjj2: jjj3: * 0..1 X xxx Yy y y - xxx11: int xxx12: int xxx13: int - x2xx1: x2xx2: x2xx3: ffff * 1 - yyy1: yyy2: yyy3: +ppppp 1 x1xx11: x1xx12: x1xx13: X xxx3 X xxx2 X xxx1 - - U uuu x3xx1: x3xx2: x3xx3: - uuu1: uuu2: uuu3: Oo o o 図 20 機能モデル ユースケースやイベントを実現するために必要な機能を 洗い出します。機能は複数のユースケースやイベントから 利用できます。 act 機能モ デ ル < < fu n c t i o n > > Uu u u 機 能 < < fu n c t io n > > Zzzz機能 < < fu n c t i o n > > Yy y y y 機 能 < < fu n c t io n > > X xxx機 能 図 21 21 V e r si o n 1 . 0 要 件 定 義 に ま つ わる 問 題 と そ の 解 決 に 向 け て ビジネススール 業務上のルールとして状態を認識できる場合は、状態マ シン図として表現します。 s m 状態 開始 St at e 1 「システム境界」でプロトコルモデルとして状態マシン図を 描きましたが、それとは異なり、ビジネスルールを表現するた めのダイヤグラムです。 State4 State5 State2 State6 St at e3 履歴 St at e7 終了 図 22 5-3. 関係ダイヤグラム RDRA では、要件定義の整合性を確保するため、先に紹介した基本ダイヤグラムに加えて、 関係ダイヤグラムという図を使用します。関係ダイヤグラムとは、各ビューの間で要件に不整合 が生じていないことを確認するため、基本ダイヤグラムをのモデル要素を 1 つの図に混在させ て描いたものです。モデル間の関係を関係ダイヤグラムとして描くことで、要件の整合性を確 認しながら作業を進めることができます。対応する相手がいない要素が見つかった場合に、そ の原因を検討することによって、漏れの発見やモデルの洗練化に役立てることができます。 以下、主な関係ダイヤグラムを示します。 5-3-1. システム外部環境の関係ダイヤグラム 業務フロー&ユースケース 業務フローのアクティビティ図にユースケースをマッピングすることで、 個々のアクティビティとユースケースとの対応関係を確認します。またレ ーン(パーティション)には、アクターを対応付けます。 a ct 企 画フ ロ ー クライア ン ト (from ロー ル) クライア ン ト ディ レク ター ア ーキ テ クト デ ザ イナ (from ロー ル) (from ロー ル) (from ロー ル) ディ レ ク タ ー アー キ テクト デ ザイ ナ 開始 ヒ ア リン グ シ ー ト (from 成果物) オ リエ ン テ ー シ ョン 企画 立 案 システム 開発の要件定義に対応す る。 案件によってはビジネスモデ ル等も含む。 アウトプット コン セ プト (from 成果物) サ イト マ ップ (from 成果物) アウトプット アー キ テクチャ設計 サ イ ト構 成 検討 アウトプッ ト シ ステ ム 仕 様 アー キ テクチャ 設計、 プログラム 仕様( 新規開発の場合)を 含む。 (from 成果物) プ ロ ト設 計 デ ザ イン アウトプット アウトプット デ ザイ ン 仕 様 プ ロ トタ イ プ 設 計 (from 成果物) (from 成果物) 企画書 (from 成果物) テー マ(テンプレ ー ト、 CS S、素材ファイル)に簡 単な説明資料を 添付 アウトプッ ト 提案作成 プ ロ ト作 成 予算が限られている場合、 企画段階ではレ デ ィメ イドの テー マ等で済ませる ス ケ ジ ュ ー ル・見 積 り (from 成果物) アウトプット プ レ ゼン テ ー シ ョン 見 積り・ ス ケ ジ ュ ー ル 作 成 結論 図 23 a n a ly s is 利 用 シー ン 利用シーン&ユースケース 来月、北海道に旅行を 予定している Aさん。 行き先の情報をネットで下調べする ことに した。 後半の何日かは札幌で宿泊するつ もりなので、近郊の小樽にも足を伸ばしてみ よ うと思った。ただ、小樽以外にも行きたいところは多く、あまり長い時間はとれないの で、まずは絶対に外せない見ど ころの情報を示してくれる サイトを探すことにした。宿 泊予約はこの下調べの後で決めることにした。予定が立ったらネットでホテルに予約を 入れておこう。 旅の見ど ころを 知り たい 業務フローが描けない場合は、利用シーンとユース ケースとの対応関係を図に表して同様の関係付けを行 うことができます。 地 図 に 基 づ く記 事 の 閲 覧 見どころスポ ットの一覧を示したサイトを見つ け、 内容をチェック。観て周る スポ ットの 候補を挙げていく。限られた時間内でできるだけいろいろ楽しみたいので、行き先ごと に近くのお店や観光スポットなどもチェックしておくことにした。 関 連 記 事の 閲 覧 旅に役立つ便利情 報を 入手したい 効率重視で観て周る だけでは団体ツアーみたいで物足りないので、 1箇所だけ、ち ょ っと変わった場所を予定に組み入れたいと思った。 そういった情報はやはり地元の人 に教えてもらおうと、地元の個人ブロ グやタウン情報サイトなど を参考にあちこち調べ てみる 。自分が小樽に行く日に、町ぐるみのイベントが企画されていることがわかっ た。ブロ グからは、ほかにもいろいろと面白そうな情報が見つかりそうな気もするけれ ど 、小樽だけにそれほどこだわる 理由もなく、このあたりやめる ことにした。 カレ ン ダー に基 づ く 記 事の 閲覧 情報 利用者 地元のバスなど は利用の仕方がよくわからないので、離れた地点間の移動にはタク シーを利用しよ うか。でも、 お金もかかるし、今回は駅と運河周辺を 歩いて散策する だけにする か。 歩き疲れたときの休憩場所やトイレを 利用できる場所など もあらかじ め調べておくことに。 旅先で手軽に情報 を入手したい 携 帯 端 末 か ら の閲 覧 こうしてひととおりの情報を 集めたが、旅先でパソコンを見ることはできない。 必要な 情報は紙に印刷しておくことにした。かさばるけれど仕方がない。携帯でサイトをチェッ クする こともできないではないが、携帯端末のパワーでパソコン用のページを見るの には時間がかかるし、パケット代も馬鹿にならない。 なによ り、旅先では情報収集に煩 わされることなく旅そのものを楽しみたい。 万事に用意周到なAさん、 行き先の電話番号や念のためWebサイトのアドレスもコピ ー して、自分の携帯アドレスにメールしておいた。 どうしても必要になったら、このメール から必要な情報にアクセスできるだろう。 メ ー ル に よ る情 報 取 得 天気、 気温 、景 色など 、 いま現在の状況を 見たい いま現在の小樽の状況として、 天気、気温のほか、 スキー場など に設置した定点カメラを 制御して、 画像を取り出すこともできる。 定 点 カメ ラ に よ る画 像 キ ャプ チ ャ 図 24 22 V e r si o n 1 . 0 要 件 定 義 に ま つ わる 問 題 と そ の 解 決 に 向 け て 5-3-2. システム境界の関係ダイヤグラム ユースケース&画面・帳表 ユースケース図で、各ユースケースに対応する画面や帳表 をマッピングします。こうすることで、どのユースケースでどの画 面や帳表が使用されるのかが明らかとなり、対応関係の不整合 や漏れなどの発見につながります。 uc UC & 画面 Sc reen5 O を O nnnnす る シ ステ ム 主体者 3 X xxxを Yy y y す る S creen1 シス テム 主 体者1 X xxx を W w w wす る S creen 2 システ ム 主 体者4 U uuuを Ll l l す る S cree n4 Kkk kkをXする S cree n3 シス テム 主体者2 図 25 5-3-3. システムに関する関係ダイヤグラム uc 機 能モ デ ル 機能複合モデル triger 機能を中心に、画面、ユースケース、データ、ドメインを結びつ け、全体としての整合性をチェックします。 <<fu nct i on>> X xxx機能 <<f unct i on>> Yy y y y 機能 CRUD CRUD Xxxx <<datamodel>> AAAX xxx - <<datamodel>> AAA X xx x1 xxx11: int xxx12: int xxx13: int - x1xx 11 x1xx12 x1xx13 X xxx を W w w wす る < < func t ion>> Z z z z 機能 R <<datamodel>> AAAJ j j j - jj j 1 jjj2 jjj3 <<f unct i on>> Uuuu機能 CRU CRU <<datamodel>> AAAOo o o - eeee1: int eeee2: int eeee3: int 図 26 23 V e r si o n 1 . 0 要 件 定 義 に ま つ わる 問 題 と そ の 解 決 に 向 け て 5-4. トレーサビリティチェック 上記のような関係ダイヤグラムを利用することで、システムの各部分が別の部分に正しく対 応付いていること(トレーサビリティ)のチェックに役立てることができます。基本モデル間のトレ ーサビリティのチェックポイントを図にまとめると次のようになります。 図 27 に書かれているノートと吹き出しが書くダイヤグラム間の関係性について着目するポ イントを示しています。 a d ア クテ ィ ビ テ ィ c u st om コ ン テキ ス ト X xxx アクターが担うべき業 務が全て出ているか c d 初期要 望モデ ル 顧客へのサー ビ スを向上さ せた い 新し いサー ビス を開始したい 情報提供者 地域観 光情報発 信サイト 難しい操作のシ ステム をいれる のは嫌だ 広告収入を 増や したい Y yy y Xx xx x 旅行者 Ac t or1 Ac t or2 顧客と ダイレクト につなぎたい 小規模店舗が新 しい市場だ X x xx x Xx xx x サイト 運 営者 コンテキスト 要求モデル アクターとレー ンの対応 情報利用者 荷物の状態を 知 りたい 定点カ メラ 外 部情報サイ ト メー ルで状況を 知らせて欲しい A ct o r3 Zzzzz 開始 X x xxx X x xxx X x xx X xxx 情報を収集する 対象の外部サイト 業務モデル X xx xx X x xx 要求が満たさ れているか 要求別のその 他オブジェクト ユースケー ス別の作業 アクター別の ユースケース 終了 画面はユース ケースが結びつく ui 画面 外部コンポーネン ト別のイベント 外部コンポー ネントのイベ ントが洗い出 されているか アクターが担うべ きユースケースが 全て出ているか ユースケースには必 ず作業が結びつく 画面別のユー スケース u d ユ ー スケ ー ス Sc ree n1 S cre en 3 Sc ree n2 S cre en 4 Sc ree n5 画面 X x xx を Y yy yす る A ct o r1 A ct o r3 s tm イ ベン ト 一覧 電源オフ 電源オン タイムアウト 制御終了 イベント 一周完了 操作開始 U uuu を L ll lす る a na ly s is 利 用 シ ー ン 来 月、北 海道に 旅行 を 予定し て い るA さ ん。行 き先の情 報を ネッ トで 下調 べする こ と に し た 。後半 の何 日かは 札幌 で宿 泊する つもり なの で、 近郊の 小樽 にも足 を伸 ばし て み よ うと 思った 。た だ、 小樽以 外に も行きた いと こ ろは 多く、 あま り長 い時 間はと れ ない の で 、ま ずは 絶対に 外せ ない 見 どこ ろの情 報を 示し て くれ るサ イトを 探す こ とに し た 。宿 泊 予約は こ の下 調べの 後で 決め るこ と に し た。 予定が 立った らネット で ホテ ルに 予約 を 入 れて おこ う。 利用シーン別の ユースケース Ac t or4 Ac to r2 コン テキ スト モ デ ル: : 定点カ メラ 停止 ユースケース モデル X x x xを W wwwす る 見 どこ ろス ポット の一 覧を 示し た サイトを 見つ け 、内容 をチ ェック。観 て周 るス ポッ トの 候 補を 挙げて い く。限 られた 時間 内で できる だ けい ろいろ楽 し みた いの で 、行き先ご と に 近く のお 店や 観光ス ポッ トな どもチ ェックし て お くこ と にし た 。 旅 の見ど こ ろを知り たい ( from 要 求モ デル) 効 率重視 で観 て 周る だけ で は団体 ツア ー みた いで 物足 りな いの で、1箇 所だ け、ち ょ っと 変わ った場 所を 予定 に組 み入 れた いと 思 った。そ うい った情 報は やはり 地元の 人 に 教え て もらお うと 、地 元の 個人ブ ロ グや タ ウン 情報 サイト など を 参考に あ ちこ ち 調べ て みる 。自 分が小 樽に 行く 日に 、町ぐる みの イベン トが 企画 され て いる こ と がわか っ た 。ブ ログ からは 、ほか にもい ろい ろと面 白そ うな 情報 が見つ かりそ うな 気もす るけ れ ど 、小樽 だ けに それ ほど こ だ わる 理由もな く、 こ のあ たりや める こ と にし た 。 移動終了 旅 に役 立つ便利 情 報 を入 手し た い 情報利用者 (from コンテ キス トモ デ ル) 地 元の バス など は利 用の 仕方が よ くわか らない ので 、離 れた 地点 間の移 動に はタ ク シ ー を利 用し よ うか。で も、お 金もかか る し、 今回は 駅と 運 河周辺 を歩 い て散 策する だ け にす る か。歩き疲 れた と きの休憩 場所 やト イレ を 利用 できる 場所 など もあ らか じ め 調べ てお くこ と に 。 (f rom 要求 モデ ル) 移動開始 制御終了 全てのイベン トが網羅され ているか 旅 先で 手軽 に情 報 を 入手 し たい ユースケー ス別の機能 こ う して ひ とと お りの 情報を 集め た が、旅先 で パソコ ンを 見 るこ と はで きな い。 必要な 情 報は 紙に 印刷 して お くこ と に し た。か さ ばる け れど 仕方が ない 。携 帯で サイトを チ ェッ クす るこ と もで きない で はな いが 、携帯 端末 のパワ ー でパ ソコン 用の ペ ージ を見 るの に は 時間が かかる し 、パ ケッ ト代も馬 鹿に ならな い 。な によ り、旅 先で は情報 収集 に煩 わ さ れる こ と なく 旅そ のもの を楽 し みた い。 万 事に 用意 周到 なA さ ん、行 き先 の電 話番号 や念 のた めWeb サイトの ア ドレス もコ ピ ー し て 、自 分の携 帯ア ドレ スに メー ルし て おい た 。どう し ても必要 に なった ら、こ のメー ル か ら必要 な情 報に アクセ ス できる だろう 。 利用シーン 利用シーンに はユースケー スか結びつく (from 要 求モ デル ) 天気 、 気温 、景 色な ど 、 い ま現 在の状 況を 見た い い ま現 在の小 樽の 状況と し て 、天気 、気温 のほ か、ス キー 場な どに 設置 し た定 点カメラを 制御 し て、画 像を 取り出 すこ と もで きる。 (f rom 要求 モデ ル) cd デ ー タ モデ ル イベント別 の遷移 遷移に結びつくア クションは機能と して洗い出されて いるか 全てのユースケースが 機能に結びついている か J jj j - データ別にCRUD毎 の機能を確認する jjj1: jjj2: jjj3: * データ モデル 0..1 X xx x s m 状態 - xxx11: int xxx12: int xxx13: int - x2xx1: x2xx2: x2xx3: Y yy y ffff * 1 - yyy1: yyy2: yyy3: 開始 +ppppp 1 S t at e1 S ta te 5 プロトコル モデル S ta te 6 St a te 3 X x xx 1 データ別機 能(CRUD) St at e4 St at e2 イベント別の 機能 - x1xx11: x1xx12: x1xx13: X x x x3 X xx x 2 - x3xx1: x3xx2: x3xx3: U uu u - uuu1: uuu2: uuu3: cd デ ー タ モ デ ル J j jj - Oo oo a ct 機 能 モ デ ル ドメイン モデル << fu nct io n>> Zz zz機 能 0..1 X x xx 履歴 機能モデル St at e7 jjj1: jjj2: jjj3: * <<f un ct i on >> U uu u機 能 <<f un ct i on >> Yy y y y 機 能 << fu nct io n>> X x xx機 能 終了 ドメインクラ ス別機能 ドメインクラスを 扱う機能は必 ずあるか 図 27:ダイヤグラム間の関係 24 - xxx11: int xxx12: int xxx13: int - x2xx1: x2xx2: x2xx3: ffff * Yy yy 1 - yyy1: yyy2: yyy3: +ppppp 1 x1xx11: x1xx12: x1xx13: X xx x3 X x xx2 X x x x1 - - x3xx1: x3xx2: x3xx3: O oo o U u uu - uuu1: uuu2: uuu3: V e r si o n 1 . 0 要 件 定 義 に ま つ わる 問 題 と そ の 解 決 に 向 け て まとめ この資料では、当社が提唱するリレーションシップ駆動要件分析(RDRA)の概要について 説明しました。 最初に、ソフトウェア開発全体における要件定義の位置づけを確認した後、要件定義にま つわる問題事例とその原因を考察しました。その解決方法として UML を利用したモデリング が有効であることを示し、当社が提唱するリレーションシップ駆動要件分析の概要として、構成 概念と基本ダイヤグラム、関係ダイヤグラム、およびそれらを利用したトレーサビリティチェック と全体の要件定義プロセスを簡単に説明しました。 リレーションシップ駆動要件分析の全体像をまとめると次のようになります。 1. 要件定義の枠組みの提供 システム価値 システム外部環境 システム境界 システム 2. モデルとして整理する システムの価値を明らかにする ⇒ コンテキストモデル、要求モデル システムの外部環境を把握する ⇒ 業務モデル、利用シーン、概念モデル システム境界を明らかにする ⇒ ユースケースモデル、画面・帳表、イベントモデル、プロトコルモデル システムの内部構造を明らかにする ⇒ データモデル/ドメインモデル、機能モデル、ビジネスルール 3. 分析する 視点を定める ⇒ What と How の分離 連続的に進める ⇒ トレーサビリティを利用した分析 4. トレーサビリティを保ちながら洗練化する 各ダイアグラムは相互に関係を持つ その関係に着目し各モデルを洗練化する 洗練化の過程を通じて現状を深く知る システムの本質を捉える システム要件の定義に結びつける 以上のように、RDRA では個別の視点から要件を記述するための基本ダイヤグラムのセット と、それらの間の関係性を定義します。そして、その関係性を利用して関連するダイヤグラムを スピーディーに作成し、かつそれらのダイヤグラム間の整合性をチェックしながら洗練化を進 める手法です。 この手法で最も重要かつ特徴的なポイントが、モデル間の関係性を定義することです。この モデリング作業を通じて全体的な視点から要件定義を繰り返し見直すことにより、個々の視点 から見た要求の羅列ではなく、それらが相互に関連しあい、かつ全体として整合性が取れた 有機的なシステムの全体像を記述するものへとモデルを洗練させていくことができるのです。 要件定義モデリングの具体的な手順については、モデリング編で取り扱います。 なお、この資料では扱っていない、具体的なモデリング作業やモデルの洗練化など、モデリ ングの詳細については、モデリング編を参照してください。 25
© Copyright 2024 Paperzz