USDMで要求仕様書の品質向上|~要求仕様を明確に記述するUSDMの紹介 Part3

みなさんこんにちは、ノッカーです。

今回もUSDM記法についてご紹介します。これまで2回(第一弾第二弾)にわたりUSDMについてお話ししましたが、今回は以下の課題に対する解決策をご紹介します。

  • 多くの要求から必要な情報を探すのが困難
  • 進捗状況を把握しにくい
  • 仕様を実装する際に疑問点が生じる

その前に、まずは前回までの内容を振り返りましょう。第一弾の記事では、以下の4つのポイントについてお話しました。

前回までのおさらい

要求を分割する

  • 複合的な要求を単純な要求に分割する
  • 曖昧な要求を具体化する

要求を分割することで、要求がより具体化されました。

要求を階層化する

  • 元の要求を上位要求とし、分割した要求を下位要求とする

要求を階層化し、分割前の要求の下に一覧化することで、解決すべき細かな要求が明確になりました。

理由を記述する

  • それぞれの要求に理由を付ける
  • 認識のズレを防ぐために、本質的な理由を記述する

「なぜその要求が必要なのか」を記述することで、要求の本質を理解し、認識のズレを防止しました。

仕様を導出する(要件を定義する)

  • 要求に含まれる具体的な処理や振る舞いを表現する
  • 特定できるレベルまで細かくする

要求を満たす仕様を導き出すことで、何をすべきかが明確になりました。

続いて、第二弾の記事では以下の4つのポイントを取り上げました。

キーワードラベル

  • 馴染みのある用語や別名を記述する

要求の本質を簡潔に示し、一目で理解できるようにしました。

説明を記述する

  • 補足事項や背景など、要求の記述では足りない情報を記述する

要求に関する事情や追加情報を追記できる場所を確保しました。

グループ化

  • 要求や仕様が多い場合、小さな集合に分類して範囲を限定する

カテゴリごとの仕様を明示し、左揃えで記述することでグループの区切りがはっきりし、視認性が向上しました。

仕様ラベル

  • 仕様であることを示し、要求と明確に区別する

特定の工程のステータス管理が可能になりました。

以上のプロセスを経て、以下の図が完成しました。

今回の課題の解決策

それでは、今回の課題に対する解決策について説明します。

  • 多くの要求から必要な情報を探すのが困難
  • 進捗状況を把握しにくい
  • 仕様を実装する際に疑問点が生じる

※今回改修する箇所は図の青い部分になります。

プロジェクトやチームで運用する際、個々がそれぞれの正義で一つの目的に向かうと、十人十色の成果物が出来上がってしまうでしょう。USDMで実用性を求める場合、同じ目的に向かう過程でも同じ作りに統一する必要があります。メンバー全員が一つのルールや定められたガイドラインに沿って作成することが重要です。

ただし、それほど難しいものではないので、軽い気持ちで読み進めてください。

(1)キーワードラベルのルール化

前回は要求の本質を簡潔に表現し、一目で理解できるレベルとしてキーワードラベルをご紹介しましたが、今回はそこにルールを加えることで利便性をさらに高める方法をご紹介します。

ルールとしては、単語を先頭にする区切り文字は「‗」を使用し、区切り文字以降は対象物を記載するの2点です。

例えば、「HDD容量不足通知機能」というキーワードラベルの場合、ルールに従うと「通知‗HDD容量」や「通知‗HDD容量不足」となります。また、「通信速度通知機能」なら「通知‗通信速度」となるので、他にも通知機能がある場合でもルールに従った記述によって検索が容易になります。

実際には複数の要求が存在するため、このルールに基づいて「通知_」という検索ワードを使用することで、多くの要求の中から必要な情報を効率的に探し出せるようになります。

(2)仕様ラベルのルール化と運用方法

前回の説明では、要求と仕様を明確に区別するための指標と、□の用途に意味を持たせることについて説明しました。内容としては概ねそれ以上の深掘りはしていませんが、今回は具体的にどのような用途で使用するのが適切かをご紹介します。

仕様ラベルの□の数は基本3個

仕様ラベルの□は、各工程の完了状況を示すためのチェックポイントとして使用します。基本的には、仕様をレビューした仕様を実装した実装内容をテストしたという3つのチェックポイントを設けます。これにより、「レビューが終わっていないのに実装されてしまった」や「実装前にテストを行ってしまった」などの行き違いを防ぎ、進捗も確認できます。これは一般的なフローに基づいた例であり、プロジェクトに応じて適切な仕様ラベルを使用することが重要です。

仕様ラベルの運用方法

仕様ラベルの□は、チーム全体が仕様の進行状況を一目で把握できるよう、工程の順序に沿って左から順にチェックできるようルール化します。たとえば、「レビューが完了していないのに実装が進んでしまう」や、「実装が完了していないのに検証済みとなる」といった事態を防ぐため、前工程が完了していないと次に進めないようにすることが重要です。これにより、仕様ラベルのチェック状況を一目で確認でき、進捗状況の把握が容易になります。

初めて見る人には、この□が何を意味するのか分かりにくい場合があります。そこで、関係者全員が仕様ラベルの運用方法を理解し、正しく使用できるよう、教育やガイドラインを作成しておくとよいでしょう。特に新規メンバーには、早期に運用方法を伝えることで、スムーズなプロジェクト進行が可能になります。

(3)仕様をSpecify(特定)させる

第1回でもご紹介した内容ですが、さらに具体化するために以下の対応を行います。

  1. 要求から目的語と動詞を導出する
  2. 目的語の「何を」と動詞の「どうする」を徹底的に検討する
  3. 検討した内容を特定(Specify)する

この作業は、感覚としては「なぜなぜ分析」に近いものです。仕様を明確にするためには、上記の工程2を何度も繰り返すことが重要です。目的語と動詞を明確にしてさらに細分化していくので、この対応を前述のガイドラインに組み込んでおきましょう。

では実際にこの図の要求である「保存するデータ」の部分を使って、更にSpecify(特定)してみます!

目的語が「データ」、動詞が「保存する」に該当します。

(AA01-1-1の仕様が細分化されます)

1. 要求を具体化する

「保存するデータ」に関連する仕様が何かを明確にします。具体的な仕様としては以下が考えられます。

  • データの種類(例:画像データ、テキストデータ、ビデオデータなど)
  • データのサイズ(例:ファイルサイズ、許容量など)
  • データの拡張子(例:JPEG、PNG、TXT、MP4など)
  • データのファイル名(統一するのか、指定はないのかなど)
  • データの例外処理(上記の仕様と一致しないデータの取り扱い)

2. 要求を満たすために対応する仕様を特定し、仕様欄に明記する

特定した仕様を詳細に明記します。

  • データの種類
    • データの種類はテキストデータのみとする
    • テキストデータ以外はエラーとして処理する
  • データのサイズ
    • データのファイルサイズは1Byte ≦ X ≦ 10KByte の範囲とする
    • 指定サイズ外のデータはエラーとして処理する
  • データの拡張子
    • データの拡張子は.txtファイルのみとする
    • .txtファイル以外はエラーとして処理する
  • データのファイル名
    • ファイル名は以下のフォーマットとし、日時は送信時のタイムスタンプとする
      <YYYYMMDD>T<hhmmss>_data_<送信元IPアドレス>.txt
      例:20000102T090807T012345_data_234.567.890.123.txt
  • データの例外処理
    • エラーを検知したタイミングでのタイムスタンプを以下のフォーマットでファイル名にして保存する
      <YYYYMMDD>T<hhmmss>_err_<送信元IPアドレス>.txt
    • ファイル内には送信元IPアドレスやOS情報を保存すること(形式は不問。ただし、実装した形式を追記すること)

といった具合に要求の洗い出しと仕様の特定を行っていきます。

表に書き出すとこのようになります。

表にまとめた後は、他の仕様との整合性や、それぞれの仕様に曖昧な表現がないかを確認します。これにより、開発やテストの段階で誤解や抜け漏れが発生するリスクを低減できます。また、特定した仕様が要求を正確に反映しているか最終確認することは、プロジェクトの成功に直結します。全員が同じ認識を持って作業に取り組めるよう、仕様の明確化が重要です。

まとめ

今回の取り組みを通じて、以下の課題が解決されたことをご確認いただけたかと思います。

  • 多くの要求から必要な情報を探すのが困難だった問題

 → キーワードラベルを用いることで、要求を効率的に検索・特定できるようになりました。

  • 進捗状況を把握しにくかった問題

 → 仕様ラベルを活用することで、仕様の進捗状況を一目で把握できるようになりました。

  • 仕様を実装する際に疑問点が生じる問題

 → 仕様の特定プロセスをしっかりと行うことで、実装時の疑問や不明点が事前に解消されました。

これらのツールや手法を効果的に活用することで、複雑なプロジェクトにおけるトレーサビリティの強化や作業の効率化が期待できます。プロジェクトの進行においては、全体の把握と管理がスムーズに進むよう工夫することが重要です。仕様や要求の管理においてUSDMを取り入れ、チーム全体のコミュニケーションを円滑にすることで、より良い成果を生み出せるようになればと思います。

最後までお読みいただき、ありがとうございました。

SHARE

  • facebook
  • twitter

SQRIPTER

AGEST Engineers

AGEST

記事一覧

AGESTのエンジニアが情報発信してます!
AGESTのサービスやソリューションのお問い合わせページはこちらです。

株式会社AGEST

  • 新規登録/ログイン
  • 株式会社AGEST
#TAGS人気のタグ
RANKINGアクセスランキング
NEWS最新のニュース

Sqriptsはシステム開発における品質(Quality)を中心に、エンジニアが”理解しやすい”Scriptに変換して情報発信するメディアです

  • 新規登録/ログイン
  • 株式会社AGEST