2025年9月16日火曜日

Understanding the Correlation between Code Smells And Software Bugs

 公開されている

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 件のコメント:

コメントを投稿

O記法

 O記法  計算量のオーダーを表す。次のようなオーダーが使われる。(速い順) O(1)  O(log n)  O(n) O(n log n) O(n 2 )   線形探索法 先頭から順に調べる。 最悪は、O(n) 。最良は、O(1)    二分探索法 データがソートされている場合...