論 文
影響波及解析を利用した保守作業の労力見積りに用いるメトリクスの提案
早瀬 康裕†

松下誠†

小林 健一††

吉野 利明††

楠本 真二†

井上 克郎†

A metric for estimating maintenance eﬀort based on change impact analysis
Yasuhiro HAYASE† , Makoto MATSUSHITA† , Shinji KUSUMOTO† , Katsuro INOUE† ,Kenichi KOBAYASHI†† , and Toshiaki YOSHINO††

あらまし ソフトウェア保守の労力を見積る際には，客観的な基準を用いずに，熟練者が経験に基づいて見積りを行うことが多かった．本稿では，ソースコードを対象とした影響波及解析手法を用いて，保守作業の労力を見積るメトリクスを提案する．メトリクスの値は，保守作業によって影響を受ける部分のソースコードの複雑度に重みをつけて足し合わせることで求める．実際に保守作業を行う実験によって提案したメトリクスを評価した
結果，提案したメトリクスは，既存のメトリクスに比べて，労力と高い相関を持つことが確認できた．
キーワード

メトリクス，労力見積り，保守，影響波及解析

まず，既存のプロダクト P に対し，環境の変化や機能

1. は じ め に追加の要求，障害の発生により，変更要求 R が発生すソフトウェア保守とは，文献 [1] では， “納入後，（ソる．次に，その変更を行った場合の影響を調査し，実フトウェア）プロダクトに対して加えられる，欠陥修際に変更し，テストを行って変更によって欠陥が作り

正，性能または他の性質改善，変更された環境に対すこまれていないことを確認した後に，プロダクト P 0

るプロダクトの適応のための改訂” と定義されている．

をリリースする．

そして，保守作業を，修正保守（発見された欠陥を取現在，保守作業の見積りは，熟練者の経験に基いてり除く），適応保守（環境が変化した際にプロダクト行われたり，新規開発の見積りと同様の手法が用いらを利用可能に保つ），完全化保守（性能または保守性れたりすることが多い．しかし，熟練者による見積りを改善する），予防保守（潜在的な欠陥が顕在化するは，見積りを行う人によって結果が異なるという問題前に対処する）のいずれかに分類している．一般に，がある．また，新規開発の見積りは要求仕様からファ

長期間にわたって使用されるソフトウェアでは，総所

ンクションポイント [5] などの機能量などを計算するこ

有コストのうち保守コストが大きな割合を占めることとで作業量を予測するが，保守作業は要求仕様から影が知られている [2] [3]．そのため，保守作業に必要な響を受けるだけではなく，既存のプロダクトの品質や労力を早い段階で見積もることが求められている．

複雑さなどからも大きな影響を受けるため，新規開発

一般に，保守作業は図 1 のような手順で行われる [4]．

向けの見積り手法をそのまま適用するのも適切でない．

†

る計算手法について，Jørgensen [6] は，実際の保守作

見積りに用いるべきメトリクス値と，見積りに用い大阪大学大学院情報科学研究科コンピュータサイエンス専攻〒 560–8531 大阪府豊中市待兼山町 1–3
Graduate School of Information Science and Technology,
Osaka University, 1–3, Machikaneyama-cho, Toyonaka-shi,††

業で様々なメトリクス値を収集し，見積りに有効なメトリクスと見積り手法を調べた結果，変更行数と工数

560–8531, Japanとの相関が高いことを明らかにした．Sneed [7] は，保（株）富士通研究所 IT コア研究所 ソフトウェアイノベーション研
究部

守による影響範囲の大きさを様々な要因で補正して，

Fujitsu Laboratories Limited

工数を見積る手法を提案した．Fioravanti ら [8] は，

電子情報通信学会論文誌 X Vol. Jxx–X No. xx pp. 1–10 xxxx 年 xx 月

1

電子情報通信学会論文誌 xxxx/xx Vol. Jxx–X No. xx

適応保守の見積りに有用なメトリクスを提案し，実際に見積りを行った．これらの手法は，保守作業の早い段階で得ることができない変更の具体的な内容を用いたり，適用対象が適応保守に限られたりする問題があった．Ramanujan ら [9] 数十行から百行程度の小規

Maintenance Process

Product
P•Comprehension•Modification•Testing

RequestR模なプログラムを対象とした保守作業にかかる時間と，様々な測定値との関係について調査した．その結果，

Modified
Product
P

Fig. 1

図 1 保守作業の概念
Overview of maintenance

被験者の経験，プログラムの規模と複雑度，納期の短さと作業時間には相関があることが分かったが，被験者の知識が少なくプログラムの規模が小さい場合には複雑度と作業時間には有意な相関が示されなかった．

Module m1

そこで我々は，ソースコードと変更要求のみから計

eff(m1)=10算できるメトリクスを提案する．ソースコードと変更

Module m2
s1
w(s1)=0.5

eff(m2)=4

Module m3

要求は保守作業の早い段階で得られる情報であるため，

eff(m3)=5

様々な保守作業の見積りにメトリクスを使用すること

s2
w(s2)=0.5

s3
w(s3)=0.6ができる．提案するメトリクスは，プロダクトを構成する各モジュールの変更に必要な労力と，モジュール

Module m4間の関係の複雑度を反映している．メトリクスを計算

eff(m4)=4

するために，プロダクトを有向グラフを用いてモデル化する．

Fig. 2s4
w(s4)=0.1

図 2 プロダクトモデルの例
Example of the product model

本メトリクスを評価するために，ある一定の条件の下で実際に保守作業を行う実験を行い，提案するメト
リクスや既存のメトリクスと労力との関係を調べた．
その結果，提案するメトリクスの有効性を確認した．
以降， 2. 章で，保守対象のプロダクトをモデル化
し，メトリクスとその計算方法について説明する．3.
章では提案したメトリクスの評価実験について述べる．4. 章で実験やメトリクスの計算方法について議論
し，最後に， 5. 章でまとめと今後の課題について説明する．

2. 保守ポイント
本章では，プロダクトと変更要求をモデル化し，保守労力の見積りに用いることのできるメトリクス「保守ポイント」を定義する．

2. 1 プロダクトモデル
一般に，保守対象のプロダクトは複数のモジュール

各有向辺 s は，影響の強さを表す重み w(s) (0 以上

1 以下であり，大きな値ほど強い影響を表す) を持つ．
また，各頂点 m もモジュール単体の保守作業の労力を表す値 eﬀ(m) (0 以上) を持つ．
保守によって直接の変更作業を行う必要のあるモジュールの集合を，変更要求 R (R⊂=M ) いう．

2. 2 保守ポイントの定義
プロダクトモデル GP と変更要求 R から得た影響範囲の情報を用いて，保守作業の労力の指標「保守ポイント」を定義する．
プロダクトモデル GP 上の経路 p を構成する辺の系列を s1 , s2 , . . . , si とする．今， p の重み v(p) を次のように定義する．

から構成される．このプロダクトを，有向グラフを用いてモデル化したものをプロダクトモデル GP = (M, I)と呼ぶ．プロダクトモデルの例を 図 2 に示す． M はv(p) =iYw(sj )

j=1

モジュールの集合， I は有向辺の集合で影響波及関係を表す．モジュール m1 から m2 への有向辺は，モ

次に， m1 が変更されたときに， m2 にどの程度の作

ジュール m1 に何らかの変更作業を行なった場合に，業が発生するかを表す値である影響度 impm (m1 , m2 )モジュール m2 にも作業が発生することを表す．

を以下のように定義する．

2

論文／影響波及解析を利用した保守作業の労力見積りに用いるメトリクスの提案

impm (m1 , m2 ) =8>
1 (m1 = m2 のとき)>>>
< 0 (Q(m , m ) = φ とき)
12>max({v(p)|p ∈ Q(m1 , m2 )})>>>:(それ以外のとき)(ただし，Q(m1 , m2 ) は m1 から m2 までの全経路の集合とする．)
影響度は，そのモジュールを理解・テストしなければならない割合の期待値を表す．影響度が 1 の場合
は，保守作業でそのモジュールを完全に理解し，テス
トしなければならない．
また，変更要求 R が与えられたとき，頂点 m が受ける影響度 imp(R, m) を以下のように定める．

imp(R, m) = 1 −Y{1 − impm (r, m)}r∈R{1 − impm (r, m)} は，モジュール r を変更するとき，(3. 章) では比較的簡単に求められるものを頂点と辺にしたが， 4. 2 節で述べるように，他の選択も多数ある．

2. 3 計 算 例
図 2 のプロダクトモデル上での，保守ポイントの計算例を示す．
変更要求 R = {m1, m4} の場合を考える．モジュール m4 の変更により影響を受けるのは，モジュール m3とモジュール m2 である．モジュール m4 から m2 への経路は，経路 1: s4 と，経路 2: s3, s2 の 2 つが存在す
る．経路 1 の影響度は 0.1，経路 2 は 0.6 × 0.5 = 0.3で，経路 2 の方が大きい．同様に，モジュール m1 から影響を受けるのは m2 であり，経路 s1 の影響度は0.5 である．
よって，この場合の保守ポイントは，以下の計算で与えられる．

C(GP , {m1, m4})
= eﬀ(m1)imp({m1, m4}, m1)

モジュール m のうち理解・テストしなくてよい割合+eﬀ(m2)imp({m1, m4}, m2)を表す．上記の式は，多くのモジュールから影響を受+eﬀ(m3)imp({m1, m4}, m3)

けるほど，理解・テストしなければならない割合が増えることを表している．
今，GP = (M, I), M = {m1 , m2 , . . . , mn } に対し，保守ポイント C(GP , R) は次の式で与えられる．

C(GP , R) =n
X+eﬀ(m4)imp({m1, m4}, m4)= 10 × {1 − (1 − 1)(1 − 0)}+4 × {1 − (1 − 0.5)(1 − 0.3)}+5 × {1 − (1 − 0)(1 − 0.6)}{eﬀ(mi )imp(R, mi )}i=1

この保守ポイントは， R に対して，各モジュールの変更に必要な労力の総和を示している．ここで各モジュールの労力 eﬀ を理解，変更，テストなどの部分
作業の労力として与えれば，プロダクト全体に対する部分作業に要する労力の総和が得られる．

+4 × {1 − (1 − 0)(1 − 1)}= 19.6

3. 評 価 実 験保守ポイントと保守作業の労力の相関を調べるために実験を行った．実験では被験者があるソフトウェア

保守ポイントの値は， GP と R が明らかになったに対して実際に保守作業を行い，その作業に要した労時点，すなわち保守作業によってどのモジュールを変力と保守ポイントとの関係を分析した．本実験で実施

更するのかを決定した時点で計測可能となる．このたした保守作業は，欠陥に対する修正保守と機能追加に

め， R の決定が比較的容易である修正保守や適応保係わる完全化保守である．

守，完全化保守の見積りに用いることができよう．

被験者は，大阪大学大学院情報科学研究科の博士前

保守ポイントの値は保守作業による影響範囲内の労期課程に所属する 6 人である．保守の対象となるソフ

力を反映した値であるため，実際に見積りを行う際にトウェアや，作業内容は以下のようになっている．

は，保守作業者の生産性や設計文書の整備状態などを考慮する必要がある．

保守対象のソフトウェア
保守作業の対象として，酒屋問題 [10] の仕様に基実際のプロダクトとプロダクトモデルを対応づけるいたソフトウェアを用いた．これは，酒屋の倉庫へのには，頂点（モジュール）と辺（影響波及関係）に何商品の入庫や出庫を管理することを目的としたソフトを用いるかを決定する必要がある．本研究の評価実験

ウェアであり，コマンドラインインタフェースを持つ．
3

電子情報通信学会論文誌 xxxx/xx Vol. Jxx–X No. xx
Main.main
McCabe: 7
LOC: 31

Receptionist.Receptionist
McCabe: 1
LOC: 0Warehouse.Warehouse
McCabe: 1
LOC: 0Receptionist.requestDelivery
McCabe: 2
LOC: 5
Receptionist.tryDelivery
McCabe: 8
LOC: 25

Warehouse.countForName
McCabe: 2
LOC: 7

Receptionist.getInstance
McCabe: 1
LOC: 1

Warehouseman.getInstance
McCabe: 1
LOC: 1

StockShortage.StockShortage
McCabe: 1
LOC: 6

Warehouseman.carryContainerIn
McCabe: 1
LOC: 3

Warehouse.addContainer
McCabe: 2
LOC: 6

InstructionToWarehouse.InstructionToWarehouse
McCabe: 1
LOC: 6

Receptionist.notifyCarryContainerIn
McCabe: 4
LOC: 7

Warehouseman.treatInstruction
McCabe: 2
LOC: 7
Warehouse.removeContainer
McCabe: 1
LOC: 2

Warehouse.getContainer
McCabe: 3
LOC: 7

Warehouse.getInstance
McCabe: 1
LOC: 1
Container.Container
McCabe: 2
LOC: 6

Container$Content.Content
McCabe: 1
LOC: 4
Container.countForName
McCabe: 3
LOC: 6

Container.empty
McCabe: 3
LOC: 6
Container.emptyExceptFor
McCabe: 4
LOC: 6
Container.decreaseContent
McCabe: 5
LOC: 13
Container.addContent
McCabe: 1
LOC: 3Fig. 3図 3 作業対象のプロダクトモデル
The product model of the maintenance target

実装には Java を用い， 8 クラス，25 メソッド， 309•

E2: 倉庫を表すデータ構造の変更

行の規模である．

•

E3: 処理順序の変更•

E4: 既存のコマンドの拡張

本実験の保守作業は修正保守を含んでいるため，保守作業で取り除くための潜在的な欠陥を 2 個埋め込ん
でおいた．
課

題

被験者に対する課題の作業内容の指示は以下のように行った．欠陥修正の課題では，保守対象のソフト
ウェアへの入力と異常な出力を被験者に示し，正しい出力をするようにソフトウェアを変更するよう指示し被験者に与えた課題は，ソフトウェアに埋め込まれた．機能追加の課題では，新しい機能の要求仕様とした欠陥修正の作業 D1，D2 の 2 つと， 機能追加を行て，自然文による機能の説明と，その機能を実装した

う作業 E1 〜 E4 の 4 つの，計 6 つである．

ときの入出力の例とを与えた．

このうち，課題 E1 は保守対象のソフトウェアに慣

欠陥修正と機能追加のどちらの作業でも，どのモれさせるための練習として用いる．そのため，評価にジュールを変更するかは指示せず，被験者の判断に委用いる課題は D1, D2, E2, E3, E4 の 5 つである．

ねた．保守ポイントの計算モデルでは変更要求は外か

課題の概要は以下のようなものである．

ら与えられることとなっているが，本実験は変更する•

D1: ライブラリ使用法の誤りの修正モジュールと労力との関連を調べることが目的である•

D2: 関連するモジュールが仮定している条件がため，変更するモジュールを指示しないことは問題と矛盾している誤りの修正•
4

E1: 酒屋の倉庫の中を表示するコマンドの追加はならない．

論文／影響波及解析を利用した保守作業の労力見積りに用いるメトリクスの提案

作業順序




まず最初に，保守対象のソフトウェアに慣れるために，被験者全員が機能追加課題 E1 を行った．この作業に要した時間は実験の評価に用いない．
次に 2 件の欠陥修正の課題を行った．慣れの影響を除くため，半分の被験者は D1 を先に行い，残りの半

,
0 +4
3/
2
10 +
./
,-,
*+


 
 
 
 
 
 


分の被験者は D2 を先に行った．
最後に，E2 〜 E4 の 3 件の機能追加の課題を行っ 

課題の作業対象は，直前の課題の作業結果のソース
メトリクス値の計測
プロダクトモデルとの対応づけは以下のように















   !#"%$&!  '( %)5#67 8 ! 78 678 9;:&"7 8 ! < 5#9=>6?%@者毎にすべて異なる順序で作業を行った．
コードである．



た．欠陥修正と同様に，慣れの影響を除くため，被験














5A67 8 ! 78 678%97;:"7 8 ! < BCD=E@

図4

辺の重みを変化させたときの保守ポイントと正規化
労力との相関Fig. 4 Correlation between maintenance point andnormalized eﬀort

行った．
頂点（モジュール）: メソッド•

頂点の労力: LOC と McCabe のサイクロマ

チック数の 2 通り•

辺（影響波及関係）: メソッド間の呼出しと，フィールド変数を介したデータ依存関係•

辺の重み: 各辺同じ 0 から 1 まで 0.05 刻みの21 通りの値
図 3 に，保守対象ソフトウェアの課題 E1 を行う前の状態から作成したプロダクトモデルを示す．頂点の労力としては， LOC と McCabe のサイクロマチッ
ク数の 2 通りを計測するので，2 つを併記した．有向
辺の重みは 21 通りの場合を用いるので，表記してい
ない．



 •
                                 !  " # $  %      #    !  " # $  % & ' ' (   !    " $   
図5

辺の重みを 0.3 とした場合の保守ポイント [McCabe]と正規化労力の散布図
Fig. 5 Scatter plot between Maintenance Point [McCabe] and normalized eﬀort when the weightof the edges is 0.3

変更要求 R は，被験者が課題の内容を理解した後に直接変更する必要があると判断したメソッドの集合

化労力と呼ぶ．正規化労力は，各作業に要した時間をを用いた．

5 つの作業全体に要した時間で割った値である．

以下，サイクロマチック数を用いた保守ポイント

また，30 件の作業のうち 9 件において，平均 24.2

を，保守ポイント [McCabe] と呼び， LOC を用い

行 (標準偏差 23.8) の新しいモジュールの導入がなさた保守ポイントを，保守ポイント [LOC] と呼ぶこと

れていた．

にする．
作業時間の計測

3. 1. 1 労力と保守ポイントの相関
保守ポイントの値と正規化労力との相関と，辺の重み

被験者が作業に要した時間として，被験者に課題をとの関係を図 4 に示す．すべての辺の重さの場合にお渡してから，プログラムが正しい入出力を行うことをいて，保守ポイント [McCabe] は保守ポイント [LOC]

確認するまでの時間を用いた．

よりも高い相関を示した．保守ポイント [McCabe] と

3. 1 実 験 結 果

保守ポイント [LOC] の両方で，辺の重みが 0.3 付近で各被験者が 5 つの作業を終えるのに要した時間は，相関が最大となり，辺の重みが 0.7 以上である場合の最短で 1 時間 43 分，最長で 5 時間 2 分となり，被験相関は，辺の重み 0 のときの相関よりも小さくなった．

者毎に大きな差があった．このため，作業時間を正規

辺の重みを 1 としたときの相関はほぼ 0 であった．

化した値を労力を表す値として用いた．この値を正規相関が最大となる辺の重みが 0.3 の場合の，保守ポ
5電子情報通信学会論文誌 xxxx/xx Vol. Jxx–X No. xx

イント [McCabe] と正規化労力の散布図を 図 5 に示す．■は新規モジュールが追加されていた場合，△は

˛
˛

˛
˛

−実測値
クスの評価で用いられる相対誤差 (= ˛ 見積り値
˛．
実測値

以下 MRE と表記する) の値に有意な差があるかを調新規モジュールの追加がなかった場合のデータである．

べた．二乗誤差や相対誤差の値は正規分布とならない

新規モジュールが追加されるのは，正規化労力と保守ため，平均値の検定ではなく，ウィルコクソンの符号

ポイントの両方が大きい場合であることが分かる．直付順位和検定を用いて片側検定を行った．

線は最小二乗法によって求めた一次関数による近似でその結果，表 1 に示したように，TM と TL 両方のある．4. 1 節で述べるように，新規モジュールの追加組に対して，二乗誤差と MRE のどちらでも有意水準にかかる労力は大きくないため，新規モジュールが追1% で，保守ポイントの誤差が小さいと言えることが加された場合とそうでない場合とで近似直線を分ける

分かった．

必要はないと考えられる．

3. 1. 2 既存のメトリクスとの比較

さらに，計測した 30 件のデータをランダムに 10 件ずつの 3 群に分割し，クロスバリデーションを行った．
見積り式には一次式を用い，最小二乗法でパラメータ

次に，保守ポイントを既存のメトリクスと比較する．
比較に用いる保守ポイントの値は，すべて辺の重みがを決定した．評価項目としては，メトリクスの評価として頻繁に用いられる以下の 4 つを用いた．

•

MAE: 絶対誤差の平均

一つ目の比較対象として，保守により変更される•

MMRE: MRE (相対誤差) の平均

メソッドの変更前の複雑度を，単純に足し合わせた•PRED(25) 相対誤差が 25% 以下である割合

ものを用いた．複雑度には，保守ポイントと同じく，•PRED(50) 相対誤差が 50% 以下である割合

0.3 のときのものである．

McCabe のサイクロマチック数と LOC の 2 種類をMAE と MMRE の値は小さいほど，PRED(25) と用いた．以下，サイクロマチック数を足し合わせたメ

PRED(50) は大きいほど見積りが正確であることをトリクスを，単純和 [McCabe] と呼び， LOC を足し示す．

合わせたメトリクスを，単純和 [LOC] と呼ぶことにクロスバリデーションの結果を 表 2 に示す．表のする．単純和は，すべての辺の重みを 0 としたときの各行のうち，太字で書かれた列が最良の結果であった

保守ポイントと同じである．

ことを表す．MMRE では変更行数が最良であったが，二つ目の比較対象として，Jørgensen の提案した見次に良いのは保守ポイント [McCabe] であった．また，積り手法 [6] で用いられている，作業によって書換え

PRED(25) では保守ポイント [McCabe] と変更行数

られた行数（変更行数）を用いた．変更行数は労力とが，その他の評価項目では保守ポイント [McCabe] がの相関が高いことが知られているが，保守作業の早い最良となり，保守ポイント [McCabe] の見積り精度が段階で計測することができないため，見積りに用いる高いことが分かった．

のは困難である．
表 1 に取得したメトリクスと，正規化労力との相関

3. 1. 3 新規モジュールが正規化労力に与える影響を示す．正規化労力との相関が最も高かったのは変更

保守ポイントは新規に追加されるモジュールの量を行数であり，次に正規化労力との相関が高かったのは考慮していない．そこで，新規モジュールを考慮する

保守ポイント [McCabe] であった．また，モジュール

ことで，正規化労力の見積り精度がどの程度改善するの複雑度に用いたメトリクスが同じ場合，単純和よりかを調査した．

も保守ポイントの方が，高い相関を示した．
次に，保守ポイントの正規化労力見積りの誤差が，単純和に比べて有意に小さいかを調査した．調査は，まず，辺の重みを 0.3 とした保守ポイント [McCabe]の影響を除いた，新規モジュールの行数と正規化労力との偏相関係数は 0.4903 であった．

保守ポイント [McCabe] と単純和 [McCabe] の組 TM

3. 1. 1 節で行った保守ポイント [McCabe] による見と，保守ポイント [LOC] と単純和 [LOC] の組 TL に積りの残差と，新規モジュールの行数との散布図を，ついて行った．

図 6 に示す．新規モジュールが追加された場合と追加

まず，それぞれのメトリクスについて，一次式による労力予測式を最小二乗法を用いて作成した．そして，それぞれの組について，予測式による二乗誤差と，メトリ
6

されない場合とで，残差が同程度に分布していることがわかる．
以上のことから，今回の実験では新規モジュールの論文／影響波及解析を利用した保守作業の労力見積りに用いるメトリクスの提案
表 1 正規化労力と各メトリクスの相関
Table 1 Correlation between eﬀort and metrics

正規化労力との相関(p 値)
符号付順位和検定
二乗誤差 (p 値)
MRE (p 値)

保守ポイント単純和[McCabe][McCabe]0.82
0.73(<0.01)(<0.01)

保守ポイント 単純和
[LOC]
[LOC]
0.77
0.65
(<0.01)(<0.01)101(<0.01)
105(<0.01)

95 (<0.01)
86 (<0.01)

変更行数
0.87
(<0.01)

表 2 クロスバリデーションの結果
Table 2 Result of the cross validation
保守ポイント[McCabe]MAE
0.07840MMRE
0.9616
PRED(25)
0.3667
PRED(50)
0.6667

単純和[McCabe]0.092701.427
0.30000.6000   



 



                              

図 6

保守ポイント [McCabe] による見積り残差と新モジュールの行数の散布図
Fig. 6 Scatter plot between residual of eﬀort estimation using Maintenance Point [McCabe] andlines of new modules

保守ポイント[LOC]
0.09405
1.263
0.33330.6000

4. 議

単純和
[LOC]
0.11771.766
0.16670.5000

変更行数
0.07868
0.8266
0.36670.6000論

4. 1 モデルの妥当性
保守ポイントは，プロダクトモデルと変更要求を基に計算する．一般に，ソフトウェア保守では理解とテストの労力が大きいと言われており [11] [12] [13] [14]，
その労力が影響範囲に強い影響を受けることがわかっている [15] [16]．そのため，保守作業の労力は影響範
囲内の複雑さから大きな影響を受けると考えられる．
保守ポイントは，保守作業によって変更されるモ
ジュールから計算されるので，保守作業によって新規に追加されるモジュールを考慮していない．そのため，新規モジュールの開発に大きな労力が割かれる保守案
件の労力を保守ポイントだけで見積るのは適当でない．このような場合は，新規モジュールの開発に要する労力を機能量などで見積り，保守ポイントを用いて量が正規化労力に与える影響は大きくなかったと言見積った既存モジュールの変更に要する労力を足し合える．

わせることで，全体の労力を求めるのが適当であると

3. 2 考察

考えられる．

実験結果が示すように，保守ポイントは既存のメト

しかし，本論文で行った実験では，新規モジュール

リクスである単純和よりも高い労力との相関を持ってのサイズを考慮しても見積り精度はあまり改善しな

おり，より高い精度で労力を予測することができるといという結果になった．これは，新規モジュールを開分かった．

発するためには，新規モジュールを利用する既存のモSneed の提案した保守コスト見積り手法 [7] は，保ジュールを理解し，テストする必要があり，その理解

守労力見積りの主な基準として影響範囲の大きさを用およびテストの労力が新規モジュールの開発にかかるいる．影響範囲の大きさは辺の重みを 1 としたときの労力の大部分を占めるためであると考えられる．

保守ポイント [LOC] の値と等しいが，3. 1. 1 で示した通り，辺の重みが 1 のときの保守ポイントと労力との相関はほぼ 0 である．

4. 2 プロダクトモデルの対応づけ
プロダクトとプロダクトモデルの対応づけには，3.
章で示したもの以外にも，多くの方法が考えられる．
7電子情報通信学会論文誌 xxxx/xx Vol. Jxx–X No. xx

モジュールの候補としては，プログラミング言語に

4. 4 具体的な変更要求が得られないときのメトリ
クス

より様々なものが考えられる．例えば Java の場合，メ
ソッド，クラス，パッケージといった階層があり，モ

保守ポイントを求めるためには，プロダクトモデル

ジュールの候補となりうる．モジュールの保守作業のGP と変更要求 R が必要である．しかし，ソフトウェ

労力には，複雑度メトリクスを用いる．

ア保守を包括的に請負うときなどのように，どのよう影響波及関係の計算方法として，いろいろなものが考えられる．例えば，モジュール m1 から m2 への呼な作業が発生するかが分からないときには，具体的なR を求めるのは非常に困難である．

び出しの数を k ，外にデータフローを起こす変数の数

そこで， R の代わりに保守要求 R の確率分布 Rd

を l としたとき， 1 − αk β l （α と β は 0 より大きくを用いた，以下のような労力指標モデル Cgen (GP , Rd )1 より小さい定数）を重みとする．この式は，変数 kを考える．

および l の定義域を 0 以上の整数とした場合，値域は 0 以上 1 未満となり， k と l それぞれについて単Cgen (GP , Rd ) ={qi C(GP , {mi })}i=1

調増加関数となる． k と l が無限に増加してゆけば，
この式の値は限りなく 1 に近づく．α, β の値は，過去nXに計測したメトリクス値と労力との相関が最大となる(ただし， Rd = (q1 , q2 , . . . , qn )（n は GP の頂点数），0<= qi <= 1 ， q1 + q2 + q3 + · · · + qn = 1 である． qi

ように決定する．

は一つの保守作業においてモジュール mi が変更されまた， CVS リポジトリなどから細粒度の変更履歴

る確率を表す．)が入手可能な場合には， 同時更新傾向に基づいた影響

Rd の要素を均等に 1/n とすれば，簡単に試算す

波及関係の推測手法である Logical Coupling [17] をることができる．このモデルを一般化保守ポイント

影響波及関係として用いることもできる．

Cave (GP ) と呼ぶ．

モジュールとその労力，影響波及関係の選択は，対似プロダクトと同じ条件で計測することで，回帰分析

Cave (GP ) = Cgen (GP , (1/n, . . . , 1/n))Pn
i=1 C(GP , {mi })=nなどを用いた労力見積りが可能となる．

より正確に Rd を計算する方法として， qi の値を象とするプロダクトの規模やドメインを主な基準として，メトリクスの計測者が行う．このとき，過去の類

4. 3 実験の設定
我々の行った実験は，実際のソフトウェア開発現場に比べて以下のような違いがある．
（ 1 ） 被験者が少ない（ 2 ） ソフトウェアの規模が小さい

C(GP , {mi }) から求める方法も提案されている [18]．
これらの提案するメトリクスの妥当性は，今後，長期にわたる実験を行い検証する予定である．

5. まとめと今後の課題
この論文では，保守作業の労力見積りに用いるメト（ 3 ） 被験者の能力が，実務者に比べて低い可能性

リクスを定義するために，プロダクトを有向辺と頂点があるから成るグラフとしてモデル化した．このモデル上で，（ 4 ） 被験者の能力にばらつきがある

保守作業の労力見積りに用いるメトリクスである保守(1) と (2) については，今後，より大規模な実験をポイントを定義した．さらに，保守ポイントと労力と行う必要があるだろう．

(3) については，実験問題は特殊な実務経験を必要としない一般的な問題であり，被験者は情報科学科の課程を修めているため，問題に対して十分な能力を有していると思われる．

(4) の能力のばらつきは，実際のソフトウェア開発現場でも存在するものである．また，労力を計算するの関係を調べる実験を行った結果，保守ポイントは，
既存のメトリクスに比べて，より正確な労力を見積る
うえで有用であることを確認した．
今後の課題としては，より大規模な実験を行ってメトリクスを評価すること，長期的な実験を行って一般化保守ポイントを評価すること，実際のソフトウェア
保守現場での使用が挙げられる．

際に個人の作業能力で正規化しているため，実験結果からは排除されている．
8

文
[1]

献

IEEE Standard for Software Maintenance (IEEE論文／影響波及解析を利用した保守作業の労力見積りに用いるメトリクスの提案
261, 2002.

Standard 1219-1998), 1998.
[17]

H. Gall, K. Hajek, and M. Jazayeri, “Detection of[2]

S.R. Schach, Software Engineering, Asken Associates,
1990.

logical coupling based on product release history,”[3]

S. Yip, and T. Lam, “A software maintenance sur-ICSM ’98: Proceedings of the International Confer-vey,” First Asia-Paciﬁc Conference on Software En-

ence on Software Maintenance, p.190, Washington,
DC, USA, 1998, IEEE Computer Society.

gineering, pp.70–79, 1994.
[4]

I. Sommerville, Software Engineering (5th edition),
Addison-Wesley, 1996.

[5]

International Function Point Users Group, Function[6]

M. Jørgensen, “Experience with the accuracy of soft-

Point Counting Practices Manual: Release 4.2, 2004.

[18]

小林健一，吉野利明，井上克郎，早瀬康裕，松尾昭彦，上村学，“保守の影響波及範囲に基づいたレガシーシステ
ムの障害予測，” 信学技報，vol.105，no.491，pp.31–36，
December 2005.
（平成 xx 年 xx 月 xx 日受付）

ware maintenance task eﬀort prediction models.,”
IEEE Trans. Software Eng., vol.21, no.8, pp.674-681,
1995.
[7]

H.M. Sneed, “Estimating the costs of software maintenance tasks.,” ICSM, pp.168-181, IEEE Computer
Society, 1995.

[8]

F. Fioravanti, and P. Nesi, “Estimation and prediction metrics for adaptive maintenance eﬀort ofobject-oriented systems.,” IEEE Trans. SoftwareEng., vol.27, no.12, pp.1062-1084, 2001.

[9]

早瀬

康裕

平 14 阪大・基礎工・情報卒．現在同大
大学院情報科学研究科博士後期課程在学中．
ソフトウェアプロセスの研究に従事．情報処理学会会員S. Ramanujan, R.W. Scamell, and J.R. Shah, “Anexperimental investigation of the impact of individual, program, and organizational characteristics on
software maintenance eﬀort,” J. Syst. Softw., vol.54,
no.2, pp.137–157, 2000.

[10]
[11]

山崎利治，“共通問題によるプログラム設計技法解説，”情報処理，vol.25，no.9，pp.934–935，1984.
R.K. Fjeldstad, and W.T. Hamlen, “Application program maintenance study:

Report to our respon-dents,” GUIDE 48, eds. G. Parikh, and N. Zvegintzov, Philadelphia, PA, April 1983.
[12]

1989.

平 5 阪大・基礎工・情報卒．平 10 同大大学院博士課程了．同年同大・基礎工・情報・
助手．平 14 阪大・情報科学・コンピュー
タサイエンス・助手．平 17 同専攻助教授．
博士 (工学)．ソフトウェアプロセス，オー
プンソースソフトウェア開発の研究に従事．

楠本

真二 （正員）C. McClure, The three Rs of software automation:

昭 63 阪大・基礎工・情報卒．平 3 同大

re-engineering, repository, reusability, Prentice-Hall,

SLA ’01: Proceedings of the 16th ACM SIGPLAN

学院博士課程中退．同年同大・基礎工・情報・助手．平 8 同学科講師．平 11 同学科助教授．平 14 阪大・情報科学・コンピュー
タサイエンス・助教授．博士 (工学)．平 17
同専攻教授．ソフトウェアの生産性や品質の定量的評価，プロジェクト管理に関する研究に従事．情報処

conference on Object oriented programming, sys-

理学会，IEEE，IFPUG，PM 各会員．

Inc., Upper Saddle River, NJ, USA, 1992.
[14]

誠

T.A. Corbi, “Program understanding: challenge forthe 1990’s,” IBM Syst. J., vol.28, no.2, pp.294–306,

[13]

松下

M.J. Harrold, J.A. Jones, T. Li, D. Liang, A. Orso,
M. Pennings, S. Sinha, S.A. Spoon, and A. Gujarathi,“Regression test selection for java software,” OOP-

tems, languages, and applications, pp.312–326, New
York, NY, USA, 2001, ACM Press.
[15]

A.J. Ko, H. Aung, and B.A. Myers, “Eliciting design
requirements for maintenance-oriented ides: a detailed study of corrective and perfective maintenancetasks,” ICSE ’05: Proceedings of the 27th international conference on Software engineering, pp.126–
135, New York, NY, USA, 2005, ACM Press.

[16]

L.C. Briand, Y. Labiche, and G. Soccar, “Automating impact analysis and regression test selection
based on uml designs.,” 18th International Conference on Software Maintenance (ICSM 2002), pp.252-

井上克郎 （正員）昭 54 阪大・基礎工・情報卒．昭 59 同大
大学院博士課程了．同年同大・基礎工・情報・助手．昭 59〜昭 61 ハワイ大マノア校・情報工学科・助教授．平 1 阪大・基礎工・情報・講師．平 3 同学科・助教授．平 7 同学科・教授．平 14 阪大・情報・コンピュー
タサイエンス・教授．工学博士．ソフトウェア工学の研究に従事．情報処理学会，日本ソフトウェア科学会，IEEE，ACM 各
会員．

9

電子情報通信学会論文誌 xxxx/xx Vol. Jxx–X No. xx

小林 健一
平 4 東大・工・計数卒, 平 6 東大・工・情報修了. 同年 (株) 富士通研究所入社. ソ
フトウェア工学, 並列処理, 計算機アーキ
テクチャ, データマイニングの研究に従事.
情報処理学会会員.

吉野 利明
昭 55 九工大・工・情報卒，昭 57 九大大学院・総理工・情報システム学修士了．同年（株）富士通研究所入社．平 4–平 8 情処会誌編集委員．ソフトウェア工学，エージェント，自然言語処理，データベース，
ナレッジマネジメントの研究に従事．情報処理学会，IEEE-CS 各会員．

10

Abstract Cost of software maintenance is estimated based on the experience by some experts since
the standard for objective measurement is not available currently. We proposed a metric for estimating
maintenance eﬀort in this paper. The metric is computed by applying the change impact analysis to sourcecode. Through experiments, we conﬁrmed that the proposed metric estimate the maintenance eﬀort better
than existing metrics.
Key words Software Metrics, Eﬀort Estimation, Maintenance, Impact Analysis