Abstract

Design defects affect project quality and hinder development and maintenance. Consequently, experts need to minimize these defects in software systems. A promising approach is to apply the concepts of refactoring at higher level of abstraction based on UML diagrams instead of code level. Unfortunately, we find in literature many defects that are described textually and there is no consensus on how to decide if a particular design violates model quality. Defects could be quantified as metrics based rules that represent a combination of software metrics. However, it is difficult to find manually the best threshold values for these metrics. In this paper, we propose a new approach to identify design defects at the model level using the ID3 decision tree algorithm. We aim to create a decision tree for each defect. We experimented our approach on four design defects: The Blob, Data class, Lazy class and Feature Envy defect, using 15 Object-Oriented metrics. The rules generated using decision tree give a very promising detection results for the four open source projects tested in this paper. In Lucene 1.4 project, we found that the precision is 67% for a recall of 100%. In general, the accuracy varies from 49%, reaching for Lucene 1.4 project 80%.

Highlights

  • It is difficult and very expensive to identify and correct software defects especially those corresponding to large projects

  • We assume that the precision has to be over than 50% reducing the number of false positive errors

  • In this paper, we presented a new approach for the design defects detection at the model level

Read more

Summary

Introduction

It is difficult and very expensive to identify and correct software defects especially those corresponding to large projects. The majority of researches dealing with this issue focus on code defects identification by analyzing the software source code [1], [2]. These code defects are usually, the consequence of design defects that was propagated to the code. Detecting design defects at earlier stage in the system development life cycle is a promising way to improve the process of software maintenance [3]–[6]. This will reduce the time, effort and maintenance cost

Objectives
Methods
Results
Conclusion
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call