(前NTTデータ フェロー システム科学研究所長)山本 修一郎
本連載も本稿で96回となる。2004年に第1回を寄稿して以来、8年間継続できたことは、要求工学に対する読者のみなさんの深いご理解の賜物だと心から感謝している。ソフトウェア開発の自動化技術が発展すればするほど、ソフトウェア開発の焦点は上流に移行するとともに、障害発生の原因は開発時ではなく利用時と運用時に移行する。今後も要求工学の役割が増していくに違いない。
本稿では、大規模複雑化するITシステム(Large-Scale Complex IT Systems, LSCITS)に対する英国のSommervilleらの取組み[1]を紹介して、従来のソフトウェア工学の限界について説明する。また、その問題に対処するための方法についても解説する。
フラッシュクラッシュ(Flash Crash)
2010年5月6日、ダウ平均株価が約10分で600ポイント下落して、約8,000億ドルの市場価値が消失するという事件が発生した。後になってこの原因が、あるファンド管理企業による約4億ドルの先物取引の売り注文が引き金だったことが判明した。この注文から、極めて短時間に株の売り買いを実行する高頻度アルゴリズム取引システム(algos)間の複雑な一連の相互作用が始まった。
フラッシュクラッシュではソフトウェアのバグではなく、互いに独立に管理されるソフトウェアシステムの相互作用が、取引システムの所有者も開発者も、いままで誰も見たことのない条件を生みだしたのである。その結果、algosに依存する社会技術的市場システムで障害が発生した。
ソフトウェア工学の限界
フラッシュクラッシュ事件のalgosと株式市場システムとの関係で明らかになったように、独立に管理されているシステムが統合連携されて構成される、複雑なITシステムに社会が依存するようになっている。
表1に示すように、従来のソフトウェア工学では扱うことのできないような大規模性と複雑性の増加をもたらしており、このことが新しいソフトウェア工学の必要性を示唆している。
表1 大規模複雑なITシステムに対する従来のソフトウェア工学の問題点
◆連携システムであること(Coalitions of systems)
大規模複雑なITシステムでは、要素システムが異なる組織によって独立に所有され管理されるために、相互連携作用による影響を事前に予測できない。
従来のソフトウェア工学では、特定の顧客がシステムの仕様を完全に決定できるという前提に立っていた。したがって、開発者は発注者としての顧客が仕様を明確に定義しさえすれば、正しくシステムを開発できると信じていた。しかしLSCITSでは、発注者が管理するシステムが組み込まれる連携システムがどうなるかを予測できないため、逆に、システムの仕様を個別的に完全に決定できなくなる。
◆還元主義の限界(Break down of reductionism)
要素システムに分解して、要素システムごとに逐次的に改善するという還元主義では、大規模複雑なITシステムを開発、統合、展開できない。
従来のソフトウェア工学では、アーキテクチャ設計に見られるように、要素に分解して要素間の相互作用を完全に定義できるという前提があった。しかしLSCITSでは、要素システムに還元しても連携システム前提の挙動を完全に予測できないという問題が発生する。
◆社会技術的システム(Socio-Technical systems)
大規模複雑なITシステムでは、技術的要因に加えて、人間、組織、社会、政治的要因を考慮する必要がある。
従来のソフトウェア工学では、システムの要求仕様を完全に定義できるという前提があった。しかし、LSCITSでは連携システム前提の挙動を完全に予測できないことから、要素システムがどのように利用されるかということが完全には定義できないという問題が発生する。したがって、システム要求が動的に変化することを前提にした新しいソフトウェア工学が必要になる。
ちなみに本連載でも、要求変化を前提にした要求工学の必要性を指摘してきたので、LSCITSの考え方は納得感がある。なお、人工物の境界原理という考え方を、暗黙知の次元[2]で知られるPolanyiが提唱している。
境界原理
筆者は数年前からこの境界原理という概念が気に入っているので、講義や講演でも紹介している。人工物には、人間が作るのであるから何かしら目的が必要である。芸術作品のような物であっても、楽しみや自己実現などの目的がある。人工物の目的を達成するために機能が必要になる。そして、機能を達成するための構造が人工物には必要になる。ところが、人工物が目的動作を実現できるかどうかは、自然法則や人間行動によって制限される。また、外部環境の中に人工物が配置されることから、外部環境との境界を制御するために、人工物には人為的に実現された制約がある。この2つをまとめて人工物の境界条件という。この境界条件は、自然法則や人間行動の不確定性によって、不確定なままになっている。この理由は、人間が自然法則や人間行動を完全に定式化できないからである。
図1 境界原理
この不確定性があることから、境界条件の逸脱が発生することによって、人工物の機能では欠陥や障害が発生し、人工物の構造では故障や損壊が発生することになる。
ソフトウェア工学の分野では、社会技術的システムの考えが最近出てきたわけだが、哲学の世界では約50年以上前から境界原理が知られていた。ソフトウェアもシステムも人工物なのだから、人工物が必然的に持つことになる境界原理を考慮しない訳にいかないはずである。これまでのソフトウェア工学では、境界条件の範囲内で問題解決できるような問題だけを扱うことができていたので、このような問題を考慮しなくてもよかったともいえる。つまり、今までは境界原理が意味を持つような状況で使われることがなかったか、あったとしても境界原理をないことにしてやり過ごすことができていた訳だ。しかし、いよいよ境界原理を前提にした新たなソフトウェア工学を構築する時期がやってきたようである。
続きは本誌でご覧頂けます。→本誌を購入する
ご購入のお申込みは電話(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:保証ケース作成支援ツールの概要