コメントに基づくソフトウェア品質要因測度の提案及び検証

Download Report

Transcript コメントに基づくソフトウェア品質要因測度の提案及び検証

2008年2月9日
コメントに基づくソフトウェア
品質要因測度の提案及び検証
信州大学大学院
工学系研究科情報工学専攻
海尻・海谷研究室
本多 泰介
1
2008年2月9日
研究の背景
「コードの読み易さ」は、ソフトウェアの保
守性に影響を及ぼす。
 近年、コード作成者とは別の者が保守を行う
機会が増えている。

ex.・オープンソースプロジェクトの発達
・ソフトウェア開発者の専業化
・ソフトウェアの再利用促進

「読み易いコード」を作成する上で、コメン
トの果たす役割がますます重要なものになっ
ていると考えられる。
2
2008年2月9日
研究の目的
「コメントがしっかり書かれていないソフ
ウェアは品質が良くない」という仮説を立
て、この仮説について検証を行う。


コメントがしっかり書かれているかどうかの測度
を提案する。
提案した測度と実際のソフトウェアの品質の関係
を分析する。
3
2008年2月9日
検証の進め方
オープンソースの「jEdit」(JAVAによ
るエディタ)を用いて検証
1.
2.
3.
4.
コメントに対する測度を提案・検討する。
検討したコメント測度について、ファイル単位で計測
を行う。
ファイル単位でのバグ数を計測する。
上記3.及び4.で計測されたデータについて回帰分
析を行う。
4
2008年2月9日
測度の提案
5
2008年2月9日
測度の検討(1)
1.
コメント部分だけを抽出
→ そのサイズを計測
コメント部分のサイズ:Cs(バイト)
元のファイルのサイズ:Fs(バイト)
⇒ Cs/Fsを測度として用いる。
<理由> コードが長いとコメントの量が通常多くなり、
またコードが長いとバグの数も通常多くなると考えられる。
したがって、コードの長さによる影響を排除する必要が
ある。以下同様。
コメントのパターンにマッチした回数
をカウントし、コメントの数を計測。
コメントの数
: Cn(箇所)
元のファイルの全行数 : Fn(行)
⇒ Cn/Fnを測度として用いる。
コメントのサイズ/コメントの数
を算出
⇒ Cs/Cnを測度として用いる。
6
2008年2月9日
測度の検討(2)
2.
Javadoc部分だけを抽出
→ そのサイズを計測
Javadoc部分のサイズ:Js(バイト)
⇒ Js/Fsを測度として用いる。
Javadocのパターンにマッチした回数をカウントし、コメントの数を計測
Javadocの数: Jn(箇所)
⇒ Jn/Fnを測度として用いる。
Javadocのサイズ/コメントのサイズ
⇒
Js/Csを測度として用いる。
Javadocの数/コメントの数
⇒
を算出
を算出
Jn/Cnを測度として用いる。
7
2008年2月9日
測度の検討(3)
3.
The Linguistic Approach to the Natural Language Requirements Quality: Benefit of the use
of an Automatic Tool: SEW 2001 IEEE より引用
基準が不明瞭な語句の数を計測: Va(個)
ex : clear, easy, strong, good, bad, useful, significant, adequate, recent, …
人によって判断基準が異なるような語句の数を計測: Su(個)
ex: similar, similarly, having in mind, take into account, as ~ as possible, …
選択の余地を与えるような語句の数を計測: Op(個)
ex: possibly, eventually, if case, if possible, if appropriate, if needed, …
意味を弱める語句の数を計測: We(個)
ex: could, might
Va + Su + Op + We を算出: Am(個)
8
2008年2月9日
測度の検討(4)
4.
各ファイルに含まれる全てのメソッド識別子の長さを計測し、
平均値を算出: Mil(文字)
各ファイルに含まれる全てのクラス識別子の長さを計測し、
平均値を算出: Cil(文字)
各ファイルに含まれる全てのメソッド識別子およびクラス識別
子の長さを計測し、平均値を算出: Bil(文字)
9
2008年2月9日
ファイル単位での計測
※ バグフィックス数は、ファイルごとにログを求め、各ログについてbugも
しくはfixの文字が含まれている回数をカウントすることによって得た
10
2008年2月9日
回帰分析(1-1)
1. A)
相関係数 -0.223601949
t値 = 4.0261 p値 = 7.145e-05
⇒ 負の相関あり
回帰直線
Y = -8.3832X + 5.0377
バ
グ
数
Cs/Fs
1. B)
相関係数 0.282042353
t値 = 5.1593 p値 = 4.449e-07
⇒ 正の相関あり
回帰直線
Y = 25.8523X – 0.3492
バ
グ
数
Cn/Fn
11
2008年2月9日
回帰分析(1-2)
1. C)
相関係数 -0.244508268
t値 = 4.4254 p値 = 1.337e-05
⇒ 負の相関あり
回帰直線
Y = -0.0064X + 3.5447
バ
グ
数
Cs/Cn
12
2008年2月9日
回帰分析(2-1)
2. A)
相関係数 -0.114845526
t値 = 2.029 p値 = 0.04332
⇒ 負の相関あり
回帰直線
Y = -4.8430X + 2.9366
バ
グ
数
Js/Cs
2. B)
相関係数 -0.026859416
t値 = 0.4716 p値 = 0.6376
⇒ 相関なし
回帰直線
Y = -5.7760X + 2.4696
バ
グ
数
Jn/Fn
13
2008年2月9日
回帰分析(2-2)
2. C)
相関係数 -0.037075546
t値 = 0.6511 p値 = 0.5155
⇒ 相関なし
回帰直線
Y = -0.6125X + 2.5500
バ
グ
数
Js/Cs
2. D)
相関係数 -0.166538749
t値 = 2.9641 p値 = 0.003272
⇒ 負の相関あり
回帰直線
Y = -3.0626X + 3.1785
バ
グ
数
Jn/Cn
14
2008年2月9日
回帰分析(3-1)
3. A)
相関係数 0.342189784
t値 = 6.3912 p値 = 6.08e-10
⇒ 正の相関あり
回帰直線
Y = 0.6074X + 1.3832
バ
グ
数
Va
3. B)
相関係数 0.081816037
t値 = 1.4407 p値 = 0.1507
⇒ 相関なし
回帰直線
Y = 4.2190X + 2.2810
バ
グ
数
Su
15
2008年2月9日
回帰分析(3-2)
3. C)
相関係数 0.032951306
t値 = 0.5786 p値 = 0.5633
⇒ 相関なし
回帰直線
Y = 0.4963X + 2.3115
バ
グ
数
Op
3. D)
相関係数 0.294657255
t値 = 5.4115 p値 = 1.258e-07
⇒ 正の相関あり
回帰直線
Y = 2.3830X + 1.8204
バ
グ
数
弱い語句の使用回数
16
2008年2月9日
回帰分析(3-3)
3. E)
相関係数 0.372346811
t値 = 7.0409 p値 = 1.248e-11
⇒ 正の相関あり
回帰直線
Y = 0.5951X + 1.2375
バ
グ
数
Am
17
2008年2月9日
回帰分析(4-1)
4. A)
相関係数 0.285380593
t値 = 5.2257 p値 = 3.204e-07
⇒ 正の相関あり
回帰直線
Y = 0.3336X – 0.6132
バ
グ
数
メソッド識別子の平均長さ
4. B)
相関係数 0.009977588
t値 = 0.1751 p値 = 0.8611
⇒ 相関なし
回帰直線
Y = 0.0106X + 2.2010
バ
グ
数
クラス識別子の平均長さ
18
2008年2月9日
回帰分析(4-2)
4. A)
相関係数 0.094802723
t値 = 1.6713 p値 = 0.09568
⇒ 相関なし
回帰直線
Y = 0.1470X – 0.5965
バ
グ
数
Bil
19
2008年2月9日
重回帰分析
重回帰分析
重回帰式(最適モデル):
バグ数 = 0.4011*Va + 0.1724*Mil + 2.4596*We
+ 19.1688*CN/LN – 6.476*CS/FS - 2.743*Op -0.1191
自由度調整済み相関係数 = 0.5355
相関あり
20
2008年2月9日
まとめ
1.
2.
3.
4.
コメントの多さとバグフィックス数との関係では、コメントの量(サイズ)と
バグ数との間には負の相関がある一方、コメント数とバグ数との間には正の相
関があった。また、コメント1箇所当たりのコメントの量とバグ数の間にも負
の相関が確認された。
Javadoc形式の多さとバグフィックス数との関係では、Javadocの量(サイズ)
及びコメント総数に占めるJavadoc形式の数の割合とバグ数との間に一応負の相
関は認められるが、Javadocの数及びコメント総量に占めるJavadoc形式の量の
割合とバグ数との間には相関が見られず、全体的に相関が小さい。
あいまい語の多さとバグフィックス数との関係では、「主観的な語句」及び
「選択性のある語句」は、いずれも今回分析したファイル中で使用されている
数が極めて少なかったため、有意な分析結果を得ることができなかったが、
「不明瞭な語句」及び「弱い語句」とバグ数との間には正の相関が確認され、
あいまい語の合計数との間にも正の相関が見られた。
識別子の長さ(平均値)とバグフィックス数との関係では、相関が見られな
かったが、メソッド識別子の長さ(平均値)とバグ数の間には正の相関が確認
された。クラス識別子の長さ(平均値)とバグ数との間には相関が見られな
かった。
21
2008年2月9日
今後の課題
1.
検証結果の一般化
本研究では、「jEdit」の合計310のjavaファイルについて検
証を行ったが、より多くのソフトウェアについて同様の調
査を行うことにより、検証結果をより一般化する。
2.
実体面における測度の検討
本研究では、コメントの量やJavadoc形式の割合等、比較的
形式的な側面での測度を提案したが、より実体的な面で自
動計測可能な測度がないか検討を行う。
Ex : ソースコードの変更があった場合に、それに対応する
コメントも変更されたかどうかを履歴から調べることに
よって、コメントとコードの一致を計測する。
22