システムの仕様を明らかにする設計書は、開発プロジェクトを円滑に進めるときだけでなく、トラブルが発生した際の原因究明、保守開発の調査など、さまざまな場面で役に立つ。システムが大規模かつ複雑になれば、設計書のありがたみは増すばかりだ。設計書はまさに、進むべき方向を照らしてくれる「宝の地図」といっていい。
ところが、この設計書が整備されていないプロジェクトが意外に多い。確かに、設計書を緻密に作るには手間やコストがかかる。中には「システムがきちんと動けば、わざわざ設計書を作る必要はない」と、設計書を軽視する風潮があるのも事実だ。しかし設計書の不備は大きな混乱を招く。現場のリーダーは、プロジェクトの進行とともに、緻密な設計書の作成を、力強く推進していく立場にある。場合によっては稼働後に、既存の設計書を整理することも大切だ。今回は「設計書は宝の地図だ」というルールについて紹介しよう。
設計書に大きな穴 間違った対策を提案
設計書が宝の地図といわれるゆえんは明快である。設計書がない、あるいは他人が理解しにくい設計書では、トラブルが発生したときに対応が遅れてしまう。地図さえあれば、目的地に行き着くまでのルートや周辺の状況を的確に把握できる。地図は客観的で一覧性があり、どの方向に進めばよいのかをみんなに示してくれる。
では、宝の地図となる設計書の条件とは何か。いろいろあるが、一番大事なのは個々の設計書が適切につながっており、どこかに穴がないことだと考えている。多岐にわたる設計書に関連性がない、どこかに穴のあいた設計書は、目標にたどり着けない地図だ。
難しいのは、穴を埋めるための設計書が存在しない場合。しかもその知識が、特定の人の頭の中にしまい込まれたケースである。地図を完成させる最後のピースが特定の人の頭の中にあり、これを引き出さなければ役割を果たせない不完全な地図となる。筆者はこれで、手痛い経験をしたことがある。
本番環境でトラブルが発生した現場へ、筆者が投入されたときのこと。既存の設計書やメンバーから聞き出した情報を整理し、取るべき対策を練り上げた。ところが、その対策をユーザーに説明すると「おかしいな。Aさんの言うことと違うぞ」とあっさり。Aさんとは、プロジェクトに参加していたベテランSEの一人である。そのユーザー担当者によると、筆者が考えた対策については事前にAさんからも聞かされたが、それを実施すると別の障害が発生すると言われたという。
筆者は設計書を入念にチェックした。だがそんな問題は発生しないはずだった。そこでAさんをつかまえて事情をたずねた。すると、実は設計書に記述されていない別の機能があり、それが邪魔をして筆者が考えた対策は取れない状況だった。対策の検討はやり直し。あやうく間違った対策を取って、被害を大きくするところだった。
このように、ベテランSEの頭の中に特定の知識が集中することはよくある。Aさんはまさに、生き字引のような存在だった。システムに関するどんな質問にも答えられ、さまざまな問題をたちどころに解決してみせた。勘も鋭い。そんな解決策がどうして思いつくのかと、まわりをたびたび驚かせていた。
ベテランSE頼み こんな現場が危ない
しかし、こんな現場ほど、トラブルへの対応が実は弱い。このシステムでは以前にも、トラブル発生時に別の問題が起きていた。それは、Aさんが病気で離脱したことである。トラブルを解決するにはAさんの頭の中にある「地図のピース」が必要だった。残されたメンバーでは状況の把握がやっと。何もできずに時間だけが過ぎていった。
本来なら、設計書や障害切り分けのマニュアルを基に、迅速に障害復旧できるはず。設計書に穴があったことによって、問題を大きくした典型だった。トラブルへの対応が滞れば、ユーザーと時間をかけて築き上げた信頼関係は、一瞬にして失われる。
AさんのようなベテランSEに対して「ああいうSEに自分もなりたい」と、一人ひとりのSEが思うまではよかった。しかし、プロジェクトとして全員で共有すべきノウハウが個々のSEの頭の中にのみ存在する状態を容認したのは問題だった。リーダーは、Aさんのようなベテランに対して、地図のピースをきちんと文書化することを迫るべきだ。