「宇宙から地上へのメッセージ」 −安全性・信頼性は宇宙で始まり、地上で活用されるー
長谷川 義幸:5月号
第 2 回
前回では、宇宙のソフトウエア開発手法の構想フェーズについて説明しました。今回は、システム構築フェーズの重要なポイントについて説明します。
1. システム構築フェーズ
(1)設計段階
ソフトウエアの開発は、システム要求機能をブレークダウンし、より小さな複数のモジュールに分割し、システムを構成する機器への機能配分やインタフェースを決め、処理ロジックを設計したものを設計書にまとめることになります。 ハードウエアの設計では、見えるものを扱っており、かつ図面を含めた設計工程が標準化、可視化されているので、設計担当以外の方がみてもその内容をチェックできます。 しかし、ソフトウエアの場合は、見えないものを扱っていること、および設計工程やソフトウエアの様々な規約が標準化されていないため、可視化する作業が容易ではありません。 設計者の頭にある詳細仕様をすべて設計書に書き出していないこと、 特に、開発コスト低減化のために、設計を外部委託するケースが多くありますが、外注先のソフトウエア開発力は様々で、概して設計書の記述レベルが低い傾向にあります。 また、複数の設計者が分担するため、設計書の書き方が人によって異なることが生じるばかりか、設計者によっては設計書の読み方に異なる解釈が生じることになり、結果、バグの多発と設計の手戻りが生じます。『宇宙開発では、これを防ぐために、頭にある設計要求を文書に詳細記述を要求して、設計者以外の第3者の複数人でによるソースコードチェックやデザインレビューによりコーディング規約違反や要求仕様の解釈違いやバグをみつける方法を設計段階で行ってソフトウエアに内在するバグの総数を抑えるようにします』。 デザインレビューの目的は、内容をお互い理解し、状況を把握し設計の問題点、品質,納期、コスト等改善点を設計段階で発見することにあります。
(2)検証
検証時に発見されるバグの多くは、ソフトウエアの単体試験で発見されるべきものが多く、単体試験で網羅性試験をやっていればソフトウエアを組み上げた段階で発見されるべき不具合はきわめて少なくなります。 また、検証時に設計仕様がすべて検証されるように実環境を想定したテストを行うべきですが、コストとスケジュールの制約の中で、限定した異常時についての試験のみで済ませるため、接続をする他社のシステムと組み合わせたときにバグを発見する場合が多くあります。 『この主たる原因は、ソフトウエア要員の質の問題と第3者の品質チェックを行う仕組みができていないことによります。 誰かがプロセスのなかでチェックをすると、作業者の緊張感が働き、自分がもっていない経験や知識をもらって個人の理解度の向上や品質向上への意欲がでてきます』。
さらに、ソフトウエアでの不具合の中で、製品試験の最終段階で、いろいろなシステム運用内容が決まってくると、最初に想定したものとの違いがでてきます。構想段階で考えていた以上に異常時にはどう対処するのか真剣になり、いろいろな要件が明らかになってきます。すると、その要求を決めて仕様に追加してゆくことになり大幅な手戻りとなって、納期までの時間を圧迫することになります。 『これを防ぐ手法として構想段階において、その製品を使用する際に生じると想定される異常事態を洗い出し、その対処を組み込んだシステム要求分析を行い、異常時への対応をふくめたソフトウエア要求仕様を設定します』。
(3)変更管理
「システム構築フェーズ」で重要なのが、変更管理の仕組みです。 ある設計者は最新版の要求仕様による設計を進めてきたつもりだったのが、他の設計者のソフトウエアとリンクをはった段階でバグが発生、原因をさぐってゆくと、バグに対処する設計変更を急ぐあまり、とりあえず電子メイルで関係者に通知して了解をとったと思いこんだため、設計書に反映されていなかったというケースがあります。 コンフィギュレーション管理は、常に、「適用するソフトウエアの登録、変更情報、ライブラリー、品質記録等の最新版」を明確にして、誤った使用や組み込み漏れによるトラブルを未然に防ぐために実施するもので、ソフトウエア開発では、もっとも基本的で重要な管理の1つです。宇宙開発ではこの作業を組織的な仕組みとして実施体制、責任と権限、管理方法、管理手順等を明確にして作業することを要求しています。
以上の問題点は、ソフトウエア業界の事情として,製品サイクルが短く、短期的にいかに多くの機能をソフトウエアに詰めこむかという日常業務に忙殺されるあまり、システムエンジニアリングの手法をとっていないケースで不具合が多く発生してるそうです。 ソフトウエア開発手法のポイントとは、@設計のやり直しを含めた上流工程の設計の品質を高めると、検査で不良品が少なくなり、検証費用も安くなり、開発効率が向上する。 A発注した開発部門と別の専門の監査部門でダブルチェックを行う体制をとると、ソフトウエアに内在するバグの総数を抑えることができることです。
ところで、宇宙船の搭載ソフトウエアはハードウエアと共にシステム全体を監視・制御する重要な役割を担っていますが、ちょっとしたソフトウエアのバグが高い衛星を失敗させる場合があるために、ソフトウエアを確実に開発・維持するソフトウエアの安全・開発保証管理を特に対象としてプロセスの監視をしています。次回は、ソフトウエアの安全とはなにか、ソフトウエアの安全性設計について説明します。
宇宙ステーション一口メモ 宇宙では身長が伸びます。地上では重力により圧迫されていた脊椎が、重力の拘束から開放されるからですが、足は伸びずに胴体だけが伸びます。その伸びは、2〜4cm位です。
宇宙船の天井の高さはこの伸びを考慮して設計しなければ頭が天井につかえます。また、宇宙服も地上の身体サイズで設計すると窮屈なものができます。また、体型も変化します。地上では足元に溜まっていた体液が無重力では上半身に移動するので、下半身は細くなり上半身は膨らみます。スタイルを気にする女性にとっては宇宙はいい環境かもしれません。
|