Nothing Special   »   [go: up one dir, main page]

skip to main content
article

A study of cyclic dependencies on defect profile of software components

Published: 01 December 2013 Publication History

Abstract

Background: Empirical evidence shows that dependency cycles among software components are pervasive in real-life software systems, although such cycles are known to be detrimental to software quality attributes such as understandability, testability, reusability, build-ability and maintainability. Research goals: Can the use of extended object-oriented metrics make us better understand the relationships among cyclic related components and their defect-proneness? Approach: First, we extend such metrics to mine and classify software components into two groups - the cyclic and the non-cyclic ones. Next, we have performed an empirical study of six software applications. Using standard statistical tests on four different hypotheses, we have determined the significance of the defect profiles of both groups. Results: Our results show that most defects and defective components are concentrated in cyclic-dependent components, either directly or indirectly. Discussion and conclusion: These results have important implications for software maintenance and system testing. By identifying the most defect-prone set in a software system, it is possible to effectively allocate testing resources in a cost efficient manner. Based on these results, we demonstrate how additional structural properties could be collected to understand component's defect proneness and aid decision process in refactoring defect-prone cyclic related components.

References

[1]
Evaluating the impact of object-oriented design on software quality. In: Proceedings of the 3rd International Software Metrics Symposium, pp. 90-99.
[2]
Dynamic coupling measurement for object-oriented software. IEEE Transactions on Software Engineering. v30. 491-506.
[3]
A validation of object-oriented design metrics as quality indicators. IEEE Transactions on Software Engineering. v22. 751-761.
[4]
Object-Oriented Systems Analysis and Design Using UML. McGraw Hill, Maidenhead, Berkshire England.
[5]
Random forests. Machine Learning. v45. 5-32.
[6]
Predicting fault-prone classes with design measures in object-oriented systems. In: Ninth International Symposium on Software Reliability Engineering, Proceedings, pp. 334-343.
[7]
A unified framework for coupling measurement in object-oriented systems. IEEE Transactions on Software Engineering. v25. 91-121.
[8]
Revisiting strategies for ordering class integration testing in the presence of dependency cycles. In: Proc. 12th International Symposium on Software Reliability Engineering (ISSRE 2001), pp. 287-296.
[9]
Replicated case studies for investigating quality factorsin object-oriented designs. Empirical Software Engineering. v6. 11-58.
[10]
An investigation of graph-based class integration test order strategies. IEEE Transactions on Software Engineering. v29. 594-607.
[11]
Object-Oriented Software: Design and Maintenance. World Scientific, Singapore.
[12]
Reusability and life cycle issues within an object-oriented design methodology (refereed). In: Ege, R., Singh, M., Meyer, B. (Eds.), Technology of Object-Oriented Languages and Systems, Prentice Hall, Englewood Cliffs, USA. pp. 139-150.
[13]
A metrics suite for object-oriented design. IEEE Transactions on Software Engineering. v20. 476-493.
[14]
Object-Oriented Design. second ed. Prentice Hall, London.
[15]
Introduction to Algorithms. second ed. MIT Press, Cambridge, MA.
[16]
Project History as a Group Memory: Learning From the Past. University of British Columbia, Canada.
[17]
Quantitative analysis of faults and failures in a complex software system. IEEE Transactions on Software Engineering. v26. 797-814.
[18]
Software Metrics: A Rigorous & Practical Approach. second ed. PWS Publishing Press, Boston.
[19]
Reducing coupling. IEEE Software. v18. 102-104.
[20]
Change profiles of a reused class framework vs. two of its applications. Information and Software Technology. v52. 110-125.
[21]
A systematic review of fault prediction performance in software engineering. IEEE Transactions on Software Engineering. 99
[22]
Selecting an efficient OO integration testing strategy: an experimental comparison of actual strategies. In: Proc. 15th European Conf. Object-Oriented Programming (ECOOP), pp. 381-401.
[23]
Test order for class-based integration testing of Java applications. In: Fifth International Conference on Quality Software, 2005 (QSIC 2005), pp. 11-18.
[24]
Improving Java software through package structure analysis. In: The 6th IASTED International Conference Software Engineering and Applications,
[25]
Identifying test-critical dependencies. Software Maintenance. 404-413.
[26]
A systematic review of effect size in software engineering experiments. Information and Software Technology. v49. 1073-1086.
[27]
Java Application Architecture: Modularity Patterns with Examples Using OSGi. first ed. Prentice Hall, Indiana.
[28]
On regression testing of object-oriented programs. Journal of Systems Software. v32. 21-40.
[29]
Large-scale C++ Software Design. Addison-Wesley Longman, Redwood City, CA.
[30]
Identifying cycle causes with enriched dependency structural matrix. In: 16th Working Conference on Reverse Engineering (WCRE 2009), pp. 113-122.
[31]
Efficient object-oriented integration and regression testing. IEEE Transactions on Reliability. v49. 12-25.
[32]
Characteristics of multiple-component defects and architectural hotspots: a large system case study. Empirical Software Engineering. v16. 667-702.
[33]
Detecting design flaws via metrics in object-oriented systems. Tools. v39. 173-182.
[34]
. Granularity, C++ Report, 1996.
[35]
. In: Mentor, O. (Ed.), Design Principles and Design Patterns,
[36]
An empirical study of cycles among classes in Java. Empirical Software Engineering. v12. 389-415.
[37]
JooJ: real-time support for avoiding cyclic dependencies. In: Proceedings of the thirtieth Australasian conference on Computer science 62, pp. 87-95.
[38]
Data mining static code attributes to learn defect predictors. IEEE Transactions on Software Engineering. v33. 2-13.
[39]
Technologies for Code Failure Proneness Estimation. Microsoft Corporation, USA.
[40]
The evolution and impact of code smells: a case study of two open source systems. In: Int. Symp. Emp. Softw., pp. 391-401.
[41]
Can reused components provide lead to future defective components in smart grid applications?. In: Gonzalez, T., Hamza, M.H. (Eds.), 16th IASTED International Conference on Software Engineering and Applications,
[42]
Designing software for ease of extension and contraction. IEEE Transactions on Software Engineering. vSE-5. 128-138.
[43]
Using dependency models to manage complex software architecture. ACM Sigplan Notices. v40. 167-176.
[44]
Predicting component failures at design time. In: Proceedings of the 2006 ACM/IEEE International Symposium on Empirical Software Engineering, pp. 18-27.
[45]
When do changes induce fixes?. In: Proceedings of the 2005 International Workshop on Mining Software Repositories, pp. 1-5.
[46]
Objects, Components, and Frameworks with UML: The Catalysis Approach. Addison-Wesley, Reading, MA.
[47]
Test order for inter-class integration testing of object-oriented software. In: Computer Software and Applications Conference, 1997. COMPSAC '97. Proceedings. The Twenty-First Annual International, pp. 602-607.
[48]
Social network analysis: methods and applications. Cambridge University Press, Cambridge, New York.
[49]
Do too many cooks spoil the broth? Using the number of developers to enhance defect prediction models. Empirical Software Engineering. v13. 539-559.
[50]
How multiple-dependency structure of classes affects their functions a statistical perspective. In: 2nd International Conference on Software Technology and Engineering (ICSTE), 2010,
[51]
An investigation of the relationships between lines of code and defects. In: 2009 IEEE International Conference on Software Maintenance, Conference Proceedings, pp. 274-283.
[52]
An empirical study on the relation between dependency neighborhoods and failures. In: IEEE Fourth International Conference on Software Testing, Verification and Validation (ICST), pp. 347-356.
[53]
Predicting subsystem failures using dependency graph complexities. In: ISSRE 2007: 18th IEEE International Symposium on Software Reliability Engineering, Proceedings, pp. 227-236.
[54]
Predicting defects using network analysis on dependency graphs. In: 2008 30th International Conference on Software Engineering: (ICSE), vols. 1 and 2, pp. 530-539.
[55]
Predicting defects for eclipse. In: International Workshop on Predictor Models in Software Engineering, pp. 9

Cited By

View all
  • (2024)An empirical study of untangling patterns of two-class dependency cyclesEmpirical Software Engineering10.1007/s10664-023-10438-029:2Online publication date: 12-Mar-2024
  • (2023)Detecting code smells using industry-relevant dataInformation and Software Technology10.1016/j.infsof.2022.107112155:COnline publication date: 1-Mar-2023
  • (2016)An empirical study on dependence clusters for effort-aware fault-proneness predictionProceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering10.1145/2970276.2970353(296-307)Online publication date: 25-Aug-2016
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image Journal of Systems and Software
Journal of Systems and Software  Volume 86, Issue 12
December, 2013
243 pages

Publisher

Elsevier Science Inc.

United States

Publication History

Published: 01 December 2013

Author Tags

  1. Defect-prone components
  2. Defects
  3. Dependency cycle

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 14 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2024)An empirical study of untangling patterns of two-class dependency cyclesEmpirical Software Engineering10.1007/s10664-023-10438-029:2Online publication date: 12-Mar-2024
  • (2023)Detecting code smells using industry-relevant dataInformation and Software Technology10.1016/j.infsof.2022.107112155:COnline publication date: 1-Mar-2023
  • (2016)An empirical study on dependence clusters for effort-aware fault-proneness predictionProceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering10.1145/2970276.2970353(296-307)Online publication date: 25-Aug-2016
  • (2016)Iterative software fault prediction with a hybrid approachApplied Soft Computing10.1016/j.asoc.2016.08.02549:C(1020-1033)Online publication date: 1-Dec-2016
  • (2016)Proceedings of the 31st IEEE/ACM International Conference on Automated Software EngineeringundefinedOnline publication date: 25-Aug-2016
  • (2015)A comparison of some soft computing methods for software fault predictionExpert Systems with Applications: An International Journal10.1016/j.eswa.2014.10.02542:4(1872-1879)Online publication date: 1-Mar-2015

View Options

View options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media