みなさんこんにちは、ノッカーです。
今回、USDMにかかわる記事の第二弾を書かせていただきます。
前回の記事では、USDMを使用することで、要求や仕様を階層化することで、実装時の抜けや漏れ、誤りなどの問題が効果的に解決できることを紹介しました。
今回は、USDMにより工夫を凝らして、可読性向上や管理の効率化を図った方法を紹介します。
おさらい|USDMとは?(要求仕様書)
USDM(Universal Specification Describing Manner)とは、日本語で言うと
要求と仕様の記載方法を定義したもの
となり、要求仕様を明確に定義するための手法です。詳細については後で説明しますが、まずはUSDMを利用することになった背景からお話したいと思います。
前回の振り返り
前回の振り返りとしては以下4点。
- 要求を分割する
・複合的な要求を単純な要求に分割する
・曖昧な要求を具体化する
要求を分割することで、より要求が具体化されました。
- 要求を階層化する
・元の要求を上位要求として分割した要求は下位要求とする
分割前の要求の配下に一覧化することで解決しなければならない細かい要求が明確になりました。
- 理由を記述する
・それぞれの要求に対して理由付けする
・認識のブレを抑えるために本質的な理由をつける
「なぜその要求が必要なのか」を理由として記述することで要求の本質が理解できて、認識のブレを防止しました。
- 仕様を導出する(要件を定義する)
・要求に含まれる具体的な処理や振る舞いを表現する
・特定できるレベルの粒度まで細かくする
要求を満たす仕様を導き出すことで何をすればいいのか明確になりました。
そして、前回までの完成図がこちらです。実用レベルではありますが、見た目が単調で読み込みにくいという課題があります。
USDMを工夫する
今回は、より工夫を凝らして、可読性向上や管理の効率化を図り、以下の問題を解決していきます。
- 要件の本質を簡潔に示したい
- 仕様が多すぎて混乱しそう
- 仕様毎の進捗状況が不明瞭
さらに、私が取り入れているプラスアルファの手法も併せてご紹介いたします。
USDMの可読性向上や管理の効率化
今回追加する部分は以下の図のフォーカスが当たっている部分です。
(1)キーワードラベル 馴染みのある用語や別名を記述します
(2)説明を記述 補足事項や背景など要求の記述では足りない情報を記述します
(3)グループ 要求や仕様が多い場合に小さい集合に分類して範囲を限定します
(4)仕様ラベル 仕様であることを示し、要求と明確に分離します
(1)キーワードラベル
まずはキーワードラベルについてです。
キーワードラベルは、上位要求に対して一覧性を持たせるために記述されます。参考図はごく一部分ですが、現場レベルでは上位要求が複数段階にわたることがあるため、キーワードラベルがあるかどうかで索引の容易さが変わります。
たとえば、要求が「保存するデータの容量がHDD容量を超える場合に空き容量不足であることを通知してほしい」という場合、キーワードラベルとしては「空き容量不足通知機能」や「HDD容量通知機能」とすることにより、要求の本質を簡潔に示し、一目で理解できるようにします。
(2)説明を記述する
次に説明欄についてです。
説明は理由を補足するために記述します。
そのため、要求と理由の内容だけで完結できる場合は記述を省略しても問題ありませんが、後で必要になる場合も出てくるかもしれないですし、統一性の観点からも記入する枠は用意しておいた方が良いです。
(3)グループ
次にグループについてです。
グループは数ある仕様を分類ごとに区分けします。グループ名は一括りにした仕様の総称で問題ありません。図には6つの仕様しか含まれていませんが、実際の現場では数十から数百もの仕様が記載されることがあります。
この手法では、グループを設定することでカテゴリごとの仕様を明示し、左揃えで記述することでグループの区切りがはっきりとして視認性が向上します。これにより、どのようなカテゴリがグループに含まれるのかを示し、仕様の関連性を視覚的に理解することができます。
(4)仕様ラベル
仕様ラベルには以下の2つの意味があります。
- 仕様であることを示す
- 「レビュー済み / 実装済み / テスト済み」などのステータス管理
チェックボックスにはそれぞれ意味を持たせ、チェックを入れていきます。上の図では3つのステータス管理が可能となっています。チェックボックスの個数やステータスの内容には具体的な指定がなく、各プロジェクトに合わせてステータスを定義することができます。
プロジェクトごとに毎回異なるステータスが設定されると誤認や混乱が生じる可能性がありますので、一定の範囲内で統一されたステータス管理を行うことをおすすめします。
また、アップデートが必要となる場合は、混乱を避けるためにも関係者に十分に周知し、確実かつ迅速に情報を伝えるようにしましょう。
USDMをちょっと工夫して上手にアウトプット
私が個人的に管理している表では、プラスアルファとして理由欄とグループ行にそれぞれ淡い赤と青の背景色を設定し、キーワードラベルから下の部分をグループ化しています。通常はこの図を袋綴じにしています。もし今回の図を使用してファシリテーターとして説明する場合、以下の図のように袋綴じにしてからスタートします。
「まずはHDD容量不足通知機能についてご説明します。容量不足による保存失敗を未然に防ぐため、<上位要求>の機能を実装します。細分化したものが以下の通りです。」と言って袋綴じを開きます。
「<上位要求>を満たすためには、保存するデータ容量に対して空き容量が確保できるか確認する必要があります。そのため、<下位要求>の機能を実装します。その仕様が青色の部分となります。」といった具合に、背景色を設定しておけば、例え傍聴者がUSDMで用いられる呼称を知らなくても、どこを示しているかがわかるようになります。
そして、それぞれの仕様を説明できたら、仕様ラベルの左端に✓マークを入れていきます。これで説明漏れも防げるようになりますし、どこを説明しているか、どこまで説明したかがわかりやすいです。
※私が参画しているプロジェクトでは、左端の仕様ラベルは「仕様説明済み」というステータスを使用しています。
私も最初はそれぞれのUSDMの役割ごとに色付けした結果、逆に見づらくなってしまったことがあります。元々整った表ですので、控えめくらいが丁度良いのかもしれませんね。
最後に
今回のまとめです。
- 要件の本質を簡潔に示したい
キーワードラベルでスッキリ見せて効率的な索引化
- 仕様が多すぎて混乱しそう
グループで用途別に分けて視認性向上
- 仕様毎の進捗状況が不明瞭
仕様ラベルに役割とルールを持たせてステータス管理
フォーマットさえ作ってしまえば、あとは使いまわすだけのものになり、記載する際もUSDMを用いていないときに書く労力とさほど変わらないだけではなく、USDMに則って作成された資料は階層化されて詳細化された仕様書なので、説明しやすいですし、理解しやすく構成されています。
しばらく運用していけば、どのあたりに何が書かれているかがわかるようになりますし、要求にも仕様にも番号が割り振られているので、指し示す場合においても役に立ちます。
更に私がこのUSDMを知っていく上で、これって別の用途にも使えるのでは?と思ったことがあります。例えば料理や旅行などです。
- カレーライスを作りたい!
- ロンドンに行きたい!
となればこれは上位要求になります。
日常生活でもUSDMを使ってできることはあり、練習の一環としても良いかもしれません。
仕事においては、タスク管理や課題管理の基盤としても有用です。「これはなぜ必要なのか?」と疑問に思った場合、要求を確認して解決することができます。同様に、「どこまで進んだっけ?」となれば、仕様ラベルで管理されていれば問題を解決するのに役立ちます。
USDMはUniversal Specification Describing Mannerとフルネームの最後にある通り「マナー」なので各プロジェクトが使いやすいようにアレンジできるのが利点だと私は思います。
以上がUSDMにおける可読性向上や管理の効率化のご紹介となります。
ここまで読んでくださいまして、誠にありがとうございます。