「仕様」とは前述の通り「要求」を実現するためのシステムの具体的な動きや制限を表したものです。
これは開発者への「どのように作るか」という作業指示と言い換えることもできるので、開発者が設計・実装するのに十分な詳細度で記載する必要があります。
下図はクルーズコントロールシステムの「要求」と「仕様」の例を表したものです。システムの「目標スロットル開度を算出」という要求の具体的な実現方法として、「目標加減速度と実スロットル開度を用いて2次元テーブルから目標スロットル開度を決定する」という「仕様」を導出しています。
「要求」を基にして「仕様」を作成しても、ただ思いついた「仕様」を書いていくというやり方では「仕様」のヌケモレを防ぐことはできません。
作成した「仕様」をレビューすることでヌケモレを検出する方法も有効ですが、レビューは多くの工数を必要とする手法であり、レビューだけでヌケモレを防止するのでは効率的とはいえません。
仕様を作成する段階でヌケモレを防止する仕組みを導入すれば、最初から品質の高い「仕様」を作成することができ、レビュー工数も削減することができます。
ヌケモレを防止する仕組みとしては、時系列分割、構成分割、状態分割、共通分割という思考のフレームワークを用いることが有効です。これは、「要求」から「仕様」を導出する過程で、例えば「構成の視点で要求を分割するとどのような仕様が導出できるか?」と考えることで、適切な「仕様」を導出する手法です。
これらのフレームワークは「仕様」を導出する場合だけではなく、上位要求から下位要求を導出する場合にも用いることができます。
さらに、このように導出した仕様からテストシナリオを抽出してテスト仕様書を作成することで、テストの段階でもヌケモレを防止できるというメリットもあります。詳細は「要求仕様書とモデルからテスト仕様書を作成」をご覧ください。