JIS C 0508-7:2017 電気・電子・プログラマブル電子安全関連系の機能安全―第7部:技術及び手法の概観 | ページ 13

                                                                                             59
C 0508-7 : 2017 (IEC 61508-7 : 2010)
スキームに分割できる。
典型としては,Z仕様は形式Zと自然言語による非形式説明文とを混合したものである(形式Z
は読みやすさのために簡潔すぎる場合があるため,その目的を説明する必要があり,一方で非形式
の自然言語は曖昧かつ不正確になりやすい場合がある。)。
Zは,VDMとは違って,完全な方法というよりも表記法である。ただし,Zと結合して用いるこ
とができる関連方法(Bと呼ばれる。)が開発されている。B方法は,段階的詳細化の原理に基づい
ている。

参考文献

: Formal Specification using Z, 2nd Edition. D. Lightfoot. Palgrave Macmillan, 2000, ISBN 9780333763278
The B-Method. S. Schneider. Palgrave Macmillan, 2001, ISBN 9780333792841
C.2.5 防御的プログラミング
注記 この技術及び手法は,JIS C 0508-3の表A.4で引用されている。
目的 : プログラムの実行中に異常な制御フロー,データフロー又はデータ値を検出し,これらに対して事
前に決めた認容できる方法で対応するプログラムを作成する。
説明 : プログラミング中,制御又はデータ異常がないかどうかをチェックするために,多くの技術を用い
ることができる。これらの技術は,誤ったデータ処理の可能性を低減するために,システムのプロ
グラミング中,最初から最後まで系統的に適用することができる。
防御的技術には,二つの重なり合うエリアがある。固有のエラーセーフ ソフトウェアは,これ自
体の設計上の欠点を包容するように設計する。これらの欠点は,設計若しくはコーディングの間違
い又は誤った要求事項による場合がある。幾つかの防衛的技術を,次に示す。
− 変数は,範囲をチェックすることが望ましい。
− 可能な場合,値は確からしさをチェックすることが望ましい。
− 手順のためのパラメータは,プロシジャー入口において,型,サイズ及び範囲をチェックする
ことが望ましい。
これらの最初の三つの推奨事項は,プログラムが取り扱う数値が,プログラム機能及び変数の物
理的意味の両面から妥当なものであることを確実にするための手助けとなる。
読取専用パラメータと読み書きパラメータとは,分離することが望ましく,これらへのアクセス
をチェックすることが望ましい。関数は,全てのパラメータを読取専用として扱うことが望ましい。
文字列定数は,書込可能でないことが望ましい。このことは,偶発的な上書き又は変数の誤用を検
出する手助けとなる。
フォールトトレラントソフトウェアは,これ自体の環境における故障を“予期”するか,又は公
称条件若しくは期待条件の範囲外で用いた場合,事前に定めた方法で動くように設計する。技術と
しては,次の事項を含む。
− 物理的重要性をもつ入力変数及び中間変数は,確からしさについてチェックすることが望まし
い。
− 出力変数の影響を,チェックすることが望ましく,そのチェックは,できる限り,関連システ
ム状態変化の直接的観察によることが望ましい。
− ソフトウェアは,予期されるハードウェアの存在及びアクセス可能性の両方を含む,ソフトウ
ェアの構成をチェックすることが望ましく,さらに,ソフトウェア自体が完全であることをチ

――――― [JIS C 0508-7 pdf 61] ―――――

60
C 0508-7 : 2017 (IEC 61508-7 : 2010)
ェックすることが望ましい。このことは,保全手順後の完全性を維持するために特に重要であ
る。
防御的プログラミング技術の幾つか,例えば,制御フローシーケンスチェックは,外部故障にも
対処する。

参考文献

: Software Engineering for Real-time Systems. J. E. Cooling, Pearson Education, 2003, ISBN 0201596202,
9780201596205
Dependability of Critical Computer Systems: Guidelines Produced by the European Workshop on Industrial
Computer Systems, Technical Committee 7 (EWICS TC7, Systems Reliability, Safety, and Security).
Elsevier Applied Science, 1989, ISBN 1851663819, 9781851663811
C.2.6 設計及びコーディング基準
注記 この技術及び手法は,JIS C 0508-3の表A.4で引用されている。
C.2.6.1 一般事項
目的 : 適合確認を容易にし,チーム主体の客観的アプローチを奨励し,更に標準設計手法を施行する。
説明 : 順守する規則は,プロジェクトの初めにおいて,参加者間で合意する。これらの規則を,用いる設
計開発方法(例えば,JSP,ペトリネットなど)及び関連するコーディング基準(C.2.6.2参照)で
構成する。
これらの規則は,開発,適合確認,評価及び保全を容易にするために定められる。したがって,
これらの規則では,利用可能なツール,特に解析及びリバース エンジニアリング ツールを考慮す
ることが望ましい。

参考文献

: IEC 60880:2006,Nuclear power plants−Instrumentation and control systems important to safety−Software
aspects for computer-based systems performing category A functions
Verein Deutscher Ingenieure. Software-Zuverlassigkeit−Grundlagen, Konstruktive Massnahmen,
Nachweisverfahren. VDI-Verlag, 1993, ISBN 3-18-401185-2
C.2.6.2 コーディング基準
注記 この技術及び手法は,JIS C 0508-3の表B.1(設計及びコーディング基準)で引用されている。
目的 : 安全関連コードのエラーの可能性を低減し,安全関連コードの適合確認を容易にする。
説明 : 次の表に示す原則は,安全関連コーディング規則が(どのようなプログラミング言語であっても),
どのようにJIS C 0508-3の規定要求事項に適合させ,かつ,どのように参考の“望ましい特性”(附
属書F参照)を実現するかを示すものである。利用可能な支援ツールを考慮することが望ましい。

――――― [JIS C 0508-7 pdf 62] ―――――

                                                                                             61
C 0508-7 : 2017 (IEC 61508-7 : 2010)
JIS C 0508-3 コーディング基準の提案
要求事項及び推奨事項
モジュラーアプローチ ソフトウェアモジュールサイズの制限(表B.9の1)及びソフトウェアの複雑さ制御
(表A.2の7及び表A.4の4) (表B.9の2)。次に例を示す。
・ “ローカル”サイズ及び複雑さ測定及び限度の規定(モジュールの場合)
・ “グローバル”複雑さ測定及び限度の規定(全体的なモジュール組織)
・ パラメータ数制限及び固定数のサブプログラムパラメータ(表B.9の4)
情報隠蔽及びカプセル化(表B.9の3)。例えば,特定の言語機能を用いる動機付け。
完全に定義したインタフェース(表B.9の6)。次に例を示す。
・ 関数の引数及び戻り値についての明確な規定
・ 関数の実行前後の状態,アサーション及びデータ型不変数の明確な規定をもつ故
障アサーションプログラミング(表A.2の3a)及びデータの適合確認(7.9.2.7)
コードの理解しやすさ 有意で,明確な名称を推進する命名規則。例えば,混同を招きやすい名称の回避(例
・ コードの理解しやすさの えば,IOとl0)。
促進(7.4.4.13)
・ 読取りやすさ,理解しや 数値に付与する記号命名
すさ,テスト可能性
(7.4.6) ソースコード文書化手順及び指針(7.4.4.13)。次に例を示す。
・ 理由及び意味の説明(何がだけでなく)
・ 警告
・ 副次的影響
可能な場合,ソースコードに次の情報を含める(7.4.4.13)。
・ 法人名(例えば,会社,作者など)
・ 説明
・ 入力及び出力
・ 構成管理履歴
(モジュラーアプローチも参照)
適合確認及びテストのしやす次による。
さ ・ 事前条件及び事後条件をチェックするための“クリティカル”ライブラリ関数に
・ 適合確認及びテストを容 対するラッパー
易にする(7.4.4.13)。 ・ 特定のデータ要素又は機能の使用に対する制限を表現できる,言語機能を用いる
・ 設計又はプログラミング 動機付け[例えば,const(定数)]
のミスの検出を容易にす ・ 支援ツールによる適合確認の場合,選択したツールの限度に適合するための規則
る(7.4.4.10)。 (より基本的目標の妨げとならない場合に限る。)
・ 形式的適合確認(表A.5 ・ 再帰の制限使用(表B.1の6)及び循環従属に関するその他の形式の使用の制限
の10) (モジュラーアプローチも参照)
・ 形式的証明(表A.9の1)

――――― [JIS C 0508-7 pdf 63] ―――――

62
C 0508-7 : 2017 (IEC 61508-7 : 2010)
JIS C 0508-3 コーディング基準の提案
要求事項及び推奨事項
規定した設計との適合性の静規定した設計概念又は制限事項の実装に対するコーディング指針。次に例を示す。
的適合確認(7.9.2.12) ・ 最大周期を保証した周期的挙動に対するコーディング指針(表A.2の13a)
・ タイムトリガアーキテクチャに対するコーディング指針(表A.2の13b)
・ 最大応答時間を保証したイベント駆動アーキテクチャに対するコーディング指
針(表A.2の13c)
・ 静的に決定した最大反復回数のループ(繰返し動作設計の無限ループの場合を除
く。)
・ 静的資源配分(表A.2の14)及び動的オブジェクトの回避(表B.1の2)に対す
るコーディング指針
・ 共有資源へのアクセスの静的同期化に対するコーディング指針(表A.2の15)
・ 割込の制限使用に適合するためのコーディング指針(表B.1の4)
・ 動的変数を回避するためのコーディング指針(表B.1の3a)
・ 動的変数の組込みに関するオンラインチェック(表B.1の3b)
・ 使用する他のプログラミング言語との互換性を確実にするためのコーディング
指針(7.4.4.10)
設計によるトレーサビリティを容易にする指針
言語サブセット(表A.3の3)非構造化設計に導くような言語機能の排除。次に例を示す。
・ 安全でない言語機能を禁 ・ ポインタの制限使用(表B.1の5)
止する(7.4.4.13) ・ 再帰の制限使用(表B.1の6)
・ 定義した言語機能だけを ・ C言語的なユニオンの使用の制限
用いる(7.4.4.10) ・ Ada又はC++言語的な例外の使用の制限
・ 構造化プログラミング ・ 高級言語のプログラムの中に非構造化制御フローがない(表B.1の7)。
(表A.4の6) ・ サブルーチン及び関数における1入口点及び1出口点(表B.9の5)
・ 厳密に型付けしたプログ ・ 自動型変換がない。
・ 関数の引数及び戻り値からの自明でない副次的影響の使用の制限(例えば,静的
ラミング言語(表A.3の2)
・ 非自動型変換(表B.1の8) 変数)
条件及びアサーションの全ての形態の評価に副次的影響がない。
コンパイラ固有の機能の使用の制限又は文書化した場合だけの使用。
誤解する可能性がある言語構造の使用の制限。
上記で制限したにもかかわらず,これらの言語機能を用いる場合に適用する規則。

――――― [JIS C 0508-7 pdf 64] ―――――

                                                                                             63
C 0508-7 : 2017 (IEC 61508-7 : 2010)
JIS C 0508-3 コーディング基準の提案
要求事項及び推奨事項
正しいプログラミングの方法該当する場合,次による。
(7.4.4.13) ・ 浮動小数点表記を必要に応じて,正しい順序で評価することを確実にするための
コーディング指針(例えば,“a−b+c”は必ずしも“a+c−b”にはならない。)
・ 浮動小数点比較の場合,厳密な等号ではなく,不等号(未満,以下,超及び以上)
だけを用いる。
・ 条件付きコンパイル及び“前処理”に関する指針
・ 戻り条件(成功又は失敗)の系統的チェック
実行可能なコードの作成の文書化,及び可能な場合は,自動化(メイクファイル)。
関数の引数及び戻り値からの自明ではない副次的影響の回避。こうした副次的影響が
存在する場合,これらを文書化するための指針。
演算優先順位が絶対的に明白でない場合,括弧でくくる。
発生しないと考えられる条件も捉える(例えば,C言語“switch”の“default”の場
合)。
重要モジュールに対して“ラッパー”を用いること。特に,事前条件,事後条件及び
戻り条件のチェック。
既知コンパイラエラー,及びコンパイラ評価によって設定されていた制限に適合する
ためのコーディング指針。
C.2.6.3 動的変数又は動的オブジェクトの禁止
注記 この技術及び手法は,JIS C 0508-3の表A.2及び表B.1で引用されている。
目的 : 次の事項を排除する。
− メモリの望ましくない又は検出できないオーバレイ
− (安全関連)実行中のリソースのボトルネック
説明 : この手法の場合,動的変数及び動的オブジェクトの実行時にメモリを割り当てて,絶対アドレスを
決める。割り当てたメモリの値及びそのアドレスは,割当ての瞬間におけるシステムの状態によっ
て異なる。すなわち,割り当てたメモリの値は,コンパイラ又は他のいかなるオフラインツールに
よってもチェックできない。
動的変数及びオブジェクトの個数,並びに新しい動的変数又はオブジェクトを割り当てるための
既存の自由メモリ空間は,割当ての瞬間におけるシステムの状態によって異なるため,変数又はオ
ブジェクトを割り当てるか又は用いるときにフォールトが起こる可能性がある。例えば,システム
が割り当てる位置における空きメモリの量が不十分である場合,他の変数のメモリ内容が意図せず
に上書きされる可能性がある。動的変数又はオブジェクトを用いない場合,これらのフォールトは
回避できる。
動的挙動を一部の静的解析によって正確に予測できないため(すなわち,プログラム運用に先立
って予測できない。),予測可能なプログラムの運用を保証できない場合,動的オブジェクトの使用
を制限する必要がある。

――――― [JIS C 0508-7 pdf 65] ―――――

次のページ PDF 66

JIS C 0508-7:2017の引用国際規格 ISO 一覧

  • IEC 61508-7:2010(IDT)

JIS C 0508-7:2017の国際規格 ICS 分類一覧

JIS C 0508-7:2017の関連規格と引用規格一覧

規格番号
規格名称