assessing software systems

57
Tudor Gîrba www.tudorgirba.com Assessing software systems

Upload: tudor-girba

Post on 14-Jun-2015

1.473 views

Category:

Education


1 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Assessing software systems

Tudor Gîrbawww.tudorgirba.com

Assessing software systems

Page 2: Assessing software systems

2002

Page 3: Assessing software systems

PhD

2002 2005

Page 4: Assessing software systems

PhD

2002 2005 2009

PostDoc

Page 5: Assessing software systems

PhD

2002 2005 2009

PostDoc

Consultant

www.sw-eng.ch

Page 6: Assessing software systems

forward engineering

}

{

}

{

}

{

}

{

Page 7: Assessing software systems

forward engineering

actual development}

{

}

{

}

{

}

{}

{

}

{

}

{}

{

}

{

Page 8: Assessing software systems

forward engineering

actual development}

{

}

{

}

{

}

{}

{

}

{

}

{}

{

}

{

reve

rse e

ngin

eerin

g

Page 9: Assessing software systems

= complex }

{

}

{

}

{}

{

}

{

Page 10: Assessing software systems

= complex, large}

{

}

{

}

{}

{

}

{

Page 11: Assessing software systems
Page 12: Assessing software systems

= 250’000 lines of code

Page 13: Assessing software systems

= 250’000 lines of code

* 2 = 500’000 seconds

Page 14: Assessing software systems

= 250’000 lines of code

* 2 = 500’000 seconds

/ 3600 ~ 140 hours

Page 15: Assessing software systems

= 250’000 lines of code

* 2 = 500’000 seconds

/ 3600 ~ 140 hours

/ 8 ~ 18 days

Page 16: Assessing software systems

= 250’000 lines of code

* 2 = 500’000 seconds

/ 3600 ~ 140 hours

/ 8 ~ 18 days

/ 20 ~ 1 month

Page 17: Assessing software systems

}

{

}

{

}

{}

{

}

{

...McCabe = 21

LOC = 75

3,000

NOM = 102classes select: #isGod

Page 18: Assessing software systems

}

{

}

{

}

{}

{

}

{

...McCabe = 21

LOC = 75

3,000

NOM = 102classes select: #isGod

Page 19: Assessing software systems

Metric ValueLOC 148‘760

NOM 14‘915

NOC 2’089

CYCLO 30‘073

CALLS 151287

FANOUT 85909

AHH 0.12

... ...

Page 20: Assessing software systems

}

{

}

{

}

{}

{

}

{

...McCabe = 21

LOC = 75

3,000

NOM = 102classes select: #isGod

Page 22: Assessing software systems

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

Page 23: Assessing software systems

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

Page 24: Assessing software systems

}

{

}

{

}

{}

{

}

{

...McCabe = 21

LOC = 75

3,000

NOM = 102classes select: #isGod

Page 25: Assessing software systems

}

{

}

{

}

{}

{

}

{

...McCabe = 21

LOC = 75

3,000

NOM = 102classes select: #isGod

Page 26: Assessing software systems
Page 27: Assessing software systems
Page 28: Assessing software systems

How do programs look like today?

Page 29: Assessing software systems

A picture tells

a thousand words

Page 30: Assessing software systems

proximity

Page 31: Assessing software systems

enclosure

Page 32: Assessing software systems

connectivity

Page 33: Assessing software systems

similarity

Page 34: Assessing software systems

closure

Page 35: Assessing software systems

continuity

Page 36: Assessing software systems

A picture tells

a thousand words

Page 37: Assessing software systems
Page 38: Assessing software systems

Not all pictures tell a

thousand words

Page 39: Assessing software systems

System Complexity shows class hierarchies

Lanza, Ducasse 2003

Page 40: Assessing software systems

Ducasse etal 2006

Distribution Mapshows propertiesover structure

Page 41: Assessing software systems

Greevy etal 2007

Feature Map relates features to packages

Page 42: Assessing software systems

Wettel, Lanza 2007

CodeCity shows where your code lives

Page 43: Assessing software systems

Wettel 2008

and where your flaws live

Page 44: Assessing software systems

Duplications shown side by side

Page 45: Assessing software systems

forward engineering

actual development}

{

}

{

}

{

}

{}

{

}

{

}

{}

{

}

{

reve

rse e

ngin

eerin

g

Page 46: Assessing software systems

forward engineering

actual development}

{

}

{

}

{

}

{}

{

}

{

}

{}

{

}

{

reve

rse e

ngin

eerin

g

reve

rse

engi

neer

ing

Page 47: Assessing software systems

Girba etal 2005

Hierarchy Evolution reveals evolution patterns

Page 48: Assessing software systems

Girba etal 2005

Ownership Map reveals patterns in CVS

Page 49: Assessing software systems

Balint etal 2006

Clone Evolution shows who copied from whom

Page 50: Assessing software systems

}

{

}

{

}

{}

{

}

{

...McCabe = 21

LOC = 75

3,000

NOM = 102classes select: #isGod

Page 51: Assessing software systems

}

{

}

{

}

{}

{

}

{

...McCabe = 21

LOC = 75

3,000

NOM = 102classes select: #isGod

Page 52: Assessing software systems

}

{

}

{

}

{}

{

}

{

McCabe = 21

LOC = 75

3,000

NOM = 102classes select: #isGod

...

Page 53: Assessing software systems

moose.unibe.ch

Page 54: Assessing software systems

}

{

}

{

}

{}

{

}

{

McCabe = 21

LOC = 75

3,000

NOM = 102classes select: #isGod

...

Page 55: Assessing software systems

Software assessment is

more than fancy tools

Page 56: Assessing software systems

}

{

}

{

}

{}

{

}

{

...McCabe = 21

LOC = 75

3,000

NOM = 102classes select: #isGod