第4回 開発者に伝わりやすい、要求記述、要求仕様を書くためには。USDMを構成する上で最も重要なポイント。
第4回 USDMコラム
USDMとは、ソフトウエア開発の上流工程で必要となる、正確な要求記述、要求仕様を定義する技法で、製造業をはじめ多くの企業に導入されています。
今回はUSDMで最も重要な、要求と仕様について、そしてその関係について紹介します。
本コラムではUSDMとは?の基礎から応用までを、数回に分けてわかりやすく解説していきます。
はじめに
要求と仕様について、エッセンスを紹介します。
https://member.eureka-box.com/products/10/categories/4909959/posts/16531163
USDMの7つの構成要素のうち、最も重要なのが要求と仕様、そしてその関係です。まず、それぞれの定義を確認しましょう。
USDMでは、要求は「実現してほしいこと」であり、ゴール・目的を達成するシステムに求められることです。
仕様は「作るべきもの」に対する具体的な記述で、関係者間でSpecify(特定)されたものです。
要求と仕様の関係は、要求者が提示する「実現してほしいこと」として書かれた文言から、仕様を導出し、その仕様を開発者が実現する、という関係です。
要求と仕様の定義、関係のイメージ
https://member.eureka-box.com/products/10/categories/4909959/posts/16531163
要求と仕様の関係をもう少し詳しく見ていきましょう。
たとえば、「動作が通常モード中、入力の情報が変化したら、再計算をしてアクチュエータに指示し、計算結果を表示する。」という要求の場合、図のような要求と仕様の関係になります。外側の楕円が要求が求める範囲で、その中に仕様が収まっています。
USDMでは、この要求と仕様の関係を階層的に表現します。具体的には、次のスライドで説明します。
要求と仕様を階層構造で表現する
https://member.eureka-box.com/products/10/categories/4909959/posts/16531163
それでは、要求と仕様を、どのように階層構造にすればよいのでしょうか。クルーズコントロールを題材にご説明します。
上位要求は、“定速走行”と“アクセル操作なしの速度調整”の2つで、対象が提供すべき機能・サービスの振る舞いを記述します。
“定速走行”の下位要求は、“定速走行指示の認識”、“速度設定”、“スロットル開度の調整”の3つで、上位要求に含ま
“スロットル開度の調整”の仕様は、“算出式”の仕様、“エンジンへのスロットル開度指定”の仕様、“クルーズコントロール中である”という仕様の3つで、振る舞いを要求者と「合意」できるように記述します。
このように、要求から仕様へ、具体的な内容に落とし込みます。
USDMの記述例
https://member.eureka-box.com/products/10/categories/4909959/posts/16531163
こちらがUSDMの記述例です。黄色の部分が上位要求、水色が下位要求、白の部分が仕様です。
1つの上位要求に対して下位要求が2つ、それぞれの下位要求に対して仕様が4つずつ書かれています。このように、階層的に記述していきます。
Eureka Boxは厚生労働省が実施している助成金、人材開発支援助成金の適用対象となります。
USDMにおける要求の役割
https://member.eureka-box.com/products/10/categories/4909959/posts/16531163
USDMにおける要求記述の役割は3つあります。それぞれについてご紹介いたします。
- 実現したいことを振る舞いで表現することで、システムがどのように振る舞うかを明らかにします。単に機能名を羅列するものではありません。
- 実現したいことの「範囲」を表現することで、要求の範囲を明確にします。これにより、要求のモレに気づきやすくなります。要求として振る舞いを記述する際に、その記述に含む振る舞い、含まない振る舞いを書き分けることで、要求の範囲が決まります。
- 振る舞いをすべて「動詞」で表現することで、仕様を導き出します。「~する」という動詞の形で記述することで、システムの動きを明確に浮かび上がらせ、その動きの具体的な実現方法である仕様を検討することができるようになります。
USDMにおける要求の書き方
https://member.eureka-box.com/products/10/categories/4909959/posts/16531163
仕様をうまく導き出せるように要求を記述するには、システムにどのように動いてほしいかを具体的に表現します。それには、「何を」「どうする」という「目的語」と「動詞」を見つけ出します。
たとえば、「計測データを」「受信する」、「平均値を」「算出する」、リアルタイムに「それを」「表示する」といった具合です。
このように、「目的語+動詞」の連鎖で記述して要求の範囲を明確に表現すると、そこに含まれる仕様が導出できるようになります。
要求から仕様へ
https://member.eureka-box.com/products/10/categories/4909959/posts/16531163
要求では、実現したいことの振る舞いと範囲を明らかにし、目的語と動詞を見つけ出しました。
次にそれを仕様へと落とし込んでいきます。
仕様は要求の目的語・動詞から導出します。目的語の「何を」をSpecifyし、動詞の「どうする」をSpecifyします。
仕様の役割
https://member.eureka-box.com/products/10/categories/4909959/posts/16531163
仕様では、要求に含まれる「具体的」な処理や振る舞いを表現します。このとき、要求の中の動詞を中心に検討していきます。たとえば、「受信する」という動詞から、受信のタイミングや、データフォーマット、データサイズ、受信できないときの対処方法などを考え、仕様に記述します。「算出する」や「表示する」についても同様に検討します。
仕様は、開発者および関係者が「Specify(特定)」できる状態まで正確に記述します。それがUSDMのマナーです。
また、設計者の立場から実現可能性が見え、評価担当者の立場から検証可能性が見えるようにします。
USDMを実際に学んでみる
今後の開発効率を上げるために実際に学んでみたいという方に、まずは無料でお試しいただけるオンライン学習プラットフォームを準備しています。
業務が多忙なエンジニアでも、すき間時間で効率的に実践的な学習が出来るEureka Boxは、エンジニアの現場の声から生まれたツールです。
ソフトウェア開発を改善するための開発技術を“知り・学び”“実践する”
超実践的オンライン学習プラットフォーム
Eureka Box(ユーリカボックス)
USDMを正しく理解した上で適用し、最大限の効果を得られるようスキルアップしたい方にもEureka Boxでの学習はお勧めで、無料会員登録だけでも以下の特典が受けられます。
- 各連載コラムの全容、未公開コラムも一気にまとめて読める(一部動画解説付!)
- USDM(要求記述)、MBD(モデルベース開発)、システムズエンジニアリング、AWS Greengrass(新世代エッジエンジニアのための技術講座)など、ソフトウェア開発に関わる知識がギュッと凝縮、困った時のお助けアイテムとしても長期で活用出来る
- ソフトウェア開発に関わる無料お試しコンテンツも充実
まとめ
USDMの7つの構成要素のうち、最も重要なのが要求と仕様です。
上位要求から下位要求へ、さらに仕様へと、階層構造で表現します。
要求では、実現したいことの振る舞いと範囲を「目的語+動詞」の連鎖で表現し、その具体的な実現方法を仕様でSpecifyしていきます。