Skip to main content
Log in

Multiple-parameter coupling metrics for layered component-based software

  • Published:
Software Quality Journal Aims and scope Submit manuscript

Abstract

Coupling represents the degree of interdependence between two software components. Understanding software dependency is directly related to improving software understandability, maintainability, and reusability. In this paper, we analyze the difference between component coupling and component dependency, introduce a two-parameter component coupling metric and a three-parameter component dependency metric. An important parameter in both these metrics is coupling distance, which represents the relevance of two coupled components. These metrics are applicable to layered component-based software. These metrics can be used to represent the dependencies induced by all types of software coupling. We show how to determine coupling and dependency of all scales of software components using these metrics. These metrics are then applied to Apache HTTP, an open-source web server. The study shows that coupling distance is related to the number of modifications of a component, which is an important indicator of component fault rate, stability and subsequently, component complexity.

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
Fig. 6
Fig. 7
Fig. 8
Fig. 9

Similar content being viewed by others

Notes

  1. Content coupling such as that appears in Fortran is ignored here, because it is no longer supported by most modern programming languages.

  2. http://httpd.apache.org/

  3. http://apache.wirebrain.de/lxr/source/?v=2.2.0

  4. For example, if both component C1 and component C2 access the same global variable gv, we can say that C1 is dependent on C2 via gv if and only if C1 uses the value of gv that is defined in C2 . For more information about definition-use analysis of global variables, readers are referred to (Yu et al. 2004).

  5. http://cvs.apache.org/viewcvs.cgi/httpd/httpd/branches/2.2.x/

References

  • Abdurazik, A. (2007). Coupling-based analysis of object-oriented software, Ph.D. Dissertation, George Mason University. Available at: http://www.ise.gmu.edu/~ofut/rsrch/aynur-dissertation.pdf.

  • Banker, R. D., Datar, S. M., Kemerer, C. F., & Zweig, D. (1993). Software complexity and maintenance costs. Communications of the ACM, 36(11), 81–94.

    Article  Google Scholar 

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

    Article  Google Scholar 

  • Berns, G. M. (1984). Assessing software maintainability. Communications of the ACM, 27(1), 14–23.

    Article  Google Scholar 

  • Biggerstaff, T. J., & Perlis, A. J. (1989). Software reusability: Concepts and models (Vol. 1). New York, NY: ACM Press.

    MATH  Google Scholar 

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

    Article  Google Scholar 

  • Briand, L. C., Morasca S., & Basili V. R. (1994). Defining and Validating High-Layer Design Metrics, Computer Science Technical Report Series, Vol. CS-TR-3301, University of Maryland at College Park, College Park, MD.

  • Brown, A. W. (1997). Background Information on CBD, SIGPC, Vol. 1. No. 18.

  • Bruegge, B., & Dutoit, A. H. (2004). Object-oriented software engineering using UML, patterns, and Java. Upper Saddle River, NJ: Pearson Prentice Hall.

    Google Scholar 

  • Card, D. N., & Glass, R. L. (1990). Measuring software design quality. Upper Saddle River, NJ: Prentice-Hall.

    Google Scholar 

  • Chidamber, S., & Kemerer, C. (1994). A metric suite for object oriented design. IEEE Transactions on Software Engineering, 30(6), 476–493.

    Article  Google Scholar 

  • Dandashi, F. (2002). Software engineering: theory, application and practice: A method for assessing the reusability of object-oriented code using a validated set of automated measurements. In Proceedings of the 2002 ACM Symposium on Applied Computing, pp. 997–1003.

  • Frakes, W. B., & Succi, G. (2001). An industrial study of reuse, quality, and productivity. Journal of Systems and Software, 57(2), 99–106.

    Article  Google Scholar 

  • Gibson, V. R., & Senn, J. A. (1989). System structure and software maintenance performance. Communications of the ACM, 32(3), 347–358.

    Article  Google Scholar 

  • Harrison, R., Counsell, S., & Nithi, R. (2000). Experimental assessment of the effect of inheritance on the maintainability of object-oriented systems. Journal of System and Software, 52(2–3), 173–179.

    Article  Google Scholar 

  • Hassoun, Y., Johnson, R., & Counsell, S. (2004). A dynamic runtime coupling metric for meta-level architectures. In Proceedings of the Eighth Euromicro Working Conference on Software Maintenance and Reengineering (CSMR’04), pp. 339–346.

  • Jonge, M. D. (2004). Multi-level component composition. 2nd Groningen Workshop on Software Variability Modeling (SVM’04).

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

    Article  Google Scholar 

  • Leavens, G., & Sitaraman, M. (2000). Foundations of component-based systems. Cambridge, UK: Cambridge University Press.

    Google Scholar 

  • Lim, W. (1994). Effects of reuse on quality, productivity, and economics. IEEE Software, 11(5), 23–30.

    Article  Google Scholar 

  • Lüer, C., Rosenblum, D. S., & van der Hoek A. (2001). The evolution of software evolvability. In Proceedings of the 4th International Workshop on Principles of Software Evolution, Vienna, Austria, September 2001, pp. 134–137.

  • Mei, H., Zhang, L., & Yang F. (2001). A software configuration management model for supporting component-based software development. ACM SIGSOFT, 26(2), 53–58.

    Article  Google Scholar 

  • Nolan, B. (1994). Data analysis, an introduction. Cambridge, MA: Polity Press.

    Google Scholar 

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

    Article  Google Scholar 

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

    Google Scholar 

  • Price, M. W., & Demurjian, S. A. (1997). Analyzing and measuring reusability in object-oriented design. In Proceedings of the 12th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pp. 22–33.

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

    Article  Google Scholar 

  • Simon, H. A. (1969). The architecture of complexity, the sciences of the artificial. Cambridge, MA: MIT Press.

    Google Scholar 

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

    Article  Google Scholar 

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

    Article  Google Scholar 

  • Yu, L. (2007). Understanding component co-evolution with a study on Linux. Empirical Software Engineering, 12(2), 123–141.

    Article  Google Scholar 

  • Yu, L., & Ramaswamy, S. (2007). Verifying design modularity, hierarchy, and interaction locality using data clustering techniques. In Proceedings of the 45th ACM Southeast Conference, Winston-Salem, NC, March 2007, pp. 419–424.

  • Yu, L., Schach, S. R., Chen, K., & Offutt, J. (2004). Categorization of common coupling and its application to the maintainability of the Linux Kernel. IEEE Transactions on Software Engineering, 30(10), 694–706.

    Article  Google Scholar 

Download references

Acknowledgements

This work was based in part, upon research supported by the National Science Foundation (CNS-0619069, EPS-0701890 and OISE 0650939), Acxiom Corporation (# 281539) and NASA EPSCoR Arkansas Space Grant Consortium (# UALR 16804). Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the funding agencies. The authors would like to thank Professor Stephen R. Schach of Vanderbilt University for his many suggestions. The authors would also like to thank the anonymous reviewers for their valuable comments and suggestions which greatly improved the earlier version of this paper.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Liguo Yu.

Rights and permissions

Reprints and permissions

About this article

Cite this article

Yu, L., Chen, K. & Ramaswamy, S. Multiple-parameter coupling metrics for layered component-based software. Software Qual J 17, 5–24 (2009). https://doi.org/10.1007/s11219-008-9052-9

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s11219-008-9052-9

Keywords

Navigation