
ユーザー要件を引出すテクニック:
ユースケースかストーリーボードか
2006/2/1
機能はITシステムを成功させるために重要な要因の1つだ(最も重要だとする声もある)。ユーザーは、自分たちの仕事が楽に、早く、確実に片付くよう、ITシステムが支援してくれることを期待している。ユーザーは、ヒューマン・コンピュータ・インターフェイス(HCI)経由でシステムと対話するが、1990年代前半にGUIが台頭したことで、多くのユーザーが自分たちのニーズやシステムとの対話方法に対する希望を明確に示すようになった。ソフトウェアエンジニアリングにおけるHCIに重点を置いた場合、そこには解決しなくてはならない2つの問題がある。a)一般に、ユーザーはユーザビリティの専門家ではないこと、そして、b)ソフトウェアエンジニアはHCIの内側にある機能を特定し、それを構築しなくてはならず、HCI自体のユーザビリティはあまり気にしないのが一般的だ。本稿では、ユーザーがHCIを通じて視覚化し、考えながらシステムの機能を特定するのに有効なテクニックを紹介する。
ノート:GUIと、より一般的なHCIの概念との違いは、多くの読者にとってあまりはっきりしないかもしれない。しかし、さまざまな理由(例:パフォーマンスやサイズ)から、ITシステムすべてにGUIが搭載されているわけではない。例えば、コマンドや音声ベースのインターフェイスを搭載しているシステムもある。本稿で紹介するテクニックはたまたまGUIベースの例を使っているが、GUIは、人間とコンピュータが対話するために数多く存在する手法の1つにすぎない(身体障害者が利用できるアプリケーションの開発に関する特集記事などを参考にされたい)。このような理由から、筆者はHCIとGUIの2つのコンセプトを分けることにした。肝心なのは、HCIには多数の形態があり、GUIはその一例だということだ。
◆ 機能性と人間性
GUIにおいては、不要で好ましくない情報を過剰に提供することなくユーザーが自分の作業をこなせるよう、論理的でビジュアルな流れで機能の論理セットがグループ化され、可視化される。アプリケーションが起動すれば、ユーザーにはシステムとの対話を可能にするウィンドウ、コマンドライン、Webページといった何らかの形態のHCIしか見えない。これでは、ユーザーには技術的な詳細を覆い隠してしまうHCIがシステムのように見えてしまう。例えばユーザーは、システムの内部を理解していなくても、ボタンをクリックすれば関連付けられたリクエストが実行されるものと期待する。
筆者は、新しいシステムのビジュアルなプロトタイプをユーザーと共同開発した数年前、ユーザーの期待と、ソフトウェアエンジニアの設計上の考えとの間に明確な違いがあることに気付いた。筆者は、自分でできる部分の作業を進め、数日でプロトタイプを用意し、GUIにマッピングした業務フローを提案した。ユーザーはこのプロトタイプに対して非常に期待を高め、「システムはいつ用意できるのか?」と聞いてきた。画面のデータは画面に直接書き込まれたもので、機能もデータベースもない、と筆者が説明したときの彼らの落胆の大きさは想像がつくだろう。このHCIが実際に機能するシステムだとユーザーが思っていたことは、その後になって分かった。しかし、一般にオブジェクトモデルで示される実際の業務ロジックはまだ未開発でGUIともリンクされておらず、「見えない」オブジェクトモデルがないことにはHCIを用意できないことを説明するのは難しかった。
ほかにも、これらのユーザーからシステムとの対話やウィンドウの表示を切望する声があった。これらのウィンドウは、メインフレームでよく見られるような情報と単純な入力フィールドで埋まった。
しかし、いくらHCIが素晴らしくても、ユーザーの関心を長期的には引き留めておけない。「この注文に対する領収書はどのように出すのだろう?」あるいは「マネージャはどこで5000ドル以上の注文を承認するのだろうか?」といった疑問がすぐに出てくる。エンドユーザーがプロセスの流れをイメージするのは、HCIの助けがなくてはかなり難しい。彼らが機能に関するブレインストーミングをシステム開発後に行うのには、このような理由もあるのかもしれない。その時点では、当初設計した要件がソフトウェアとなり、ユーザーもそのソフトウェアを理論としてではなく実際のシステムとして体験済みで、システムの実際の使い勝手を説明できるようになっている。もちろん、機能に関するブレインストーミングが開発サイクルの終わりで行われるというリスクは、反復開発手法によって低減できる。
もう1つ、特に業務ITシステムにとって大きな理由は、アプリケーションが業務ワークフローを効率化するためのツールとして考えられる点だ。好奇心の強いユーザーは、メリットや影響を専門家に慎重に評価してもらう。例えば、なぜユーザーは机の上にあるコンピュータの横にいまも計算機を置いているのだろうか? 目の前にあるITシステムでは素早く簡単に計算できないことも理由の1つかもしれない。これは機能とHCIが、目の前にある当初からのワークフロー実現手段(この例では計算機)を捨てるようユーザーを説得できなかったケースだ。
人それぞれではあるものの、筆者の経験では、エンドユーザーはITシステムの構築が楽しいとは思わないのが普通だ。彼らは新しいITシステムが必要であることは分かっていて、開発を進めるに当たりソフトウェアエンジニアに協力するが、要件定義や設計レビューの部分に関してはあまり関心が高くない。要件の収集が彼らの専門であることはまれで、おそらくITの専門用語を学ぶことにも関心がない。また、その必要もないだろう。そこで、ユーザーの一連のニーズを管理し、ユーザーに分かりやすい言葉で対話するのは業務アナリストやソフトウェアエンジニアの仕事になる。
| Page 1 機能性と人間性 |
|
| Page2 ユースケースとストーリーボード |
The Rational Edge バックナンバー 連載インデックスへ»
- 第1回 要件仕様の決定に時間を割かない結末は?
- 第2回 先駆者に学ぶ「開発プロセス改善の原則」
- 第3回 あるプロジェクトリーダーの成功ストーリー
- 第4回 ソフト開発の変革というWebサービスの可能性
- 第5回 プロダクト・マネジメントを成功に導くには
- 第6回 分散コンピューティング時代のテスト手法
- 第7回 プロジェクトの特性に合わせた要件定義手法の選択
- 第8回 優秀なテスターの育成と訓練方法
- 第9回 「アジャイル」「RUP」「Rational XDE」の融合
- 第10回 Dr.ユースケースの “ユースケース人生相談”
- 第11回 Webサービスのテスト技法進化論
- 第12回 要件定義の考古学
- 第13回 チェスとソフト開発、その相関関係を探る
- 第14回 開発計画が破たんするには理由がある
- 第15回 要件定義の管理技術(Lv0〜Lv5)
- 第16回 オン・デマンドの波をキャッチしろ
- 第17回 オープンソース時代のテスト手法、そのノウハウ
- 第18回 オープンソース時代のテスト手法、テストのロードマップ
- 第19回 オープンソース時代のテスト手法、テストのまとめ
- 第20回 『オープン』の正体 (前編)
- 第21回 『オープン』の正体 (後編)
- 第22回 サブシステムの「なに?」「なぜ?」「どうやって?」
- 第23回 サブシステムとはモデリング概念である
- 第24回 アスペクト指向プログラミング オーバービュー
- 第25回 「プロジェクト管理」を管理するために
- 第26回 レッスン1:何もせずに取り残されるな
- 第27回 レッスン3:相違に注意を払え
- 第28回 大規模プロジェクトにアジャイルを適用する方法(前編)
- 第29回 大規模プロジェクトにアジャイルを適用する方法(後編)
- 第30回 アジャイル開発:成熟期の到来、その道のり
- 第31回 UML 2.0のキホン:コンポーネント図の詳細解説
- 第32回 コーディングの知恵を要件定義で利用する
- 第33回 隣のテストチームが優秀ないくつかの理由(前編)
- 第34回 隣のテストチームが優秀ないくつかの理由(後編)
- 第35回 中国のソフトウェア開発現場はこんなにスゴイ
- 第36回 ソフトウェア開発の「いま」と「近未来」の話
- 第37回 ルネサンスの巨匠たちに学ぶエンジニアリングの技
- 第38回 オブジェクト指向を超えて
- 第39回 ユーザー要件を引出すテクニック
- 第40回 ITプロジェクトを見える化する
- 第41回 ソフトウェアアーキテクチャって何なの?(前編)
- 第42回 ソフトウェアアーキテクチャって何なの?(後編)
- 第43回 ソフトウェアアーキテクトの役割
- 第44回 ソフトウェアアーキテクティングのプロセス
- 第45回 ソフトウェアアーキテクティングのメリット
- 第46回 ウォーターフォールから反復型への移行手順
- 第47回 トランザクション管理の複雑性を克服する パート1
- 第48回 トランザクション管理の複雑性を克服する パート2
- 第49回 汎用グラフィカルモデリング言語「SysML」 パート1
- 第50回 グラフィカルなモデル言語で製品構造を記述
- 第51回 キミのコードが汚い理由
- 第52回 「設計」や「構築」よりも重宝されるスキル
- 第53回 専門家に聞くモデル駆動開発のメカニズム
- 第54回 プロジェクトのはじめに計画を立てるのは無謀
- 第55回 「この開発プロジェクトは中止!」の基準
- 第56回 なるほど! ビジネスユースケース
- 第57回 そうだったのか! システムユースケース
- 第58回 不完全なコードは推敲フェイズで潰しておきたい
- 第59回 ビルドが全滅する原因
- 第60回 初歩の「Perl」「Python」「Ruby」
- 第61回 開発プロジェクトを「統治」するベストプラクティス
- 第62回 開発プロジェクト「統治」のピンポイント解説
- 第63回 反復開発の「ここはぜひカバーしたいポイント」
- 第64回 開発プロセス導入のアンチパターン
- 第65回 プロセスはチャンスが訪れるたびに改善する
- 第66回 自己管理型チームの利点と弱点
- 第67回 人事評価と開発者のモチベーション
- 第68回 鈍重な開発チームは鈍重なシステムを作る?
- 第69回 ソフトウェアが複雑なのは仕方がない?
- 第70回 ソフトウェアの複雑性を手なずける
- 第71回 見積もりの精度 Accuracy of Estimation
- 第72回 アジャイル開発の広範な普及を目指して
- 第73回 アジャイルとシステムテストの新たな関係(前編)
- 第74回 アジャイルとシステムテストの新たな関係(後編)
ホワイトペーパー(TechTargetジャパン)
|
|

