SHOEISHA iD

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

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

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

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

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

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


物理行と論理行

 例題のようにLOC計測が唯一にならないのは、LOCの考え方に「物理行」と「論理行」という違いがあるからです。わたしは、物理行ではなく、論理行で計測することをお勧めしています。

 2つの違いを言い分けてみます。

 まず、どちらもコメントと空白行を除いた全ての行を対象としましょう(→補足6参照)。この時、物理行は改行するまでが一行です。これに対し、論理行は、日本語の文章でいうところの読点「。」で区切られた文字のまとまりです。改行の多少にかかわらず、文として区切られるものを1行とします。

 お分かりいただけますでしょうか。では、ここでまた演習です(下記のPascal風のダミーコードは参考文献からの引用です)。

問1: 何行ですか?物理行と論理行でそれぞれ答えてください。
If A > B
    then begin A := A - B end
    else begin A := A + B end;
問2: 何行ですか?物理行と論理行でそれぞれ答えてください。
If A > B
    then
begin
A := A - B
end
    else begin A := A + B end;
問3: 何行ですか?物理行と論理行でそれぞれ答えてください。
If A > B
    then
begin
A := A - B
end
    else
begin
A := A + B
end;
問4: この問1~3において、論理行で計測すると定義した。この時、問1~3の規模を計測し、答えなさい。
答え
答1: 物理 3行、論理 1行
答2: 物理 6行、論理 1行
答3: 物理 9行、論理 1行
答4: いずれも1行

考察

 3つの文章が内容的にはまったく同じであることは、一目瞭然です。よって、問1-3 のソースコードを開発する労力はほぼ同じと考えていいでしょう。

 ということでこの演習を通して分かることが2つあります。

  1. LOCの計測の際には、あらかじめ定義をして「この測り方が正解」と決めておくこと(標準を作ること)が必要不可欠です。
  2. 今回の答えを見ると、論理行の場合、問1~3の答えがすべて1行となっていることが分かると思います。ですから、規模の計測の大切なことである、開発労力に最も比例する、という観点で、記述スタイルによる変化に影響されずに計測できる、論理行を採用することを勧めます。

 以前、「コード行数で生産性を測り、待遇に反映させますと言ったら、物理行で計測すると決めたうえで、おそろしくたくさん改行をして、ずば抜けた生産性をたたき出したプログラマがいた」と、私は講義で聞きました(そのトンチ自体は称賛ですが)。

 皆さんが使用しているプログラム言語においての読点「。」は何ですか? 次回に備えて決めておきましょう。

補足4

 PSPで規模の単位としてLOCの使用を推奨している理由についての詳細は文末の参考文献を紐といてください。

補足5

 例題の1-3の答え(の例)。

例題1: 物理 1行、論理 2行
例題2: 物理 6行、論理 2行
例題3: 物理 2行、論理 2行
補足6: コメントと空白行の扱い

 本来コメントと空白行の扱いは、任意です。例えば保守のしやすさ、管理のしやすさなどの観点から、開発方法や再利用元などの参照情報を、大量のコメントとして残す方もおられます。その場合はコメントも含めて規模として計上した方が、開発工数との相関は強いかもしれません。

まとめ

 それでは今回のまとめです。

  • 計測の目的は、見積もりのためのデータを作ることにある
  • 時間・欠陥・規模を測ることで、プロセスを測っている
  • 規模を測るには定義が必要
  • LOCを使用する(開発労力に相関するから)
  • 物理行と論理行とがある
  • ミナミカワが作る例題にはなぜか肉が出てくる

 それでは今日はここまで。次回またお目にかかれますよう。

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

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
パーソナルソフトウェアプロセス(PSP)入門連載記事一覧
この記事の著者

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

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

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

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

この記事をシェア

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

イベント

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

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

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

メールバックナンバー