チームメイトのNASA出身の女の子から聞いた話で、へぇ~と思ったので。
「NASAのプロセスはすごくリスクドリブン。
まず考えうる限りのリスクを洗い出して優先順位付けする。
本当は全ての個所を二重化・三重化して作っておくのがベストだけど、それに掛かる時間とコストを考えると非現実的なので、じゃあどのリスクを優先して対策するか?という話になる。
特に一番大事なのは何が何でもクルーを地球に返すこと。
その部分の制御に関しては、まずスペースシャトル自体のハンドル操作があり、それがトラブった場合は地上から遠隔操作になり、それもトラブったらスペースシャトルの(地上同様の)操作ソフトがあり、さらにそれもトラブったら…というふうにものすごく多重化されている。
本システム・各バックアップシステムの担当チームは決してお互いの開発内容を共有しない。
ソフトウェアはハードウェアと違って、バックアップに同じソフトウェアを積んでいても意味がないから(同じ個所で結局トラブることになる)、独自でそれぞれ開発するの。」
ライフクリティカルなソフトウェアの開発は桁が違うな…と本当に思いました。
ちなみにスペースシャトルの開発はソフト・ハードの繋がりが非常に強いんだそうです。
例えば「このソフトウェアを動かしたい」と思った時にプロセッサの能力が足りず積み増ししたいと思うと、全体の重量が変わってそれはスペースシャトルの操作(物理)に影響する。
なので、見積もり段階からソフトウェアがどれだけの行数になるか?どれぐらい条件分岐や繰り返し文が発生するか??そのためにどれぐらいのハードウェアが必要か???ということを見極めることが必要で、現状最大の課題なんだそうです。
企業の基幹システムとは全く観点が違ってて面白いですねぇ。
0 コメント:
コメントを投稿