ABSTRACT
Coupling measures have important applications in software development and maintenance. They are used to reason about the structural complexity of software and have been shown to predict quality attributes such as fault-proneness, ripple effects of changes and changeability. Traditional object-oriented coupling measures do not account for polymorphic interactions, and thus underestimate the complexity of classes and fail to properly predict their quality attributes.To address this problem Arisholm et al. [3] define a family of dynamic coupling measures that account for polymorphism. They collect dynamic coupling measures through dynamic analysis and show that these measures are better indicators of complexity and better predictors of quality attributes than traditional coupling measures.This paper presents a new approach to the computation of dynamic coupling measures. Our approach uses static analysis, in particular class analysis, and is designed to work on incomplete programs. We perform experiments on several Java components and present a precision evaluation which shows that inexpensive class analysis such as RTA computes dynamic coupling measures with almost perfect precision. Our results indicate that inexpensive static analysis may be used as a more convenient, more practical and more precise alternative to dynamic analysis for the purposes of computation of dynamic coupling measures.
- O. Agesen. The cartesian product algorithm: Simple and precise type inference of parametric polymorphism. In European Conference on Object-Oriented Programming, pages 2--26, 1995. Google ScholarDigital Library
- E. Arisholm. Dynamic coupling measurement for object-oriented software. In IEEE METRICS, pages 33--42, 2002. Google ScholarDigital Library
- E. Arisholm, L. Briand, and A. Foyen. Dynamic coupling measurement for object-oriented software. IEEE Trans. Software Engineering, 30(8):491--506, 2004. Google ScholarDigital Library
- E. Arisholm, D. Sjoberg, and M. Jorgensen. Assessing the chaneability of two object-oriented design alternatives---a controlled experiment. Emperical Software Engineering, 6(3):231--277, 2001. Google ScholarDigital Library
- D. Bacon and P. Sweeney. Fast static analysis of C++ virtual function calls. In ACM Conference on Object-Oriented Programming Systems, Languages, and Applications, pages 324--341, 1996. Google ScholarDigital Library
- S. Benlarbi and W. Melo. Polymorphism measures for early risk prediction. In ACM/IEEE International Conference on Software Engineering, pages 334--344, 1999. Google ScholarDigital Library
- M. Berndl, O. Lhotak, F. Qian, L. Hen-dren, and N. Umanee. Points-to analysis using BDD's. In ACM Conference on Programming Language Design and Implementation, pages 103--114, 2003. Google ScholarDigital Library
- L. C. Briand, P. T. Devanbu, and W. L. Melo. An investigation into coupling measures for C++. In ACM/IEEE International Conference on Software Engineering, pages 412--421, 1997. Google ScholarDigital Library
- L. C. Briand, J. Wust, and H. Lounis. Using coupling measurement for impact analysis in object-oriented systems. In IEEE International Conference on Software Maintenance, pages 475--482, 1999. Google ScholarDigital Library
- S. Chidamber and C. F. Kemerer. Towards a metrics suite for object oriented design. In ACM Conference on Object-Oriented Programming Systems, Languages, and Applications, pages 197--211, 1991. Google ScholarDigital Library
- S. R. Chidamber and C. F. Kemerer. A metrics suite for object oriented design. IEEE Trans. Software Engineering, 20(6):476--493, 1994. Google ScholarDigital Library
- J. Dean, D. Grove, and C. Chambers. Optimizations of object-oriented programs using static class hierarchy analysis. In European Conference on Object-Oriented Programming, pages 77--101, 1995. Google ScholarDigital Library
- G. DeFouw, D. Grove, and C. Chambers. Fast interprocedural class analysis. In ACM Symposium on Principles of Programming Languages, pages 222--236, 1998. Google ScholarDigital Library
- J. Eder, G. Kappel, and M. Schrefl. Coupling and cohesion in object-oriented systems. In Conference on Information and Knowledge Management, 1992.Google Scholar
- E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995. Google ScholarDigital Library
- D. Grove, G. DeFouw, J. Dean, and C. Chambers. Call graph construction in object-oriented languages. In ACM Conference on Object-Oriented Programming Systems, Languages, and Applications, pages 108--124, 1997. Google ScholarDigital Library
- T. Gyimoty, R. Ferenc, and I. Siket. Emprirical validation of object-oriented metrics on open source software for fault prediciotn. IEEE Trans. Software Engineering, 31(10):897--910, 2005. Google ScholarDigital Library
- O. Lhotak and L. Hendren. Scaling Java points-to analysis using Spark. In International Conference on Compiler Construction, pages 153--169, 2003. Google ScholarDigital Library
- D. Liang, M. Pennings, and M. J. Harrold. Extending and evaluating flow-insensitive and context-insensitive points-to analyses for Java. In ACM Workshop on Program Analysis for Software Tools and Engineering, pages 73--79, 2001. Google ScholarDigital Library
- A. Milanova. Precise identification of composition relationships for UML class diagrams. In IEEE/ACM Conference on Automated Software Engineering, pages 76--85, 2005. Google ScholarDigital Library
- A. Milanova. Composition inference for UML class diagrams. Technical Report 06--06, Rensselaer Polytechnic Institute, April 2006.Google Scholar
- A. Milanova, A. Rountev, and B. Ryder. Parameterized object-sensitivity for points-to and side-effect analyses for Java. In ACM International Symposium on Software Testing and Analysis, pages 1--12, 2002. Google ScholarDigital Library
- A. Rountev. Dataflow Analysis of Software Fragments. PhD thesis, Rutgers University, 2002. Google ScholarDigital Library
- A. Rountev. Precise identification of side-effect free methods. In IEEE International Conference on Software Maintenance, pages 82--91, 2004. Google ScholarDigital Library
- A. Rountev, A. Milanova, and B. G. Ryder. Points-to analysis for Java using annotated constraints. In ACM Conference on Object-Oriented Programming Systems, Languages, and Applications, pages 43--55, 2001. Google ScholarDigital Library
- A. Rountev, A. Milanova, and B. G. Ryder. Fragment class analysis for testing of polymorphism in Java softwhare. IEEE Trans. Software Engineering, 30(6):372--386, June 2004. Google ScholarDigital Library
- M. Streckenbach and G. Snelting. Points-to for Java: A general framework and an emprirical comparison. Technical report, U. Passau, September 2000.Google Scholar
- F. Tip and J. Palsberg. Scalable propagation-based call graph construction algorithms. In ACM Conference on Object-Oriented Programming Systems, Languages, and Applications, pages 281--293, 2000. Google ScholarDigital Library
- F. G. Wilkie and B. Kitchenham. Coupling measures and change ripples in C++ application software. Journal of Systems and Software, 52(2):157--164, 2000. Google ScholarDigital Library
- P. Yu, T. Systa, and H. A. Muller. Predicting fault-proneness using oo metrics: An industrial case study. In European Conference on Software Maintenance and Reengineering, pages 99--107, 2002. Google ScholarDigital Library
Index Terms
Static analysis for dynamic coupling measures
Recommendations
Using information retrieval based coupling measures for impact analysis
Coupling is an important property of software systems, which directly impacts program comprehension. In addition, the strength of coupling measured between modules in software is often used as a predictor of external software quality attributes such as ...
Combined Static and Dynamic Analysis
Static analysis is usually faster than dynamic analysis but less precise. Therefore it is often desirable to retain information from static analysis for run-time verification, or to compare the results of both techniques. However, this requires writing ...
On the definition of dynamic software measures
ESEM '12: Proceedings of the ACM-IEEE international symposium on Empirical software engineering and measurementThe quantification of several software attributes (e.g., size, complexity, cohesion, coupling) is usually carried out in a static fashion, and several hundreds of measures have been defined to this end. However, static measurement may only be an ...
Comments