Abstract
Component dependency is an important software measure. It is directly related to software understandability, maintainability, and reusability. Two important parameters in describing component dependency are the type of coupling between two components and the type of the dependent component. Depending upon the different types of coupling and the type of the dependent components, there can be different effects on component maintenance and component reuse. In this paper, we divide dependent components into three types. We then classify various component dependencies and analyze their effects on maintenance and reuse. Based on the classification, we present a dependency metric and validate it on 11 open-source Java components. Our study shows that a strong correlation exists between the measurement of the dependency of the component and the effort to reuse the component. This indicates that the classification of component dependency and the suggested metric could be further used to represent other external software quality factors.
Similar content being viewed by others
Explore related subjects
Discover the latest articles, news and stories from top researchers in related subjects.References
Caldiera G, Basili V R. Identifying and qualifying reusable software components. IEEE Computer, 1991, 24(2): 61–70.
Basili V R, Briand L C, Melo W L. A validation of object-oriented design metrics as quality indicators. IEEE Trans. Software Engineering, 1996, 22(10): 751–761.
Briand L C, Morasca S, Basili V R. Defining and validating measures for object-based high level design. IEEE Trans. Software Engineering, 1999, 25(5): 722–743.
Briand L, Wuest J, Lounis H. Using coupling measurement for impact analysis in object-oriented systems. In Proc. 19th IEEE Conf. Software Maintenance, Oxford, UK, 1999, pp.475–482.
EL Emam K, Melo W, Machado J C. The prediction of faulty classes using object-oriented design metrics. Journal of Systems and Software, 2001, 56(1): 63–75.
Harrison R, Counsell S, Nithi R V. Experimental assessment of the effect of inheritance on the maintainability of object-oriented systems. Journal of Systems and Software, 2000, 52(2/3): 173–179.
Price M W, Demurjian S A. Analyzing and measuring reusability in object-oriented design. In Proc. 12th ACM SIGPLAN Conf. Object-Oriented Programming, Systems, Languages, and Applications, Atlanta, Georgia, 1997, pp.22–33.
Biggerstaff T J, Perlis A J. Software Reusability: Concepts and Models. New York: ACM Press, NY, 1989.
Briand L, Morasca S, Basili V R. Defining and validating high-level design metrics. Computer Science Technical Report Series, Vol. CS-TR-3301, University of Maryland at College Park, College Park, MD, 1994.
Card D N, Glass R L. Measuring Software Design Quality. Upper Saddle River: Prentice-Hall, NJ, 1990.
Dandashi F. Software engineering: Theory, application and practice: A method for assessing the reusability of object-oriented code using a validated set of automated measurements. In Proc. the 17th ACM Symposium on Applied Computing, Madrid, Spain, 2002, pp.997–1003.
Berns G M. Assessing software maintainability. Communications of the ACM, 1984, 27(1): 14–23.
Gibson V R, Senn J A. System structure and software maintenance performance. Communications of the ACM, 1989, 32(3): 347–358.
Banker R D, Datar S M, Kemerer C F, Zweig, D. Software complexity and maintenance costs. Communications of the ACM, 1993, 36(11): 81–94.
Stevens W P, Myers G J, Constantine L L. Structured design. IBM Systems Journal, 1974, 13(2): 115–139.
Page-Jones M. The Practical Guide to Structured Systems Design, New York: Yourdon Press, 1980.
Kafura D G, Henry S M. Software quality metrics based on interconnectivity. Journal of Systems and Software, 1981, 2(2): 121–131.
Selby R W, Basili V R. Analyzing error-prone system structure. IEEE Trans. Software Engineering, 1991, 17(2): 141–152.
Offutt J, Harrold M J, Kolte P. A software metric system for module coupling. Journal of System and Software, 1993, 20(3): 295–308.
Eder J, Kappel G, Schrefl M. Coupling and cohesion in object-oriented systems. Technical Report, University of Klagenfurt, 1994.
Briand L C, Daly J W, Wust J K. A unified framework for coupling measurement in object-oriented systems. IEEE Trans. Software Engineering, 1999, 25(1): 91–121.
Offutt J, Abdurazik A, Schach S R. Coupling-based maintenance metrics for object-oriented software. Submitted for publication.
Schach S R, Jin B, Wright D R et al. Quality impacts of clandestine common coupling. Software Quality Journal, 2003, 11(3): 211–218.
Meyer B. Applying design by contract. IEEE Computer, 1992, 25(10): 40–51.
Spooner D. The Impact of Inheritance on Security in Object-Oriented Database Systems. Database Security, II: Status and Prospects, Landwehr C (ed.), North-Holland, 1989.
Hassoun Y, Johnson R, Counsell S. A dynamic runtime coupling metric for meta-level architectures. In Proc. 8th Euromicro Working Conf. Software Maintenance and Reengineering, 2004, pp.339–346.
Bruegge B, Dutoit A H. Object-Oriented Software Engineering Using UML, Patterns, and Java. Upper Saddle River: Pearson Prentice Hall, NJ, 2004.
Yu L. Understanding component co-evolution with a study on Linux. Empirical Software Engineering, 2007, 12(2): 123–141.
Gamma E, Helm R, Johnson R et al. Design Patterns: Elements of Reusable Object-Oriented Software. Reading: Addison-Wesley, MA, 1994.
Johnson R, Foote B. Designing reusable classes. Journal of Object-Oriented Programming, 1988, 1(2): 22–35.
The Apache Jakarta Project. 2006. http://jakarta.apache.org/.
Martin R C. Design principles and design patterns. http://www.objectmentor.com/resources/articles/Principles_and_Patterns.PDF, 2000.
Author information
Authors and Affiliations
Corresponding author
Electronic supplementary material
Rights and permissions
About this article
Cite this article
Yu, LG., Ramaswamy, S. Component Dependency in Object-Oriented Software. J Comput Sci Technol 22, 379–386 (2007). https://doi.org/10.1007/s11390-007-9058-y
Received:
Revised:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11390-007-9058-y