(前NTTデータ フェロー システム科学研究所長)山本 修一郎
今回は、要求を構造化する手法を紹介する。要求の構造化には4種類があることと、その例について述べる。また要求の構造化手法について、AlexanderとStevensによるWriting Better Requirementsの5章Structur-ing the Requirmentsから、シナリオによるゴール分解と例外シナリオの扱いについて説明しよう。
要求構造
要求仕様の構造には、仕様書の構造を定める章節構成のひな型、要求ごとに何を記述するかを定める要求記述項目のひな型、要求間の関係のひな型、要求記述文の文法のひな型がある。
要求全体の構造の例としては、IEEE std.830-1998[1]、Volere構造テンプレート[2][3]、Scenario plusテンプレート[4]などがある。要求間の関係のひな型には、SysMLの要求関係のひな型(ステレオタイプ)がある。要求記述項目のひな型の例には、Volereシェルテンプレート[2][3]、USDMがある。要求記述文の文法のひな型にはEARS[5]がある。
表1 要求仕様の構造(クリックで拡大)
◆章節構成のひな型の例
要求仕様書の章節構造のひな型の例としては、IEEE std.830-1998[1]が代表的である。他にも、Volere構造テンプレート[2][3]やScenario plusテンプレート[4]がある。
Volereには、図1に示すように構造テンプレートとVolereシェル・テンプレートがある。
文書構造テンプレートでは、①プロジェクトの目的、②利害関係者、③制約条件、④命名規則、⑤前提条件、⑥ビジネスデータモデルとデータ辞書、⑦スコープ、⑧機能要求、⑨見た目と様式要求、⑩操作性要求、⑪性能要求、⑫運用と環境要求、⑬保守性要求、⑭セキュリティ要求などを記述する。
Scenario Plusテンプレートでは、①ビジョン、②ステークホルダ、③ゴール、④コンテクスト/インタフェース/振る舞い、⑥シナリオ/否定的シナリオ、⑦品質と制約、⑧根拠、⑨定義、⑩測定基準、⑪優先順位を記述する。
Scenario Plusではステークホルダとして、所有者、運用者、規制者、競合者、その他(開発者)を挙げている。
図1 Volereテンプレートの構成(クリックで拡大)
◆要求記述項目間の関係のひな型の例
要求間の関係の代表的な例は、階層分解関係である。ゴール指向要求工学では、ゴール要求をサブゴール要求に階層的にゴール分解していく。
SysMLでは、①階層関係、②複製関係、③派生関係、④満足関係、⑤検証関係、⑥洗練関係、⑦追跡関係、⑧理由関係がステレオタイプとして定義されている。とくにSysMLの階層関係で、要求を階層的に分解することによって、ゴール分解を記述できる。
後述するように、USDM(Uni- versal Specification Description Manner)[9]でも、要求間の関係を記述することができる。
USDMでは、要求記述の中で要求が必要となる理由を説明することができる。また、階層関係を要求番号の階層で記述する。
◆要求記述項目のひな型
Volereシェル・テンプレートでは、①要求番号、②要求種別、③イベント番号、④内容、⑤理由、⑥要求元、⑦適合基準、⑧顧客満足度、⑨顧客不満足度、⑩依存関係、⑪対立要求番号、⑫参考情報、⑬履歴をカード形式で記述する。
USDMでは、①要求番号、②要求文、③説明、④理由、⑤要求間の関係を記述する。
SysMLの要求図では、①要求識別子、②要求文、③要求関係を記述する。上述したようにSysMLの要求関係は、要求間の関係で予め定義されている。
◆要求記述文の文法のひな型
自然言語で要求を正確に、誤りのない構文で記述することは容易ではない。また、要求を正しく記述するためには、経験や訓練が必要となる。個人によっては、想い入れのある凝った記述になったり、せっかく考えて書いた要求がレビューで手直しされると、気分を害したりすることがあるかもしれない。記述のスタイルが個人ごとに違うこともよくあることである。
要求記述構文テンプレート[6]では、次のように要求を記述する構文を決めておき、〈条件〉や〈イベント〉など、置き換え可能な部分を穴埋め式に具体化するようにしている。
<イベント>が発生して
<時間>以内に、
<主体>が<機能>する必要がある
このように構文が決められていると、文法が統一され、要求の記述を効率化できるだけでなく、要求の理解も容易化できる。本連載でも紹介したように、EARSテンプレート[10]には、①遍在型、②イベント駆動型、③非期待振舞型、④状態駆動型、⑤選択型という5種類のテンプレートがある。このテンプレートだけで航空機エンジンの安全性要求を記述できたということがある。
要求構造の比較例
IEEE std.830-1998の章節項目と、USDMで記述された話題沸騰ポット[7]の章節項目を対応づけてみると図2のようになる。
この結果から、話題沸騰ポットでは具体的要求のうち、外部インタフェース、機能、設計の制約だけしか記述していないことが分かる。したがって、目的、範囲、概要など、システムをなぜ、開発するのかについての記述が欠如していることが分かる。また、ユーザー特性、制約、仮定も記述されていない。たとえば温度制御では、水の沸点が100度であるとして記述されているのだが、環境制約として大気圧を考慮すべきである。高地では100度以下で水が沸騰する。環境制約を明確にすることで環境変化に対応できる要求を定義できる。さらに、ユーザー特性についても記述がない。なぜ、水とミルクだけを対象にしたポットなのか、なぜスープやみそ汁は入れてはいけないのかなど、たくさんの疑問が沸いてくる。このほか、性能要求やソフトウェア・システム属性についても記述がない。
IEEE std.830-1998では、ソフトウェア属性として、信頼性、可用性、セキュリティ、保守性、移植性を記述することになっている。
話題沸騰ポットの例では、センサーやアクチュエータなどのコンポーネントや機能、判断規則に対してUSDMで要求を定義している。要求の定義では、識別子、要求文、理由、説明を記述する。
続きは本誌でご覧頂けます。→本誌を購入する
ご購入のお申込みは電話(03-3507-0560)でも承っております。
- 60:要求とアーキテクチャ
- 61:要求と保守・運用
- 62:オープンソースソフトウェアと要求
- 63:要求工学のオープンな演習の試み
- 64:Web2.0と要求管理
- 65:ソフト製品開発の要求コミュニケーション
- 66:フィードバック型V字モデル
- 67:日本の要求定義の現状と要求工学への期待
- 68:活動理論と要求
- 69:ビジネスゴールと要求
- 緊急:今、なぜ第三者検証が必要か
- 71:BABOK2.0の知識構成
- 72:比較要求モデル論
- 73:第18回要求工学国際会議
- 74:クラウド時代の要求
- 75:運用要求定義
- 76:非機能要求とアーキテクチャ
- 77:バランス・スコアカードの本質
- 78:ゴール指向で考える競争戦略ストーリー
- 79:要求変化
- 80:物語指向要求記述
- 81:要求テンプレート
- 82:移行要求
- 83:要求抽出コミュニケーション
- 84:要求の構造化
- 85:アーキテクチャ設計のための要求定義
- 86:BABOKとREBOK
- 87:要求文の曖昧さの摘出法
- 88:システムとソフトウェアの保証ケースの動向
- 89:保証ケースのためのリスク分析手法
- 90:サービス保証ケース手法
- 91:保証ケースのレビュ手法
- 92:要求工学手法の再利用
- 93:SysML要求図をGSNと比較する
- 94:保証ケース作成上の落とし穴
- 95:ISO 26262に基づく安全性ケースの適用事例
- 96:大規模複雑なITシステムの要求
- 97:要求の創造
- 98:アーキテクチャと要求
- 99:保証ケース議論分解パターン
- 100:保証ケースの議論分解パターン[応用編]
- 101:要求発展型開発プロセスの事例
- 102:参照モデルに対する保証ケース
- 103:参SEMATの概要
- 104:参SEMATの活用
- 105:SEMATと保証ケース
- 106:Assure 2013の概要
- 107:要求の完全性
- 108:要求に基づくテストの十分性
- 109:システムの安全検証知識体系
- 110:機能要求の分類
- 111:IREB
- 112:IREB要求の抽出・確認・管理
- 113:IREB要求の文書化
- 114:安全要求の分析
- 115:Archimate 2.0のゴール指向要求
- 116:ゴール指向要求モデルの保証手法
- 117:要求テンプレートに基づく要求の作成手法
- 118:ビジネスゴールのテンプレート
- 119:持続可能性要求
- 120:操作性要求
- 121:安全性証跡の追跡性
- 122:要求仕様の保証性
- 123:システミグラムとドメインクラス図
- 124:機能的操作特性
- 125:セキュリティ要求管理
- 126:ソフトウェアプロダクトライン要求
- 127:システミグラムと安全分析
- 128:ITモダナイゼーションとITイノベーションにおける要求合意
- 129:ビジネスモデルに基づく要求
- 130:ビジネスゴール構造化記法
- 131:保証ケース導入上の課題
- 132:要求のまとめ方
- 133:要求整理学
- 134:要求分析手法の適切性
- 135:CROS法の適用例
- 136:保証ケース作成支援ツールの概要