Software Engineering Metrics for Object Oriented Programming Name – Shrijit Joshi Course – CSC 532 Instructor – Dr. Box Email – ssj005@latech.edu Date – November 3, 2005 Abstract Software engineering metrics is an important feature in the software management functions of project planning and project evaluation. Researchers have developed various metrics for object oriented software development environment as there has been an extensive use of object oriented methods in software development. Object oriented programming requires a different approach in design and implementation than that in structured programming. In addition to this, as objects are the fundamental building blocks for the object oriented programming rather than algorithm, the approach of software engineering metrics for the object oriented environment should be different from the functional programming environment. Hence, object oriented paradigm results in new relationships within module and among other software modules. Metrics developed for structured programming do not account for these new relationships and may be insufficient for use in object oriented environment. In this context, this paper reviews various software engineering metrics for the object oriented development environment in the literature. Keywords Object oriented programming, Software engineering metrics 1. Introduction ‘Software’ refers to a program and all of the associated information and materials needed to support its installation, operation, repair and enhancement [1]. ‘Software engineering’ refers to the disciplined applications of engineering, scientific 1 and mathematical principles and methods to the economical production of quality software [1, 2]. The field of software engineering was born in 1968 in response to the chronic failures of large software projects to meet schedule and budget constraints [2]. Software engineering process constitutes of – (1) requirement, (2) analysis, (3) design, (4) implementation, and (5) test work flows. One of the key issues in the management of the development process is the capability to measure and record the relevant attributes of the software products and of the process itself in a structured and coherent framework [3]. The availability of the software metric helps manager to control the various activities of the development life cycle and contributes to the overall objective of software quality. Object oriented programming is a popular concept in today’s software development environment. They are often heralded as the silver bullet for solving software problems, while in reality there is no silver bullet; object oriented technology has proved its value for the systems that must be maintained and modified [4]. To evaluate the quality of the object oriented software, we need to assess and analyze its design and implementation using appropriate metrics and evaluation techniques [5]. Metrics developed for structured programming may be insufficient for assessing and analyzing the design and implementation of the object oriented development environment. In this context, this paper illustrates various software engineering metrics for the object oriented development environment and answers whether any of the traditional metrics can be adapted to the object oriented environment. The rest of the paper is organized as follows – Section 2 deals with the characteristics and the importance of having software engineering metrics for software development. Section 3 reviews various software engineering metrics for object oriented programming and conclusion of this term paper is given in section 5. 2. Characteristics and Importance of Software Engineering Metrics Software engineering metric provides measurement which is an ideal mechanism for characterizing, evaluating, predicting, and providing motivation for the various aspects of software construction processes and products [6-9]. Using the software metric, understanding of both the product and the construction process is achieved if measurements are taken on both the software processes and the various software products [6, 10]. This helps in improving the quality of the product. Subjective and objective metrics are required for achieving the success of applying metric for object oriented programming. Many process, product and environment aspects can be characterized by either subjective or objective metrics. Other aspects which are not characterized by both; but they can be characterized on a quantitative scale to a reasonable degree of accuracy [6, 8, 11]. Most aspects of software processes and products are too complicated to be captured by a single metric. For definition and interpretation purposes, a set of metrics that frame the purpose for measurement needs to be defined [6, 9]. 2 Software engineering metric helps in [3] – (1) identification of ‘hidden’ problems in earlier stages, (2) effective control of quality, and (3) providing the most comprehensive solution to the problem of evaluating the benefits of technological migration or transition. Although the metrication in object oriented environment seems to be familiar, traditional software metrics are aimed at the traditional procedural – oriented languages. Traditional software metrics do not address the various issues in object oriented paradigm like – classes, methods, inheritance, polymorphism, encapsulation etc [3]. Thus, a number of researchers have developed various metrics for object oriented environment to manage and foster quality in object oriented software environment. 3. Software Engineering Metrics for Object Oriented Environment The problem of assessing the design quality of object oriented system has been of interest to many researchers [12-17]. This paper demonstrates the candidate metrics derived by Morris [18] for productivity measurement while making observations on object oriented code. List of software engineering metrics for object oriented environment derived by Morris [18, 19] are as follows – (1) Methods per class, (2) Inheritance dependencies, (3) Degree of coupling between objects, (4) Degree of cohesion of objects, (5) Object library effectiveness, (6) Factoring effectiveness, (7) Degree of reuse of inheritance methods, (8) Average method complexity, (9) Application granularity. 3.1 Methods per class [18] Addition of a method to an object increases the size of the object. Thus, the larger number of methods per object complicates testing due to the increased object size and complexity. 3.2 Inheritance dependencies [18] In the context of reusability, inheritance tree depth is likely to be more favorable than the inheritance tree breadth. But in terms of testing, deep inheritance is difficult to test. 3 3.3 Degree of coupling between objects [18] In the context of reusability, the higher the degree of object independence the more likely the object will be suitable for reuse within the same applications and within other applications. Testing is likely to degrade with the higher the degree of coupling between objects as object interactions and interconnections are more complex. 3.4 Degree of Cohesion of Objects [18] In the context of reusability, the objects which are less dependent on other objects are likely to be more reusable. Though, in terms of reliability low degree of cohesion adds complexity which can translate into a reduction in application reliability. 3.5 Average method complexity [18] In terms of reliability, greater method complexity adversely affects the application reliability. In terms of testing, greater method complexity is difficult to test. 3.6 Degree of reuse of inheritance methods [18] Simply defining methods in such a way that they can be reused via inheritance does not guarantee that those methods are actually reused. Fernando [3] derived various software engineering metric for object oriented programming. Here in this paper, we will consider size metrics derived by [3]. 3.7 Size metrics [3] Size metrics are an important piece of the resource estimation process. Various candidate size metrics derived by [3] are – (1) method size metrics, (2) class size metrics, (3) system size metrics. 4. Conclusion This paper presents an overview of a compilation of software engineering metrics for object oriented programming environment that should be considered throughout the development life cycle. Software engineering metrics derived by Morris and Fernando are also studied in this paper. Applications of software engineering metrics to software development results in developing a clearer picture of system with regard to whether the notion of the object oriented programming has been fully applied to the best of its capabilities. In addition to this, these software metrics are useful in estimating any shortcomings of a similar nature that can be rectified in the future systems. 5. References 4 1. Humphrey, W.S., The Software Engineering Process: Definition and Scope. The Mythical Man-Month. 1975: Addison Wesley. 2. Carlo Ghezzi, Mehdi Jazayeri, and D. Mandrioli, Fundamentals of Software Engineering. 3. Fernando Brito e Abreu and R. Carapuça, Candidate Metrics for Object-Oriented Software within a Taxonomy Framework. Journal of Systems and Software, July 1994. 26(1). 4. Rosenberg, L.H., Applying and Interpreting Object Oriented Metrics. Software Assurance Technology Center, NASA. 5. Sherif M. Yacoub, Hany H. Ammar, and T. Robinson, Dynamic Metrics for Object Oriented Designs. 6. Victor R. Basili and H.D. Rombach, The TAME Project: Towards Improvement Oriented Software Environments. IEEE Transactions of Software Engineering, June 1988. 14(6). 7. Basili, V.R. Quantitative evaluation of software engineering methodology. in First Pan Pacific Computer Conference. July 1985. Melbourne, Australia. 8. V. R. Basili, ” in Proc. Tenth Annu. Sojiware Engineering, N.G.S.F.C. Workshop, Greenbelt, MD, Dec., and 1985. Can we measure software technology: Lessons learned from 8 years of trying. in Tenth Annu. Sojiware Engineering Workshop. Dec. 1985. NASA Goddard Space Flight Center, Greenbelt, MD,USA. 9. V. R. Basili and E. E. Katz. Measures of interest in an Ada development. in IEEE Computer Society Workshop Software Engineering. Apr. 1983. Technology Transfer, Miami, FL. 10. Agresti, W. SEL Ada experiment: Status and design experience. in Eleventh Annu. Software Engineering Workshop. Dec. 1986. NASA Goddard Space Flight Center, Greenbelt, MD. 11. -. Tailoring the software process to project goals and environments. in Ninth Int. Conference on Software Engineering. 1987. Monterey,CA. 12. S. Chidamber and C. Kemerer, A Metrics Suite for Object Oriented Design. IEEE Transactions on Software Engineering, June 1994. 20(6): p. 476-493. 5 13. Hitz, M. and B. Montazeri. Measuring Coupling and Cohesion in Object-oriented Systems. in International Symposium on Applied Corporate Computing. Oct. 1995. Monterrey, Mexico. 14. M. Hitz and B. Montazeri. Measuring Product Attributes of Object-Oriented Systems. in 5th European Software Engineering Conference (ESEC `95). Barcelona, Spain. 15. M. Hitz and B. Montazeri, Chidamber & Kemerer's Metrics Suite, A Measurement Theory Perspective. IEEE Transactions on Software Engineering, April 1996. 22(4): p. 276-270. 16. L.Briand, P. Devanbu, and W. Melo. An Investigation into Coupling Measures for C++. in 19th International Conference on Software Engineering (ICSE'97). May 1997. Boston. 17. L. Briand, J. Daly, and J. Wurst, A Unified Framework for Coupling Measurement in Object-Oriented Systems. IEEE Transaction on Software Engineering, Jan/Feb 1999. 25(1): p. 91-121. 18. Morris, Metrics for Object-Oriented Software Development Environments, in Master's Thesis, Sloan School of Management. 1989, M. I. T. 19. http://irb.cs.uni-magdeburg.de/sw-eng/us/oop/morris.shtml 6