2IS55 Software Evolution. Software metrics (3) Alexander Serebrenik

Similar documents
2IS55 Software Evolution. Software metrics (2) Alexander Serebrenik

2IS55 Software Evolution. Software metrics. Alexander Serebrenik

Technical Metrics for OO Systems

Effectiveness of software metrics for object-oriented system

By: Eng. Mohammed T. Abo Alroos

Object Oriented Metrics. Impact on Software Quality

Improving the Applicability of Object-Oriented Class Cohesion Metrics

CHAPTER 4 HEURISTICS BASED ON OBJECT ORIENTED METRICS

Software Metrics. Lines of Code

Procedia Computer Science

International Journal of Software and Web Sciences (IJSWS)

Introduction to software metics

Towards Cohesion-based Metrics as Early Quality Indicators of Faulty Classes and Components

High Precision Cohesion Metric

A Study of Software Metrics

Vragen. Intra-modular complexity measures. The uses relation. System structure: inter-module complexity

Metrics and OO. SE 3S03 - Tutorial 12. Alicia Marinache. Week of Apr 04, Department of Computer Science McMaster University

Quantify the project. Better Estimates. Resolve Software crises

Principal Component Analysis of Lack of Cohesion in Methods (LCOM) metrics

Risk-based Object Oriented Testing

An Object Oriented Runtime Complexity Metric based on Iterative Decision Points

Reusability Metrics for Object-Oriented System: An Alternative Approach

Similar Characteristics of Internal Software Quality Attributes for Object-Oriented Open-Source Software Projects

Quality Metrics Tool for Object Oriented Programming

SNS College of Technology, Coimbatore, India

Analysis of Various Software Metrics Used To Detect Bad Smells

Software metrics for Java and C++ practices. Référencement des métriques utiles à la caractérisation des pratiques sensibles pour Java et C++

Software Metrics for Package Remodularisation

Metrics in assessing the quality and evolution of jedit

Measuring Cohesion and Coupling of Object-Oriented Systems

An Object-Oriented Metrics Suite for Ada 95

SOFTWARE ASSESSMENT USING OBJECT METRICS

Object Oriented Design Metrics for Predicting Fault Proneness using Naïve Bayes and Random Forest

Empirical Evaluation and Critical Review of Complexity Metrics for Software Components

Object Oriented Measurement

Software Design & Evolution. Lecture 04. You cannot control what you cannot measure. Metrics & Problem Detection. Michele Lanza

UML and Design Patterns Prof. Dr. Eric Dubuis, V. June Engineering and Information Technology. On Package Design

Effective Modular Design

Using Metrics To Manage Software Risks. 1. Introduction 2. Software Metrics 3. Case Study: Measuring Maintainability 4. Metrics and Quality

2IS55 Software Evolution. Software metrics. Alexander Serebrenik

JOURNAL OF OBJECT TECHNOLOGY

FOR0383 Software Quality Assurance

How to Realization Architectural testing model using Measurement Metrics

EasyChair Preprint. Software Metrics Proposal for Conformity Checking of Class Diagram to SOLID Design Principles

Kostis Kapelonis Athens Greece, March 2010

Measuring the quality of UML Designs

Application of a Fuzzy Inference System to Measure Maintainability of Object-Oriented Software

Software Metrics and Problem Detection

OPEN source software systems are becoming evermore

Software metrics for policy-driven software development life cycle automation

Classification for Object-Oriented Cohesion Metrics

Investigation of Metrics for Object-Oriented Design Logical Stability

On the Impact of Refactoring Operations on Code Quality Metrics

Computing Software Metrics from Design Documents

CHAPTER 4 OBJECT ORIENTED COMPLEXITY METRICS MODEL

PREDICTION OF SOFTWARE DEFECTS USING OBJECT-ORIENTED METRICS

Principles of Object-Oriented Design

Enhancing Mood Metrics Using Encapsulation

Fault-Proneness Estimation and Java Migration: A Preliminary Case Study

1 Introduction. Abstract

Class Cohesion Revisited: An Empirical Study on Industrial Systems

Static Metrics. Feature Brief

Mixing SNA and Classical Software Metrics for Sub-Projects Analysis.

A Comparative Study on State Programming: Hierarchical State Machine (HSM) Pattern and State Pattern

Enhancing Object Oriented Coupling Metrics w.r.t. Connectivity Patterns

Research Article ISSN:

Cohesion as Changeability Indicator in Object-Oriented Systems

Analysis of Reusability of Object-Oriented System using CK Metrics

Empirical Analysis of the Reusability of Object-Oriented Program Code in Open-Source Software

Object-oriented metrics 1

Visualizing Software Metrics for increased Refactoring

Dependency Inversion Principle (DIP) Package Design: Coupling Principles

Analyzing Java Software by Combining Metrics and Program Visualization

Measuring Complexity

CHAPTER 2 LITERATURE REVIEW

Moonzoo Kim CS Division of EECS Dept.

Design Quality Assessment in Practice

Effects of Dependency Injection on Maintainability. Kate Razina

A Critical Analysis of Current OO Design Metrics

Class Break Point Determination Using CK Metrics Thresholds

Theoretical Validation of Inheritance Metrics for Object-Oriented Design against Briand s Property

A TAXONOMY OF MODULAR GRIME IN DESIGN PATTERNS. Travis Steven Schanz. A thesis submitted in partial fulfillment of the requirements for the degree

Analysis of software architecture quality metrics

Analysis of Cohesion and Coupling Metrics for Object Oriented System

Comparing Software Metrics Tools

CHAPTER 4 QUANTIFICATION AND EVALUATION OF INTERFACE COMPLEXITY IN COTS BASED SYSTEMS

J2EE Development Best Practices: Improving Code Quality

Thresholds for Software Quality Metrics in Open Source Android Projects

Software Testing: A Craftsman s Approach, 4 th Edition. Chapter 16 Software Complexity

ER E P S I M S USING OO METRICS AND RIGI TO EVALUATE JAVA SOFTWARE TARJA SYST A AND PING YU DEPARTMENT OF COMPUTER SCIENCE UNIVERSITY OF TAMPERE

USING COMPLEXITY, COUPLING, AND COHESION METRICS AS EARLY INDICATORS OF VULNERABILITIES

Evaluation of a Business Application Framework Using Complexity and Functionality Metrics

ClassCohesionaspredictorof changeability: An Empirical Study

ISSN: [Gupta* et al., 6(5): May, 2017] Impact Factor: 4.116

Taxonomy Dimensions of Complexity Metrics

Use of Source Code Similarity Metrics in Software Defect Prediction

Maintainability and Agile development. Author: Mika Mäntylä

A New Weighted Composite Complexity Measure for Object-Oriented Systems

An Empirical Study on Object-Oriented Metrics

An Empirical Investigation of Inheritance Trends in Java OSS Evolution. by Emal Nasseri

Transcription:

2IS55 Software Evolution Software metrics (3) Alexander Serebrenik

Sources / SET / W&I 19-3-2013 PAGE 1

From imperative to OO All metrics so far were designed for imperative languages Applicable for OO On the method level Also Number of files number of classes/packages Fan-in afferent coupling (C a ) Fan-out efferent coupling (C e ) But do not reflect OO-specific complexity Inheritance, class fields, abstractness, Popular metric sets Chidamber and Kemerer, Li and Henry, Lorenz and Kidd, Abreu, Martin / SET / W&I 19-3-2013 PAGE 2

Chidamber and Kemerer WMC weighted methods per class Sum of metrics(m) for all methods m in class C DIT depth of inheritance tree java.lang.object? Libraries? NOC number of children Direct descendents CBO coupling between object classes A is coupled to B if A uses methods/fields of B CBO(A) = {B A is coupled to B} RFC - #methods that can be executed in response to a message being received by an object of that class. / SET / W&I 19-3-2013 PAGE 3

Chidamber and Kemerer WMC weighted methods per class Sum of metrics(m) for all methods m in class C Popular metrics: McCabe s complexity and unity WMC/unity = number of methods Statistically significant correlation with the number of defects WMC/unity Dark: Basili et al. Light: Gyimothy et al. [Mozilla 1.6] Red: Highquality NASA system / SET / W&I 19-3-2013 PAGE 4

Chidamber and Kemerer WMC weighted methods per class Sum of metrics(m) for all methods m in class C Popular metrics: McCabe s complexity and unity WMC/unity = number of methods Statistically significant correlation with the number of defects WMC/unity Gyimothy et al. Average / SET / W&I 19-3-2013 PAGE 5

Depth of inheritance - DIT Variants: Were to start and what classes to include? 1, JFrame is a library class, excluded 2, JFrame is a library class, included 7 java.awt.c ontainer java.awt. Window java.awt.c omponent java.awt.f rame java.lang. Object JFrame MyFrame / SET / W&I 19-3-2013 PAGE 6

DIT what is good and what is bad? Three NASA systems What can you say about the use of inheritance in systems A, B and C? Observation: quality assessment depends not just on one class but on the entire distribution / SET / W&I 19-3-2013 PAGE 7

Average DIT in Mozilla How can you explain the decreasing trend? / SET / W&I 19-3-2013 PAGE 8

Other CK metrics NOC number of children CBO coupling between object classes RFC - #methods that can be executed in response to a message being received by an object of that class. More or less exponentially distributed Significance of CK metrics to predict the number of faults / SET / W&I 19-3-2013 PAGE 9

Modularity metrics: LCOM LCOM lack of cohesion of methods Chidamber Kemerer: P Q LCOM( C) 0 where P = #pairs of distinct methods in C that do not share instance variables Q = #pairs of distinct methods in C that share instance variables if P Q otherwise [BBM] 180 classes Discriminative ability is insufficient What about methods that use get/set instead of direct access? / SET / W&I 19-3-2013 PAGE 10

First solution: LCOMN Defined similarly to LCOM but allows negative values LCOMN( C) P Q LCOM LCOMN / SET / W&I 19-3-2013 PAGE 11

Still Method * method tables Light blue: Q, dark blue: P Calculate the LCOMs Does this correspond to your intuition? / SET / W&I 19-3-2013 PAGE 12

Henderson-Sellers, Constantine and Graham 1996 m number of methods v number of variables (attrs) m(v i ) - #methods that access V i 1 v v i1 m( V 1 i m ) Cohesion is maximal: all methods access all variables m( V i ) m and LCOM 0 No cohesion: every method accesses a unique variable m( ) 1 and LCOM 1 V i Can LCOM exceed 1? m / SET / W&I 19-3-2013 PAGE 13

LCOM > 1? If some variables are not accessed at all, then ) ( m V i 0 and if no variables are accessed 1 v v i1 m( Vi ) m 1 m m 1 m 1 1 m 1 Hence LCOM is undefined for m = 1 LCOM 2 / SET / W&I 19-3-2013 PAGE 14

Evolution of LCOM [Henderson-Sellers et al.] Sato, Goldman, Kon 2007 Project 6 (commercial human resource system) suggests stabilization, but no similar conclusion can be made for other projects / SET / W&I 19-3-2013 PAGE 15

Shortcomings of LCOM [Henderson-Sellers ] Due to [Fernández, Peña 2006] A M et ho ds Variables B M et ho ds Variables C M et ho ds Variables Method-variable diagrams: dark spot = access LCOM(A)? LCOM(B)?LCOM(C)? 1 v v i1 m( V 1 i m ) m / SET / W&I 19-3-2013 PAGE 16

Shortcomings of LCOM [Henderson-Sellers ] Due to [Fernández, Peña 2006] A M et ho ds Variables B M et ho ds Variables C M et ho ds Variables All LCOM values are the same: 0.67 m=4, m(vi) = 2 for all i A seems to be less cohesive than B and C! 1 v v i1 m( V 1 i m ) m / SET / W&I 19-3-2013 PAGE 17

Alternative [Hitz, Montazeri 1995] LCOM as the number of strongly connected components in the following graph Vertices: methods except for getters/setters Edge between a and b, if a and b access the same variable LCOM values 0, no methods 1, cohesive component 2 or more, lack of cohesion / SET / W&I 19-3-2013 PAGE 18

Alternative [Hitz, Montazeri 1995] LCOM as the number of strongly connected components in the following graph Vertices: methods except for getters/setters Edge between a and b, if a and b access the same variable Question: LCOM? A M et ho ds Variables LCOM values 0, no methods 1, cohesive component 2 or more, lack of cohesion B M et ho ds Variables / SET / W&I 19-3-2013 PAGE 19

Experimental evaluation of LCOM variants Cox, Etzkorn and Hughes 2006 Correlation with expert assessment Group 1 Group 2 Chidamber Kemerer -0.43 (p = 0.12) -0.57 (p = 0.08) Henderson-Sellers -0.44 (p = 0.12) -0.46 (p = 0.18) Hitz, Montazeri -0.47 (p = 0.06) -0.53 (p = 0.08) Etzkorn, Gholston, Fortune, Stein, Utley, Farrington, Cox / SET / W&I 19-3-2013 PAGE 20 Correlation with expert assessment Group 1 Group 2 Chidamber Kemerer -0.46 (rating 5/8) -0.73 (rating 1.5/8) Henderson-Sellers -0.44 (rating 7/8) -0.45 (rating 7/8) Hitz, Montazeri -0.51 (rating 2/8) -0.54 (rating 5/8)

LCC and TCC [Bieman, Kang 1994] Recall: LCOM HM a and b access the same variable What if a calls a, b calls b, and a and b access the same variable? Metrics NDP number of pairs of methods directly accessing the same variable NIP number of pairs of methods directly or indirectly accessing the same variable NP number of pairs of methods: n(n-1)/2 Tight class cohesion TCC = NDP/NP Loose class cohesion LCC = NIP/NP NB: Constructors and destructors are excluded / SET / W&I 19-3-2013 PAGE 21

Experimental evaluation of LCC/TCC Etzkorn, Gholston, Fortune, Stein, Utley, Farrington, Cox Correlation with expert assessment Group 1 Group 2 Chidamber Kemerer -0.46 (rating 5/8) -0.73 (rating 1.5/8) Henderson-Sellers -0.44 (rating 7/8) -0.45 (rating 7/8) Hitz, Montazeri -0.51 (rating 2/8) -0.54 (rating 5/8) TCC -0.22 (rating 8/8) -0.057 (rating 8/8) LCC -0.54 (rating 1/8) -0.73 (rating 1.5/8) / SET / W&I 19-3-2013 PAGE 23

Metrics so far Level Method Class Metrics Packages??? LOC, McCabe WMC, NOC, DIT, LCOM (and variants), LCC/TCC / SET / W&I 19-3-2013 PAGE 24

Package metrics Size: number of classes/interfaces number of classes in the subpackages Dependencies visualization à la fan-in and fan-out Marchesi s UML metrics Martin s D n : abstractness-instability balance or the normalized distance from the main sequence PASTA Do you still remember aggregations of class metrics? / SET / W&I 19-3-2013 PAGE 25

Fan-out [Marchesi 1998] [Martin 2000] PK 1 or R: C e : [Martin 1994] [JDepend] [Martin 2000] PAGE 26

Fan-in Fan-in similarly to the Fan-out Afferent coupling (Martin) PK 2 (Marchesi) [Hilton 2009] Dark: TDD, light: no-tdd Test-driven development positively affects C a The lower C a - the better. Exception: JUnit vs. Jerico But Jericho is extremely small (2 packages) / SET / W&I 19-3-2013 PAGE 27

More fan-in and fan-out SAP (Herzig) Fan-in similarly to the Fan-out Afferent coupling (Martin) PK 2 (Marchesi) Validation Afferent 0.091 Efferent [Martin 2000] Correlation post-release defects 0.157 Class-in 0.084 Class-out 0.086 Fan-in 0.287 Fan-out 0.148 / SET / W&I 19-3-2013 PAGE 28 Marchesi Railway simulator Warehouse management Manmonths #Pack avg(pk 1 ) 13 6 8.7 7 5 5.0 CASE tool 13 5 8.1

Evolution of afferent and efferent coupling Sato, Goldman, Kon 2007 Almost all systems show an increasing trend (Lehman s growing complexity) Project 7 (workflow system) is almost stable but very high! Outsourced development No automated tests Severe maintainability problems / SET / W&I 19-3-2013 PAGE 29

Package metrics: Stability Stability is related to the amount of work required to make a change [Martin, 2000]. Stable packages Do not depend upon classes outside Many dependents Should be extensible via inheritance (abstract) Instable packages Depend upon many classes outside No dependents Should not be extensible via inheritance (concrete) PAGE 30

What does balance mean? A good real-life package must be instable enough in order to be easily modified It must be generic enough to be adaptable to evolving requirements, either without or with only minimal modifications Hence: contradictory criteria PAGE 31

D n Distance from the main sequence Abstractness = #AbstrClasses/#Classes 1 zone of uselessness D n = Abstractness + Instability 1 [R.Martin 1994] 0 zone of pain main sequence 1 PAGE 32 Instability = C e /(C e +C a )

Normalized distance from the main sequence Dark: TDD, light: no-tdd Test-driven development positively affects D n The lower D n - the better. The same exception (Jericho vs. JUnit) [Hilton 2009] / SET / W&I 19-3-2013 PAGE 33

Distribution and evolution Exponential distribution For all benchmark systems studied, here Vuze 4.0.0.4 20 Peak: many feature requests (average Dn) 28 JBoss PAGE 34

PASTA [Hautus 2002] PASTA Package structure analysis tool Metrics Similarly fan-in/fan-out : based on dependencies between packages Go beyond calculating numbers of dependencies Focus on dependencies between the subpackages Some dependencies are worse than others What are the bad dependencies? Cyclic dependencies, layering violations / SET / W&I 19-3-2013 PAGE 35

PASTA [Hautus] Idea: remove bad (cyclecausing) dependencies Weight number of references from one subpackage to another one. Dependencies to be removed are such that The result is acyclic The total weight of the dependencies removed is minimal Minimal effort required to resolve all the cycles Upwards dependencies should be removed / SET / W&I 19-3-2013 PAGE 36

From dependencies to metrics PASTA(P) = Total weight of the dependencies to be removed / total weight of the dependencies No empirical validation of the metrics No studies of the metrics evolution / SET / W&I 19-3-2013 PAGE 37

One metric is good, more metrics are better (?) Recall MI1 171 5.2ln( V ) 0.23V ( g) 16.2ln( LOC) Halstead McCabe LOC [Kaur, Singh 2011] propose an adaptation MIP 1715.2CC 0.23ln( S) 16.2ln( NC) Related to PK 1 and instability Related to NOC and NOM Related to nesting, strongly connected components, abstractness and PK 2 / SET / W&I 19-3-2013 PAGE 38

Summary: package metrics Size: number of classes Dependencies à la fan-in and fan-out Marchesi s UML metrics Martin s D n : abstractness-instability balance or the normalized distance from the main sequence PASTA Aggregations of class metrics: reminder Metrics independent: average, sum, Gini/Theil coefficients Metrics dependent: Distribution fitting / SET / W&I 19-3-2013 PAGE 39

Measuring change: Churn metrics Why? Past evolution to predict future evolution Code Churn [Lehman, Belady 1985]: Amount of code change taking place within a software unit over time Code Churn metrics [Nagappan, Bell 2005]: Absolute: Churned LOC, Deleted LOC, File Count, Weeks of Churn, Churn Count, Files Churned Relative: / Mathematics and Computer Science 19-3-2013 PAGE 40

Case Study: Windows Server 2003 Analyze Code Churn between WS2003 and WS2003- SP1 to predict defect density in WS2003-SP1 40 million LOC, 2000 binaries Use absolute and relative churn measures Conclusion 1: Absolute measures are no good R 2 < 0.05 Conclusion 2: Relative measures are good! An increase in relative code churn measures is accompanied by an increase in system defect density R 2 0.8 / Mathematics and Computer Science 19-3-2013 PAGE 41

Case Study: Windows Server 2003 Construct a statistical model Training set: 2/3 of the Windows Set binaries Check the quality of the prediction Test set: remaining binaries Three models Right: all relative churn metrics are taken into account / Mathematics and Computer Science 19-3-2013 PAGE 42

Open issues To predict bugs from history, but we need a history filled with bugs to do so Ideally, we don t have such a history We would like to learn from previous projects: Can we make predictions without history? How can we leverage knowledge between projects? Are there universal properties? Not just code properties but also properties of the entire software process / Mathematics and Computer Science 19-3-2013 PAGE 43

Conclusions Package metrics Directly defined: D n, Marchesi metrics, PASTA Results of aggregation Churn metrics / SET / W&I 19-3-2013 PAGE 44