要求工学の理論化に向けて
佐伯 元司
1,a)概要:本稿では,要求工学分野の知識を記述し,蓄積し,活用するための理論化の手法を例示する.
Toward Theorizing Requirements Engineering
1.
はじめに
ソフトウェア工学は,従来の自然科学と違って,ソフト ウェアという人造物を相手にしているため,原理,法則など がなく,それゆえ問題に対する万能的な解を見つけるのが 難しい学問であると言われている[1].しかしながら,これ まで多くのソフトウェア工学技術が考案され,ある状況下 で現場でも効果を発揮しているものもある.これらの技術 を効果的に適用するための経験や知見を知識化し,蓄積し ていくことが,現在のソフトウェア開発の問題を解決する うえで重要である.このようなソフトウェア工学分野の知 識を収集・蓄積し,理論として体系化し,開発現場に活用し ようとする動きがある.JacobsonらのSEMAT [2], ICSEの併設ワークショップGTSE(General Theory of Software Engineering)での成果などである.理論を適用することに より,これから開始しようとする開発プロジェクトや進行 中のプロジェクトで,将来起こりうる現象を予測し,適切 なソフトウェア工学技術を効果的に適用することが可能に なってくる.本稿では,Sjøbergらが提案した手法[3]を用 い,要求工学の中の要求獲得プロセスに関する知見[4]の 例を記述する.
2.
Sjøberg らの手法
図1は,理論と現実世界の関係を書いたよく知られてい るもので,現実世界(Real world)で現象Situationが起こっ たときに現象Resultが観測された場合,Situationによって 特徴づけられた構成要素Assumption Constructが,Resultによって特徴づけられる構成要素Conclusionに影響を及
1 東京工業大学
Tokyo Institute of Technology, Ookayama, Meguro, Tokyo 152-8552, Japan a) [email protected] 図1 理論と現実世界 ぼしたり,Conclusionを引き起こしたりする.図の上部の 理論部分(Theory)を記述するためには,Constructと,そ の間の影響を及ぼす関係や因果関係であるaffects/causes 関係を定義できればよいことになる.Constructはソフト ウェア工学特有の概念要素である. Sjøberg ら は ,上 記 の Construct と 影 響 や 因 果 関 係 (Propositionと呼んでいる)に加えて,なぜその Propo-sitionが成り立つのかという説明(Explanation)とその理 論の適用範囲(Scope)を導入している.Constructはさら に,Actor, Activity, Software System, Technologyの4つ に分類されている.これは,ActorがTechnologyを用い て,Activityを行い,Software Systemを開発した(もし くはSoftware Systemに対しActivityを行った)というこ とを意味する.
3.
適用例題
本稿では,要求工学の中の要求獲得プロセスに関する知 見をSjøbergらの手法を用いて,記述した.この例は,イ ンタビューによるレストランのサービス・注文管理システ ムの要求獲得で,獲得した要求を5つに分類し,それらが 獲得プロセスのどの段階で獲得されたかを分析した例で ある.この例に関連するConstructを図 2にクラス図と して示す.開発対象はレストランサービス・注文管理シス ウィンターワークショップ2017・イン・飛騨高山©2017 Information Processing Society of Japan
IPSJ/SIGSE Winter Workshop 2017 in Hida-Takayama (WWS2017)
図2 要求獲得プロセス例の構成要素
テム(Restaurant Service & Management System)であり, これがSoftware Systemのサブクラスとなっている.イン タビュー手法(Interview)を使って,このシステムの要求
(Requirements)を定義する(Define)ことがこの理論の対 象である.DefineはActivity, InterviewはTechnologyの サブクラスになっている.Requirementsは,5つに分類さ れ,Reused Typeはあとで変更されて再利用される要求,
Diversity Typeはソフトウェアの構成要素のバリエーショ ンに関する要求,Business Req. Dependent Typeはビジ ネス戦略に関する要求,User Interface Dependent Type, External Interface Dependent Typeは,各々ユーザイン ターフェース,外部システムとのインターフェースに関す る要求である.図中のP1, . . ., P5は,Construct間の影響 を及ぼす関係(affects/causes)で,Propositionである.例 えば,P1はReused Typeの要求(Requirements)とそれを 定義する(Define)行為の間の関係を表し,「Reused Typeの 要求は早期段階で定義される」ことがその内容である.こ れは,定義する(Define)というConstructがReused Type
の要求(の獲得時期)に影響を与えることを主張してい
る.P1,· · ·, P5が[4]で得られた知見である.Proposition,
Explanation, Scopeを表1に示す.例えば,Explanation E1「プロセス中で変更されて再利用される要求は,他の 要素への要求とは独立であるため」は,P1の理由を説明し ている.これは,他の要素への要求とは関係なく獲得でき るため,他の要因を考慮することなく,早期に定義でき, 後段で変更されて再利用できるためであるとしている[4]. 以下,Ei (1≤i≤5)はPiの理由を説明している.
4.
議論
図1で示した上部のTheory部分が前節で記述したもの であり,下部のReal world部分が[4]で実験的分析で示さ れている部分である.現在のソフトウェア工学分野の論 文は,実験・経験による実証や評価を綿密に行っているの ものが主流になっている.そこで得られた知見を,ソフト ウェア開発の現場に適用できるように理論化し,その論文 の成果を理論の証拠として対応付け,蓄積していく活動が 重要である.要求分析,特に要求獲得段階は,ソフトウェ ア開発中で人間の創造的な能力がもっとも発揮される段階 表1 理論の記述 PropositionP1 Reused TypeのRequirementsは早期段階で定義 (De-fine)される.
P2 Diversity TypeのRequirementsはプロセス中で継続的 に定義される.
P3 Business Req. Dependent TypeのRequirementsは早 期段階で定義されたり,プロセス中で継続的に定義され たりする.
P4 User Interface Dependent Typeの要求は,プロセス中 で継続的に定義される.
P5 External Interface Dependent Typeの要求は,後期段 階で定義される. Explanation E1 プロセス中で変更されて再利用される要求は,他の要素 への要求とは独立であるため. E2 分析者がシステムのバリエーションに関する知識を十分 に持っていないため. E3 早期段階で定義されるのは最初に顧客の動機づけを明確 にする必要があり,継続的に定義されるのは競合システ ムを意識することになっていくためである E4 プロトタイピングやテストによる確認をやりつつ,定義 されていくため. E5 使用する外部システムやその仕様が明らかにならないと (例えば,ベンダーからの情報を収集するなど),要求が定 義できないため Scope 要求の定義(Define),インタビュー(Interview)を使用, レストランサービス・注文管理システム(Restaurant
Service and Order Management System)
であり,それゆえ,人間が得た知見は暗黙化されているこ とが多い.これらを明示し,理論化しておくことは,他の 段階よりも必要性が高いと考えている. 理論の記述には,Sjøbergらの手法を用いたが,本質的部 分はConstruct間の影響・因果関係(Proposition)を基本 的には2項関係で記述するのみになっている.Construct とProposition,Proposition同士について関係をつけるこ とも可能である.しかし,関係をつけるにあたっては,何 が原因で何が結果かという因果関係を明確につきとめる必 要がある.今回の例では,要求の定義(Define)行為が原因 で,要求のタイプごとの定義される時期が結果であるとい う解釈をとったが,Interview手法を使用したことが主た る原因であるとみなすこともできる.今後は,関係の抽出 や表現手法の洗練化が課題となってくるであろう. 参考文献
[1] Brooks, F. : No Silver Bullet ? Essence and Accidents
of Software Engineering, IEEE Computer, 20(4), pp.10–
19, 1987.
[2] SEMAT: Software Engineering Method and Theory. 入 手先⟨http://semat.org/⟩(2016.12.4).
[3] Sjøberg, I. et. al. : Building Theories in Software
En-gineering, Guide to Advanced Empirical Software
Engi-neering, Springer, pp.312-336, 2008.
[4] Nakatani,T. et. al. : A Case Study: Requirements
Elici-tation Processes throughout a Project, RE2008, pp.241–
246, 2008.
ウィンターワークショップ2017・イン・飛騨高山
©2017 Information Processing Society of Japan
IPSJ/SIGSE Winter Workshop 2017 in Hida-Takayama (WWS2017)