書評「ソフトウェア要求」

書評「ソフトウェア要求」

Karl.E.Wiegers (著), 渡部 洋子 (翻訳) , 日経BP社

カテゴリ:設計・開発

概要

ソフトウェア開発プロジェクトを成功させるためには、優れた要求を獲得する必要がある。そのために、ソフトウェア開発においては、設計・実装に入る前に、ソフトウエアに対するユーザーの要求を引き出し、分析し、文書にまとめる「要求開発」と、実装に入って要求変更が生じた場合の「要求管理」の二つのプロセスの実践と習熟が必要である、と著者は説く。本書はそのためのノウハウとプラクティスをまとめた。豊富な実例と、詳しい解説により、上記の作業に従事する技術者が持つべきスキル、ならびにソフトウェア開発組織が持つべきプロセスの構築方法を学ぶことができる。

本書の使い方

第1部:「優れた要求」とは何か、それを引き出すためのスキルとは何かを学ぶことができる。全ての読者に一読を勧める
第2部:ソフトウェア要求開発における技法やツールを段階を、実務の流れに沿って学ぶことができる。
第3部:要求の変更をいかに取り扱うかに重点を置いて、要求管理のノウハウを学ぶことができる。
実際に「要求開発」「要求管理」に携わるプログラマ、SEなどの開発業務担当者にはとりわけ第2~3部の熟読を勧める。
第4部:ソフトウェア開発の実践においてより効果を発揮するためのノウハウを解説する。
プロセス改善を担当するマネージャ、品質保証担当者に適している

何を学べるか

第1部 ソフトウェア要求―だれが、何を、何のためにするのか
「優れた要求」とは何か、それを引き出すためのスキルとは何かを解説する

第1章 ソフトウェア要求とは
要求に関する用語を整理する。まず、要求を「業務要求」、「ユーザー要求」、「機能要求」の3階層のレベルで定義する。そのうえで、要求工学には、要求を引き出す作業である「要求開発」と要求の変更などをメンテナンスする「要求管理」があることを説明する。また「悪い要求」によって引き起こされるトラブル事例、「優れた要求」の条件とそれを引き出すことによるメリットを解説する。

第2章 顧客の観点から見た要求
顧客と開発者がパートナーシップをもって要求開発に携わることが重要であることを述べる。顧客とはだれなのかを考察した上で、顧客がソフトウェア開発に関与する際の「10の権利」と「10の責任」を提示した、『ソフトウェア顧客の要求に関する権利宣言』を提案する。

第3章 要求工学の良いプラクティス
要求工学における50のベストプラクティスを、7つのカテゴリーに分類して紹介する。 要求工学における「知識」、要求開発の4つの構成要素である「要求引き出し」「要求分析」「要求仕様作成」「要求の妥当性確認」、そして「要求管理」と「プロジェクト管理」の7つのカテゴリーを紹介する。実施に当たっての難易度と、影響度の一覧表も提示される。

第4章 要求アナリスト
ステークホルダーのニーズを集めて分析し、文書化し、妥当性を確認する作業の責任者を「要求アナリスト」と呼ぶ。要求アナリストが持つべきスキルと知識、および組織におけるその育成について述べる。 第2部 ソフトウェア要求開発 ソフトウェアの「要求開発」の実務における技法やツールを、実際の業務の流れに沿って説明する。

第5章 製品ビジョンとプロジェクトスコープを規定する
業務要求は、ソフトウェアシステムのビジョンとスコープを定義するものであり、ここが不明確だとプロジェクトは災厄に見舞われる。業務要求をまとめるツールとしてビジョン/スコープ定義書、コンテキスト図を紹介する。

第6章 顧客の意見を見つける
優れたソフトウェアを出荷するためには、顧客の関与が重要である。顧客の意見を引き出すための方法を紹介する。要求に関する情報の発生源、複数のユーザーグループ(ステークホルダー)を分析する手法であるユーザークラスの考え方、ユーザーグループの代表者である「製品チャンピオン」を集めて開発を進める手法などを紹介する。

第7章 顧客の声を聞く
要求工学の核心は「要求引き出し」であり、ユーザー要求を発見することに重きを置く。本章では効果的な要求引き出しの原則を解説する。ワークショップの行い方、取得した顧客の情報の分類、抜けている要求の見つけかた、要求引き出しの完了をどのように判断するのか、などを解説する。

第8章 ユーザー要求を理解する
第7章で引き出したユーザーの要求を記述する方法として、ユースケース法とイベント応答表を紹介する。

第9章 ルールに従って行動する
あらゆる業務組織はその組織の業務ルールに従って動いており、アプリケーションの多くはこの業務ルールを実行する。業務ルールはソフトウェアの機能要求の主要な発生源である。だが業務ルールは文書化・管理されていない場合も少なくない。本章では業務ルールを扱う際のポイントを解説する。

第10章 要求を文書化する
要求を文書化し、ソフトウェア要求仕様書(SRS)として作成する際の要点を解説する。記述項目のテンプレート、優れた要求を書くための勘どころを集めたガイドラインの紹介、「悪い要求」記述の添削改善例、データ項目の記述を統一するためのデータディクショナリなどを紹介する。

第11章 1枚の絵は1024の単語に値する
要求を文書化する際に、図はある種の情報を文章より効果的に伝えることができる。本章では要求を図表の形にモデル化する技法を紹介する。 データフローダイアグラム、エンティティリレーションシップ図、状態遷移図、ダイアログマップ、クラス図、デシジョンテーブルとデシジョンツリーを説明する。

第12章 機能を越えるもの:ソフトウェア品質属性
ユーザーは製品の機能要求に注目するが、同時に、その製品がどれくらいよく動くのかという非機能要求にも期待を寄せる。本章では、こうした非機能要求の一部であるソフトウェア品質属性について説明する。 「ユーザーにとって重要な属性」と「開発者にとって重要な属性」の紹介、性能要求、設計言語Planguageによる非機能要求の定義、属性同士の優先順位を考慮する際のトレードオフの考え方などを解説する。

第13章 プロトタイプを使ったリスク低減
ソフトウェアのプロトタイプを作りユーザーに提示することで、より現実的な要求を誘発でき、ひいては顧客の不満足というリスクを減らすことができる。本章ではいろいろな種類のプロトタイプと、その使用方法について説明する。 水平プロタイプ、垂直プロトタイプ、使い捨て型プロトタイプ、進化型プロトタイプ、紙プロトタイプと電子プロトタイプなどを紹介する。またプロトタイプの評価法、使用する際のリスク、成功するためのポイントを解説する。

第14章 要求に優先順位を付ける
全てのソフトウェアプロジェクトにはリソースの制限があるため、要求に優先順位を定義する必要がある。本章では要求に優先順位を付けることの重要性、優先順位の簡単な分類尺度の提案、「価値」「費用」「リスク」に基づく優先順位分析の方法を解説する。

第15章 要求の妥当性を確認する
要求開発において、「引き出し」「分析」「仕様作成」のあとに行うのが「妥当性確認」であり、記述された仕様が望ましい形で記述されているか、要求として備えるべき特性を持っているかを確認する作業である。本章では要求をレビューする方法、並びに要求をテストする方法について解説する。

第16章 特殊な要求開発の課題
新規開発ではない場合の要求開発について解説する。既存のレガシーシステムの保守、シリーズ開発、市販の既製品のカスタマイズ、外注開発、不安定な緊急プロジェクト、などの特殊な開発プロジェクトにおける要求開発の要点を説明する。

第17章 要求開発に続くもの
要求開発の過程で得られたソフトウェア要求を、そのあとに続く実務に「翻訳」する作業の重要性と、ポイントについて解説する。「要求からプロジェクト計画へ」「要求から設計とコーディングへ」「要求からテストへ」の3つの作業が説明される。

第3部 ソフトウェア要求管理
ソフトウェア要求の変更をどのように取り扱うかを焦点に、「要求管理」について解説する。

第18章 要求管理の原則とプラクティス
要求開発のもう一つの構成要素である、要求管理について、その概要を解説する。 要求管理は4つの構成要素である「変更管理」「バージョン管理」「要求ステイタスの追跡記録」「要求追跡」からなる。本章では品質ベースラインに則った要求管理の手順や方法を解説する。

第19章 変更発生
ソフトウェアプロジェクトにおいては、コントロールされない要求変更はスコープクリープを引き起こし、納期の遅れや品質問題などトラブルの原因となる。本章では、適切に要求の変更管理を行う方法を解説する。 変更管理プロセス、変更管理委員会、変更管理ツール、変更アクティビティの測定、変更による影響分析などを説明する。

第20章 要求連鎖のつながり
要求の変更が広範囲にわたって影響し、製品の多くの部分を修正しなければならないことがある。本章では、要求の追跡(トレーサビリティ)を解説する。要求追跡の重要性とメリット、要求追跡マトリックスなどのツールの使い方、要求追跡の手順などを解説する。

第4部 要求工学の実行
ソフトウェア開発の実践においてより効果を発揮するノウハウを解説する。

第21章 要求プロセスを改善する
プロセス改善のために何が必要か、そのポイントを解説する。ソフトウェア要求が他のプロジェクトプロセスやステークホルダーグループとどのように関連しているかを整理・把握したうえで、プロセス改善の原則、プロセス改善のサイクルを解説する。また要求開発の生産性を向上させるために有効なプロセス資産にどのようなものがあるかを紹介する。

第22章 ソフトウェア要求とリスク管理
本章では要求関連のリスク管理について解説する。リスク管理の概要を解説したうえで、「要求引き出し」「要求分析」「要求仕様作成」「要求の妥当性確認」「要求管理」のそれぞれの活動におけるリスクを挙げ、その対応策を解説する。