2008年8月15日金曜日

常に質が重要である(プロジェクトの人間学)

【この「プロジェクトの人間学」投稿シリーズは(後略)初回投稿:はじめに(プロジェクトの人間学)

本日のコーディング進捗。予定数20本に対して21本。妥当な人員(スキルと人数)、期間、作業量で回っているプロジェクトならば問題ない。しかし普通は何がしかのトラブルを抱えているものである。プロジェクトの状況を押さえなければこの数字は評価できない。例えばメンバーのスキル。働いているときの顔色や帰宅時間。会話の内容。質的なものを考慮すれば数字の中身が見えてくる。

最も重要なのがトラブルの質である。単純ミス、製品障害、設計ミス、コミュニケーションミス、さまざまなトラブルがある。そして時期によってトラブルの評価は変わってくる。

初期設計フェーズで潰しておきたいトラブルの一つはグランドデザイン上鍵となる技術のフィージビリティである。要するに例えば「JavaとDBでそれができるんだっけ?」とか「データのサイズが5年後に5TBを超えるけど、運用回るんだっけ?」という確認である。「そもそもサポートされていない」とか「このグランドデザインでは実現は困難」という事実はこの時期に発見しなければならない。確定情報を掴みきれなかった場合には代替プランも必要である。

新しいテクノロジーを採用する際のリスクをある程度はここで潰すことになる。最近は技術の実体が見え難い。その理由はニッチな規格の乱立、分かったような分からないような営業トークである。Javaでいえば初期のEJBまではまだ何とかなった(使わないけど)。WebServicesだの何だの出てきてからがひどい。素晴らしいソリューションだとかなんだとかいうから見てみたらただのリモートプロシージャコールじゃないか。実績があるから、話題だから、というだけの利用で採用し、フィージビリティ検討が甘いと後でひどいことになる。

それから最初の設計方針に制約があるかどうかも事前に押さえておかなければならない。例えば「並列に作業できる要件に対応して、子画面を複数立ち上げて操作可能とする」という設計にした場合、画面遷移が複雑怪奇となり、また組み合わせによってはデータの受け渡しの関係上使えない子画面が出てくる可能性がある。それを最初にリスク・懸念として顧客と共有し、次のフェーズで対応して行く必要がある。

初期設計フェーズでは、以下のトラブルの種が植えられる。
-フィージビリティ系トラブル(プロジェクト成立の根幹に関わるものから軽いものまで)
-グランドデザインから発生する制約の見落とし

当たり前だが後の工程になるほど上記トラブルのインパクトは大きくなる。

詳細設計フェーズのトラブルは、基本設計がそれなりに出来ていたとすれば、あまり深刻なものではない。フィージビリティやデザインを詰めて行くだけである。しかしもちろん基本設計がうまく行くプロジェクトはそんなにない。だから大抵は根本的なフィージビリティが詳細設計フェーズでも課題となる。

またグランドデザインの検討が進み、追加の機能が必要になることが分かってくる。大抵は止むを得ない追加となる。

開発、テストフェーズ初めてロジック上のトラブルが出てくる。このCD/UTフェーズでのロジックトラブルは必然的であり、自然である。表に出ないためあまり騒がれることもない。この時期にフィージビリティ検証の甘さが露呈する場合もある。結合テストで出るよりはましである。この時期は時間が足りないことで品質が下がるリスクがある。またコミュニケーションミスによる実装漏れがある。詳細設計で詰めて書かれていないため、この手の実装漏れは直接コードを見るしか確認できないのが実情である。ただし全コードをレビューする時間などないから、うまくサンプリングしてレビューしなければならない。レビューワは専任の方がよい。開発者に片手間にレビューさせると、体力の関係で開発者が担当するコードの品質が落ちる。詳細設計でロジックまで詰められていない、かつレビューに十分な時間が取れなかったまま結合テストに進んだプロジェクトは、通常大きなトラブルに遭遇することになる。

CD/UTで判明するロジックのトラブルは理想的には詳細設計フェーズで潰されるべきである。しかしもちろんそんなことにはならない。現実には詳細設計はせいぜい「ロジックに落とし込めないほど大雑把な手順」あるいは「顧客の漠然とした希望」が記載されるに留まる。その理由は2つある。一つは開発者が陥りがちな設計書の軽視である。コーディングしてUTするのが一番早いんですよ。一理ある。だが仕様と品質がきちんと守られドキュメントがメンテナンスされる必要がある。別に優等生ぶるつもりはない。引き継ぎ体力の節約と余計なトラブルの防止を防ぐためだ。CDUTを優先する開発者はドキュメントを軽視する傾向がある。面倒くさいのと日本語が苦手だからであろう。だが実はこれは開発者だけの責任ではない。ウォーターフォール型方法論の厳格な適用もドキュメント軽視を生むのである。

0 件のコメント: