Object Oriented Metrics Ali Kamandi Sharif University of Technology [email protected] November 2006 1 OO Metrics: Introduction [Pressman] Measurement and metrics are key components of any engineering discipline. The use of metrics for OO systems has progresses much more slowly than the use of OO methods. As OO systems become more pervasive, it is essential that software engineers have quantitative measurements for assessing the quality of designs at both the architectural and component levels. The intent of OO( or non-OO) metrics: • To better understand the quality of the product. • To assess the effectiveness of the process. • To improve the quality of work performed at a 2 project level. [Pressman 2001] [RUP] Principles of Metrics Metrics must be • • • • • Simple Objective Easy to collect (automated) Easy to interpret Hard to misinterpret The selection of an extensive set of metrics will depend on the project's characteristics and context 3 [Pressman] Metrics for the OO Design Model Whitmire[WHI97] describes nine distinct and measurable characteristics of an OO design: • Size (Population, Volume, Length, Functionality) • Complexity (Interrelated classes) • Coupling ( No. of Collaborations between classes or messages) • Sufficiency (the degree to which a design component possesses features in its abstraction from the current application point of view) • Completeness ( same as sufficiency but consider multiple points of view for fully representation of problem domain) • Cohesion ( the degree to which the set of properties it possesses is part of the problem or design domain) • Primitiveness (the degree to which an operation is atomic) • Similarity (the degree to which two or more classes are similar) • Volatility (the degree of change or churn in an artifact because of defects or changing requirements ) 4 Software Metrics Some Traditional Metrics • McCabe Cyclomatic Complexity (CC) • Lines of Code (LOC) • Comment Percentage (CP) Some Object-Oriented Metrics • Weighted Methods Per Class (WMC) • Coupling Between Object Classes (CBO) • Response for a Class (RFC) • Depth of Inheritance Tree (DIT) • Lack of Cohesion in Methods (LOCM) 5 Researches on OO Metrics Chidamber and Kemerer: CK Metrics Suite, 1994 CK suite validated by Basili in 1996 and again by Tang in 1999 Many other object-oriented metrics are derived from the CK suite of object-oriented metrics Lorenz and Kidd 1994 Harrison, Counsell and Nithi, MOOD Metric Suite, 1998 Whitmire: OO Design Measurements, 1997 … 6 [Pressman] Class-Oriented Metrics 1 Chidamber and Kemerer 1994: • WMC: weighted methods per class (Σ complexity of methods) (low) Amount of effort required to implement and test a class Complexity of inheritance tree. Application specific and limiting potential reuse • DIT: depth of the inheritance tree (Max length node to root) (low) Lower level classes inherit many methods. Difficulties when attempting to predict the behavior of a class. Greater design complexity. Positive: many methods may be reused • NOC: number of children ( subclasses that are immediately subordinate to a class) 7 High: reuse, the amount of test [Pressman] Class-Oriented Metrics 2 Chidamber and Kemerer (Continue): • CBO: coupling between object classes (No. of coll. in CRC) (low) High: reusability will decrease, complicated testing and modifications This is consistent with the general guidline to reduce coupling. • RFC: response for a class (No. of methods in response set) (low) High: Testing and overall design complexity will increase. • LCOM: lack of cohesion in methods (No of methods that access one or more of the same attributes) (low) High: Complexity of class design, class might be better designed by breaking it into two or more separate classes. It is desirable to keep cohesion high; that is keep LCOM low. 8 [Pressman] Class-Oriented Metrics 3 Lorenz and Kidd [LOR94]: • Size-oriented: Counts of attributes and operations. • Inheritance-based: The manner in which operations are reused through the class hierarchy. • Internals: Look at cohesion and code-oriented issues. • Externals: Examine coupling and reuse. A Sampling of Metrics: • CS: class size (no. of operations) (no. of attributes) (low) High: class has too much responsibility, reduce the reusability, complicate implementation and testing • NOO: number of operations overridden by a subclass (low) • NOA: number of operations added by a subclass • SI: specialization index = NOO * level / total no of methods 9 [Pressman] Class-Oriented Metrics The MOOD Metrics Suite: Harrison, Counsell and Nithi, 1998 Method inheritance factor: inherited methods / total methods Coupling factor: formula Polymorphism factor: formula 10 [Pressman] Operation-Oriented Metrics Lorenz and Kidd [LOR94]: average operation size operation complexity average number of parameters per operation 11 [Pressman] Testability Metrics Proposed by Binder [BIN94]: encapsulation related • lack of cohesion in methods • percent public and protected • public access to data members inheritance related • number of root classes • fan in: multiple inheritance • number of children and depth of inheritance tree 12 [Pressman] OO Project Metrics Proposed by Lorenz and Kidd [LOR94]: number number number of of of scenario scripts key classes subsystems 13 Req. and Use Case Model Metrics [RUP] Characteristic Metrics Size Number of requirements Number of Use Cases Number of Use Case Packages Number of scenarios, total and per use case Number of actors Length of Use Case (pages of event flow, for example) Effort Staff-time units (with production, change and repair separated) Volatility Number of defects and change requests (open, closed) Quality Defects - number of defects, by severity (open, closed) Reported complexity (0-5, by analogy with COCOMO [BOE81]) 14 Requirements and Use Case Model Metrics (2) Characteristic Metrics Completeness Use Cases completed (reviewed and under configuration management with no defects outstanding)/use cases identified (or estimated number of use cases) Traceability Analysis • Scenarios realized in analysis model/total scenarios Design • Scenarios realized in design model/total scenarios Implementation • Scenarios realized in implementation model/total scenarios Test • Scenarios realized in test model (test cases)/total scenarios Requirements-to-UC Traceability = Traceable to Use-Case Model/Total number of requirements 15 OO Design Model Metrics [RUP] Characteristic Metrics Size Number of classes Number of subsystems Number of subsystems of subsystems … Number of packages Methods per class, internal, external Attributes per class, internal, external Depth of inheritance tree Number of children Effort Staff-time units (with production, change and repair separated) Volatility Number of defects and change requests (open, closed) 16 OO Design Model Metrics (2) [RUP] Characteristic Quality Metrics Complexity Response For a Class (RFC): this may be difficult to calculate because a complete set of interaction diagrams is needed. Coupling Number of children Coupling between objects (class fan-out) Cohesion Number of children Defects Number of defects, by severity (open, closed) Completeness Number of classes completed/number of classes estimated (identified) Traceability Number of classes in Implementation Model/number of classes 17 OO Implementation Metrics (1) [RUP] Characteristic Metrics Size Number of classes Number of components Number of implementation subsystems Number of subsystems of subsystems … Number of packages Methods per class, internal, external Attributes per class, internal, external Size of methods, Size of attributes Depth of inheritance tree Number of children Estimated size at completion Effort Staff-time units (with production, change and repair separated) Volatility Number of defects and change requests (open, closed) Breakage for each corrective or perfective change, estimated (prior 18 to fix) and actual (upon closure) OO Implementation Metrics (2) [RUP] Characteristic Quality Completeness Metrics Complexity Response For a Class (RFC) Cyclomatic complexity of methods* Coupling Number of children Coupling between objects (class fan-out) Message passing coupling (MPC) [Li and Henry 1993] Cohesion Number of children Lack of cohesion in methods (LCOM) Defects Number of defects, by severity, open, closed Number of classes unit tested/number of classes in design model Number of classes integrated/number of classes in design model Active integration and system test time (accumulated from test process), that is, time with system operating (used for maturity calculation) 19 Test Metrics [RUP] Characteristic Metrics Size Number of Test Cases, Test Procedures, Test Scripts Effort Staff-time units for production of test cases, and so on Volatility Number of defects and change requests (open, closed) Quality Defects — number of defects by severity, open, closed (these are defects raised against the test model itself) Completeness Number of test cases written/number of test cases estimated Code coverage Traceability Number of successful Test Cases in Test Evaluation Summary/Number of test cases 20 Change Management Metrics [RUP] Characteristic Metrics Size Number of defects, change requests by severity and status, also categorized as number of perfective changes, number of adaptive changes and number of corrective changes. Effort Defect repair effort, change implementation effort in stafftime units Volatility Breakage (estimated, actual) for the implementation model subset. Completeness Number of defects discovered/number of defects predicted 21 Process Metrics Duration Effort Training time Inspection time Meeting time Process Problem 22 Project Metrics Cost/Schedule Control • BCWS, Budgeted Cost for Work Scheduled • BCWP, Budgeted Cost for Work Performed • ACWP, Actual Cost of Work Performed Modularity = average breakage (NCNB*) per perfective or corrective change on implementation model Adaptability = average effort per perfective or corrective change on implementation model … * NCNB is non-comment, non-blank code size. 23 Data Analysis: Example (1) Projects - Project A: 46 Java Classes (Commercial Software) - Object-Oriented Constructs - Project B: 1000 Java Classes (NASA Software) - Excellent Object-Oriented Constructs - Project C: 1617 C++ Classes (NASA Software) - Good Object-Oriented Constructs 24 Data Analysis: Example (2) Correlation of Metrics over Projects CBOxRFC CBOxWMC RFCxWMC Project A 0.83 0.43 0.47 Project B 0.28 0.11 0.75 Project C 0.35 0.26 0.83 Metric 1 x Metric 2 = correlation between metric 1 and metric 2. 25 Data Analysis: Example (3) Regression Model - RFC = β1WMC + β2CBO + Constant βWMC βCBO Constants R2 RFCA 0.131 0.777 8.036 0.70 8 RFCB 0.732 0.200 15.427 0.60 8 RFCC 0.792 0.148 6.039 0.70 9 26 References [PRE01] Pressman, R. S., Software Engineering, A Practitioners Approach, 5th Ed., McGraw-Hill, 2001. [ROY98] Walker Royce 1998. Software Project Management: A Unified Framework. Addison Wesley Longman. [CHI94] Chidamber, S. R. and C. F. Kemerer, “A Metrics Suite for Object Oriented Design”, IEEE Trans. Software Engineering, vol. SE-20, no. 6, June 1994, pp. 476-493. [HAR98] Harrison, R. S.J. Counsell, and R. V. Nithi, “An Evaluation of the MOOD set of Object-Oriented Software Metrics,” IEEE Trans. Software Engineering, vol. SE-24, no. 6, June 1998, pp. 491-496. [LOR94] Lorenz, M. and J. Kidd, Object-Oriented Design Metrics, PrenticeHall, 1994. [WHI97] Whitmire, S., Object-Oriented Design Measurement, Wiley, 1997. [BIN94] Binder, R. V., “Object-Oriented Software Testing,” CACM, vol. 37, no. 9, september 1994, p. 29. 27 Questions? 28
© Copyright 2025 Paperzz