保守請負時を対象とした
労力見積のためのメトリクスの提案
早瀬康裕† 松下誠† 楠本真二† 井上克郎†
小林健一‡ 吉野利明‡
†大阪大学大学院情報科学研究科
‡(株)富士通研究所
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
1
背景

ソフトウェア保守作業のコスト見積りは困難
 熟練者の経験
 新規開発用の手法を流用
 正確な見積りを算出したい

保守請負サービス
 ソフトウェアプロダクトの保守を代行
 コスト増大や障害の発生により保守が困難になったプロダクトが対象
 契約前に見積りを行う必要

問題
 正確な見積りができていない
 限られた情報で見積りを行なわなければならない
 保守請負サービス契約前など
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
2
研究の目的

保守コストを見積るためのメトリクスを提案
 保守ポイント:
個々の保守作業の見積りに適したメトリクス
 一般化保守ポイント: 保守請負前の見積りに適したメトリクス

指針
 ソフトウェア保守作業をモデル化
作業プロセス
プロダクト
 モデル上で保守作業量を反映する値を計算
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
3
プロセスのモデル化
保守プロセス
プロダクト
変更要求
s1
システム理解
•変更箇所特定
•テスト範囲特定
s2
s3
変更
テスト
変更された
プロダクト
一般的な作業工程を対象としてモデル化を行う
 保守プロセスへの入力は、プロダクトと変更要求である
 保守プロセスは以下の3つのステップから成る
 システム理解
 影響範囲の特定
変更
 テスト
 保守プロセスの出力は、変更されたプロダクトである

Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
4
プロダクトのモデル化

プロダクトを有向グラフとしてモデル化する
 頂点はプロダクトを構成する様々な種類のエンティティ
 メソッド、クラス、パッケージ、マニュアル、設計文書,中間生成物など
 頂点は複雑さを表す値を持つ

有向辺は、エンティティ間の影響波及関係
 辺の基のエンティティを変更したときに、辺の先のエンティティに何らかの作業が必要に
なる関係
 辺は影響波及の強さを表す重みを持つ
エンティティ1
重み 0.3
複雑さ 2
エンティティ3
複雑さ 4
エンティティ2
重み 0.5
複雑さ 2
重み 0.7
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
5
プロダクトモデルの詳細

エンティティの複雑さ
 そのエンティティだけを変更するときの作業量を反映する値
 複雑さメトリクスを用いる
 McCabe の循環的複雑度
 CK メトリクス
 Halstead の複雑度
 行数

影響波及の強さ
0
から 1 までの値 (1に近いほど影響波及が強いことを表す)
 計算方法の例
c : モジュール間の呼び出しの数
d : モジュール間でデータフローを起こす変数の数
1-αcβd (ただし、αとβは 0 より大きく 1 より小さい定数)
 プロダクトが大規模であるといった理由により計算が困難な場合
定数を用いる
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
6
保守ポイント
保守作業のコスト
 主に、変更されるエンティティとその影響範囲に依存
「保守ポイント」を提案
 個々の保守作業のコストを見積るためのメトリクス
 プロダクトとプロセスのモデルを利用
 プロダクトモデル上で影響範囲の複雑さを計算する

以下、簡単化のため Cs3 のみを対象として議論する
保守工数の見積
プロダクトモデル
Gp
変更要求
R
Cs1
システム理解
にかかるコスト
Cs2
変更に
かかるコスト
Cs3
テストに
かかるコスト
保守ポイント
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
7
保守ポイントの計算方法

プロダクトモデル上での影響範囲
 プロダクトモデル上での経路の重み
0から1までの値
例: 経路に含まれる辺の重みをすべて掛け合わせた値
 最大の重みが、影響の強さを表す

保守ポイントの計算式
cx(r) : エンティティ r の複雑さ
w (Gp, R, r’) : R に含まれるいずれかの頂点から r’ に到達する経路の
重み (0から1までの値を取る)
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
8
保守ポイントの計算例
下のプロダクトモデルで、エンティティ 1 を変更するときの保守
ポイントは、以下のようになる。
 cx(E1) + 0.2*cx(E2) + (0.5*0.7)*cx(E3)
= 2 + 0.5*2 + 0.35*4
= 4.4

エンティティ1
重み 0.3
複雑さ 2
エンティティ3
複雑さ 4
エンティティ2
重み 0.5
複雑さ 2
重み 0.7
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
9
一般化保守ポイントの提案
保守請負前には、具体的にどういった案件が発生するか分
からない
 平均的に保守作業が発生すると仮定して計算

n: 頂点数
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
10
一般化保守ポイントの計算例
下のプロダクトモデルの一般化保守ポイントは以下のように
なる
 (Cs3(Gp,{E1})+Cs3(Gp,{E2})+Cs3(Gp,{E3}))/3
= (4.4 + 4.8 + 4)/3
= 4.4

エンティティ1
重み 0.3
複雑さ 2
エンティティ3
複雑さ 4
エンティティ2
重み 0.5
複雑さ 2
重み 0.7
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
11
実験
保守ポイントの値が作業量を表すかを確認するために
実験を行なった

酒屋問題†をJavaを用いて実装
8

クラス、 25 メソッド、 309 行
被験者 6 人に保守作業を行なわせ、作業時間を計測した
 作業内容
欠陥修正 2 件
機能追加 3 件
 作業時間
1時間43分 ~ 5時間2分
†山崎利治,
“共通問題によるプログラム設計技法解説”, 情処学誌, Vol.25, No.9, p.934, 1984.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
12
実験結果 (全体)

相関係数を計算
 全ての作業にかかった時間のうち、各作業に費した時間の割合
 メトリクス

(保守ポイント、変更されたメソッドの複雑度の和)
保守ポイントの計算方法
 エンティティの単位:
メソッドまたはフィールド変数
 辺の重み: 定数 0.5
 頂点の複雑さ: McCabe と LOC を使用
メソッドの
保守ポイント 保守ポイント
(LOC)
McCabe和
(McCabe)
相関 0.678
0.617
0.640
P値 3.86E-05
2.83E-04
1.40E-04
メソッドの
LOC和
0.594
5.32E-04
→保守ポイントの方が、単純な和よりも作業コストを適切に表している
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
13
実験結果 (詳細)

機能追加のみの相関
保守ポイント
(McCabe)
相関 0.788
P値 1.04E-04

保守ポイント
(LOC)
0.719
7.76E-04
メソッドの
McCabe和
0.767
2.05E-04
メソッドの
LOC和
0.714
8.68E-04
欠陥修正のみの相関
メソッドの
保守ポイント 保守ポイント
(LOC)
McCabe和
(McCabe)
相関 -0.0748
-0.260
-0.180
P値 0.817
0.413
0.575
メソッドの
LOC和
-0.326
0.301
→相関が見られない。人によるばらつきが大き過ぎた?
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
14
修正作業での
保守ポイントと作業時間割合の散布図
50
45
40
35
30
25
系列1
20
15
10
5
0
0
0.05
0.1
0.15
0.2
0.25
0.3
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
15
まとめ
保守コスト見積りのためのメトリクスを提案
 対象
 個々の保守作業のコスト見積り
 保守請負の契約前に行うコスト見積り
保守プロセスと、対象プロダクトをモデル化
 プロダクトモデル上での影響範囲を用いて計算

メトリクスと労力との相関を評価
 メトリクス値の単純な和よりも強い相関を持つ
 修正作業では有意な相関が見られなかった
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
16
今後の課題

実験データの考察
 修正作業で相関が見られなかったこと
他のメトリクスとの比較
 より大規模な環境での実験

Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
17
ダウンロード

保守請負時を対象とした 労力見積のためのメトリクスの提案