Safe Software Development

Challenges of Safety Critical
Software Development
Leslie Alford
A-P-T Research, Inc.
Huntsville, AL USA
1
絶対に安全なソフトウェア開発の課題
Leslie Alford
A-P-T Research, Inc.
Huntsville, AL USA
2
Challenges of Safety Critical Software Development
• Introduction
• What is Safe Software?
• How Safe Software should be Developed
• Contributing Difficulties
• Industry’s Challenge
• Summary
3
絶対に安全なソフトウェア開発の課題
• Introduction
• 安全はソフトウェアとは?
• 安全なソフトウェアをどのように開発するべきか?
• 貢献の難しさ
• 産業界の課題
• Summary
4
What is Safe Software?
5
安全なソフトウェアとは
6
What is Safe Software?
Safe software is software that meets its intended functionality
while assuring there are no deaths, loss of equipment or
substantial damage and cost. It is software with no
unintended functions
7
安全なソフトウェアとは?
安全なソフトウェアとは、意図した機能を満たしながら
も、人命や設備機能、大きな経済損失がないことを保証
するソフトウェアです。意図しない機能がないソフト
ウェアです。
8
Safe Software
• Concerns:
◦ Not known safety issues – as these are mitigated or removed in a planned and
rigorous development due to Safety Engineering and software safety critical
practices
◦ It is the unknown software problems stemming from “corner cases” or those
areas not thought of during the development
9
安全なソフトウェア
• 懸案点:
◦ 未知の安全性の問題 –万全を期して運用される安全なエンジニアリング
とソフトウェアであるため、計画段階、厳格開発段階で緩和または除去
されるため
◦ 「コーナーケース」や開発中に考えられなかった部分から生じる
未知のソフトウェアの問題。
10
How is Safe Software
Developed?
Best Practices
Context
Error Class Analysis
Other Best Practices
11
安全なソフトウェアは
どのようにして開発されるか?
ベストプラクティス
コンテキスト
エラークラスの分析
その他のベストプラクティス
12
How Safe Software Should Be Developed?
• Methods have evolved as software industry has matured
• In the aviation field, best practices have evolved for safety critical
software
◦ Plan what is to happen and how it should be done, including testing and
verification
◦ Follow defined documented practices – (how we do something)
◦ Follow defined documented processes – (what we do)
◦ Follow standards (requirements, design, coding, verification)
◦ Use rigorous configuration management and keep things in configuration
control (we can repeat something)
13
安全なソフトウェアをどのように開発されるべきか?
• ソフトウェア産業の成熟とともに、メソッドは進化してきた
• 航空分野では、セイフティクリティカルソフトウェアにむけてベ
ストプラクティスを展開している
◦ テストと検証を含め、何が起こるべきか、どのようにすべきかを計画する
◦ 定義され文書化された実践方法に従う – (何をどのようにするか)
◦ 定義され文書化されたプロセスに従う – (何をするか)
◦ 標準に従う (要件、デザイン、コーディング、検証)
◦ 厳密な設定管理を用いて、設定を制御する(反復できる)
14
Safe Software Development
• Requirements, design, code and
tests must be bi-directionally
traceable
◦ With the exception of derived
requirements (requirements that
evolve from design and
implementation details)
• Develop a test and verification
plan
◦ Based on an error class analysis
› This systematically identifies the
types of errors possible in a
specific program and then devise
the verification tasks needing to be
done to remove or prevent those
errors
• Perform complete and thorough requirements testing
◦ The need is 100% verification coverage that includes the
analysis of testing of the hardware interfaces
• For conditions and decisions in the logic,
◦ For catastrophic hazards use modified condition/decision
coverage
◦ For severe hazards that are not immediately catastrophic use
condition/decision testing
• Thoroughly document plans, processes, requirements,
design, tests, test results, and analyses
◦ These must reflect what is the final integrated software
product. This supports any accident investigations
15
安全なソフトウェアの開発
• 要件、設計、コードおよびテス
トは双方向に追跡可能でなけれ
ばならない
◦ 派生要件(設計と実装の詳細から
進化する要件)を除く
• テストと検証計画を作成する
◦ エラークラス分析に基づいて
› これにより、特定のプログラムで
起こり得るエラーの種類を体系的
に特定し、それらのエラーを削除
または防止するために実行する必
要がある検証タスクを考案する
• 完全かつ完全な要件テストを実行する
◦ ハードウェアインターフェースのテストの分析を含む
100%の検証カバレッジが必要
• 論理上における条件および判断について、
◦ 致命的なハザードについては、MC/DCカバレッジを使用す
る
◦ 致命的ではない重大な危険については、判定条件/条件網
羅テストを使用する
• 計画、プロセス、要件、設計、テスト、テスト結果、
および分析を徹底的に文書化する
◦ これらは、最終的な統合ソフトウェア製品が何であるかを
反映しなければならない。 これはあらゆる事故の調査を
サポートする。
16
Safe Software Development
Functional Hazard Assessment (FHA)
◦ System engineering and
◦ Safety engineering processes
Identify Functions
Identify & describe
system functional
hierarchy via functional
decomposition analysis.
Identify Failure Modes
Identify & describe failure
modes for each function.
Preliminary Hazard List (PHL)
Identify Hazards
(and Severity
Utilize FHA functions, similar
systems, lessons learned, generic
lists, and FHA effects to identify
systems hazards, along with their
worst credible outcome severity.
Identify Effects
Classify Severity
Identify & describe
effects of each
failure mode.
Classify severity of each
effect. If severity differs
by phase, identify effects
& severity by phase
Preliminary Hazard Assessment (PHA)
Preliminary System Safety Assessment (PSSA)
Identify Causes
Identify causes for each
hazard by performing
deductive systems
analysis (e.g. FTA), and
utilizing FHA Failure Mode
and Effects relationships.
Safety-Critical
Functions List
Most important:
• Safe software is developed
in context with rigorous
Is Risk
YES
Acceptable?
Assess Risk
Assess risk (severity ×
likelihood) for each hazard
based on hazard severity,
likelihood of causes, and
causal relationships
(AND/OR gates in FTA).
NO
Additional Safety Test
Robustness, stress, FMET,
& coverage test.
Verify Mitigation
Design/document test cases to verify that
implementation achieves planned/desired
risk reduction.
Implement Mitigation
Derive/document requirements
and/or design constraints to
implement mitigation. Trace/follow
through design and hardware/
software implementation.
Identify Mitigation
(reduce risk)
Identify means of risk
reduction IAW rules of
precedence (design, device,
warning, procedures) and
DAL/LOR for software.
17
安全なソフトウェアの開発
Functional Hazard Assessment (FHA)
◦ システムエンジニアリング
とセイフティエンジニアリ
ングプロセス
機能の特定
機能分解分析による
システム機能階層の
特定と記述.
障害モードの特定
各機能の障害モードを特
定し記述する.
Preliminary Hazard List (PHL)
ハザードの特定
(および重大さ)
FHAの機能、類似のシステム、
教訓、一般的なリスト、およ
びFHAの影響を活用して、シ
ステムのハザードを識別し、
起こりうる最悪の場合の重大
度を特定します。
影響を特定
各障害モードの影
響を特定および記
述する
重大度の分類
影響の重大度を分類し
ます。 重大度がフェー
ズごとに異なる場合は、
フェーズ別に影響度と
重大度を特定します
Preliminary Hazard Assessment (PHA)
Preliminary System Safety Assessment (PSSA)
原因の特定
演繹的システム分析
(FTAなど)を実行し、
FHA障害モードと効果の
関係を利用することに
より、各ハザードの原
因を特定する。
Safety-Critical
Functions List
最重要ポイント:
• 安全なソフトウェアは精
密に開発されなければな
らない
リスクは
YES
許容
できるか?
リスクの評価
ハザードの重大度、原因
の可能性、因果関係
(FTAにおけるAND / OR
ゲート)に基づいて、各
ハザードのリスク(重大
度×可能性)を評価する。
NO
追加の安全性テスト
堅牢性、ストレス、FMET,カバ
レッジテスト.
緩和策の検証
実装が計画された/望ましいリスク削
減を達成したことを検証するためのテ
ストケースの設計/文書化。
緩和策の実践
緩和を実施するための要件およ
び/または設計制約を導出/文書化
する。 デザインとハードウェア/
ソフトウェアの実装を追跡/追跡
します。
緩和策の特定 (リス
クの低減)
優先順位の手段(設計、
デバイス、警告、手順)
およびソフトウェアの
DAL / LORに基づくリスク
削減の手段を特定する。
18
Safe Software Development
• Error Class Analysis
◦ The method that identifies the sources of error in a software application by
creating a list of possible contributions of error in the software
› Resulting from the processes, people, tools, and environment involved with developing a
software applications
• How it is Used:
◦ To design a thorough verification program (reviews, analysis, test)
◦ To methodically remove or reduce the possibilities of errors
◦ In the aviation industry, the RTCA/DO-178B/C documents the most used
approach using an error class analysis
19
安全なソフトウェアの開発
• エラークラスの分析
◦ ソフトウェアのエラーの可能性のあるリストを作成することにより、ソ
フトウェアアプリケーションのエラーの原因を特定する方法
› ソフトウェアアプリケーションの開発に関わるプロセス、人、ツール、環境の結果
• どのように使用されるか:
◦ 徹底的な検証プログラムの設計(レビュー、解析、テスト)
◦ 誤りの可能性の体系的な除去または低減
◦ 航空業界では、RTCA / DO-178B / Cはエラークラス分析を使用した最もよ
く使用されるアプローチを記録する
20
Safe Software Development
Other Best Practices
Practice
What it does
Rigorous Safety
Engineering
Only Use Static Memory
Allocation
Only use Safe Subsets of
instruction sets,
technologies, etc.
Use of Tools
Identifies hazards
Assures they are removed or mitigated
Ensures isolation/partitioning of memory by ensuring safety critical memory is not
overwritten by less critical tasks
Using a safe subset of a language instruction set or a software technology ensures
safety critical software partitions and memory are not violated – does not allow
overwriting by lesser tasks
Efficiently reduces workload, performs tedious or time consuming tasks,
automates the steps in processes, removes specific kinds of errors, configuration
control and problem reporting, requirements traceability, performs various kinds
of verification like structural coverage analysis, formal methods, etc.
Appropriate Use of Analysis Finds runtime errors, performs stack, dataflow, set-use, control flow, timing and
memory margin, and verification requirement coverage analysis
Engineering Training and
Provides lessons learned and best practices
Experience
Aids in efficiency and problem solving
21
安全なソフトウェア開発
その他のベストプラクティス
プラクティス
精密な安全工学
スタティックメモリの割り
当てのみの使用
命令セット、技術などの
セーフ・サブセットのみの
使用
ツールの使用
分析の適切な利用
エンジニアリングのトレー
ニングと経験
概 要
ハザードの特定
それらが取り除かれたか緩和されたかを確かめる
重要度の低いメモリが重要度の低いタスクで上書きされないようにすることで、
メモリの分離/パーティション化を保証
言語命令セットまたはソフトウェア技術の安全なサブセットを使用することにより、
安全性に重大なソフトウェアパーティションおよびメモリが侵害されないことが保
証される。重要度の低いタスクによる上書きは許可されない
効率的に作業負荷を減らし、冗長で時間のかかる作業を実行し、プロセスのステッ
プを自動化し、特定の種類のエラーを排除し、構成の制御と問題の報告、要件のト
レーサビリティを行い、構造カバレッジ分析や正式な方法などを実行する
実行時エラーを検出し、スタック、データフロー、セット使用、制御フロー、タイ
ミングとメモリマージン、検証要件カバレッジ分析を実行する。
学んだ教訓とベストプラクティスの提供
効率化と問題解決の支援
22
Contributing Difficulties
Complex Programmable Logic Devices
Multicore Processors
Real Time Operating Systems for Multicore Processors
Life Cycle Concerns
23
貢献の困難さ
複雑なプログラマブルロジックデバイス
マルチコアプロセッサ
マルチコアプロセッサ用のリアルタイムオペレーティングシステム
ライフサイクルの懸念
24
Contributing Difficulties
• Rapid advances in processor speed and capability pose another
challenge to developing safe software
• Size and complexity of software applications have mushroomed
exponentially
• Complex programmable logic devices (PLD) now have millions of gates
possible and often replace older software functions
◦ Parts obsolescent replacements with PLDs can be difficult dependent on the
design of the original software
◦ PLDs have embedded commercial-off-the-shelf (COTS) that are declared
Intellectual Property (IP)
◦ These also must be safe and may interface with software
25
貢献の難しさ
• プロセッサの速度と能力の急速な進歩により、安全なソフト
ウェアを開発する上で課題が生じる
• ソフトウェアアプリケーションのサイズと複雑さは指数関数的
に急上昇する
• 複雑なプログラマブル・ロジック・デバイス(PLD)は現在、
何百万ものゲートがあり、しばしば古いソフトウェア機能を置
き換える
◦ PLDを使用した部品への代替は、元のソフトウェアの設計によっては困
難な場合がある
◦ PLDには、知的財産権(IP)を含む商用版(COTS)が組み込まれている
◦ これらもまた安全でソフトウェアと接続されうる
26
Contributing Difficulties
Multicore Processors
• These pose the latest challenge to safety critical software applications
• These have been proliferated in our home computers and internet
capabilities for some time
• We are now challenged to add more capability in multicore
processors for speed and capability upgrades, but our issues now
include
◦ Resource contention
◦ Crossed processing threads of varied safety criticality
◦ Issues with prioritization
◦ Proliferation of conflicting states, etc.
◦ Increased test and verification issues
27
Contributing Difficulties
マルチコアプロセッサーズ
• これらは、セイフティクリティカルソフトウェアに最新の課題を
もたらする
• これらは家庭のコンピュータやインターネットの機能の中で近年
に急増している
• マルチコアプロセッサを、速度と機能のアップグレードするため
に使おうとしているが、現在以下のような課題がある
◦ リソースの競合
◦ さまざまな安全レベルにおけるプロセスとスレッド
◦ 優先順位付けの問題
◦ 競合状態の増大など
◦ テストと検証の問題の増加
28
Contributing Difficulties
Real Time Operating Systems (RTOS)
• A multicore processor needs an RTOS that supports safety critical
applications needs for protection for partitioning and separation
• Only 2 commercially available RTOS’ have been approved by
certification authorities for use in airworthiness applications
• These support the time and space partitioning needs of safety critical
software (ARINC 653 compliant)
29
Contributing Difficulties
リアルタイムオペレーティングシステム (RTOS)
• マルチコアプロセッサには、隔離と分離の保護のために、安全
性が重要なアプリケーションニーズをサポートするRTOSが必要
• 航空業界で使用できる、認証機関によって認証された市販の
RTOSが2つある
• 安全性が重要なソフトウェア(ARINC 653準拠)に求められる時
間と空間を分割するというニーズをサポートしている
30
Contributing Difficulties
Life Cycle Concerns
• Other forces contribute to loss of safety, beyond development and
verification
• Safety issues can arise from use and maintenance practices
• Examples:
◦ A pilot needs to know what unsafe conditions are while flying
◦ A software engineer needs to be able to determine whether changes made will
impact functions that are currently “safe”
31
Contributing Difficulties
ライフサイクルの懸念
• 他に要素も、開発と検証を超えて、安全性の喪失を引き起こす
• 使用および保守を実践する過程で安全性の問題が生じる可能性がある
• 事例:
◦ パイロットは、飛行中に危険な状態が何であるかを知る必要がある
◦ ソフトウェアエンジニアは、行われた変更が現在の「安全」な機能に影響を与
えるかどうかを判断できなければならない。
32
Industry’s Challenge
Cost Mitigations
Technical Mitigations
33
産業界の課題
コスト削減
技術的緩和
34
Industry’s Challenge
• Safety critical software is time intensive and costly
• In aviation, it also requires customer and certification authorities to
approve their use
• Our challenge is to develop the software and also meet schedule and
cost through various mitigation strategies
◦ Cost
◦ Technical
35
産業界の課題
• 安全なソフトウェア開発には、時間がかかり、コストがかかる
• 航空システムでは、顧客および認証機関がソフトウェアを使用
することを承認する必要もある
• 我々の課題は、さまざまな緩和戦略によってスケジュールとコ
ストの要件を満たしつつ開発すること
◦ コスト
◦ 技術面
36
Industry’s Challenge
Cost Mitigations
• Use Risk Management
◦ This is a proactive method for identifying and managing risks to a program
◦ It includes the development of a plan for each risk identified that removes or
reduces the risk to a manageable level during the program
• Software related risks include assessing existing software capabilities
to determine what software and/or documentation can be reused
and determining how much requires modification
◦ This analysis is referred to as a Change Impact Analysis
◦ Benefit: Provides the confidence of starting with a known safe and working
product with the possible impact of reducing the overall effort
37
Industry’s Challenge
コスト削減
• リスクマネジメントの利用
◦ プログラムのリスクを特定し管理するための積極的な方法
◦ プログラム中に管理可能なレベルのリスクを除去または低減すること、も
しくは、特定されたリスクごとの計画の策定が含まれる
• ソフトウェアに関連するリスクには、既存のソフトウェア機能を
評価して、どのソフトウェアおよび/またはドキュメンテーション
を再利用できるかを判断し、どれだけ修正が必要かを判断するこ
とが含まれる
◦ この分析は、チェンジ・インパクト・アナリシスと呼ばれる
◦ メリット:既知の安全な現行製品から始めることで、全体的な労力の削減
38
Industry’s Challenge
Cost Mitigations
• Use Risk Management, continued
◦ Less complex areas of code development may be determined to require less rigor and savings are
identified.
◦ Some documentation may be assessed to determine if it can be streamlined (deleted or combined)
◦ Automating testing, or using manual testing versus automated may be assessed for cost cutting
• When used properly, risk management is a powerful tool for managing a successful program by
planning for reduction or early resolution of issues and proactively addressing them
◦ Risk management can sound bad in the aviation industry, as its often stated in terms of deaths, cost, and
equipment damage
• The overall goal for risk management is determining what level of risk can be acceptable for cost
and schedule savings
A WORD OF CAUTION – the danger is accepting too much risk
39
Industry’s Challenge
コスト削減
• リスクマネジメントの利用(続き)
◦ あまり複雑でないコード開発の領域は、さほど精密に開発する必要がないと判断され、コスト削減
の対象となる。
◦ 合理化できるかどうかを判断するために、一部の文書を評価することがある(削減あるいは統合)
◦ コスト削減のために、自動化テスト、または手動テストか自動化のどちらを使うかが評価される
• リスクマネジメントは、適切に使われれば、問題の削減や早期解決を計画し、積極的に取り
組むことで、プログラム成功裏に管理するための強力なツールとなる
◦ リスク管理は、死亡、コスト、および機器の損傷の点で言及されることから、航空業界では
悪いイメージをもたれることがある
• リスク管理の最終的な目標は、コストとスケジュールの節約に対してどのレベルまでのリス
クを許容できるかを判断すること
A WORD OF CAUTION – 危険とは過剰なリスクを受け入れること
40
Industry’s Challenge
Cost Mitigation Concerns
• In today’s world, good management must keep costs to a minimum
• Due to the intense economic pressures, it is very easy to accept too much risk in minimizing costs
and inadvertently cause safety issues
• A few lessons learned over the years include the following:
◦ Documentation is an upfront cost that is tempting to reduce. This can seem like an impressive cost
savings up front, but by program end, it can turn out to be more costly and impede the management and
maintenance of software safety
◦ Configuration control is unfortunately an easy target for reducing costs. But without configuration
control, any repeatable success is accidental.
› (A summarized point of the Software Engineering Institute (SEI) Capability Maturity Model (CMM) tenets)
◦ Software Quality Assurance is also a target for cost cutting, but this is what assures the plans, processes,
and standards and best practices are followed
› Again, the absence of software quality assurance can mean success is unreachable
41
Industry’s Challenge
コスト削減の懸念
• 今日、良い経営といわれるためにはコストを最小限に抑えることを求められる
• 厳しい経営的圧力にさらされると、コストを最小限に抑えすぎるあまり、安全性に問題
を引き起こすリスクをかかえがちである。
• 長年にわたる経験から下記のような教訓が得られた:
◦ 文書化は初期費用であり、削減されがちである。 これは、効果的なコスト削減のように見える
が、最終的には、かえってより高くつき、ソフトウェアの安全性の管理と保守を妨げる元凶と
なりうる。
◦ 残念なことに、構成管理(コンフィギュレーションコントロール)はコスト削減のためのター
ゲットとなりやすい。 しかし、構成の制御がなければ、反復可能な成功は偶然にしか起こりえ
ない。
› (ソフトウェアエンジニアリング研究所(SEI)能力成熟度モデル(CMM)の教義の要約)
◦ ソフトウェア品質保証もコスト削減のターゲットとなりがちだが、ソフトウェア品質保証こそ
が計画、プロセス、スタンダードを保障しベストプラクティスへ導く
› ソフトウェアの品質保証がないと、成功に達することができない可能性がある
42
Industry’s Challenge
Technical Mitigations
• We know we must plan for a safety approach to safety critical
software
• We develop the requirements and design with safety mitigation
strategies.
◦ Strategies include architectural mitigations, use of previously approved and
certified software systems, and advanced verification methods
◦ Architectural mitigations include redundancy, isolation, use of monitors,
partitioning, dissimilarity, and command/authority limits.
43
Industry’s Challenge
技術的緩和
• 私たちは、セイフティクリティカルソフトウェアに向けて安全
なアプローチを計画しなければならない
• 安全対策戦略を用いて要件と設計を開発する。
◦ 戦略には、アーキテクチャの緩和、以前に承認され認定されたソフト
ウェアシステムの使用、高度な検証方法が含まれる
◦ アーキテクチャの緩和には、冗長性、隔離、モニターの使用、パーティ
ション化、相違性、およびコマンド/権限の制限が含まれる。
44
Industry’s Challenge
Technical Mitigations
Most are defined in RTCA/DO-178B, as follows:
• Redundancy
◦ Used to duplicate a function or system to ensure a backup system is available
• Isolation
◦ Used to contain and/or isolate faults and potentially reduce the effort of the software verification process
• Monitors
◦ These are a means of protecting against specific failure conditions by directly monitoring a function for failures which would contribute to the failure condition.
Monitoring functions may be implemented in hardware, software, or a combination of hardware and software.
• Partitioning
◦ This is the time and space separation / isolation between functionally independent software functions and components to contain and/or isolate faults and
potentially reduce the effort of the software verification process
• Dissimilarity
◦ Dissimilar software versions are usually used as a means of providing additional protection after the software verification process has been satisfied.
Dissimilar software verification methods may be reduced from those used to verify single version software if it can be shown that the resulting potential loss of
system function is acceptable as determined by the system safety assessment process.
• Command/authority limits
◦ Used in monitors that command and limit maneuvering of an object forcing certain motion to stay within defined limits. This is used for limiting the pitch, roll,
and yaw of a flying aircraft, for example.
45
Industry’s Challenge
技術的緩和
RTCA / DO-178Bで次のように定義されている。
• 冗長性
◦ バックアップシステムが利用できることを保証するため、ファンクションまたはシステムを複数持つ
• 分離
◦ 障害を抑止および/または分離し、ソフトウェア検証プロセスの労力を削減することもできる
• モニター
◦ 障害状態に寄与する障害の機能を直接監視することによって、特定の障害状態から保護する手段。監視機能は、ハー
ドウェア、ソフトウェア、またはハードウェアとソフトウェアの組み合わせによって実施される。
• 分割
◦ 機能的に独立したソフトウェア機能とコンポーネントとの間の時間と空間の分離である。フォールトを包含および/ま
たは分離し、ソフトウェア検証プロセスの労力を潜在的に削減する。
•
相違点
◦ 異なるソフトウェアバージョンとは、通常、ソフトウェア検証プロセスが満たされた後に、何らかの追加の補償を必
要とする。システムの安全アセスメントプロセスによって決定されるように、システム機能の潜在的損失が許容可能
であることが示され得る場合、異なるソフトウェアへの検証方法は、単一バージョンソフトウェアを検証するために
使用した方法を活用することにより減らせる。
• コマンド/権限の制限
◦ 特定の動作が定義された制限内にとどまるように、オブジェクトの操作を命令し、モニターする。 これは、例えば飛
行機のピッチ、ロール、ヨーの動きを制限するために使用される。
46
Industry’s Challenge
Advanced Verification Methods
• These are used for the more severe levels
of safety critical software
• Used at the software integration level to
further assure the safety critical
application and include at the software
architecture and code level:
• Path coverage
• Condition/decision coverage
• Modified condition/decision coverage
47
Industry’s Challenge
高度な検証方法
• より厳しいレベルの安全に欠かせない
ソフトウェアに使用される
• 安全性に重大な影響を与えるアプリ
ケーションをさらに確実にするために
ソフトウェア統合レベルで使用される。
ソフトウェアアーキテクチャとコード
レベル
• パスカバレッジ
• 条件/デシジョンカバレッジ
• MC/DC
48
Summary
Conclusion
49
概要
結論
50
Summary
• It would seem that if we know what best practices are for safety critical software,
they should be widely used and accepted in industry
◦ But this is not the case, if only due to the time and cost of using them
◦ Several examples from my recent experience include:
› A company whose program management dictated to the software development team what they could
and could not do.
• This program has slid more than 3 years and is still in progress
› One site of a company did not provide for software tools for configuration management, verification,
or requirements traceability for the software development team.
• This program also slid close to one year while errors were being corrected
› A recent program has used a textbook example of the Agile software development concept, without
modification for safety critical applications
• This system is now being redesigned to meet safety requirements
› A supplier of a software intensive safety critical system did not assure that a software quality
assurance function was occurring rigorously and consistently throughout the program
• This program has suffered program delays as the errors were found and further changes were deemed
necessary
51
概要
• セイフティクリティカルソフトウェアのベストプラクティスが何であるか
を知っていれば、それは広く使用され、業界で受け入れられるであろう
◦ しかし、それを使用する時間とコストのためだけであれば、その限りではない。
◦ 私の最近の経験上いくつかの例がある:
› プログラムマネジメントがソフトウェア開発チームに対していちいち指示を出していた会社。
• このプログラムの開発は3年以上ずれこんで、まだ進行中。
› ある企業のあるサイトは、ソフトウェア開発チームの構成管理、検証、または要件のトレー
サビリティのためのソフトウェアツールを提供していなかった。
• このプログラムもまた、エラーが訂正されている間に1年近くまでずれこんだ。
› 最近のプログラムでは、アジャイルソフトウェア開発コンセプトの教科書の例を使用した。
• このシステムは安全要件を満たすように再設計されている。
› ソフトウェアインテンシブセイフティクリティカルシステムのサプライヤが、ソフトウェア
品質保証機能をプログラム全体にわたって精密かつ一貫してきちんと機能させていなかった
• このプログラムは、エラーが発見され、変更が必要となり、遅延が発生した。
52
Summary
• Conclusion
◦ Our first challenge is to use properly what we know
◦ Our second challenge for the future of safety critical software is to continue to
grow in innovation and creativity with new technologies. We must stay
abreast of technology development and continue to seek new and novel
methods for assuring safety.
◦ Our caution is that we must know a technology well enough to seek a safe
application of a technology to understand and successfully use its safe-subset
53
概要
• 結論
◦ まずは、私たちが知っていることを正しく使う。
◦ セイフティクリティカルソフトウェアの将来の課題は、新しい技術で革
新と創造性を成長させ続けること。 技術開発に遅れずに、安全を保証
するための新しく斬新な方法を模索し続けなければならない
◦ 安全なサブセットを理解し、上手に利用するためには、技術を安全に適
用できるように、技術を理解しなければならない。
54
Questions?
55
56