数値に基づく効果的なプロジェクトレビュー

作成:2005年11月7日

吉田誠一のホームページ   >   ソフトウェア工学   >   技術コラム   >   開発プロセス

ソフトウェア開発のプロジェクトは、なかなか一筋縄ではいかない。順風満帆に進んで予定通りに終了することは稀で、たいていは紆余曲折を経た後に、予定の工数をオーバーして、何とかゴールに辿りつく。

プロジェクトに参加しているメンバーは、開発に追われる日々の中で、つねに何らかの問題意識を持っているものだ。予定通りに進まなかった原因、作業の遅れをもたらした問題点など、実際のプロジェクトから得られる教訓は大きい。

得られた教訓を活かし、次のソフトウェア開発をより良く進めるためには、プロジェクトを総括・反省する、プロジェクトレビューが重要となる。だが、実際の現場では、開発作業が終わった後でプロジェクトレビューを行う習慣は、あまり根付いていない(打ち上げと称して飲み会を開催する習慣は、広く根付いているのだが)。

プロジェクトレビューが行われない理由の1つには、レビューを行っても雑談になってしまい、効果が現れない、ということもあるようだ。

ただ集まって反省会を開いても、効果はない。効果的なレビューを実践するには、プロジェクトを客観的に解析できるような具体的な資料を用意して臨む必要がある。そのためには、プロジェクトの実績を数値として算出することが大切だ。

目次

  1. 数値が真実を照らし出す
  2. どんな数値を出すべきか
  3. 予定が無ければ、評価も無い
  4. 数値に基づくプロジェクトレビューの効果

数値が真実を照らし出す

プロジェクトに参加したメンバーは、プロジェクトの良かった点、悪かった点、改善した方が良い点などを、いくつか頭に思い浮かべているはずだ。一般的なプロジェクトの反省会では、これらの点について互いに意見交換することが多い。

だが、メンバーが感じている問題点は、必ずしもプロジェクトの実体を表しているとは限らない。

例えば、あるプロジェクトでは、やたら進捗や会議ばかりやっていて、仕事が進まず、スケジュールがオーバーしてしまった、とメンバーが思っていたとしよう。この点を反省すると、なるべく会議を短くしよう、という結論になる。

だが、実際に会議を行っていた時間と、机の前で作業していた時間を、それぞれ集計してみないと、真実は見えない。集計してみると、会議に費やした時間の割合は、実はかなり小さいことが分かるかもしれない。

会議の時間が適切でも、

  • 事前に連絡がなく、急に会議を始めることが多い。
  • 作業に集中したい時間に会議が入ることが多い。
  • 会議の雰囲気が悪い。

といったケースでは、メンバーが「会議ばかりしていた」と感じることもある。もしそうなら、なるべく会議を短くしよう、という結論は誤りである。

どんな数値を出すべきか

プロジェクトレビューでは、メンバーが集まって話し合う前に、プロジェクトの実績を数値で示した資料を作成する。

プロジェクトの実績を示す数値とは、具体的には、次のようなものである。

プロジェクトの実績を示す数値
  • 工数
    • 累計の作業時間(○時間)
    • 実際の作業期間(○月○日〜○月○日)
  • 成果物
    • 仕様書や設計書の分量(ページ数)
    • ソースコードの分量(行数/関数の個数/クラスの個数/ファイルサイズ)
  • 項目
    • 作業項目数(仕様書や設計書の見出しの個数)
    • テスト項目数
    • 障害の個数

これらの数値を算出するためには、日頃からきちんと記録を残しておくことが重要だ。工数を算出するためには、詳細な日々の作業記録が必要になる。また、多人数での開発であれば、自分の修正箇所が分かるようにしておく必要がある。

レビュー資料では、これらの数値を報告するだけでなく、自分なりの考察も書き加えておく。レビューに参加する前に、この数値を基に評価・解析を行っておくことが大切である。

資料に提示する数値は、プロジェクトの実体を明らかにできるデータでなければいけない。何について、どれくらい詳細に集計すれば良いかは、プロジェクトをどのように評価・解析するかに合わせて、適切に定める必要がある。

数値を操作して真実を隠してはいけないが、正確に評価・解析するためには、実情に沿った値を算出する必要がある。例えば、ソースコードの行数を算出する場合、コメントを削除した上で数えた方が良いかもしれない。

予定が無ければ、評価も無い

プロジェクトを評価するためには、実績の数値だけでなく、予定の数値も必要である。予定と実績との比較が、プロジェクト評価の基本となる。

当然のことだが、予定の数値は、プロジェクトをスタートする時点で算出しておく必要がある。前章では、プロジェクトの実績を示す数値を挙げた。これらは、初めに予想しておくべき数値でもある。特に工数の値は、評価基準として重要だ。

プロジェクトレビューは、実際に問題が発生した時だけ行えば良い、という考えもある。それも悪くはない。だが、いざ問題が発生してから、慌てて実績だけを算出しても、評価のしようがない。事前に数値化した予定を立てていなければ、問題を教訓として次に活かすことはできないのだ。

実際には、たいていのプロジェクトでは、事前に工数やスケジュールの見積もりは行っているだろう。だが、数値だけ残っていても、評価はできない。その数値を導き出した根拠となる資料も残しておくことが重要だ。

数値に基づくプロジェクトレビューの効果

数値に基づくプロジェクトレビューは、それ自身にかなりの工数がかかる。実際、数ヶ月×数人規模の作業で行ったプロジェクトレビューでは、資料を作成するのに1日、レビューにも半日かかった。ただでさえ忙しい中、そんな悠長に反省会などやっていられないかもしれない。だが、それだけの時間をかける意義は必ずある。

ソフトウェアの品質はテストで充分に評価する。設計の不備による障害のデバッグを1、2個もやる羽目になれば、たいていの技術者は、もっと上手く作りたいと思うようになるものだ。一方、開発作業については、終わり良ければすべて良し、となりやすい。だが、プロジェクトレビューを行うことで、ソフトウェアの作りだけでなく、開発の進め方そのものにも関心が向き、作業をより良く進めようという意欲も沸く。

数値に基づくプロジェクトレビューのためには、資料をまとめる必要がある。そのため、日頃からスケジュールの自己管理や、ソースコードや文書の管理についても、注意が払われるようになる。

プロジェクトレビューのためには、事前に数値化した予定を立てておく必要があると述べた。逆に言えば、プロジェクトレビューを習慣化することで、根拠のないスケジュールで開発作業を進めてしまうというリスクを防ぐことができる。

そして何より、数値に基づいて予定と実績を解析することで、作業計画や要因配置を考える上での、具体的な参考データを得ることもできる。例えば、ファンクションポイント法などで工数を見積もる際の、係数を求めることもできるだろう。「やることリスト」に基づく見積もり手法も、数値に基づいたプロジェクトレビューから得られた結果を基にしたものである。

Copyright(C) Seiichi Yoshida ( comet@aerith.net ). All rights reserved.