概要
ソフトウェア開発の成否を決める鍵となる「要求の仕様化」について、「要求」とは何か「仕様」とは何かという本質の考察から始め、仕様書作りの考え方や表現方法を、豊富な事例や図表を交えて具体的に解説する。この分野における草分け的な著書の改訂第2版であり、「仕様は要求に含まれる”動詞”およびその”目的語”に含まれる」とする著者の視点は、仕様の作成に携わる全ての関係者にとって参考になる。
本書の使い方
第1部:ソフトウェア開発における様々なトラブル事例を詳細に分析・紹介し、要求仕様書の占める重要性と開発現場における課題点を知ることができる。全ての読者の一読を勧める。
第2部:著者の提唱する、仕様記述法USDMを具体的に学ぶことができる。SEなど仕様書作成実務者向け。
第3部:「要求の仕様化」を後戻りなく推進するために必要な、「要件管理」のしくみと、要求仕様の出来栄えを判断する「計測」の方法について解説する。マネージャ向け。
何を学べるか
第1部 要求仕様にまつわる問題
ソフトウェア開発におけるトラブルの原因の多くは要求仕様に起因している。著者の経験から、要求の仕様化の問題が引き起こしたトラブル事例、そして、改善の効果の事例を紹介する。
第1章 要求仕様にまつわる問題
要求仕様にまつわるトラブルはどのようなものがあるのか、どこで発生しているのか、どのような形で現れるのか。様々な事例をもとに要求仕様をめぐる現状とその問題点を解説する。
第2章 なぜ仕様のトラブルが起きるのか
仕様のトラブルが改善されない原因を考察する。要求仕様書は書かれていながらも、必要な仕様化の作業がなされておらず、不適切な仕様書がトラブルを引き起こしている現状を、具体的な仕様を挙げながら分析する。
第3章 要求仕様は不要か?
短納期の要求が高まる中、要求仕様書を省略する動きも出ている。要求仕様書をテスト仕様で代替可能か、仕様化せずADD ON仕様にした方が儲かるか、仕様を書くよりコードを書く方が早いか、などのトピックを紹介し、こうした現状の背景と問題点を考察する。
第4章 仕様化の効果
これまでに紹介した様々なトラブル対して、著者がコンサルティングを通して要求の仕様化に取り組むことで確認してきた効果を紹介する。仕様の変更率の減少、設計や実装のイメージができる、試作が減る、トータル工数が短くなる、顧客と良好な関係が築ける、要件管理に取り組める、などの事例を紹介する。
第5章 要件開発の重要性
要求仕様書とは「今回のプロジェクトでしてほしいこと(Requirments)について、テストも含めた”作ることに集まった関係者”がその内容について認識を特定(Specify)できている文書」であると著者は定義する。ソフトウェアを「作る」ためにはどのようなことが「わかる」必要があるか、誰が要求仕様書を書くのか、どのように要求を洗練するのか、など要件開発の重要性を解説する。
第2部 要求仕様を書く
著者が本書で提唱する、要求を仕様化する記述法「USDM(Universal Specification Describing Manner)」具体的な要求仕様の書き方を、詳細な事例を挙げて解説する。またその応用として派生開発における変更要求仕様の書き方と、画面仕様の書き方にも触れる。
第6章 “要求”を書く
仕様モレを防ぐためには要求モレを防ぐ必要がある。そのためには要求を表現する技術を身につけなければならない。なぜならば要求は仕様を引き出すからである、と著者は説く。 要求の役割、要求が持つ「範囲」、「動詞」と「目的語」の大切さ、要求における「理由」の重要性、要求のカテゴリー化、システムを分割して記述する方法、品質要求の表現法などを解説する。
第7章 要求の階層化テクニック
要求から仕様を引き出すには、要求の扱う「範囲」が適切な広さであることが大切である。そのためには、要求を小分けにすることで仕様を引き出しやすくすることが必要となる。 本章では、要求を階層化して記述することにより、要求が扱う範囲を小さくするテクニックを、具体例を交えて詳しく解説する。
第8章 要求を仕様化する
前章で適切に要求を書き出せたら、次はそこから仕様を引き出す。「仕様とは要求を満たすべき”具体的な振る舞い”の記述」であると著者は定義する。そのうえで、仕様は、関係者間で合意(Specify)し、特定できる表現が求められる。 本章では仕様の作成とレビューのタイミング、具体的な記述法や、陥りがちな注意点などを、詳しく解説する。
第9章 Excelによる仕様化の勧め
要求仕様書をExcelで書くことの利点やその応用を解説する。 要求書と要求仕様書を一体化する、要求に対してどのモジュールで実現しているかを把握することができる「トレーサビリティマトリックス(TM)」を作成することで仕様変更の管理を容易にする、などExcelを使うことによって実現できる様々なテクニックを紹介する。
第10章 派生開発における要求仕様書
ソフトウェア開発の大部分は派生開発である。開発期間は短く、関係者は既存システムを十分に理解できる状況にないまま、既存のソースコードに機能追加や修正を加える。そのため、このような派生開発に合った要求仕様書が必要となる。本章では「変更要求仕様書」と「追加機能要求仕様書」の2本立ての仕組みと、そこでの表現上の注意点などを説明する。
第11章 画面仕様書のあり方
最近のシステムは画面操作が大きな比重を占めているが、現実には画面仕様が稚拙なため、何度もプログラムコードを修正しながら、顧客の要求に近づけるというアプローチをとっている。本章では画面仕様書の問題点を分析し、顧客の要求を外しにくい仕様の記述法を解説する。
第12章 ヒアリング時の注意
要求仕様書をまとめるには、顧客にヒアリングを行う必要があるが、依頼者のほうで要求仕様書をまとめてくる場合、要求や仕様のモレを発見することは難しい。ヒアリングにおけるこのような場合での対処法や注意点を解説する。
第3部 要件管理と計測
「要求の仕様化」を後戻りなく推進するために必要な、「要件管理」のしくみと、要求仕様の出来栄えを判断する「計測」の方法について解説する。また、「要求の仕様化」テクニックの応用例も紹介する。
第13章 仕様化を支える要件管理
無節操な仕様変更の要求を適切に管理しなければ、プロジェクトのゴールは約束できなくなる。発注側と設計側の双方が変更管理プロセスを理解し、順守することが重要になる。本章では、「なぜ仕様が変更されるのか」から始まり、関係者間のオリエンテーリング、レビュー、ベースラインの設定と合意、仕様変更のコントロール法などを解説する。
第14章 仕様化の出来栄えを測る
「要求の仕様化」の取り組みを推進するためには、要求仕様の出来栄えを判断する「計測」が必要である。その際の「何を計測するか」、および「計測方法」と「判断の基準」について解説する。
第15章 仕様化技術の応用
本書で紹介した「要求の仕様化技術」は曖昧な世界、抽象的な世界を具体化する技術である。この技術がリスク管理のブレークダウンに応用できることを紹介する。