Disciplined Software Engineering Lecture #4

Disciplined Software
Engineering
Lecture #4
Software Engineering Institute
Carnegie Mellon University
Pittsburgh, PA 15213
Sponsored by the U.S. Department of Defense
Copyright © 1994 Carnegie Mellon University1
講義#4 概要 - ソフトウエア規模の見積り- 2
規模見積りの概要
PROBE見積り法
オブジェクトデータのカテゴリ分け
回帰分析法
プロセスの追加
Copyright © 1994 Carnegie Mellon University2
規模見積りの概要
製品への要求
規模の履歴データを入手
概念設計を作成
製品を部品に分ける
その部品に似ている部品が
データベースの中にあるか?
新しい部品にもっとも似ている
データベース部品を選択する
その製品の部品が
適切な規模になるまで
反復する
全ての部品に
対して反復する
新しい部品の
相対的規模を見積もる
新しい部品の見積り
規模を合計する
製品全体の
規模を見積もる
規模の見積り値
Copyright © 1994 Carnegie Mellon University3
PROBE見積もり法
PROBEはProxy-Based Estimatingの略語
PROBEとはProxyに基づく見積もり
Proxyとしてオブジェクトを選び、それに準拠する
Copyright © 1994 Carnegie Mellon University4
PROBE 見積り法
スタート
概念設計
オブジェクトを見極める
メソッド数
オブジェクト
の型゚
相対的
規模
再利用
カテゴリ
追加と修正のLOCの計算
プログラム規模の見積り
予測区間の計算
見積り値
Copyright © 1994 Carnegie Mellon University5
PROBE手法の説明
以降の図表はPROBE手法の説明である。
説明中、付録Cの帳票C39(p.432)を参照する。
例題は第5章の表5.8(p.81)からとられている。
Copyright © 1994 Carnegie Mellon University6
情報システムプロジェクト管理資料
本資料
ページ1
規模見積もり例
(教科書 P.81-83)
ページ2~4 規模見積もりテンプレートC39
(教科書 P.432-434)
Copyright © 1994 Carnegie Mellon University7
C39 規模見積もりテンプレート
べースプログラムLOC
見積もり
実績
べース規模(B)
削除LOC(D)
修正LOC(M)
オブジェクトLOC
べースへの追加 型 メソッド 相対規模 LOC
LOC
~
べース追加(BA)>>>>>>>>>>>>>>>(
)
(
)
新規オブジェクト
型 メソツド 相対規模 LOC(将来再利用)
~
新規オブジ(NO)合計 >>>>>>>>>>>>>(
)
(
)
再利用オブジェクト
~
再利用合計(R)>>>>>>>>>>>>>>>>>>(
)
(
)
Copyright © 1994 Carnegie Mellon University8
C39
続
見積もりオブジェクトLOC(E) E=BA+NO+M
回帰パラメタ β0(規模と時間)
回帰パラメタ β1(同上)
見積もり新規・変更LOC(N) N=β0+β1*E
見積もり総LOC(T)
T=N+B-D-M+R
見積もり将来の再利用合計
見積もり総開発時間 時間=β0+β1*?
予測範囲
予測区間上限 UPI=N+範囲
予測区間下限 LPI=Nー範囲
Copyright © 1994 Carnegie Mellon University9
レポート提出先:K’sLIfeと3階松本レポ
ート受箱の両方、締切:5.15
演習プログラム
(n個のデータを読み、その平均値を求め表示する。デー
タは保持)
について、 付表C39規模見積テンプレートに沿って
1.規模の見積総LOC(T)を出せ。
2.見積もり開発総時間を出せ。
3.予測範囲、UPI、LPIを出せ。
そして表5.8の見積値を完成せよ。ただし、次を仮定する:
・ 回帰パラメータβ0は62 、β1は1.3とする。
・予測区間の%は90とする。
開発後、実績値を記入し、C39テンプレートを提出せよ。
Copyright © 1994 Carnegie Mellon University10
演習の要点
1.規模見積
プロキシを使用して本命値を見積もる。
今回レポの場合、プロキシはオブジェクト規模(E)
本命値はプログラム規模(NやT)
線形回帰でEからNを求める。
2.時間見積
同様に線形回帰でプロキシEから“時間”を求める。
3.実績と比較
→反省→PSP向上→自己能力アップ
Copyright © 1994 Carnegie Mellon University11
概念設計
概念設計は以下のために必要:
•要求を製品に関連づけるため
•望みどおりの機能を実現する(製品)要素を定義す
るため
•作成するものの規模を見積もるため
設計の見当がついていれば、概念設計は迅
速にできる。
設計が分かっていないなら、見積りをするた
めの情報はまだ不十分である。
Copyright © 1994 Carnegie Mellon University12
オブジェクトの識別 -1
1.アプリケーションのエンティティを選び、それをオブジェクトとす
る。
2.各オブジェクトが、メソッドをいくつ含むことになりそうか
を判断する。
3.オブジェクトの型を決定する。 即ち、入出力、論理演算、
データ操作、算術演算、ファイル処理、制御、初期設定、終
了設定など
4.各オブジェクトの相対的な規模を判断する。即ち
非常に小さい (VS), 小さい (S), 中くらい(M), 大きい (L),
非常に大きい (VL).
Copyright © 1994 Carnegie Mellon University13
オブジェクトの識別 - 2
5.オブジェクトの履歴データから、各オブジェクトのLOC/メ
ソッドを決定する(→第35コマ)
6.オブジェクトの見積りLOCを求めるために、メソッドの
数を乗ずる。
7.どのオブジェクトを再利用ライブラリーに登録するかを判
断し “将来の再利用”と注記する。
Copyright © 1994 Carnegie Mellon University14
オブジェクトの識別 - 3
オブジェクトが既存の型に適合しないとき、そのオブ
ジェクトは複数型の合成物かも知れない。
•それらが十分に詳細化されていることを確認する。
•要素的なオブジェクトでないオブジェクト(複合的オ
ブジェクト)を詳細化する。
新しいオブジェクトの型に注目しておく。
Copyright © 1994 Carnegie Mellon University15
オブジェクトの識別 - 例 1
表 5.8から, 3 つの新しいオブジェクトが識別される。
メソッドの数、相対的規模、およびLOCは次の通りで
ある。
新しいオブジェクト
Matrix
Linear System
Linked List
型
メソッド 相対規模 LOC
データ
13
M
115
計算
8
L
197
データ
3
L
49*
Copyright © 1994 Carnegie Mellon University16
オブジェクトの識別 - 例 2
2 つの再利用オブジェクトも表 5.8 に示されている。
再利用ライブラリーに登録されるべき新しいオブジェク
トは、Linked Listのように*印で識別される。
無修正再利用オブジェクトは
Linked List
73
Data Entry
96
Linked Listは既存の 73 LOC のオブジェクトに、49
LOCのメソッドを後で追加することになる。
Copyright © 1994 Carnegie Mellon University17
プログラム規模の見積り - 1
プログラム全体の規模は以下に基づく:
• ① 新規開発コード (回帰法を使って調整)
• ② ライブラリーからの再利用コード
• ③ 削除部分を引いた以前のバージョンからのベースコード
新規開発コードは次の3つで構成される:
• ①.1 ベースへの追加 (BA) - ベースに追加されるコード
• ①.2 新規オブジェクト(NO) - 新規開発されるオブジェクトのコード
• ①.3 修正コード(M) - ベースコードのうち変更する部分
Copyright © 1994 Carnegie Mellon University18
プログラム規模の見積り - 2
新規開発コードから、新規および変更のLOC(N)を計算
する
•BA+NO+M
•新規および変更のLOC を求めるのに回帰分析を使う
新規および変更のLOC
  0  1 * (BA  NO  M )
yk   0   1 * x k
回帰パラメータは、新規開発(オブジェクト)LOCの見積りと
新規および変更のLOCの実績についての履歴データか
ら計算される。
Copyright © 1994 Carnegie Mellon University19
プログラム規模の見積り - 3
再利用ライブラリから使われたコードは、カウントされ、
LOC規模全体の見積り値に含まれるべきである
ベースコードは以下から構成される
•以前のバージョンからのLOC
•削除コードを引く
•修正コードを引く (そうしないと2回カウントされること
になる)
Copyright © 1994 Carnegie Mellon University20
見積り値を完了させる
完了した見積り値は以下から構成される:
•回帰パラメータを使って計算された、新規および変更
のLOCの見積り値
•新規および変更のLOCに対する 70% および 90%
の上方予測区間 (UPI) および下方予測区間 (LPI)
•ベース、再利用、削除および修正のコードを考慮した
合計LOC
•再利用ライブラリに追加される、将来の再利用用の
計画LOC
Copyright © 1994 Carnegie Mellon University21
見積り値を完了させた例 - 1
ベース プログラム (B)
695 LOC
削除 (D)
0 LOC
修正 (M)
5 LOC
ベースへの追加 (BA)
0 LOC
新規オブジェクト: NO = 115+197+49 = 361 LOC
再利用プログラム
169 LOC
Copyright © 1994 Carnegie Mellon University22
見積り値を完了させた例 - 2
回帰パラメータを使って、新規および変更のLOC (N)を計算する:
新規および変更のLOC
  0  1 * (BA  NO  M )
追加コード: BA + NO +M = 366 LOC
新規および変更: N = 62 + 366*1.3 = 538 LOC(注参照)
合計: T = 538 + 695 - 5 + 169 = 1397 LOC
注ーーβ0、β1は式で計算するが、ここでは、簡略的に次の通りとする:
β1=1.0+30%(完成品はLOC計画値より通常大である事実を反映)
β0=63(過少見積もりの偏りを補正した値)
Copyright © 1994 Carnegie Mellon University23
規模を見積もるために必要な項目
タイプ別に分割された、オブジェクトについての履歴
データ
各オブジェクトタイプの相対規模に対する見積り
要因
以下の回帰パラメータを使って新規および変更の
LOCを計算する:
•ベースへの追加LOC(BA)
•オブジェクトLOCの見積り値(NO)
•修正LOC(M)
Copyright © 1994 Carnegie Mellon University24
オブジェクトについての履歴データ
オブジェクト規模は非常に変動する
•言語に依存して
•設計形態の影響を受ける
•メソッド数で正規化すると良い
基本的なタイプを選ぶ
•論理、制御
•入出力、ファイル、表示
•データ、テキスト処理、計算
•設定、エラー処理
Copyright © 1994 Carnegie Mellon University25
オブジェクトに対する見積り要因
新規オブジェクトの規模を判断するのに役立つように、
各型の規模範囲を求める
この規模範囲を計算するために以下を行う
•平均を求める
•標準偏差を求める
•非常に小さい:
VS = 平均 - 2*標準偏差
•小さい:
S =平均 - 標準偏差
•中くらい:
M = 平均
•大きい:
L = 平均 + 標準偏差
•非常に大きい:
VL = 平均 + 2*標準偏差
Copyright © 1994 Carnegie Mellon University26
規模範囲を伴った正規分布
M
S
VS
L
VL
Copyright © 1994 Carnegie Mellon University27
対数-正規分布
この規模範囲は、オブジェクトデータが正規分布すると仮
定している
もしデータが対数-正規分布していたら、規模範囲の
計算をする前に、データの対数を取る
そして、対数データを使って規模範囲を計算した後、
逆対数によりLOCの値を求める
Copyright © 1994 Carnegie Mellon University28
対数 - 正規分布
Copyright © 1994 Carnegie Mellon University29
見積りの要因 - 1
あるオブジェクトのタイプについて、次のデータがあると
仮定する:
•1 オブジェクト, 3 メソッドで, 合計 39 LOC
•1 オブジェクト, 5 メソッドで, 合計 127 LOC
•1 オブジェクト, 2 メソッドで, 合計 64 LOC
•1 オブジェクト, 3 メソッドで, 合計 28 LOC
•1 オブジェクト, 1 メソッドで, 23 LOC
•1 オブジェクト, 2 メソッドで, 合計 44 LOC
メソッド当たりの LOC はそれぞれ次の通りである:
13, 25.4, 32, 9.333, 23, 22
Copyright © 1994 Carnegie Mellon University30
見積りの要因 - 2
このデータの対数値は次の通りである:
•2.565, 3.235, 3.466, 2.234, 3.135, 3.091
•平均は 2.954
•標準偏差は 0.421
従って、規模範囲の対数値は次の通りである:
•非常に大きい VL: 2.95 + 2*0.42 = 3.79
•大きい L: 2.95 + 0.42 = 3.37
•中くらい M: 2.95
•小さい S: 2.95 - 0.42 = 2.53
•非常に小さい VS: 2.95 - 2*0.42 = 2.11
Copyright © 1994 Carnegie Mellon University31
見積りの要因 - 3
規模範囲の対数値から、逆対数によって規模範囲の
LOC が得られる
•非常に大きい VL: exp(3.79) = 44.3
•大きい L: exp(3.37) = 29.1
•中くらい M: exp(2.95) = 19.1
•小さい S: exp(2.53) = 12.6
•非常に小さい VS: exp(2.11) = 8.3
オブジェクトの全てのタイプについて、この計算を繰り
返す
Copyright © 1994 Carnegie Mellon University32
C++ オブジェクトの規模範囲(p.78)
メソッド当たりのLOC
VS
S
M
L
VL
計算
2.34
5.13
11.25
24.66
54.04
データ
2.60
4.79
8.84
16.31
30.09
入出力
9.01
12.06
16.15
21.62
28.93
論理
7.55
10.98
15.98
23.25
33.83
設定
3.88
5.04
6.56
8.53
11.09
テキスト
3.75
8.00
17.07
36.41
77.66
タイプ
Copyright © 1994 Carnegie Mellon University33
回帰パラメータ
オブジェクト LOC の見積り値 (x) と、新規および変更
の LOC の実績値 (y) を使う:
n
1 
x y
i
i
x
2
i1
n
i 1
i
 n xav g y av g
 n(xav g )
2
 0  yav g  1 x av g
Copyright © 1994 Carnegie Mellon University34
見積もりの良さを評価
t分布を使って予測区間を計算
区間:見積もり値の周りの範囲を表す
(プログラムの実際規模はその範囲に入る)
範囲=t(α/2、n-2)σ*root(1+1/n+(xk-x
avg)2/Σ(xi-xavg)2)
式(r.1)
この計算の仕方は後述
α/2:予測区間のパーセント(例えば70、90%)
N-2:自由度
予測区間:プログラムLOC見積値-範囲から
プログラムLOC見積値+範囲まで
Copyright © 1994 Carnegie Mellon University35
予測区間 - 1
予測区間は、実績値がそうなりそうな範囲を見積り値
の周り(上限と下限で)で示す
•90% 予測区間は、見積り回数 90%に対する実績値
はそこに入るであろう範囲を与える
•予測(forecast)ではなく、期待(expectation)に
過ぎない
•見積りが、履歴データにある見積りと同様に行われ
るときのみ当てはまる
予測区間は、回帰パラメータ(factors)を計算するの
に使ったのと同じデータで計算する
Copyright © 1994 Carnegie Mellon University36
予測区間 - 2
下方予測区間 (LPI) と上方予測区間 (UPI) は、規模
見積り値と範囲から次のように計算される
•LPI = 規模見積り値 - 範囲
•UPI =規模見積り値 + 範囲
1
範囲  t (a / 2, n  2 )s 1  
n
(x  x )
(x  x )
2
k
avg
n
i 1
2
i
avg
Copyright © 1994 Carnegie Mellon University37
範囲の計算(教科書p.342と310)
1)次の t 分布を用いる
•両側分布 (α/ 2 )
•自由度が n-2 (ただし,nはデータ個数)
t値はt分布表(p.310)を使って求める。確率は70%に
対して0.85、90%に対して0.95を選ぶ。90%なら付表
A2からt=1.860を得る。
2)σはデータからの回帰線の標準偏差(分散の平方根
)である
s
n
1
2
(yi   0  1x i )

n  2 i1
Copyright © 1994 Carnegie Mellon University38
範囲(続)
計算例
t(α/2,n-2)=1.860
付表A2のt分布表を使用、p(α)=0.95を参照し、デー
タ個数10ゆえ自由度n-2=8の交点に示されている
1.860を得る
σ=197.896
したがって
範囲=1.860*197.896*平方根(1+1/10+(386382.8)2 /1.074,925.60)=386.05
Copyright © 1994 Carnegie Mellon University39
t 分布
t 分布は
•正規分布と類似している
•分布のすその確率が正規分布より高い
•限られたデータから統計的パラメータを見積る際に
使われる
t 分布表は
•典型的には片側分布の範囲の確率を与える
•予測区間の計算には両側分布の値を使う
Copyright © 1994 Carnegie Mellon University40
片側 t 分布
1-p
X
Copyright © 1994 Carnegie Mellon University41
両側 t 分布
2p-1
-X
X
Copyright © 1994 Carnegie Mellon University42
t 分布の値
統計表では、負の無限大から x までの確率 p を与える
片側分布のすその確率(求めたい値)は、1-p で求める
両側分布の(両すその)確率は、1 - 2*(1 - p) = 2p - 1 で
求める
•70% の予測区間に対しては、p = 85% の値を見る
•90%の予測区間に対しては、 p = 95% の値を見る
Copyright © 1994 Carnegie Mellon University43
予測区間の例
履歴データから範囲を計算する
範囲 = 235 LOC
上方予測区間 (UPI)
UPI = N + 範囲 = 538 + 235 = 773 LOC
下方予測区間 (LPI)
LPI = N - 範囲 = 538 - 235 = 303 LOC
Copyright © 1994 Carnegie Mellon University44
PSP1 での追加項目
PROBE スクリプト - 既に述べた
テスト報告書 :
•テスト計画と結果を報告すること
•後でリグレッション テスト(縮退テスト)に役立つ
プロジェクト計画概要(付表C36, p.426)
•LOC/時間 - 計画、実績、累積 - 見積り値の
合理性をチェックする
•規模見積りの計算
•実績規模の計算
Copyright © 1994 Carnegie Mellon University45
規模見積りの計算
規模見積り値を完了させるとき、次のデータで始める
•新規および変更の LOC (N): 見積り値
•修正 LOC (M):
見積り値
•ベース LOC (B): 測定値
•削除 LOC (D):
見積り値
•再利用 LOC (R): 測定値または見積り値
そして、次の計算を行う
•追加 LOC (A):
N-M
•合計 LOC (T):
N+B-M-D+R (B+追加+R-D)
Copyright © 1994 Carnegie Mellon University46
実績規模の計算
プログラムの実績規模を決定するとき、次のデータで
始める
•合計 LOC (T):
測定値
•ベース LOC (B): 測定値
•削除 LOC (D):
カウント値
•再利用 LOC (R): 測定値またはカウント値
•修正 LOC (M):
カウント値
そして、次の計算を行う
•追加 LOC (A):
•新規および変更の LOC (N):
T-B+D-R
A+M
Copyright © 1994 Carnegie Mellon University47
演習課題 #4
PSP1 を用いて、N 組のデータに対する線形回帰パ
ラメータ(factors)を計算するプログラム 4A を作成
しなさい
プログラム 1A から 3A の自分のデータを使って、
規模およびリソースの見積りを行い,計画を作成し
なさい
プログラム 4A を使って、プログラム 1A から 4A に
対する回帰パラメータ(factors)を計算しなさい
付録 C と D に記述してあるプログラム、演習課題、
プロセス記述に従いなさい
Copyright © 1994 Carnegie Mellon University48
講義 4 のまとめ
1 - PROBE 手法は、ソフトウェアの規模見積り
値を求める構造化された方法である
2 - PROBE 手法は、 個人の規模データを使う
3 - PROBE 手法は、 プログラムの実績規模が
ほとんどの場合その中に入ると思われる、
統計的に根拠のある範囲を与える
Copyright © 1994 Carnegie Mellon University49
回帰パラメータ
オブジェクト LOC の見積り値 (x) と、新規および変更
の LOC の実績値 (y) を使う:
n
1 
x y
i
i
x
2
i1
n
i 1
i
 n xav g y av g
 n(xav g )
2
 0  yav g  1 x av g
Copyright © 1994 Carnegie Mellon University50
予測区間 - 2
下方予測区間 (LPI) と上方予測区間 (UPI) は、規模
見積り値と範囲から次のように計算される
•LPI = 規模見積り値 - 範囲
•UPI =規模見積り値 + 範囲
1
範囲  t (a / 2, n  2 )s 1  
n
(x  x )
(x  x )
2
k
avg
n
i 1
2
i
avg
Copyright © 1994 Carnegie Mellon University51
予測区間 - 3
次の t 分布を用いる
•両側分布 (α/ 2 )
•自由度が n-2
σは、データからの回帰線の標準偏差である
s
n
1
2
(yi   0  1x i )

n  2 i1
Copyright © 1994 Carnegie Mellon University52
PSP1 での追加項目
PROBE スクリプト - 既に述べた
テスト報告書 :
•テスト計画と結果を報告すること
•後でリグレッション テスト(縮退テスト)に役立つ
プロジェクト計画概要(付表C36, p.426)
•LOC/時間 - 計画、実績、累積 - 見積り値の
合理性をチェックする
•規模見積りの計算
•実績規模の計算
Copyright © 1994 Carnegie Mellon University53
規模見積りの計算
規模見積り値を完了させるとき、次のデータで始める
•新規および変更の LOC (N): 見積り値
•修正 LOC (M):
見積り値
•ベース LOC (B): 測定値
•削除 LOC (D):
見積り値
•再利用 LOC (R): 測定値または見積り値
そして、次の計算を行う
•追加 LOC (A):
N-M
•合計 LOC (T):
N+B-M-D+R (B+追加+R-D)
Copyright © 1994 Carnegie Mellon University54
実績規模の計算
プログラムの実績規模を決定するとき、次のデータで
始める
•合計 LOC (T):
測定値
•ベース LOC (B): 測定値
•削除 LOC (D):
カウント値
•再利用 LOC (R): 測定値またはカウント値
•修正 LOC (M):
カウント値
そして、次の計算を行う
•追加 LOC (A):
•新規および変更の LOC (N):
T-B+D-R
A+M
Copyright © 1994 Carnegie Mellon University55
演習課題 #4
PSP1 を用いて、N 組のデータに対する線形回帰パ
ラメータ(factors)を計算するプログラム 4A を作成
しなさい
プログラム 1A から 3A の自分のデータを使って、
規模およびリソースの見積りを行い,計画を作成し
なさい
プログラム 4A を使って、プログラム 1A から 4A に
対する回帰パラメータ(factors)を計算しなさい
付録 C と D に記述してあるプログラム、演習課題、
プロセス記述に従いなさい
Copyright © 1994 Carnegie Mellon University56
講義 4 のまとめ
1 - PROBE 手法は、ソフトウェアの規模見積り
値を求める構造化された方法である
2 - PROBE 手法は、 個人の規模データを使う
3 - PROBE 手法は、 プログラムの実績規模が
ほとんどの場合その中に入ると思われる、
統計的に根拠のある範囲を与える
Copyright © 1994 Carnegie Mellon University57