Assessing software systems

Preview:

DESCRIPTION

I used this set of slides in a presentation I gave to an engineering audience.

Citation preview

Tudor Gîrbawww.tudorgirba.com

Assessing software systems

2002

PhD

2002 2005

PhD

2002 2005 2009

PostDoc

PhD

2002 2005 2009

PostDoc

Consultant

www.sw-eng.ch

forward engineering

}

{

}

{

}

{

}

{

forward engineering

actual development}

{

}

{

}

{

}

{}

{

}

{

}

{}

{

}

{

forward engineering

actual development}

{

}

{

}

{

}

{}

{

}

{

}

{}

{

}

{

reve

rse e

ngin

eerin

g

= complex }

{

}

{

}

{}

{

}

{

= complex, large}

{

}

{

}

{}

{

}

{

= 250’000 lines of code

= 250’000 lines of code

* 2 = 500’000 seconds

= 250’000 lines of code

* 2 = 500’000 seconds

/ 3600 ~ 140 hours

= 250’000 lines of code

* 2 = 500’000 seconds

/ 3600 ~ 140 hours

/ 8 ~ 18 days

= 250’000 lines of code

* 2 = 500’000 seconds

/ 3600 ~ 140 hours

/ 8 ~ 18 days

/ 20 ~ 1 month

}

{

}

{

}

{}

{

}

{

...McCabe = 21

LOC = 75

3,000

NOM = 102classes select: #isGod

}

{

}

{

}

{}

{

}

{

...McCabe = 21

LOC = 75

3,000

NOM = 102classes select: #isGod

Metric ValueLOC 148‘760

NOM 14‘915

NOC 2’089

CYCLO 30‘073

CALLS 151287

FANOUT 85909

AHH 0.12

... ...

}

{

}

{

}

{}

{

}

{

...McCabe = 21

LOC = 75

3,000

NOM = 102classes select: #isGod

Lanza, Marinescu 2006

A God Class centralizes too much intelligence

ATFD > FEW

Class uses directly more than a

few attributes of other classes

WMC ! VERY HIGH

Functional complexity of the

class is very high

TCC < ONE THIRD

Class cohesion is low

AND GodClass

Lanza, Marinescu 2006

Significant duplication goes beyond just one line

Significant Duplication

Chain

SDC ! 2x(FEW+1)+1

Duplication chain has at least a

size of two relevant exact clones

SEC > FEW

Exact clones are longer than a

few lines of code

LB " FEW

Distance between clones is not

more than a few lines of code

AND

Significant

Duplication

SEC > AVERAGE(LOC/Operation)

Significant standalone

exact clone

Significant Duplication Chain

OR

}

{

}

{

}

{}

{

}

{

...McCabe = 21

LOC = 75

3,000

NOM = 102classes select: #isGod

}

{

}

{

}

{}

{

}

{

...McCabe = 21

LOC = 75

3,000

NOM = 102classes select: #isGod

How do programs look like today?

A picture tells

a thousand words

proximity

enclosure

connectivity

similarity

closure

continuity

A picture tells

a thousand words

Not all pictures tell a

thousand words

System Complexity shows class hierarchies

Lanza, Ducasse 2003

Ducasse etal 2006

Distribution Mapshows propertiesover structure

Greevy etal 2007

Feature Map relates features to packages

Wettel, Lanza 2007

CodeCity shows where your code lives

Wettel 2008

and where your flaws live

Duplications shown side by side

forward engineering

actual development}

{

}

{

}

{

}

{}

{

}

{

}

{}

{

}

{

reve

rse e

ngin

eerin

g

forward engineering

actual development}

{

}

{

}

{

}

{}

{

}

{

}

{}

{

}

{

reve

rse e

ngin

eerin

g

reve

rse

engi

neer

ing

Girba etal 2005

Hierarchy Evolution reveals evolution patterns

Girba etal 2005

Ownership Map reveals patterns in CVS

Balint etal 2006

Clone Evolution shows who copied from whom

}

{

}

{

}

{}

{

}

{

...McCabe = 21

LOC = 75

3,000

NOM = 102classes select: #isGod

}

{

}

{

}

{}

{

}

{

...McCabe = 21

LOC = 75

3,000

NOM = 102classes select: #isGod

}

{

}

{

}

{}

{

}

{

McCabe = 21

LOC = 75

3,000

NOM = 102classes select: #isGod

...

moose.unibe.ch

}

{

}

{

}

{}

{

}

{

McCabe = 21

LOC = 75

3,000

NOM = 102classes select: #isGod

...

Software assessment is

more than fancy tools

}

{

}

{

}

{}

{

}

{

...McCabe = 21

LOC = 75

3,000

NOM = 102classes select: #isGod

Recommended