Skip to main content
Log in

Quantitatively measuring object-oriented couplings

  • Published:
Software Quality Journal Aims and scope Submit manuscript

Abstract

One key to several quality factors of software is the way components are connected. Software coupling can be used to estimate a number of quality factors, including maintainability, complexity, and reliability. Object-oriented languages are designed to reduce the number of dependencies among classes, which encourages separation of concerns and should reduce the amount of coupling. At the same time, the object-oriented language features change the way the connections are made, how they must be analyzed, and how they are measured. This paper discusses software couplings based on object-oriented relationships between classes, specifically focusing on types of couplings that are not available until after the implementation is completed, and presents a static analysis tool that measures couplings among classes in Java packages. Data from evaluating the tool on several open-source projects are provided. The coupling measurement is based on source code, which has the advantage of being quantitative and more precise than previous measures, but the disadvantage of not being available before implementation, and thus not useful for some predictive efforts.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5

Similar content being viewed by others

Notes

  1. Online at http://www.uml.org/.

  2. Online at: http://cvs.apache.org/viewcvs.cgi/jakarta-servletapi-5/.

  3. Online at: http://jakarta.apache.org/tomcat/.

  4. Online at: http://www.antlr.org/download.html.

  5. Online at: http://ostermiller.org/tulipchain/.

  6. Online at: http://jakarta.apache.org/velocity/.

  7. Online at: http://linux.cs.lewisu.edu/apache/jakarta/tapestry/source/3.0-beta-1/.

  8. The developer, Terence Parr at University of San Francisco, explained via email that version 2 had significant problems, which recently motivated him to write version 3.

References

  • Abdurazik, A., & Offutt, J. (2006). Coupling-based class integration and test order. In Workshop on Automation of Software Test (AST 2006) Shanghai, China, May 2006 (pp. 50–56).

  • Abdurazik, A., & Offutt, J. (2007). Using coupling-based weights for the class integration and test order problem. The Computer Journal, 1–14, doi:10.1093/comjnl/bxm054.

  • Alexander, R. T., & Offutt, J. (1999). Analysis techniques for testing polymorphic relationships. In Proceedings of the Thirtieth International Conference on Technology of Object-Oriented Languages and Systems (TOOLS USA ’99), August 1999 (pp. 104–114). Santa Barbara, CA: IEEE Computer Society Press.

  • Alexander, R. T., & Offutt, J. (2000). Criteria for testing polymorphic relationships. In Proceedings of the 11th International Symposium on Software Reliability Engineering, October 2000 (pp. 15–23). San Jose, CA: IEEE Computer Society Press.

  • Arisholm, E. (2002). Dynamic coupling measures for object-oriented software. In Proceedings of the Eighth IEEE Symposium on Software Metrics (METRICS’02), June 2002 (pp. 33–42). IEEE.

  • Bansiya, J. (2000). Evaluating framework architecture structural stability. ACM Computing Surveys, 32(1).

  • Basili, V., Briand, L., & Melo, W. (1996). A validation of object-oriented design metrics as quality indicators. IEEE Transactions on Software Engineering, 22(10), 751–761.

    Article  Google Scholar 

  • Bilal, H. Z., & Black, S. (2006). Computing ripple effect for object oriented software. In Quantitative Approaches in Object-Oriented Software Engineering (QAOOSE), Nantes, France, July 2006.

  • Black, S. (2001). Computing ripple effect for software maintenance. Journal of Software Maintenance: Research and Practice, 13(4), 263.

    Article  MATH  MathSciNet  Google Scholar 

  • Bohner, S. A., & Arnold, R. S. (1996). Software change impact analysis. Los Alamitos, CA: IEEE Computer Society Press.

    Google Scholar 

  • Briand, L. C., Daly, J. W., & Wüst, J. K. (1999a). A unified framework for coupling measurement in object-oriented systems. IEEE Transactions on Software Engineering, 25(1), 91–121.

    Article  Google Scholar 

  • Briand, L., Devanbu, P., & Melo, W. (1997). An investigation into coupling measures for C++. In Proceedings of the Nineteenth International Conference on Software Engineering, May 1997 (pp. 412–421). Boston, MA: IEEE Computer Society Press.

  • Briand, L., Feng, J., & Labiche, Y. (2002). Using genetic algorithms and coupling measures to devise optimal integration test orders. In Proceedings of the 14th International Conference on Software Engineering and Knowledge Engineering (pp. 43–50). Ischia, Italy: IEEE Computer Society Press.

  • Briand, L., Labiche, Y., & Wang, Y. (2003). An investigation of graph-based class integration test order strategies. IEEE Transactions on Software Engineering, 29(7), 594–607.

    Article  Google Scholar 

  • Briand, L., Wüst, J., & Lounis, H. (1999b). Using coupling measurement for impact analysis in object-oriented systems. In Proceedings of the 1999 IEEE Conference on Software Maintenance, Oxford, UK, August 1999 (pp. 475–482).

  • Briand, L. C., Wüst, J., & Lounis, H. (1999). Using coupling measurement for impact analysis in object-oriented systems. In Proceedings of the IEEE International Conference on Software Maintenance (ICSM). Oxford, UK: IEEE Computer Society Press.

  • Chidamber, S. R., & Kemerer, C. F. (1992). A metrics suite for object oriented design. IEEE Transactions on Software Engineering, 20(6), 476–493.

    Article  Google Scholar 

  • Coad, P., & Yourdon, E. (1991a). Object-oriented analysis. Englewood Cliffs, NJ: Prentice-Hall.

    Google Scholar 

  • Coad, P., & Yourdon, E. (1991b) Object-oriented analysis (2nd edn.). Englewood Cliffs, NJ: Prentice-Hall.

    Google Scholar 

  • Collofello, J. S., & Vennergrund, D. A. (1987). Ripple effect analysis based on semantic information. In AFIPS Conference Procceddings (NCC) (Vol. 56, pp. 657–682). ACM SIGSOFT/SIGPLAN.

  • Constantine, L. L., & Yourdon, E. (1979). Structured design. Englewood Cliffs, NJ: Prentice-Hall.

    MATH  Google Scholar 

  • Eder, J., Kappel, G., & Schrefl, M. (1994). Coupling and cohesion in object-oriented systems. Technical report, University of Klagenfurt.

  • El Emam, K., Melo, W., & Machado, J. C. (2001). The prediction of faulty classes using object-oriented design metrics. Journal of Systems and Software, 56(1), 51–62.

    Article  Google Scholar 

  • Elish, M. (2005). A case study on structural characteristics of object-oriented design and its stability. In Proceedings of the 23rd IASTED International Multi-Conference: Software Engineering, Innsbruck, Austria, February 2005.

  • Epping, A., & Lott, C. M. (1994). Does software design complexity affect maintenance effort? In Proceedings of the 19th NASA Software Engineering Laboratory Workshop, Goddard Space Center, December 1994.

  • Fenton, N., & Melton, A. (1990). Deriving structurally based software measures. Journal of Systems and Software, 12(3), 177–886.

    Article  Google Scholar 

  • Fenton, N. E., & Pfleeger, S. L. (1997). Software metrics: A rigorous & practical approach (2nd edn.). Boston, MA: PWS Publishing Company.

    Google Scholar 

  • Ferneley, E. (2000). Coupling and control flow measures in practice. Journal of Systems and Software, 51(2), 99–109.

    Article  Google Scholar 

  • Grosser, D., Sahraoui, H., & Valtchev, P. (2002). Predicting software stability using case-based reasoning. In Proceedings 17th IEEE International Conference on Automated Software Engineering, Edinburgh, UK, September 2002 (pp. 295–298).

  • Grosser, D., Sahraoui, H., & Valtchev, P. (2003). An analogy-based approach for predicting design stability of Java classes. In Proceedings 9th International Software Metrics Symposium, Sydney, Australia, September 2003 (pp. 252–262).

  • Hall, G. A., Tao, W., & Munson, J. C. (2005). Measurement and validation of module coupling attributes. Software Quality Journal, 13, 281–296.

    Article  Google Scholar 

  • Harman, M., Okunlawon, M., Sivagurunathan, B., & Danicic, S. (1997). Slice-based measurement of coupling. In IEEE/ACM ICSE workshop on Process Modelling and Empirical Studies of Software Evolution (PMESSE’97), Boston, MA, May 1997 (pp. 28–32).

  • Henry, S., & Kafura, D. (1981). Software structure metrics based on information flow. IEEE Transactions on Software Engineering, 7(5), 510–518.

    Article  Google Scholar 

  • Hitz, M., & Montazeri, B. (1995). Measuring coupling and cohesion in object-oriented systems. In Proceedings of the International Symposium on Applied Corporate Computing, Monterrey, Mexico, October 1995 (pp. 412–421).

  • Hutchens, D. H., & Basili, V. R. (1985). System structure analysis: Clustering with data bindings. IEEE Transactions on Software Engineering, 11(8), 749–757.

    Article  Google Scholar 

  • IEEE. (1990). Standard glossary of software engineering terminology. New York: Institute of Electrical and Electronic Engineers. ANSI/IEEE Std 610.12-1990.

  • IEEE. (1998). Standard for a software quality metrics methodology. New York: Institute of Electrical and Electronic Engineers. ANSI/IEEE Std 1061-1998.

  • Ince, D. (1988). Software development: Fashioning the baroque. Oxford, UK: Oxford University Press.

    Google Scholar 

  • Inc StatSoft. (2006). Electronic statistics textbook. StatSoft (online), Tulsa, OK. http://www.statsoft.com/textbook/stathome.html.

  • Jalote, P. (1991). An integrated approach to software engineering. New York, NY: Springer-Verlag.

    MATH  Google Scholar 

  • Jazayeri, M. (2002). On architectural stability and evolution. In Reliable Software Technlogies-Ada-Europe 2002, Lecture Notes in Computer Science (pp. 13–23). Springer-Verlag.

  • Jazayeri, M., Gall, H., & Hajek, K. (1998). Detection of logical coupling based on product release history. In Proceedings of the 1998 IEEE Conference on Software Maintenance, Bethesda, MD, November 1998 (pp. 190–198).

  • Jin, Z., & Offutt, J. (1995). Integration testing based on software couplings. In Proceedings of the Tenth Annual Conference on Computer Assurance (COMPASS 95), June 1995 (pp. 13–23). Gaithersburg, MD: IEEE Computer Society Press.

  • Jin, Z., & Offutt, J. (1998). Coupling-based criteria for integration testing. Software Testing, Verification, and Reliability, 8(3), 133–154.

    Article  Google Scholar 

  • Kafura, D., & Henry, S. (1981). Software quality metrics based on interconnectivity. Journal of Systems and Software, 2, 121–131.

    Article  Google Scholar 

  • Kung, D., Gao, J., Hsia, P., Lin, J., & Toyoshima, Y. (1995). Class firewall, test order, and regression testing of object-oriented programs. Journal of Object-Oriented Programming, 8(2), 51–65.

    Google Scholar 

  • Kung, D., Gao, J., Hsia, P., Toyoshima, Y., Chen, C., Kim, Y.-S., & Song, Y.-K. (1995). Developing an object-oriented software testing and maintenance environment. Communications of the ACM, 38(10), 75–88.

    Article  Google Scholar 

  • Langley, R. (1971). Practical statistics simply explained. New York: Dover Publications.

    Google Scholar 

  • Li, W., Etzkorn, L., Davis, C., & Talburt, J. (2000). An empirical study of object-oriented system evolution. Information and Software Technology, 42(6), 373–381.

    Article  Google Scholar 

  • Malloy, B. A., Clarke, P. J., & Lloyd, E. L. (2003). A parameterized cost model to order classes for class-based testing of C++ applications. In Proceedings of the 14th International Symposium on Software Reliability Engineering. Denver, CO: IEEE Computer Society Press.

  • Martin, R. C. (2003). Agile software development: Principles, patterns, and practices. Upper Saddle River, NJ: Prentice Hall.

    Google Scholar 

  • May, J., Hughes, G., & Shaban, N. (1999). Formal coupling of software components. In Fifteenth Annual UK Performance Engineering Workshop (pp. 35–44). Research Press.

  • McCabe, T. J. (1967). A complexity measure. IEEE Transactions on Software Engineering, 2(4), 308–320.

    Article  MathSciNet  Google Scholar 

  • Myers, G. (1974). Reliable software through composite design. New York, NY: Mason and Lipscomb Publishers.

    Google Scholar 

  • Offutt, J., Harrold, M. J., & Kolte, P. (1993). A software metric system for module coupling. Journal of Systems and Software, 20(3), 295–308.

    Article  Google Scholar 

  • Offutt, J., & Li, L. (1996). Algorithmic analysis of the impact of changes to object-oriented software. In Proceedings of 1996 IEEE Conference on Software Maintenance, November 1996 (pp. 171–184). Monterey, CA: IEEE Computer Society Press.

  • Orso, A., & Pezze, M. (1999). Integration testing of procedural object oriented programs with polymorphism. In Proceedings of the Sixteenth International Conference on Testing Computer Software, June 1999 (pp. 103–114). Washington DC: ACM SIGSOFT.

  • Page-Jones, M. (1980). The practical guide to structured systems design. New York, NY: YOURDON Press.

    Google Scholar 

  • Parr, T. (1997). ANother Tool for Language Recognition. http://www.antlr.org. Accessed March 2008.

  • Schach, S. R., Jin, B., Wright, D. R., Heller, G. Z., & Offutt, A. J. (2002). Maintainability of the Linux kernel. IEEE Proceedings, Special Issue on Open Source Software Engineering, 149(1), 18–23.

    Google Scholar 

  • Schneidewind, N. F. (1992). Methodology for validating software metrics. IEEE Transactions on Software Engineering, 18(5), 410–422.

    Article  Google Scholar 

  • Selby, R. W., & Basili, V. R. (1991). Analyzing error-prone system structure. IEEE Transactions on Software Engineering, 17(2), 141–152.

    Article  Google Scholar 

  • Stephens, M. A. (1974). EDF statistics for goodness of fit and some comparisons. Journal of the American Statistical Association, 69(347), 730–737.

    Article  Google Scholar 

  • Stevens, W. P., Myers, G. J., & Constantine, L. L. (1974). Structured design. IBM Systems Journal, 13(2), 115–139.

    Article  Google Scholar 

  • Tai, K.-C., & Daniels, F. J. (1997). Test order for inter-class integration testing of object-oriented software. In The Twenty-First Annual International Computer Software and Applications Conference (COMPSAC ’97), August 1997 (pp. 602–607). Santa Barbara, CA: IEEE Computer Society.

  • Troy, D. A., & Zweben, S. H. (1981). Measuring the quality of structured designs. Journal of Systems and Software, 2, 112–120.

    Article  Google Scholar 

  • Wilkie, F. G., & Kitchenham, B. A. (2000). Coupling measures and change ripples in C++ application software. Journal of Systems and Software, 52(2–3):157–164. Maintenance, OO, Metrics.

    Article  Google Scholar 

  • Xia, F. (2000). On the concept of coupling, its modeling and measurement. Journal of Systems and Software, 50(1), 75–84.

    Article  Google Scholar 

  • Yau, S. S., & Collofello, J. S. (1980). Some stability measures for software maintenance. IEEE Transactions on Software Engineering, 6(6).

Download references

Acknowledgments

This work was sponsored in part by the National Science Foundation under grant number CCR-0097056. Offutt and Abdurazik were sponsored in part by National Institute of Standards and Technology (NIST), Software Diagnostics and Conformance Testing Division (SDCT) in support of its standards and conformance testing program. Thanks to Terence Parr, the developer of ANTLR, for the tool and for quick answers to our pushy questions.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Jeff Offutt.

Rights and permissions

Reprints and permissions

About this article

Cite this article

Offutt, J., Abdurazik, A. & Schach, S.R. Quantitatively measuring object-oriented couplings. Software Qual J 16, 489–512 (2008). https://doi.org/10.1007/s11219-008-9051-x

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s11219-008-9051-x

Keywords

Navigation