SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

安全ソフトウェアの設計

【第2回】エレベータの安全ソフトウェア設計


安全設計の基本に立ち戻る

 ここで、安全設計の基本を思い出してもらいたいと思います。

安全設計の基本
  • リスクの高いモジュールは他のモジュールから独立させて切り離す(アイソレーション)
  • 安全はシンプルな構造、処理で確保する(シンプルデザイン)

 リスクの高いモジュールを他のモジュールから独立させて切り離し(アイソレーションし)、単純な構造、処理で安全を確保する(シンプルデザイン)ためには、ソフトウェアシステムの安全アーキテクチャの考え方が必要です。

 安全アーキテクチャが実現できているかどうかは、機器の安全を担っているソフトウェアモジュールが他のモジュールとアイソレーションされており、かつ、安全設計がシンプルデザインで実現されていることを可視化することで確認します。

 安全アーキテクチャは必ずしもソフトウェアだけに限ったことではありません。1930年代のエレベータでは乗り場側の扉を閉めないと電流が流れずエレベータを昇降させることができないインターロック機構が施されていました。これは電気と機械で実現した安全アーキテクチャであり、シンプルでかつフェイルセーフ性の高い安全機構でした(図6)。現在でもインターロック機構で安全設計を施したエレベータはあります。

図6:インターロック機構を使った古いエレベータ
図6:インターロック機構を使った古いエレベータ

シンプルな安全アーキテクチャ

 メカニカルなインターロック機構は「設計が間違っていないか」「壊れていないか」「問題が発生しないか」を目で見たり、さわったりすることで確認できます。正常使用におけるテストや繰り返し負荷テストもやりやすいと言えます。

 電気的な部品や回路によるインターロック機構は、メカニカルなインターロック機構よりは見えない部分が多いのですが、完成された部品、回路の組み合わせであるためテストの組み合わせも有限であり、一度十分に検証を行えば、後は部品の故障や生産組み立てのチェックを行うことで安全性を担保できます。

 ところが、ソフトウェアを使って安全設計を行った場合は、インターロックの機能だけを切り離して検証することが難しいだけでなく、もし仮に安全機能を分離できたとしても、同じCPUで動いている他の機能モジュールがメモリリークを繰り返したりすると、独立性の高い安全ソフトウェアが正常に動作できなくなるかもしれません。

 電気的に設計したインターロック回路も、配線がショートしていたり電流がリークしたりしていれば安全装置が働かなくなるかもしれません。しかし、電気回路で初期の設計が悪い場合は、このような問題が試作品の試験や商品化の試験、生産時の試験で見つかります。どこを検査すれば問題が見つかるかというテクニック、ノウハウも既に確立していると言えるでしょう。

 ところが、ソフトウェアの場合は、設計時点で危ない設計になっていたとしても、その危なさが外に見えてきません。また、安全機能のソフトウェアを徹底的に検証したとしても、深く考えずに誰かが修正したたった1行のプログラムコードがその安全機能に影響を与えてしまう危険性もあります。ソフトウェアの場合は、確度の高い検証を行った後にプログラムをさわれなくするような仕組み(構成管理ツールと変更管理ツールの連携や部門内の運用ルール)が徹底していないと、ソフトウェアを修正しやすいという特性から、意図しない変更が紛れ込んでしまう可能性があります。

 次回は、このソフトウェアにおける安全アーキテクチャの可視化について見ていきます。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
安全ソフトウェアの設計連載記事一覧

もっと読む

この記事の著者

酒井 由夫(サカイ ヨシオ)

1987年よりクリティカルデバイスのソフトウェア開発に20年間従事する。おもに16bitのワンチップマイコンを使った信号処理、リアルタイム組込みシステムの開発を行い、製品の仕様立案からソフトウェア開発のプロセス管理、プロジェクトマネージメント、安全性・信頼性の検証、保守、ソフトウェア技術者教育など組...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/3697 2009/03/16 18:36

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー