CodeZine(コードジン)

特集ページ一覧

パーソナルソフトウェアプロセス(PSP)実践講座
~第2日 プログラムの規模を正確に測る

パーソナルソフトウェアプロセス(PSP)入門 (2)

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/08/26 14:00

 プロジェクトのエンジニアとして担当分を「安定した品質で/安定した生産性で/期日通りに」納入する方法を、具体的なエクササイズを通して習得する「パーソナル・ソフトウェア・プロセス」(PSP)という手法について解説します。今回は、プログラム規模(サイズ)の正確な測り方について考えてみます。

目次

はじめに

 プログラマの仕事がより楽しくなる「PSP(パーソナルソフトウェアプロセス)講座」の第2回です。今回は、プログラム規模(サイズ)の正確な測り方について考えてみます。

 前回はPSPとは何かについてお話ししたのち、プログラム課題を一つ解いていただきました。その際に、「開発(6つのフェーズ)にかかった時間」「発見し修正した欠陥の数」を数えて記録してみました。

 なぜ計測したのでしょうか。今日はそのあたりからお話を始めてみたいと思います。それでは今回も一緒に、この方法「PSP」についてエクササイズをまじえ、習得していきましょう。

補足1: PSP講座の第1日をご覧になっていない方は…

 PSPの概要を知りたい場合は第1日に戻って、ざっと読んでからここに戻ることをお勧めします。PSPをスキルとして習得なさりたい方は、やはり第1日に戻り、演習を解いてから、ここに戻るとよいでしょう。

計測の意味: データを蓄積すれば見積もりに使えます

 現場経験をお持ちのプログラマさんならピンと来ると思いますが、プロジェクトは恐ろしくたくさんの「いつ終わるの?」「どれくらいかかるの?」に満ちています。マスタースケジュールをはじめ、個々のチームの作業計画、おそらく要件定義時に作成する総合テスト計画から、今日の会議の終了時刻、その後作業を予定している資料の締切にいたるまで……。また、作りっぱなしでいい成果物など一つもありません。自分が作成したモノは資料であれプログラムであれ、必ず後続の作業の入力になっているはずです。だから、「いつ終わるの?」「どれくらいかかるの?」という質問が飛び交い、場合によってはそれが強迫観念のようになるわけですね(やれやれ) 。

 前回プログラムを作る際に時間を測っていただいたのは、その「いつ終わるの?」に対する答えを準備するためです。つまり、少なくとも主要業務であるプログラム開発においては、

「前回使用した言語で、前回程度の規模の開発をする場合、
 かかる時間は平均で○○分程度です」

という答えを用意するための、一つめの材料になるわけです。もし仮に経験が一度しかなくても、あなたはきっと

「前回○○分だったので、今回も同程度だと思います」

あるいは

「前回と比べて○○なので、時間は△倍の約○×分です」

などと言うはずですね? 今後も、蓄積したデータが1点でもあるならばそれを使い、その上で技術者としての判断を発揮して、「いつ終わるの?」に答えましょう。これが、PSPにおける見積もりの立場です。よって、次のプログラミング課題(第4日で出題予定)からは規模も測ることにしましょう。

補足2

 平均とは何かについては、ほとんどの方は既にご存じだと思います。また、前回課題を解いていただいた方は、その計算式を用意する段階で思い出して、あるいは理解していただいたかと思います。つまり、

同じ定義に基づき収集したデータについて、その値の総和÷データ数

ですね。

プロセスを測るとは

 ということで、計測の意図についてお話ししました。さて、ここでこの連載のタイトルはPSPだということを思い出してください。PSPはパーソナル ソフトウェア プロセスの略でしたね。パーソナルは「個人の」、ソフトウェアは「ソフトウェア」、そしてプロセスとは「仕事の仕方」と考えてください、と前回申し上げました。では、「仕事の仕方」などという漠然とした観念をどのように計測するのでしょう。

 さっそく答えを申し上げます。今回のプログラム課題を開発するフェーズは、計画立案・設計・実装・コンパイル・テスト(実行)・事後分析、の6つです(第1日参照)。この6つのフェーズにかかった時間を測り、その時に発見した欠陥を記録することで、皆さんは各プロセスにかかる工数を測り、その品質を測っていることになるのです。お分かりいただけるでしょうか。これが「プロセスを測る」ということです。

補足3: 「フェーズ」と「プロセス」

 万が一ここで混同される方がいないように、念のため補足しておきます。

 

 「フェーズ」は、時間の流れの中の1区切りです(第1日参照)。時間は後戻りできません。よって、フェーズを巻き戻すことは原理的にはしません。一方、「プロセス」は、前出の通り、仕事の仕方です。

 

 ですから、時間という大きな流れを、仕事の視点から区切ったものがフェーズです。その中で行う仕事内容がプロセスです。よって、たまたま同じ時間軸の中に表わされていますが、同義ではありません。


  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 南川 しのぶ(ミナミカワ シノブ)

    IT技術、IT経営のコンサルタント。主にシステム開発コンサルティング活動の他、外部セミナー、顧客先企業の内部セミナーの講師も務める。カーネギーメロン大学のソフトウェア工学研究所(Software Engineering Institute)認定PSPソフトウェア開発者(SEI-Certified P...

バックナンバー

連載:パーソナルソフトウェアプロセス(PSP)入門
All contents copyright © 2005-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5