1 / 30

Software Metrics Software metrics help evaluate development and testing efforts needed,

Software Metrics Software metrics help evaluate development and testing efforts needed, understandability, maintainability and reusability of software. Metrics. Traditional. Object-Oriented. Fan-in/fan-out. Weighted methods per class. Lines of code. Response for a class.

dori
Télécharger la présentation

Software Metrics Software metrics help evaluate development and testing efforts needed,

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software Metrics • Software metrics help evaluate • development and testing efforts needed, • understandability, maintainability and reusability of software. 91.3913 R. McFadyen

  2. Metrics Traditional Object-Oriented Fan-in/fan-out Weighted methods per class Lines of code Response for a class Cyclomatic complexity* Lack of cohesion of methods Comment percentage Coupling between objects* Length of identifiers Depth of inheritance tree Depth of conditional nesting Number of children Fog index Number of overriding operations * March 2003 see http://satc.gsfc.nasa.gov/support/STC_APR98/apply_oo/apply_oo.doc http://www.stsc.hill.af.mil/crosstalk/frames.asp?uri=1997/04/quality.asp 91.3913 R. McFadyen

  3. Traditional Metrics Fan-in/fan-out Fan-in is a measure of the number of functions that call some other function, say X Fan-out is a measure of the number of functions which are called by a function, say X. (See RFC) Cyclomatic complexity CC is a count of the number of test cases required to test comprehensively 91.3913 R. McFadyen

  4. Traditional Metrics Lines of Code • LOC can be counted as • lines (LOC) • non-comment non-blank lines (NCNB) • executable statements (EXEC) • Note that NASA uses executable lines of code to evaluate size Comment percentage Calculated as the total number of comments divided by the {total lines of code less the number of blank lines} 91.3913 R. McFadyen

  5. Traditional Metrics Depth of conditional nesting Measure of the depth of nesting of IF statements in programs Length of identifiers Measures average length of distinct identifiers Fog index Measure of the average length of words and sentences in documents. The higher the value for the Fog index, the more difficult ... 91.3913 R. McFadyen

  6. OO Metrics Weighted methods per class WMC is the number of methods included in a class weighted by the complexity of each method Response for a class RFC is a count of all methods that can be invoked in response to a message to an object of the class 91.3913 R. McFadyen

  7. OO Metrics Lack of cohesion of methods LOCM measures the dissimilarity of methods in a class. A highly cohesive module stands alone. Lack of cohesion increases complexity. Coupling between objects CBO is a count of the number of other classes to which a class is coupled. Measured by counting the number of distinct non-inheritance related class hierarchies on which a class depends 91.3913 R. McFadyen

  8. OO Metrics Depth of inheritance tree DIT is the maximum number of steps from the class node to the root of the tree Number of children NOC is the number of immediate subclasses subordinate to a class in the hierarchy Number of overriding operations Number of operations in a superclass that are overridden in a subclass 91.3913 R. McFadyen

  9. WMC Weighted methods per class WMC is the number of methods included in a class weighted by the complexity of each method How does one count this? a) simply count the number of methods, or, b) sum the complexities of the methods (complexity might be rated: 1 Simple, 2 Moderately complex, 3 Complex) 91.3913 R. McFadyen

  10. WMC Shows that most classes have less than 20 methods, … but some have over 200 methods. 91.3913 R. McFadyen

  11. RFC Response for a class RFC is a count of all methods that can be invoked in response to a message to an object of the class How does one count this? For a class, we count the number of distinct methods that can be invoked in response to a message, including all methods within the class hierarchy For a class, we count all messages that can be sent by all methods in the class 91.3913 R. McFadyen

  12. RFC In this case, about half the classes have an RFC <=20 91.3913 R. McFadyen

  13. LCOM Lack of cohesion of methods LOCM measures the dissimilarity of methods in a class. A highly cohesive module stands alone. Lack of cohesion increases complexity. • How does one count this? • We need a way of measuring cohesiveness (or not). • First proposal: • a) compute the average over all attributes in a class • number of methods using the attribute • total number of methods • convert to a percentage and subtract from 100 91.3913 R. McFadyen

  14. LCOM Second proposal: b) for each method, create a set of the attributes it accesses. For each pair of methods, perform the intersection of attributes. If an intersection is not empty put the set in P; if it is empty put the set in Q. The measure is the difference in cardinalities of P and Q: LCOM = P - Q if P > Q otherwise LCOM = 0 91.3913 R. McFadyen

  15. LCOM 91.3913 R. McFadyen

  16. CBO Coupling between objects CBO is a count of the number of other classes to which a class is coupled. Measured by counting the number of distinct non-inheritance related class hierarchies on which a class depends • How does one count this? • count the number of distinctnoninheritance-related class hierarchies on which a class depends 91.3913 R. McFadyen

  17. CBO A CBO value of zero corresponds to a class that is only coupled to others in its related inheritance hierarchy 91.3913 R. McFadyen

  18. DIT DIT is the maximum number of steps from the class node to the root of the tree Depth of inheritance tree Most classes are at level 0 and 1 91.3913 R. McFadyen

  19. NOC Number of children NOC is the number of immediate subclasses subordinate to a class in the hierarchy • How does one count this? • the number of immediate subclasses subordinate to a class in the hierarchy 91.3913 R. McFadyen

  20. NOC One of these classes, at depth 3, has almost 40 children! 91.3913 R. McFadyen

  21. CC Cyclomatic complexity CC is a count of the number of test cases required to test comprehensively CC measures the amount of decision logic in a module. A value of 10 or less is the general recommendation. • Formally, based on a program’s flowgraph, • Cyclomatic complexity • = number of edges – number of nodes + 2 91.3913 R. McFadyen

  22. CC • Control flowgraphs describe the logic structure of software modules. • A module corresponds to a single function or subroutine in typical languages, has a single entry and exit point, and is able to be used as a design component via a call/return mechanism. • Each flowgraph consists of nodes and edges. • nodes represent computational statements or expressions, • edges represent transfer of control between nodes. 91.3913 R. McFadyen

  23. Flowgraph Construction - Sequence x=z y=7 y=10 CC=? Sequences are reducible to a single node: 91.3913 R. McFadyen

  24. Flowgraph Construction – If then • if x>4 then • x=z • y=7 • q=q*2 • end if CC= 91.3913 R. McFadyen

  25. Flowgraph Construction – If Else • if x>4 then • x=z • y=7 • else • y=10 • end if CC= 91.3913 R. McFadyen

  26. Flowgraph Construction - While • while x>0 do • x=x/2 • … • end while CC= 91.3913 R. McFadyen

  27. Flowgraph Construction – Do Until • Do • … • Read x • Until x=0 CC= 91.3913 R. McFadyen

  28. Program 1 2 3 4 5 6 7 8 9 • FindMean (FILE ScoreFile) • { float SumOfScores = 0.0; • int NumberOfScores = 0; • float Mean=0.0; float Score; • Read(ScoreFile, Score); • while (! EOF(ScoreFile) { • if (Score > 0.0 ) { • SumOfScores = SumOfScores + Score; • NumberOfScores++; • } • Read(ScoreFile, Score); • } • /* Compute the mean and print the result */ • if (NumberOfScores > 0) { • Mean = SumOfScores / NumberOfScores; • printf(“ The mean score is %f\n”, Mean); • } else • printf (“No scores found in file\n”); • } 91.3913 R. McFadyen

  29. Flowgraph 1 • Cyclomatic complexity • = CC • = 11-9+2 = 4 • decision structures: • one while • one if then • one if else 2 3 4 5 6 7 8 9 91.3913 R. McFadyen

  30. CC 91.3913 R. McFadyen

More Related