We have applied the technique on the Mozilla software project, finding interesting insights into the system, and detecting the most critical components. However, we still need to do a more complete validation of the approach, in particular by giving feedback to the developers and evaluating the usefulness of our findings.
2.2 Defect Prediction
Defect prediction deals with guessing where in a system there will be bugs, thus providing valuable information to developers and project managers, since this allows them to focus resources. Previous research has proven that the best predictor for bugs are the bugs themselves [22], i.e., entities affected by bugs in the past usually suffer from them in the future as well, as long as no substantial efforts are spent on restructuring the ailing parts. This however presumes the usage of a bug tracking system. How can one predict bugs in the absence of recorded bugs or in the case of a freshly developed system? Researchers tried to answer this question with complexity metrics, where the assumption is that complex pieces of software generate bugs [19]. We have proposed an approach (under submission) to predict defects based on the presence of so-called “design disharmonies” [15], which can be discovered through a technique based on detection strategies [17]. Detection strategies are metrics-based composed logical conditions, by which design fragments with specific properties are detected in the source code. Design disharmonies are similar to code smells [9], where the difference is that by translating a set of design guidelines or heuristics the former can be automatically uncovered with detection strategies. Our underlying assumption is that pieces of software which exhibit design problems are also prone to generate bugs. To validate our technique, we applied it on version n 1 of a system, obtaining a list of classes with the numbers of predicted bugs. We then compared this with the actual bugs reported in version n of the system, and computed the prediction performance. We experimented the approach on several versions of 3 software systems (Eclipse JDT Core, ArgoUML, AspectJ), and were able to prove that design disharmonies represent a good means to predict defects, obtaining an increase in prediction power over other approaches
Results (
Thai) 1:
[Copy]Copied!
เราได้ใช้เทคนิคในโครงการซอฟต์แวร์ Mozilla ค้นหาน่าสนใจเจาะลึกระบบ และการตรวจหาส่วนประกอบสำคัญที่สุด อย่างไรก็ตาม เรายังคงต้องทำการตรวจสอบวิธี สมบูรณ์มากขึ้นโดยเฉพาะ โดยให้ข้อเสนอแนะเพื่อพัฒนา และประเมินประโยชน์ของการค้นพบของเรา2.2 คาดเดาความบกพร่องDefect prediction deals with guessing where in a system there will be bugs, thus providing valuable information to developers and project managers, since this allows them to focus resources. Previous research has proven that the best predictor for bugs are the bugs themselves [22], i.e., entities affected by bugs in the past usually suffer from them in the future as well, as long as no substantial efforts are spent on restructuring the ailing parts. This however presumes the usage of a bug tracking system. How can one predict bugs in the absence of recorded bugs or in the case of a freshly developed system? Researchers tried to answer this question with complexity metrics, where the assumption is that complex pieces of software generate bugs [19]. We have proposed an approach (under submission) to predict defects based on the presence of so-called “design disharmonies” [15], which can be discovered through a technique based on detection strategies [17]. Detection strategies are metrics-based composed logical conditions, by which design fragments with specific properties are detected in the source code. Design disharmonies are similar to code smells [9], where the difference is that by translating a set of design guidelines or heuristics the former can be automatically uncovered with detection strategies. Our underlying assumption is that pieces of software which exhibit design problems are also prone to generate bugs. To validate our technique, we applied it on version n 1 of a system, obtaining a list of classes with the numbers of predicted bugs. We then compared this with the actual bugs reported in version n of the system, and computed the prediction performance. We experimented the approach on several versions of 3 software systems (Eclipse JDT Core, ArgoUML, AspectJ), and were able to prove that design disharmonies represent a good means to predict defects, obtaining an increase in prediction power over other approaches
Being translated, please wait..