ノーローンのサイトです。
関する 中心 特長 入る フィード 零細 年収 ください 東京 ケータイ 取得 銀行 残高 簡易 金曜日 申込み スクランブル 応じ 書留 金額 同じ 引い 支払い 個人 原付 そして うまい マグロ 次回 3月

要求とは?/ ノーローン

[ 370] @IT:マインド・マップとUMLを使った要求分析支援(前編)
[引用サイト]  http://www.atmarkit.co.jp/farc/rensai/mm01/mm01a.html

マインド・マップをご存じでしょうか? 最近、日本でも新しい「メモ技術」として注目されるようになってきた記法です。この記事では、このマインド・マップという記法が、ITの現場でうまく使えないだろうか、というアイデアを紹介します。特に、IT分野で標準化されているUMLをうまく補完するツールとして、要求分析という上流工程をまず取り上げたいと思います。
ITシステム開発において要求分析を行う場合、現在ではUMLを使ったオブジェクト指向による概念モデリングや、ユースケース分析が主流になってきています。しかし、UMLには強い制約(記法の意味と文法)があり、誰でもすらすらとまとまるものではありませんね。特に、顧客へのインタビューを行う場面では、その場でUMLにまとめるというのは至難です。そこで、顧客との対面場面ではとにかく「顧客の言葉を集める」ことに徹し、それをメモ(インタビューの議事録)として持ち帰り、いったん、じっくり考えてからUMLで仕上げ、それを顧客と合意する、という二段構えで要求分析を行うのが一般的だと思います。
この記事では、その「顧客の言葉を集める」場面において「マインド・マップ」という記法を使うことを提案します。この記法は、高速に、かつ、印象深いメモを取ることが可能で、後でそのメモを見返したときにその場面を思い出しやすい、という特徴があります。そのマインド・マップで書かれたメモから、UMLによる要求分析にどのようにつないでいくか、という具体的指針まで提案したいと思います。
人間の脳は、1兆程度の脳細胞(ニューロン)からできています。そして、その脳細胞は樹状突起と呼ばれる放射状に伸びた千程度の触手でほかの脳細胞と結合しています(シナプス)。シナプスは脳全体では100兆から1000兆あり、われわれの大脳は10テラバイトを超える記憶容量を持つといわれています。これは、DVDの映画なら2000タイトルに相当し、1日12時間見ても見終わるまでに1年間かかる情報量です。ものが思い出せない場合、よく、「記憶力が悪い」といういい方をしますが、実際には記憶されているものを取り出すことができない、という表現が正確です。この膨大な記憶量から必要なものを探り当てる能力、すなわち「想起力」が記憶力のキーだ、というのがトニー・ブザンの主張です。
また、右脳と左脳の働きについても、最近よく分かってきました。右脳は図形処理や直感的思考を担当し、左脳は言語処理や論理的な思考を担当しています。マインド・マップは、ニューロンとシナプスの構造を模した放射状のビジュアル構造と、キーワード連想を使った論理構造で、右脳と左脳の両方を刺激します。マインド・マップに近いものにダ・ヴィンチのノート(図2)があります。その構造は、絵と文章が交錯しており、右左両脳の協調によって成り立っていることが分かるでしょう。
このような人間の脳の働きを、コンピュータと対比してみます。コンピュータは情報をデジタルで処理するため、大量の情報を正確に長期間記憶することが得意です。一方、人間の脳は、脳細胞のシナプスを伝わる電気信号の強弱というアナログな情報処理メカニズムのため、時間の経過とともに情報の細部が失われる記憶の劣化は避けられません。しかしながら、与えられた情報に対して無意識に重み付けを行いながら、同時に過去の記憶の中から類似、関連する情報を検索するという、現在のコンピュータではまねのできない高度な処理を瞬間的に行うことが可能です[2]。
[2] 例えば、毎日鏡で見慣れているはずの自分の顔ですら、「正確に」思い浮かべることは困難ですが、小学校以来の友人にばったり出会っても、それまでに知り合った数百人、数千人の友人・知人の中から瞬間的に個人を特定し、その名前や忘れていた過去のエピソードまで次々に思い出したという経験は誰にでもあると思います。
記憶しているものを思い出す力、それは、連想とかかわっています。連想は、発想の連続です。うまくビジュアルな刺激を使えば、昔の友人のようにこの連想を喚起することができ、記憶を呼び覚ますことができるのです。
この想起力・発想力を高めるに、脳のメカニズムにうまく働きかけるのがマインド・マップです。情報を簡潔なキーワードに集約し、キーワード間の連想関連を放射状に広がるビジュアルな位置関係で描くことで、イメージによる記憶が呼び起こされるだけでなく、図形処理のために右脳が働き、同じ右脳による直感的思考を喚起して、脳の記憶と検索のメカニズムを働きやすくします。
この記憶を呼び覚ます力、想起力のおかげで、例えば、ボーイング社では、航空機の製造マニュアルを長さ7メートルのマインド・マップにし、研修期間を大幅に短縮、1000万ドルの経費削減をしたという報告があります。また、自閉症の子供がこの記法を使うことでどんどん自分の世界を広げていったという報告もあります。
さて、少々マインド・マップについての説明が長くなりました。次に、これをどのように私たちの仕事の現場で使っていくか、という観点で考察していきましょう。
ここでは日々の仕事の場面において、どのようにマインド・マップが活躍しているか、具体例を基に示したいと思います。以下に、筆者らの周りのマインド・マッパー[3]たちが実際に行っている具体例を、5つ紹介します。
マインド・マップで、議事録やインタビューの記録を作ります[4]。決まったこと、聞き取ったことなどをどんどん打ち込んでいきます。テンプレートとなるBOI(議事録であれば、日時、場所、参加者、目的、アジェンダ、宿題、インタビューであればインタビューしたい項目)などをあらかじめ用意しておくことで、素早く記録することができます。マインド・マップツールによっては、マウスを使わずに「リターン」キーでどんどん兄弟トピックスを作って、「INS」キーで子トピックスを作っていくことができますので、とても快適に入力できます(図3)。また、目立たせたい部分を塗りつぶす、などの細工もできます(宿題、の部分など)。
マインド・マップで、プレゼンテーションの骨格(メモ)を作ります。パワーポイントの資料の下書きとなります。マインド・マップツールによっては、そのままプレゼンテーションできるものもあります。マインド・マップでプレゼンテーションの骨格を作成する利点としては、全体を見渡すことができるという点です。プレゼンテーションソフトで全体表示もできますが、基本的には1画面1枚のシートの集合です。全体のストーリー展開や、つながりを一望できるため、プレゼンテーションの骨格がぶれないようにチェックすることが容易です。さらに、マインド・マップをそのままプレゼンテーションに利用すれば、通常のシート集合のプレゼンテーションに比べて、聴衆が常に全体感を知ることができるという利点もあります。先のKent Beckは骨子のマインド・マップを1枚表示したまま講演をしていました。恐らくそのマインド・マップは聴衆に非常に強いインパクトを与えたはずです。
大きなホワイトボードにテーマを書き、全員でマインド・マップを作るという手法があります。お互いのアイデアに刺激されて、どんどんマップが広がっていきます。数人で書いたブレインストーミングの成果は、壮大なマインド・マップになります。図4は、プロジェクトの「振り返り」(KPT)をマインド・マップを利用して行った例です(図4)。
KPTはプロジェクトの振り返りを行う際のフォーマットの1つです。KeepのBOIには、今後も続けたいことを、ProblemのBOIには、問題点を、そしてTryのBOIには、次回試してみたいことを書き込んでいます。マインド・マップを使わない会議で、参加者がここまでたくさんのホワイトボードに書き込みをするという情景があるでしょうか? マインド・マップの自由な記法は、ホワイトボードの隅々までコメントを書けるほど柔軟性に富んでおり、自分の言葉でコメントを書こうという意欲を促進させます。
読んだ本、聞いた講演・セミナーの概要を、マインド・マップを使ってまとめることもできます。講演・セミナーでは、素早くメモを取る必要があるため、キーワード指向のマインド・マップは非常に相性が良いといえます。さらには、完成したマインド・マップを見ることで、講演・セミナーの構成がバランスが取れていたかが一目で分かる[5]という利点もあります。そして、このメモを見ることで、実際にそのセミナーの場面を思い出すことができる、という想起性が生かされる使い方です。特に最近ではセミナーに行くと、その場でスケッチブックを取り出してマインド・マップにメモを取っている人を見かけるようになりました(図5)。
『3色ボールペンで読む日本語』や『声に出して読みたい日本語』で有名な斎藤孝さんの著書に『偏愛マップ』自己紹介手法があります。これは、自分の趣味(偏愛しているもの。特にオタクであればあるほど、特殊であればあるほどよい)をマップに書いて見せ合う、という手法です。プロジェクトのキックオフのときに、これを使って自己紹介しているチームがあります(図6)。
マインド・マップという記法を、UMLを補完するツールとして、要求分析などの上流工程で応用する方法を紹介

 

[ 371] @IT:みんなが悩む要求管理(7)
[引用サイト]  http://www.atmarkit.co.jp/farc/rensai/re_mgt07/re_mgt07.html

システム開発において、「初期の段階で要求を確定し、その後変更しない」ことが可能であれば、要求を実現するシステムを構築する開発チームにとっては、非常にうれしいことです。しかし、実際のシステム開発においては、初期の段階で要求を確定することはあまり現実的ではありません。
例えば、競合他社が新しいテクノロジを導入したり、システム開発のための予算が削減されたりといったようなビジネス環境の変化が起こり、要求を変化せざるを得ないケースは少なくありません。また、開発の初期段階において顧客自身がどんなシステムが欲しいのか分からなかったり、開発が進むにつれて顧客のシステムに対する認識が変わったりするなど、要求を初期の段階で確定することが難しいことは明らかでしょう。これらのことから、システム開発において要求の変化が避け難いことは容易に想像がつきます。
では、そもそも要求が変化する可能性が高い状況では、どういう対策を取るべきなのでしょうか? まず、変更に強いシステム・アーキテクチャ(基盤設計)を設計すること、バージョン管理、リリース管理を含むソフトウェア構成管理を正確に行い、変更が入った際に、成果物の修正を管理できる体制を整えることが大切です。
また、ソフトウェア開発の開発工程そのものを考えたときには、反復型の開発プロセスがその対策として挙げられるでしょう(第6回「反復型開発における要求管理の流れ」)。 反復型開発においては、プロジェクト全体での時期に応じて、重要な作業を重点的に行います。
プロジェクトの初期の反復では、業務分析、要件定義が重点的に行われ、プロジェクトの後半の反復になると主に実装が行われます。ウォーターフォール型の開発のように、初期の段階で要求を完全に作成することにこだわるのではなく、各工程を繰り返すことで、要求に対する理解を深め、堅牢なアーキテクチャを作り、実装、テストを繰り返して段階的に完成度を増してゆくことができます。
これらのような、アーキテクチャ、ソフトウェア構成管理、反復型開発の話も大切ですが、今回は変更が入ったときにそれをどう取りまとめ、どう処理していくかという変更依頼管理に目を向けて、話を進めたいと思います。
要求に対する変更を管理するキーポイントの1つが、変更依頼と要求の違いを理解することです。変更依頼は、要求とは違うものです。表1は、変更依頼と要求の違いを簡略にまとめたものです。
まず、変更依頼から見ていきましょう。変更依頼は、利害関係者からのシステム開発に対する要望です。要望の内容は、まったく新しい機能であったり、既存機能の拡張であったり、障害の修正要望であったりするでしょう。変更依頼は、多くの利害関係者により記述されるので、その記述内容は正確でないことが多々あります。変更依頼の記述に使われている用語も、開発チームの用語集にそぐわないものが交じります。また、変更依頼は重複して登録されることが多々あります。例えば、システムに重大な機能が欠けていたときは、多くのユーザーがそれを指摘して変更依頼を登録するでしょう。
それに対して、要求はある問題を解決するシステムを作成するための、システムが満たすべき様態や能力を記述したものであり、顧客と開発チーム間の契約の基盤になるものです。良い契約の基盤であるために、要求は、「IEEE 830」の品質基準で定められているように正確で、明確なものでなければなりません。品質の高い要求であるからこそ、それを契約の基盤として、顧客と開発チームの間で合意を結ぶことが可能になります。
このように、変更依頼と要求を明確に区別すると、要求に対する変更をできるだけ少なくすることができます。つまり、何か変更したいという依頼が入ったらそこからすぐに要求、コードを修正するアプローチに比べて、システムに対する本当の「要求」と、多数の利害関係者から出てくる「変更依頼」の違いを理解し、変更依頼に対して正式な処理を踏んだうえで、必要なときのみ要求を変更するアプローチを取ることで、要求に対する無駄な変更を避けるのです。
要求と、変更依頼の違いを整理したところで、ここから、変更依頼に対する管理プロセスを見ていきましょう。表2は、変更依頼管理プロセスの例をステップにまとめたものです。
まず、変更依頼が登録されます。もし、開発チーム内のメンバーがその変更依頼に対して個々に対応して要求を修正したり、コードを修正したりすると、プロジェクト内の成果物に対してさまざまな変更が同時多発的に発生することになり、プロジェクトは管理不能な状態に陥ります。そうならないように、図1にあるようにすべての変更依頼を集めて、単一の承認ルートを通すようにします。このルートは、小規模なプロジェクトの場合は、プロジェクトマネージャのような担当者が取り仕切ることになりますが、ある程度大規模なプロジェクトの場合、要求や設計チームの代表者から編成した変更審査委員会(CCB:Change Control Board)が取り仕切ります。
次に、変更審査委員会は個々の変更依頼を分析して、どのように対応するか決定し、担当者をアサインします。その対応は、ある場合は、単純に要求に対して正確に実装されていないコードのバグを修正することになるでしょうし、ある場合は、要求を変更する、あるいは、新しい要求を作成することになるでしょう。いずれにしろ、いきなりコードに手を入れるのではなく、要求から修正が必要かどうかきちんと確認したうえで、要求から段階的に修正を掛けていくことが大切です。このときに、要求内でのトレーサビリティ、要求から設計、コード、テストケースへのトレーサビリティが引かれていると、変更依頼の分析、担当者の作業にとって非常に役立つことはお分かりでしょう。
もし、変更依頼が、要求セットに対する変更を含む場合は、変更依頼は要求を修正する際の土台になります。変更依頼自体がそのまま要求になるのではない、ということが重要です。最初にお話したように、変更依頼と要求は別物なのです。要求は、あいまいではなく、要求セットの中で矛盾が存在せず、検証されたものでなければなりません。変更依頼は通常、そういう視点では書かれていません。
変更依頼に対する作業をアサインされた担当者が作業を終えると、テスターが修正内容を検証し、正しく修正が行われたことを確認したうえで、変更審査委員会はその変更依頼に対する対応を終えます(クローズする)。
図2は、変更依頼管理プロセスと要求管理プロセスの関係を表したものです。図2の左側の要求関係から見ていきましょう。システム開発が始まると、解決すべき問題を分析し、利害関係者のニーズを理解したうえで、システムに対する要求を記述していきます。システム開発の初期の段階では、まだ要求そのものがきちんと形作られていないので、この段階では、特に変更依頼として個々の利害関係者の要望を処理する必要はありません。
そして、要求が固まってくる時期になると(RUPの場合、推敲フェイズの終盤)、要求セットのスナップショットを作成し(これを要求ベースラインと呼びます)、開発チームにこのベースラインを公開します。それ以降の要求ベースラインに対するすべての変更は、変更依頼管理プロセスも含めた形で行うようにします。
図2の右側の変更依頼関係に目を移します。ここでは、変更依頼が登録され、個々の変更依頼は、変更審査委員会によって審査されます。変更依頼が分析された結果として、この変更依頼を受け入れることになると、ベースライン化された要求セットに対して、修正を行うことになります。修正が終了し、反復のための要求セットが特定されると、この要求セットをベースに、設計・実装・テストが行われることになります。反復が終了し、次の反復が存在する場合は、また変更依頼を受け入れ、次の反復のための要求セットを特定する、ということを繰り返します。
以上、今回は、変更依頼管理(Change Request Management)を取り上げ、要求と変更依頼の違い、変更依頼管理プロセスの流れ、要求管理と変更依頼管理の組み合わせを説明してきました。多くの変更依頼を、変更審査委員会という単位ルートで処理することで、漏斗(じょうご)のように変更依頼を絞り込み、承認された変更依頼のみを要求から段階的に処理していく、というところがキーポイントでした。この仕組みを構築することで、要求に対する無駄な変更を避けることができるのがお分かりいただけましたでしょうか?
本連載では、RUPにおける要求管理の成果物とワークフローを取り上げ、要求管理の基本をできるだけ分かりやすく解説していきたい

 

戻る

ノーローンのサイトです。

ノーローンのサイトです。