「システム・トラブルでオンライン処理が停止した。幸い単純なバグだったので,1時間で復旧できた」「新システムの稼働前日に,最終テストで重大な不具合を見つけた。何とか瀬戸際でトラブルを防げた」――

 ユーザー企業のシステム担当者は,前触れなく発生するシステム・トラブルやテストでの不具合と日々格闘している。どんなに仕事が忙しくても,トラブルの復旧作業や不具合の原因調査は最優先で取り組まなければならない。

 システム・トラブルといえば,9月5日から6日にかけて紀伊半島,東海道沖で地震が連続して発生した際,気象庁の津波観測情報システムが1時間にわたりダウンしたのが記憶に新しい。このトラブルで,気象庁は津波の発生に関する情報を地方自治体や防災関係機関に送信できなくなり,手作業で対応した。

 今年7月には名古屋証券取引所で取引システムにトラブルが発生。数時間にわたり取引できない状態に陥った。今年5月には,長野県の松本広域消防局で交換機ソフトの不具合が発生。119番通報が受け付けられなくなった。今年3月にはNTTドコモの顧客管理システムに異常が起こり,顧客対応に支障をきたした。

 こうしたシステム・トラブルが社会や企業に及ぼす影響は大きくなる一方であり,トラブル対策を担うシステム担当者の役割はより重要さを増している。冒頭のように稼働前にテストで重大なバグを見つけたり,発生したトラブルを速やかに除去できれば,システム担当者は冷や汗をかきながらもほっと胸をなでおろす。システム全体を再点検して似たような間違いを見つけ出せれば,さらに有意義だ。

 だが,ちょっと待ってほしい。「もぐらたたきゲーム」をするかのように,次々と発生するシステム・トラブルを素早く解決できれば,それで事が済むのだろうか。そもそも,どうしてシステムの稼働後やテストの最終段階で,単純ミスによるトラブルが起こるのか。

 言うまでもなく,システム・トラブルをゼロにするのは事実上不可能である。特に複雑な条件が重なったときにだけ発生する再現性の低い不具合や,技術的に難易度の高い問題点を見つけ出し,事前に解決するのは至難の業だ。

 しかし,すぐに直せるような不具合なら,その気になれば早く見つけることができるはずである。なのに実際には,システムの稼働前後まで見つからないケースが多く見受けられる。そのせいでトラブルを引き起こしてしまい,自社あるいは顧客に損害を与えたとしたら,これほどもったいない話はない。なぜ稼働ギリギリまで単純なミスに気付かないのか。その原因を,今こそ再度チェックしてみる必要があるのではないだろうか。

テスト不足は根本原因ではない

 まず疑うべきは,テスト不足である。多くの場合,これがトラブル多発の直接的な原因であり,テストをたくさんこなせば,そのぶん稼働前にトラブルが見つかる可能性は高まる。しかし,テスト不足はトラブルの根本的な原因ではないことに注意が必要だ。テストは,トラブルの芽を探しだす効果はあるが,そもそもトラブルが盛り込まれないようにすることはできないからだ。いわば,テストは対症療法に過ぎない。

 あるITベンダーの試算によると,設計段階で紛れ込んだ不具合をテストで見つけて修正する場合,この手戻りにかかる費用は,設計段階で見つけて直すのに比べて100倍以上かかるという。もっぱらテスト段階で不具合を見つけている以上,プロジェクトは進捗が遅れるか,予算オーバーを招く。

 単純なトラブルを減らすには,トラブルの発生原因をシステムに盛り込まないようにするしかない。当たり前であるが,これが最も効果的なトラブル対策である。そうはいっても,人間は必ずミスをするものだ。そうであれば,ミスを極力早めに取り除く手だてを講じるしかない。

 そのための有力な手段がレビューである。ここで言うレビューとは,要件定義書や設計書,ソース・コードなどシステム開発プロジェクトで作成する成果物の妥当性を検証する作業を指す。成果物の作り手と作成を依頼した側の双方もしくはどちらかが,「意図したとおり作られているか」という観点で成果物の中身を確認する。

 レビューは通常,システム開発における「要件定義」や「基本設計」などの工程ごとに実施する。成果物が仕様や機能の誤りを抱えたまま,プロジェクトを次の工程に進めることがないよう,チェックするのが狙いだ。例えば設計段階では,仕様に誤りや漏れがないかを入念に確認し,設計書が完成するまで次の実装工程には進まない。レビューという関所を開発工程の随所に設けることで,単純なミスの早期発見が期待できる。

急がば回れで愚直に臨む

 筆者は,今から半年前の今年3月に,日経コンピュータでレビューをテーマに取り上げた特集を執筆した。その取材過程では,レビューに批判的な意見を聞くことが何度かあった。「レビューで誤りや不具合に気づかないから苦労しているんだ」「レビューで道草を食うぐらいなら,先を急いだ方が完成が近づく」といったものだ。現在でも,システム開発の現場では,こうした意見が少なくないのではないか。