システムの開発において、仕様を明確に定義するということは、品質を確保したり開発期間を短縮したりするために重要なことです。
しかし、実際の開発では、仕様が曖昧であったり、検討が不十分であったりすることにより、さまざまな問題が発生する場合があります。
また、これらにより、仕様の意図とは異なる実装になっていて手戻りが発生したり、考慮不足により不具合が発生して、その対応に多くの工数や期間が必要になる場合も多いと思います。
ここでは、その要求仕様を記述するための手法である「USDM」を紹介します。
このUSDMは、"Universal Specification Describing Manner"の略で、株式会社システムクリエイツの清水吉男氏が提唱した正確な要求仕様を定義し記述するための技法です。
この技法の特徴は、上位の要求をさらに下位の詳細な要求に分割し、その下位要求から具体的な仕様を導出するような階層構造となっていることにあります。これにより、要求から仕様への論理展開が明確になり、また、検討漏れの起きにくい仕様の作成が可能になります。


また、要求を記載する際には、仕様の作成者がシステムに求めることを、「〇〇を××すること」のように、目的語と動詞を明確にして記載します。
さらに、要求にはそれと合わせて、その要求の「理由」を記載します。これにより、関係者でその要求が必要な理由や背景を共有し、認識のずれを防ぎます。
また、詳細の説明が必要な場合には、それも合わせて記載するようにします。
これを表形式で作成するとこのような形になります。

これは、各要求や要求仕様に独立したIDを振ることができるので、この要求仕様から作成される設計書やソースコードなどのドキュメント類と対応させることができ、管理もしやすくなります。
記載すべき量も多く、手間がかかるようにも見えますが、仕様の漏れや誤解などが起きにくくなることで、手戻りや不具合の発生などが起きにくくなることが期待できます。

