ソフトウェア開発において、顧客の要求やシステムの仕様があいまいなまま進行すると、手戻りや認識のズレが多発します。こうした課題を解決するための有力な手法と位置付けられているのが「USDM(Universal Specification Describing Manner)」です。
本稿では、ソフトウェア開発におけるUSDMとは何か、特徴からメリット、作成手順、ポイントまでまとめてお伝えします。ソフトウェア開発の上流工程に携わる方、あるいはこれから携わりたいと考えている方は、ぜひ参考にしてください。
- もくじ
1. ソフトウェア開発におけるUSDMとは
USDM(Universal Specification Describing Manner)とは、ソフトウェア開発において顧客の「要求(実現してほしいこと)」を、それを満たすための「仕様(あるべき姿)」に落とし込むための手法です。清水吉男氏が提唱しました。
一般的なソフトウェア開発の流れでは、顧客の要求に沿って、どのような仕様にするか決めていきます。しかし、往々にして顧客の要求はあいまいなものであり、正確な仕様を導き出すことは簡単ではありません。
そうした要求を独自の解釈・フォーマットで整理・構造化し、具体的な仕様に落とし込む手法がUSDMです。
2. USDMの特徴
USDMには、要求を明確な仕様に落とし込むためのさまざまな特徴があります。USDMの特に基本的な特徴は、次の3つです。
2-1. 要求は「目的語+動詞」で記述する
USDMでは、要求は「目的語+動詞」の形式、つまり「〇〇を△△する」といった具体的な形式で記述します。要求における目的語・動詞を具体化した先に、仕様が存在するという考え方にもとづいているためです。
たとえば、顧客から「商品管理機能を追加する」といった抽象的な要求があったとします。これを具体化して「商品情報を登録する」「商品情報を更新する」「商品情報を削除する」のように記述します。
「目的語+動詞」という単純なパターンに落とし込むことで、曖昧・複雑な要求でも扱いやすくなります。
2-2. 要求には理由(背景)を併記する
USDMでは、各要求に対して理由(背景)を併記するのが特徴です。つまり、「なぜその要求が必要なのか(必要となったのか)」をセットにして整理することで、理由が要求の根拠となり、表現方法に多少の問題があっても誤解が生じにくくなります。
たとえば、「商品リストを印刷する」という要求に対して、「営業担当者が出先で商品情報を確認できるようにするため」といった理由を記述します。理由によって要求の根拠が明確になるため、顧客の真意を理解しやすくなるでしょう。
2-3. 要求は階層構造で整理する
USDMでは、複雑な要求を階層構造で整理するのが特徴です。特に、理由をうまく書けない要求は、粒度が大きすぎる疑いがあります。こうした要求は細分化し、大きな要求の下に小さな要求を段階的に配置していくことで、ツリー状に整理します。整理にはマインドマップのようなツールを使っても問題ありません。
なお、階層構造は2段階までにとどめるのが基本ルールです。また、1つの要求に対して仕様は7個までとされています。こうしたルールを踏まえることで、要求の全体像が明確となり、整理・分析がしやすくなるでしょう。
3. USDMを採用するメリット
USDMの採用は、ソフトウェア開発の現場における課題を解決するうえで有効といえます。USDMを採用する主なメリットは、次の4 つです。
3-1. 認識違いによる手戻りを抑制できる
USDMを採用すれば、認識違いによる手戻りを抑制することができます。USDMでは、要求とそれに対応する仕様をExcelなどの表形式で分かりやすく整理し、「要求仕様書」として明文化します。その要求仕様書を共有すれば、あいまいな表現による顧客・開発者間での認識違いが生じにくくなるでしょう。結果として、顧客の意図が反映されないまま開発が進み、後から修正が発生するといった事態を避けられます。
3-2. コミュニケーションが円滑になる
USDMは、コミュニケーションを円滑化する手段としても有効です。階層構造で整理された要求や仕様は明快で、顧客・開発者を問わず理解しやすいと言えます。USDMを共通の土台とすることで、関係者全員が共通認識を持ちやすくなるでしょう。その結果、知識や立場の違いによる誤解が減り、やり取りの無駄も最小限に抑えられます。
3-3. テストがしやすくなる
USDMの採用によって、テストがしやすくなる側面もあります。仕様は、テスト設計における重要な前提情報です。USDMによって仕様が具体的に整理されていれば、テストの観点や期待値などを明確にしやすくなります。たとえば、「〇〇を△△する」といった記述は、テストの期待値に落とし込みやすいでしょう。また、要求と仕様の対応関係が明確になるため、テストケースの抜けや漏れの抑制にもつながります。
3-4. 派生開発や変更管理に強い
要求と仕様の対応関係が明確なUSDMは、派生開発(既存の製品をベースに改良・拡張する開発手法)や変更管理にも強みを発揮します。整理された要求と仕様を流用・修正する形で進められるため、開発コストや時間を効率的に削減できます。また、要求に変更が生じた場合でも対応する仕様を素早く特定でき、階層構造によって影響範囲を把握しやすい点も強みです。
4. USDMによる要求仕様書の大まかな作成手順
USDMを活用して要求仕様書を作成する際の手順は、大まかに下記の5ステップです。
- 要求と理由の明確化
- 要求の階層化と分割
- 仕様の導出と具体化(Specify)
- テンプレートへの落とし込み
- レビューと合意形成
各ステップについて、順番に見ていきましょう。
4-1. 要求と理由の明確化
まずは、顧客の要求を「目的語+動詞」の形式で記述し、それぞれに理由(背景)を付けて明確化します。前述のとおり、要求と理由をセットで整理することで真意が明確となり、誤解や認識のズレを防ぐことができます。たとえば、下記のように言語化できます。
要求:顧客情報を管理する
理由:新規顧客の情報を社内で共有し、後の対応や分析に役立てるため
4-2. 要求の階層化と分割
次に、粒度が大きすぎる要求を適切に分割し、階層構造で整理します。前述のとおり、USDMでは要求の階層は最大2段階まで、1つの要求に含まれる動詞(=仕様)は最大7個を目安に整理しましょう。たとえば、先ほどの要求を下記のように階層化できます。
上位要求 | 顧客情報を管理する |
---|---|
下位要求 | 顧客情報を登録する 顧客情報を更新する 顧客情報を削除する 顧客情報を一覧表示する |
4-3. 仕様の導出と具体化(Specify)
続いて、階層化された要求から、仕様を具体的に導出します。USDMにおける仕様は、要求に含まれる「目的語+動詞」をもとに、実装可能なレベルにまで詳細化したものです。
たとえば、「顧客情報を登録する」という要求から、下記のような仕様を導出できます。
- 「新規顧客登録」ボタンをクリックすると、顧客登録フォームを表示する
- 顧客登録フォームには氏名、電話番号、メールアドレスの入力欄を用意する
- 「登録」ボタンをクリックすると、入力された顧客情報をデータベースに保存する
- 登録完了後に、登録完了メッセージを表示する
- 必須項目が未入力の場合は、エラーメッセージを表示する
このように、仕様を1つひとつ具体化することで、実装の方向性が明確になります。
4-4. テンプレートへの落とし込み
明確化された要求や理由、仕様を、USDMのテンプレートに沿って整理します。USDMでは、Excelなどの表形式を用いることが一般的です。テンプレートに落とし込むことで再利用性や可視性が高まり、情報共有もしやすくなります。
一例として、次のように表形式で整理することができます。具体的な記載方法や形式は、プロジェクトの目的やチームの運用ルールによって変わってきます。
4-5. レビューと合意形成
USDMの要求仕様書が作成できた後は、顧客や開発者、テスト担当者など、関係者を交えてレビューを実施します。一度で完璧な要求仕様書を作成することは難しいため、確認と修正を繰り返しながら品質を高めていきます。後々の認識違いによる手戻りを防ぐためには、各関係者間で確実に合意を形成することが大切です。
5. USDMを取り入れる際のポイント
USDMを現場に取り入れる際には、次のポイント2つを押さえておきましょう。
5-1. トレーサビリティを確保する
USDMの要求仕様書を作成する際には、トレーサビリティ(追跡可能性)を確保しましょう。トレーサビリティとは、要求・仕様・テストといった各情報を相互にたどれる状態のことです。
たとえば、USDMの仕様ごとに一意の管理番号を付け、その番号を対応するテストケースにも記載します。そうすることで、どの仕様がどのテストで検証されているかを明確に追跡できます。要求に変更があった場合も、その影響範囲をすぐに把握できます。
5-2. 関係者と共通理解を持つ
USDMの要求仕様書を、単なる「過去の文書」で終わらせてはいけません。大切なのは、プロジェクトに関わるすべての関係者とその内容を共有し、共通理解を持つことです。
顧客、開発者、テスト担当者など、役割の異なるメンバーが同じ目線で仕様を把握できれば、やり取りの中で発生する認識のズレを減らせます。意見が分かれたときにも、USDMを基準として冷静に議論を進めやすくなるでしょう。
6. まとめ
ソフトウェア開発におけるUSDMとは、あいまいな要求を具体的な仕様に落とし込むための手法です。「目的語+動詞」の形式で要求を明確化し、理由や階層構造とともに整理することで、手戻りや認識のズレを防ぎます。
テンプレートを使った共有や関係者間のレビューを通して、共通理解を築ける点も強みです。USDMを取り入れる際には、本稿の内容をぜひ参考にしてください。