(前NTTデータ フェロー システム科学研究所長)山本 修一郎
連載第107回で、セーフウェア[1]に基づいて要求の完全性について紹介した。セーフウェアでは、ソフトウェア要求が完全であるためには、ソフトウェアが安全であることを確認できる必要があると考えている。しかし、システムの安全性を検証するためには、要求の完全性を確認するだけでは不十分である。そこで今回はシステム安全検証知識を体系化する試みを紹介したい。
システム安全検証知識の構成
システムの安全性を検証するために必要と考えられる知識を整理すると、表1のように基礎知識、計画知識、分析設計知識、検証確認知識に分類できる。安全なシステムを実現するためには、システム安全の必要性を理解し、障害に対処することの重要性を理解する必要がある。このために、システム安全に関する基礎知識の理解が重要になる。また、システム安全をライフサイクルプロセスの観点からとらえることが大切である。したがって、システム安全計画を立案し、システムの安全分析と安全設計を実施する必要がある。さらに、開発したシステムの安全性を検証確認する必要がある。
表1 システム安全検証知識の構成(クリックで拡大)
現代システムのリスクと障害の根本原因
システム安全検証では、まず基礎知識として、現代システムのリスクと障害の根本原因の整理法を学ぶ必要がある。
現代システムのリスクには、大規模複雑化するITシステムのリスクと、システム開発技術のリスクの2つがある[2]。大規模複雑なITシステムでは、要素システムが異なる組織によって独立に所有され管理されるために、相互連携作用による影響を事前に予測できないという「システム連携リスク」や、人間、組織、社会、政治的要因を技術的要因に加えて総合的にとらえる「社会技術的システムリスク」を知る必要がある。これらのリスクを識別できなければ、対処できないからである。
システム開発技術リスクでは、急速な技術変化や予測不可能な技術の出現という「技術変化リスク」、ユーザー、発注者、開発者、保守者などのステークホルダ間で顕在化する意図や要求の矛盾に起因する「ディペンダビリティリスク」や、独立なシステムはどこにもなく、すべてのシステムが一体となってエコシステム(ECOSYSTEM)を構成することに起因する「相互依存性リスク」と、それらへの対策の必要性を理解する必要がある。
障害の根本原因では、ネット地図騒動、クラウドサーバ事件、高速鉄道停止事件、ネット通販騒動など、社会問題化されたシステム障害事例の根本原因と再発防止策の事例を理解することで、発生事象、根本原因、再発防止策を系統的に整理して共有するための基礎知識を学習することができる。これにより、問題事象と原因、再発防止策を関連付けて共有するための事例ベースの作成知識を習得できる。
システム安全用語の基礎知識
システム安全用語の基礎知識では、ディペンダビリティ[3]とその属性、脅威、対処手段についての用語と、システム安全の基本概念を学習する必要がある。
ディペンダビリティ属性には、可用性(Availability)、信頼性(Reliability)、安全性(Safety)、機密性(Confidentiality)、一貫性(Integrity)、保守性(Maintainability)がある。
ディペンダビリティの脅威として、フォールト(Faults)、エラー(Errors)、故障(Failures)がある。フォールトが原因、エラーが状態、故障が結果である。
しかし、実際のプロジェクト組織などでは、これらが区別されずに用いられることも多いので、用語の意味を明確に定義する必要がある。
ディペンダビリティの脅威への対抗手段として、障害回避(Fault Prevention)、障害耐性(Fault Tolerance)、障害除去(Fault Removal)、障害予測(Fault Forecasting)がある。
システム安全の基本概念では、安全を考えた設計、システム全体の安全性、システム安全とトレードオフ、擬陽性と擬陰性、ソフトウェアとシステム安全、障害対策などの概念を理解する必要がある。たとえば、ソフトウェアの実行がシステムのハザードに寄与しないときシステムは安全である[1]。
また、システムの安全な状態を危険状態だと誤判定することを擬陽性という。これに対して、システムが危険な状態であるのに安全状態だと誤判定することを擬陰性という。イプシロンロケットの最初の発射では、システムが擬陽性だと判断したために発射されなかった。このように、擬陽性などの概念を理解しておくことで、システム安全を考慮したシステム設計や検証が可能になる。
システム安全原則
システム安全原則の知識では、事故原因の階層モデル、安全文化、ヒューマンファクター、安全原則の具体的な事例について習得する。
たとえばの因果モデルでは、①安全文化の欠如が組織管理の不備をもたらす、②不適切な設計管理と不適切な運用管理が作業品質の低下を導く。
③顕在化プロセス(故障、不安全行為)が発生する、④結果として人の健康財産への損害が発生する、という4段階を提示している[4]。
組織構成員の安全に対する一般的な態度と取組みのことを、組織における「安全文化」という。事故を引き起こす安全文化の欠如例、自信過剰と自己満足、安全に低い優先順位を割り当てるとどうなるか、安全性のトレードオフなどについての知識を習得する必要がある。
ヒューマンファクターでは、過誤強制情況(Error Forcing Context)について理解しておくことが重要である。個人的、環境的、社会的要因を背景として過誤強制情況が形成されると、不安全行為を誘発することが多い。すなわち、時間的な余裕がなく、あいまいな情報しか与えられない条件下では、どんな人でもほぼ確実に誤判断するのである。ヒューマンエラーを除去するためには、過誤強制情況を識別して除去する必要がある。
続きは本誌でご覧頂けます。→本誌を購入する
ご購入のお申込みは電話(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:保証ケース作成支援ツールの概要