SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

パーソナルソフトウェアプロセス(PSP)実践講座
~第1日 自分の生産性・品質を算出する

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


ダウンロード 記録用チャート (8.9 KB)

4: 欠陥とフェーズ

 PSPでいう「欠陥」とは、『製品が完成するまでの間に修正されていなければならないあらゆること(要件定義、設計、実行時なども対象となる)』です。具体的には、各種設計ミス(ロジック設計ミス、変数設定ミスなど)、コーディングの誤植、バグ、実行結果が違う、などが挙げられます。

 「欠陥=バグですか?」と聞かれますが、単にコーディング時のバグだけを指すのではなく、要件定義や設計など、PSP開発の全6フェーズにおいて「修正しなければいけないこと」が対象です。

 「フェーズ」とは、「時間の流れ」だと思ってください。フェーズを考える上でのポイントは、「時間は巻き戻らない」ということです。つまり、一度設計を終えたぞ、と思ってストップウォッチを止め、時間を記録したら、もう設計フェーズは終了しているということです。

 言い方を変えます。実装中に「あ、じゃあここの設計をこう変えよう」と思っても、その再設計作業は「コーディングフェーズ」です。「実装」の「中」だからです。

 実行してみたら結果が課題と違った。このための再設計は、「テストフェーズ」です。

 自分は実装→コンパイル→直し、実装→コンパイル→直し、と考えている、と言いたい方がたくさんおられるでしょう。でも、ここは頑張って、このフェーズ定義の通りに、プログラミングしてみてください(ちなみにこの場合、最初にコンパイルした瞬間から、実行テストの瞬間まではずっとコンパイルフェーズです)。

5: フェーズの規定にしばられること

 この手法、「パーソナル・ソフトウェア・プロセス」(PSP)という名前がついています。ここでいうプロセスとは「仕事の仕方」くらいに考えてください。このPSPエクササイズが大変なのは、プログラミング課題を行うにあたって、この「仕事の仕方」を規定されることです。

 はっきり言って窮屈で仕方がない方もいらっしゃるかもしれません。しかし、いったん「毎回同じフェーズの定義で仕事をする」ことが身につくと、作業計画が飛躍的に正確になり、楽になります。私は3~4回目で慣れました。では挑戦してみてください。

エクササイズ1:

 ある技術者が開発したプログラムの規模とそれにかかった時間が以下の通りだった時、それぞれ平均値と標準偏差を計算するプログラムを設計、実装しなさい。

 キーボード入力、ファイル、その他のソースから、実数n個を読み込み計算します。必要であれば、配列、データベース、その他のデータ構造を使って、読み込んだデータを保管しなさい。

 開発プログラムの規模が確定するたびに、このデータは増え続けます。そのため、データが何行になっても、その都度平均値と標準偏差を算出することができるようなプログラムを開発してください。

 その際、PSP のフェーズ定義と欠陥定義にしたがい、別途添付するチャートに自分の実績を記録すること。

表1 プログラム開発の計測結果
プログラムID 見積もりサイズ(KLOC) 実際の開発時間(H)
A 429 25.5
B 1586 140.3
C 227 20.8
D 98 5.2
E 3212 459.1
F 250 32.1
G 486 45.9
H 626 73.4
I 275 67.1
J 132 20.6
実行結果
                        平均値  標準偏差
                        ------  --------
見積もりサイズ(KLOC)  732.1   971.91
実際の開発時間(H)     89.0    135.73
補足:標準偏差とは

 「標準偏差」とは、平均だけでは表せない、データの散らばり具合を示す数値のことです。対象となるデータの平均値と各値の差を求めて二乗し(これを「分散」と呼ぶ)、それらの平均の平方根を取って求めます。標準偏差の詳細などについては、参考文献などを参照してください。

6: ヒント

 先ほどの表1の見積り規模(真ん中の列)において、分散を求めると次のようになります。

表2 見積りサイズの分散
プログラムID 分散(KLOC)
A 303.1
B 853.9
C 505.1
D 634.1
E 2479.9
F 482.1
G 246.1
H 106.1
I 457.1
J 600.1

 できましたか? では下記に、筆者がJavaで書いた解答の一例を掲載します。

次のページ
7: 平均値と標準偏差の算出例

修正履歴

この記事は参考になりましたか?

パーソナルソフトウェアプロセス(PSP)入門連載記事一覧
この記事の著者

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

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/3937 2009/11/26 10:22

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー