公開されている
Understanding the Correlation between Code Smells And Software Bugs
のキモの部分を読んで勉強してみたいと思います。
概要
バグ予測は、ソフトウェアの品質保証を助ける。
ソフトウェアのテストに必要なeffortが予測できるためである。
アンチパターンとcode smellは、コード品質に大きな影響を持つと言われる。
リファクタリングは、これらアンチパターンの負のインパクトを取り除く
ものである。
この論文では、code smellの影響とバグの重大度に関するもの。
BIRT、AspectJ、SWTのプロジェクトの複数のバージョンから分析する。
異なるcode smellとバグの重大度の間の相関関係を分析した。
イントロ
コード中のエラーは、重大度に基づく優先度順に修正する必要がある。
ソフトウェア開発にかかわる費用の80%が、バグFixに使われている、
という報告もある。
このコストを削減するため、多くのバグ予測モデルが提案された。
これらのモデルは、ソフトウェアシステム中のどこにバグばあるかを、
予測するものである。
バグ予測モデルの多くは、コードの複雑度や
プロセス(code churn)などのメトリクスが利用される。
開発者はコードの中にcode smellを入れてしまうことがある。
こららのアンチパターンやcode smellは、システムの機能には
影響を与えないが、保守を困難にする。
code smellは、また、バグを生む可能性がある。
過去の研究では、code smellを含むclassは、そうでない
classに比較して、バグ proneであった。
バグを減らすためには、code smellを減らす必要がある。
これを行うのが、リファクタリングやコードの再構築である。
アンチパターンやcode smellを削減するリファクタリングや
再構築のツールは、数多くある。
code smellとdefectの間の関係がわかることには、意味がある。
そこで、code smellとバグの間の関係を、wekaが提供する
機械学習のアルゴリズムで測定することに挑戦した。
データは、BIRI、SWT、AspectJ の3つのオープンソースから
抽出した。
次のリサーチクエスチョンに応えるものである。
RQ1:code smellは、バグの重大度と関係があるのか?
code smellのいくつかは、他のcode smellより重大度に
インパクトを与えるものとした。
RQ2:機械学習のアルゴリズムで更なる情報がわかるか
code smellは、重大度に影響するだけではなく、
バグの数にも影響した。
方法
code smellの発見器では、次のようなアンチバターンが発見できる。
Cyclic Dependency
2つ以上のモジュールが、直接あるいは、非直接的にでも、
お互いに依存している。
Blob Class
すべての機能を持ち、すべての責務を持つClass。
God Class
多すぎる数のクラスをコントロールする。
大きすぎるロジックを持つクラス。
Data Class
データと、そのセッター/ゲッターのみを持つクラス。
Schizophrenic Class
関連しない/利用されないpublic methodを持つクラス。
Refused ParantBequest
サブクラスで、親クラスから継承したメソッドや、
プロパティの一部しか利用していないクラス。
-- つづきます。--
0 件のコメント:
コメントを投稿