Software Metrics Software Engineering.

Slides:



Advertisements
Similar presentations
These courseware materials are to be used in conjunction with Software Engineering: A Practitioners Approach, 6/e and are provided with permission by R.S.
Advertisements

Project Estimation: Metrics and Measurement
Metrics. A Good Manager Measures measurement What do we use as a basis? size? size? function? function? project metrics process metrics process product.
Metrics for Process and Projects
Metrics for Process and Projects
March 25, R. McFadyen1 Metrics Fan-in/fan-out Lines of code Cyclomatic complexity Comment percentage Length of identifiers Depth of conditional.
Nov R. McFadyen1 Metrics Fan-in/fan-out Lines of code Cyclomatic complexity* Comment percentage Length of identifiers Depth of conditional.
Software Metrics.
Software Engineering II - Topic: Software Process Metrics and Project Metrics Instructor: Dr. Jerry Gao San Jose State University
Software Metrics II Speaker: Jerry Gao Ph.D. San Jose State University URL: Sept., 2001.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
R&D SDM 1 Metrics How to measure and assess software engineering? 2009 Theo Schouten.
Object-Oriented Metrics
March R. McFadyen1 Software Metrics Software metrics help evaluate development and testing efforts needed, understandability, maintainability.
Project Management Metrics.
Object Oriented Metrics XP project group – Saskia Schmitz.
Chapter 9: Software Metrics
Software Process and Product Metrics
Software Metric capture notions of size and complexity.
Lecture 17 Software Metrics
Chapter 15 Software Product Metrics
Cmpe 589 Spring Software Quality Metrics Product  product attributes –Size, complexity, design features, performance, quality level Process  Used.
1 Software Quality CIS 375 Bruce R. Maxim UM-Dearborn.
Chapter 6 : Software Metrics
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
Software Measurement & Metrics
1. Software Metric- A definition 2. Types of Software metrics 3. Frame work of product metrics 4. Product metrics.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 15b: Product Metrics for Software Software Engineering: A Practitioner’s Approach, 6/e Chapter.
Product Metrics An overview. What are metrics? “ A quantitative measure of the degree to which a system, component, or process possesses a given attribute.”
Version control – Project repository, version management capability, make facility, issue/bug tracking Change control Configuration audit – compliments.
CS460 © 2003 Ray S. Babcock Metrics The term metrics refers to any measurement related to software development. ● Lines of Code ● number of defects ● defects.
Software Metrics Software Engineering.
Software Engineering SM ? 1. Outline of this presentation What is SM The Need for SM Type of SM Size Oriented Metric Function Oriented Metric 218/10/2015.
1 Chapter 15 Product Metrics for Software Software Engineering: A Practitioner’s Approach, 6th edition by Roger S. Pressman.
Software Project Management Lecture # 3. Outline Chapter 22- “Metrics for Process & Projects”  Measurement  Measures  Metrics  Software Metrics Process.
Software Quality Metrics
Concepts of Software Quality Yonglei Tao 1. Software Quality Attributes  Reliability  correctness, completeness, consistency, robustness  Testability.
Lecture 4 Software Metrics
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
1 Metrics and lessons learned for OO projects Kan Ch 12 Steve Chenoweth, RHIT Above – New chapter, same Halstead. He also predicted various other project.
SOFTWARE PROCESS AND PROJECT METRICS. Topic Covered  Metrics in the process and project domains  Process, project and measurement  Process Metrics.
CSc 461/561 Information Systems Engineering Lecture 5 – Software Metrics.
Measurement and quality assessment Framework for product metrics – Measure, measurement, and metrics – Formulation, collection, analysis, interpretation,
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 15a: Product Metrics for Software Software Engineering: A Practitioner’s Approach, 6/e Chapter.
540f07cost12oct41 Reviews Postmortem u Surprises? u Use white background on slides u Do not zip files on CD u Team leader should introduce team members.
Advanced Software Engineering Lecture 4: Process & Project Metrics.
Metrics "A science is as mature as its measurement tools."
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Object Oriented Metrics
1 OO Technical Metrics CIS 375 Bruce R. Maxim UM-Dearborn.
Software Engineering Object Oriented Metrics. Objectives 1.To describe the distinguishing characteristics of Object-Oriented Metrics. 2.To introduce metrics.
CS223: Software Engineering Lecture 21: Unit Testing Metric.
Cost9b 1 Living with Function Points Bernstein and Lubashevsky Text pp
Software Test Metrics When you can measure what you are speaking about and express it in numbers, you know something about it; but when you cannot measure,
Object Oriented Metrics
Software Metrics 1.
Course Notes Set 12: Object-Oriented Metrics
Design Characteristics and Metrics
Lecture 15: Technical Metrics
Object-Oriented Metrics
Software Project Sizing and Cost Estimation
Why Do We Measure? assess the status of an ongoing project
Design Metrics Software Engineering Fall 2003
Design Metrics Software Engineering Fall 2003
Software Metrics “How do we measure the software?”
Software metrics.
Software Metrics SAD ::: Fall 2015 Sabbir Muhammad Saleh.
Why Do We Measure? assess the status of an ongoing project
Software Engineering: A Practitioner’s Approach, 6/e Chapter 15 Product Metrics for Software copyright © 1996, 2001, 2005 R.S. Pressman & Associates,
Chapter 8: Design: Characteristics and Metrics
Presentation transcript:

Software Metrics Software Engineering

Definitions Measure - quantitative indication of extent, amount, dimension, capacity, or size of some attribute of a product or process. Number of errors Metric - quantitative measure of degree to which a system, component or process possesses a given attribute. “A handle or guess about a given attribute.” Number of errors found per person hours expended

Why Measure Software? Determine quality of the current product or process Predict qualities of a product/process Improve quality of a product/process

Example Metrics Defects rates Errors rates Measured by: individual module during development Errors should be categorized by origin, type, cost

Metric Classification Products Explicit results of software development activities. Deliverables, documentation, by products Processes Activities related to production of software Resources Inputs into the software development activities hardware, knowledge, people

Product vs. Process Process Metrics- Product Metrics- Insights of process paradigm, software engineering tasks, work product, or milestones. Lead to long term process improvement. Product Metrics- Assesses the state of the project Track potential risks Uncover problem areas Adjust workflow or tasks Evaluate teams ability to control quality

Types of Measures Direct Measures (internal attributes) Cost, effort, LOC, speed, memory Indirect Measures (external attributes) Functionality, quality, complexity, efficiency, reliability, maintainability

Size Oriented Metrics Size of the software produced Lines Of Code (LOC) 1000 Lines Of Code KLOC Effort measured in person months Errors/KLOC Defects/KLOC Cost/LOC Documentation Pages/KLOC LOC is programmer & language dependent

LOC Metrics Easy to use Easy to compute Can compute LOC of existing systems but cost and requirements traceability may be lost Language & programmer dependent

Function Oriented Metrics Function Point Analysis [Albrecht ’79, ’83] International Function Point Users Group (IFPUG) Indirect measure Derived using empirical relationships based on countable (direct) measures of the software system (domain and requirements)

Computing Functions Points Number of user inputs Distinct input from user Number of user outputs Reports, screens, error messages, etc Number of user inquiries On line input that generates some result Number of files Logical file (database) Number of external interfaces Data files/connections as interface to other systems

Compute Function Points FP = Total Count * [0.65 + .01*Sum(Fi)] Total count is all the counts times a weighting factor that is determined for each organization via empirical data Fi (i=1 to 14) are complexity adjustment values

Complexity Adjustment Does the system require reliable backup and recovery? Are data communications required? Are there distributed processing functions? Is performance critical? Will the system run in an existing heavily utilized operational environment? Does the system require on-line data entry? Does the online data entry require the input transaction to be built over multiple screens or operations?

Complexity Adjustment (cont) Are the master files updated on line? Are the inputs, outputs, files, or inquiries complex? Is the internal processing complex? Is the code designed to be reusable? Are conversions and installations included in the design? Is the system designed for multiple installations in different organizations? Is the application designed to facilitate change and ease of use by the user?

Using FP Errors per FP Defects per FP Cost per FP Pages of documentation per FP FP per person month

FP and Languages Language LOC/FP Assembly C COBOL FORTRAN Pascal C++ Ada VB SQL LOC/FP 320 128 106 90 64 53 32 12

Using FP FP and LOC based metrics have been found to be relatively accurate predictors of effort and cost Need a baseline of historical information to use them properly Language dependent Productivity factors: People, problem, process, product, and resources FP can not be reverse engineered from existing systems easily

Complexity Metrics LOC - a function of complexity Language and programmer dependent Halstead’s Software Science (entropy measures) n1 - number of distinct operators n2 - number of distinct operands N1 - total number of operators N2 - total number of operands

Example if (k < 2) { if (k > 3) x = x*k; } Distinct operators: if ( ) { } > < = * ; Distinct operands: k 2 3 x n1 = 10 n2 = 4 N1 = 13 N2 = 7

Halstead’s Metrics Amenable to experimental verification [1970s] Length: N = N1 + N2 Vocabulary: n = n1 + n2 Estimated length: = n1 log2 n1 + n2 log2 n2 Close estimate of length for well structured programs Purity ratio: PR = /N

Program Complexity Volume: V = N log2 n Program effort: E=V/L Number of bits to provide a unique designator for each of the n items in the program vocabulary. Program effort: E=V/L L = V*/V V* is the volume of most compact design implementation This is a good measure of program understandability

McCabe’s Complexity Measures McCabe’s metrics are based on a control flow representation of the program. A program graph is used to depict control flow. Nodes represent processing tasks (one or more code statements) Edges represent control flow between nodes

Flow Graph Notation While Sequence If-then-else Until

Cyclomatic Complexity Set of independent paths through the graph (basis set) V(G) = E – N + 2 E is the number of flow graph edges N is the number of nodes V(G) = P + 1 P is the number of predicate nodes

Example i = 0; while (i<n-1) do j = i + 1; while (j<n) do if A[i]<A[j] then swap(A[i], A[j]); end do; i=i+1;

Flow Graph 1 2 3 7 4 5 6

Computing V(G) V(G) = 9 – 7 + 2 = 4 V(G) = 3 + 1 = 4 Basis Set 1, 7 1, 2, 6, 1, 7 1, 2, 3, 4, 5, 2, 6, 1, 7 1, 2, 3, 5, 2, 6, 1, 7

Another Example 1 9 2 4 3 5 6 7 8 What is V(G)?

Meaning V(G) is the number of (enclosed) regions/areas of the planar graph Number of regions increases with the number of decision paths and loops. A quantitative measure of testing difficulty and an indication of ultimate reliability Experimental data shows value of V(G) should be no more then 10. Testing is very difficulty above this value.

McClure’s Complexity Metric Complexity = C + V C is the number of comparisons in a module V is the number of control variables referenced in the module Similar to McCabe’s but with regard to control variables.

Metrics and Software Quality FURPS Functionality - features of system Usability – aesthesis, documentation Reliability – frequency of failure, security Performance – speed, throughput Supportability – maintainability

Measures of Software Quality Correctness Defects/KLOC Defect is a verified lack of conformance to requirements Failures/hours of operation Maintainability Mean time to change Change request to new version (Analyze, design etc) Cost to correct Integrity Fault tolerance, security & threats Usability Training time, skill level necessary to use, Increase in productivity, subjective questionnaire or controlled experiment

Quality Model Metrics

High level Design Metrics Structural Complexity Data Complexity System Complexity Card & Glass ’80 Structural Complexity S(i) of a module i. S(i) = fout2(i) Fan out is the number of modules immediately subordinate (directly invoked).

Design Metrics Data Complexity D(i) System Complexity C(i) D(i) = v(i)/[fout(i)+1] v(i) is the number of inputs and outputs passed to and from i. System Complexity C(i) C(i) = S(i) + D(i) As each increases the overall complexity of the architecture increases.

System Complexity Metric Another metric: length(i) * [fin(i) + fout(i)]2 Length is LOC Fan in is the number of modules that invoke i. Graph based: Nodes + edges Modules + lines of control Depth of tree, arc to node ratio

Coupling Data and control flow Global Environmental di – input data parameters ci input control parameters do output data parameters co output control parameters Global gd global variables for data gc global variables for control Environmental w fan in number of modules called r fan out number modules that call module

Metrics for Coupling Mc = k/m, k=1 m = di + aci + do + bco + gd + cgc + w + r a, b, c, k can be adjusted based on actual data

Component Level Metrics Cohesion (internal interaction) Coupling (external interaction) Complexity of program flow Cohesion – difficult to measure Bieman ’94, TSE 20(8) Data slice – from a program slice

Using Metrics The Process Formulate Collect Analysis Interpretation Select appropriate metrics for problem Utilized metrics on problem Assessment and feedback Formulate Collect Analysis Interpretation Feedback

Metrics for the Object Oriented Chidamber & Kemerer ’94 TSE 20(6) Metrics specifically designed to address object oriented software Class oriented metrics Direct measures

Weighted Methods per Class WMC = ci is the complexity (e.g., volume, cyclomatic complexity, etc.) of each method Must normalize What about inherited methods? Be consistent

Depth of Inheritance Tree DIT is the maximum length from a node to the root (base class) Lower level subclasses inherit a number of methods making behavior harder to predict However, more methods are reused in higher DIT trees.

Number of Children NOC is the number of subclasses immediately subordinate to a class As NOC grows, reuse increases But the abstraction may be diluted

Coupling between Classes CBO is the number of collaborations between two classes As collaboration increases reuse decreases CRC – lists the number of collaborations Classes, Responsibilities, and Collaborations

Response for a Class RFC is the number of methods that could be called in response to a message to a class Testing effort increases as RFC increases

Lack of Cohesion in Methods LCOM – poorly described in Pressman Class Ck with n methods M1,…Mn Ij is the set of instance variables used by Mj

LCOM There are n such sets I1 ,…, In If all n sets Ii are  then P =  P = {(Ii, Ij) | (Ii  Ij ) = } Q = {(Ii, Ij) | (Ii  Ij )  } If all n sets Ii are  then P =  LCOM = |P| - |Q|, if |P| > |Q| LCOM = 0 otherwise

Example LCOM Take class C with M1, M2, M3 I1 = {a, b, c, d, e} I2 = {a, b, e} I3 = {x, y, z} P = {(I1, I3), (I2, I3)} Q = {(I1, I2)} Thus LCOM = 1

Explanation LCOM is the number of empty intersections minus the number of non-empty intersections This is a notion of degree of similarity of methods. If two methods use common instance variables then they are similar LCOM of zero is not maximally cohesive |P| = |Q| or |P| < |Q|

Class Size CS Total number of operations (inherited, private, public) Number of attributes (inherited, private, public) May be an indication of too much responsibility for a class

Number of Operations Overridden NOO A large number for NOO indicates possible problems with the design Poor abstraction in inheritance hierarchy

Number of Operations Added NOA The number of operations added by a subclass As operations are added it is farther away from super class As depth increases NOA should decrease

Specialization Index SI = [NOO * L] / Mtotal L is the level in class hierarchy Mtotal is the total number of methods Higher values indicate class in hierarchy that does not conform to the abstraction

Method Inheritance Factor MIF = . Mi(Ci) is the number of methods inherited and not overridden in Ci Ma(Ci) is the number of methods that can be invoked with Ci Md(Ci) is the number of methods declared in Ci

MIF Ma(Ci) = Md(Ci) + Mi(Ci) All that can be invoked = new or overloaded + things inherited MIF is [0,1] MIF near 1 means little specialization MIF near 0 means large change

Coupling Factor CF= . is_client(x,y) = 1 iff a relationship exists between the client class and the server class. 0 otherwise. (TC2-TC) is the total number of relationships possible (Total Classes2 – diagonal) CF is [0,1] with 1 meaning high coupling

Polymorphism Factor PF = . Mn() is the number of new methods Mo() is the number of overriding methods DC() number of descendent classes of a base class The number of methods that redefines inherited methods, divided by maximum number of possible distinct polymorphic situations

Operational Oriented Metrics Average operation size (LOC, volume) Number of messages sent by an operator Operation complexity – cyclomatic Average number of parameters/operation Larger the number the more complex the collaboration

Encapsulation Lack of cohesion Percent public and protected Public access to data members

Inheritance Number of root classes Fan in – multiple inheritance NOC, DIT, etc.