slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Software Metrics Software metrics help evaluate development and testing efforts needed, PowerPoint Presentation
Download Presentation
Software Metrics Software metrics help evaluate development and testing efforts needed,

Loading in 2 Seconds...

play fullscreen
1 / 30

Software Metrics Software metrics help evaluate development and testing efforts needed, - PowerPoint PPT Presentation


  • 209 Views
  • Uploaded on

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.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Software Metrics Software metrics help evaluate development and testing efforts needed,' - dori


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

Software Metrics

  • Software metrics help evaluate
    • development and testing efforts needed,
    • understandability, maintainability and reusability of software.

91.3913 R. McFadyen

metrics
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

traditional metrics
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

traditional metrics1
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

traditional metrics2
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

oo metrics
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

oo metrics1
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

oo metrics2
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

slide9
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

slide10
WMC

Shows that most classes have less than 20 methods, … but some have over 200 methods.

91.3913 R. McFadyen

slide11
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

slide12
RFC

In this case, about half the classes have an RFC <=20

91.3913 R. McFadyen

slide13
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

slide14
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

slide15
LCOM

91.3913 R. McFadyen

slide16
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

slide17
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

slide18
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

slide19
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

slide20
NOC

One of these classes, at depth 3, has almost 40 children!

91.3913 R. McFadyen

slide21
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

slide22
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

flowgraph construction sequence
Flowgraph Construction - Sequence

x=z

y=7

y=10

CC=?

Sequences are reducible to a single node:

91.3913 R. McFadyen

flowgraph construction if then
Flowgraph Construction – If then
  • if x>4 then
    • x=z
    • y=7
    • q=q*2
  • end if

CC=

91.3913 R. McFadyen

flowgraph construction if else
Flowgraph Construction – If Else
  • if x>4 then
    • x=z
    • y=7
  • else
    • y=10
  • end if

CC=

91.3913 R. McFadyen

flowgraph construction while
Flowgraph Construction - While
  • while x>0 do
    • x=x/2
  • end while

CC=

91.3913 R. McFadyen

flowgraph construction do until
Flowgraph Construction – Do Until
  • Do
    • Read x
  • Until x=0

CC=

91.3913 R. McFadyen

program
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

flowgraph
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

slide30
CC

91.3913 R. McFadyen