(前NTTデータ フェロー システム科学研究所長)山本 修一郎
これまで、2回にわたってJacobsonらによる理論に裏打ちされた実践的なソフトウェア開発方式SEMAT(Software Engineering Method and Theory)について紹介した。今回は、SEMAT[1][2][3]と保証ケース[4][5][6]の関係について考察しよう。
SEMATと保証ケース
SEMATと保証ケースには、SEMATによるソフトウェア開発を保証ケースが支援するという関係と、保証ケースを開発するためのプラクティスをSEMATによって表現し、活用するという関係がある。この両者の関係をまとめると、図1に示すようになる。
図1 SEMATと保証ケースの関係
保証ケースによるSEMATの支援
SEMATでは、αカーネルの属性によってソフトウェア開発状況を適切に確認することが基本である。たとえば要求αでは、着想、限定、首尾一貫、受容可能、対処、充足という要求の7つの状態と、要求がその状態であることを確認するためのチェックリストが状態ごとに提示されている。
一方、保証ケースでは、対象に対する主張についての証拠を確認することによって主張の妥当性を保証することができる。
したがって、保証ケースでαカーネル属性状態についての主張を確認することができれば、保証ケースによってSEMAT活動を支援できることになる。以下ではその方法を考える。
カーネルαの基本的な考え方を整理すると、次のようになる。
カーネルαが事後状態Qであるためには、カーネルαが事前状態Pにあることと、チェックリストCが満たされることが必要である。
図2に示すような保証ケースを用いることにより、この考え方を確認することができる。
図2 アルファから保証ケースを作成する考え方
カーネルαには、開発活動の進行に従った複数の状態があって、開始状態から終了状態に遷移する。図2(a)では、カーネルアルファにPとQという状態があり、状態PでチェックリストCが満たされれば、状態Qに遷移することを示している。このとき図2(b)に示したように、状態Qに対して上位主張「αが状態Qである」を作成する。この主張が成立することを示すためには、「αが状態Pである」ことと「チェックリストCが満たされていること」が必要であることから、「条件を確認する」という説明ノードを用いて上位主張を、これらの下位主張に分解している。
アルファ状態が3個以上あるときも、同様にしてこの分解を多段階に適用することができる。このとき、カーネルアルファの最終状態から開始状態に向って逆方向に遡りながら、保証ケースを最上位ノードから最下位ノードに向って分解していく。
たとえば表1に示したように、要求アルファの状態は着想状態から始まり、限定状態、首尾一貫状態、受容可能状態、対処状態を経て、充足状態で終了する。したがって、「要求アルファが充足状態である」を最上位の主張として、状態遷移とは逆に、「要求が対処状態である」、「要求が受容可能状態である」、「要求が首尾一貫状態である」、「要求が限定状態である」と分解していき、最後に、「要求が着想状態である」という主張の証拠を確認するように、保証ケースを作成することになる。要求アルファに対する保証ケースの例を図3に示す。他のカーネルアルファに対しても、同様にして保証ケースを作成できることは明らかである。
以下では、保証ケース開発メソッドをSEMATで定義する方法について考えよう。
図3 要求アルファに対する保証ケース(クリックで拡大)
SEMATによる保証ケース開発プラクティスの表現
SEMATでは、プラクティスの意味を「何について作業するか」という作業対象(Things to work with)と、「何をするか」という作業内容(Things to do)によって明確に定義することができる。プラクティスでは、作業対象と作業内容を、それぞれアルファと成果物、活動空間と活動で定義する。
表1 要求アルファ状態とチェックリスト(クリックで拡大)
続きは本誌でご覧頂けます。→本誌を購入する
ご購入のお申込みは電話(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:保証ケース作成支援ツールの概要