reverse engineering techniques 2007-11-29

68
Reverse engineering techniques Tudor Gîrba www.tudorgirba.com

Upload: tudor-girba

Post on 20-May-2015

1.204 views

Category:

Technology


4 download

DESCRIPTION

I used this set of slides for a lecture at Hasso Plattner Institute on 2007.11.29

TRANSCRIPT

Page 1: Reverse Engineering Techniques 2007-11-29

Reverse engineeringtechniques

Tudor Gîrbawww.tudorgirba.com

Page 2: Reverse Engineering Techniques 2007-11-29

forward engineering

actual development }

{

}

{

}

{

}

{}

{

}

{

}

{}

{

}

{

Page 3: Reverse Engineering Techniques 2007-11-29

forward engineering

actual development }

{

}

{

}

{

}

{}

{

}

{

}

{}

{

}

{

reve

rse

engin

eerin

g

Page 4: Reverse Engineering Techniques 2007-11-29

}

{

}

{

}

{}

{

}

{

McCabe = 21

LOC =

753,0

00NOM = 102

Metrics Queries Visualizations ...

Page 5: Reverse Engineering Techniques 2007-11-29

}

{

}

{

}

{}

{

}

{

McCabe = 21

LOC =

753,0

00NOM = 102

Metrics Queries Visualizations ...

Page 6: Reverse Engineering Techniques 2007-11-29

}

{

}

{

}

{}

{

}

{

McCabe = 21

LOC =

753,0

00NOM = 102

Metrics Queries Visualizations ...

Page 7: Reverse Engineering Techniques 2007-11-29

What are software metrics?

Page 8: Reverse Engineering Techniques 2007-11-29

You cannot controlwhat you cannot measure.

Tom de Marco

Page 9: Reverse Engineering Techniques 2007-11-29

Software metrics are measurements which

relate to software systems, processes or

related documents

Page 10: Reverse Engineering Techniques 2007-11-29

Examples of size metrics

NOM - number of methods

NOA - number of attributes

LOC - number of lines of code

NOS - number of statements

NOC - number of children

Lorentz, Kidd, 1994Chidamber, 1994

Page 11: Reverse Engineering Techniques 2007-11-29

McCabe, 1977

McCabe cyclomatic complexity counts the number of possible paths through the code of a function.

Page 12: Reverse Engineering Techniques 2007-11-29

Metrics compress the system into numbers

Page 13: Reverse Engineering Techniques 2007-11-29

}

{

}

{

}

{}

{

}

{

McCabe = 21

LOC =

753,0

00NOM = 102

Metrics Queries Visualizations ...

Page 14: Reverse Engineering Techniques 2007-11-29

}

{

}

{

}

{}

{

}

{

McCabe = 21

LOC =

753,0

00NOM = 102

Metrics Queries Visualizations ...

Page 15: Reverse Engineering Techniques 2007-11-29

Queries reduce the analysis space

Page 16: Reverse Engineering Techniques 2007-11-29
Page 17: Reverse Engineering Techniques 2007-11-29

Detection Strategies are metric-based queries to detect design flaws

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 18: Reverse Engineering Techniques 2007-11-29

Flaw: a God Class centralizes too much intelligence in the system

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 19: Reverse Engineering Techniques 2007-11-29

Flaw: a Data Class provides data to other classes, but little or no functionality of its own

Page 20: Reverse Engineering Techniques 2007-11-29

}

{

}

{

}

{}

{

}

{

McCabe = 21

LOC =

753,0

00NOM = 102

Metrics Queries Visualizations ...

Page 21: Reverse Engineering Techniques 2007-11-29

}

{

}

{

}

{}

{

}

{

McCabe = 21

LOC =

753,0

00NOM = 102

Metrics Queries Visualizations ...

Page 22: Reverse Engineering Techniques 2007-11-29

Visualization compresses the system into pictures

Page 23: Reverse Engineering Techniques 2007-11-29

1854, London cholera epidemic

Page 24: Reverse Engineering Techniques 2007-11-29

a picture is worth

a thousand words

Page 25: Reverse Engineering Techniques 2007-11-29
Page 26: Reverse Engineering Techniques 2007-11-29

UML took it literally :)

Page 27: Reverse Engineering Techniques 2007-11-29

Weare

visualbeings

Page 28: Reverse Engineering Techniques 2007-11-29

How many groups do you see?

Page 29: Reverse Engineering Techniques 2007-11-29

How many groups do you see?

Page 30: Reverse Engineering Techniques 2007-11-29

How many groups do you see?

Page 31: Reverse Engineering Techniques 2007-11-29

How many groups do you see?

Page 32: Reverse Engineering Techniques 2007-11-29

Gestalt principles

proximity

enclosure connectivity

similarity

Page 33: Reverse Engineering Techniques 2007-11-29

More Gestalt principles

closure continuity

Page 34: Reverse Engineering Techniques 2007-11-29

Weare

visualbeings

Page 35: Reverse Engineering Techniques 2007-11-29

a picture is worth

a thousand words

Page 36: Reverse Engineering Techniques 2007-11-29

example: what is ?

Page 37: Reverse Engineering Techniques 2007-11-29
Page 38: Reverse Engineering Techniques 2007-11-29
Page 39: Reverse Engineering Techniques 2007-11-29
Page 40: Reverse Engineering Techniques 2007-11-29
Page 41: Reverse Engineering Techniques 2007-11-29
Page 42: Reverse Engineering Techniques 2007-11-29

Polymetric views show up to 5 metrics

Color metric

Width metric

Height metric

Position metrics

Lanza, 2003

Page 43: Reverse Engineering Techniques 2007-11-29

System Complexity shows class hierarchies

lines

attributes

methods

Lanza, Ducasse, 2003

Page 44: Reverse Engineering Techniques 2007-11-29

Class Blueprint shows class internals

Initialize Interface Internal Accessor Attribute

invocation and access direction

Lanza, Ducasse, 2005

Page 45: Reverse Engineering Techniques 2007-11-29

Class Blueprint has a rich vocabulary

Regular

Overriding

Extending

Abstract

Constant

Delegating

Setter

Getter

Method

invocations

lines

Attribute

internal access

externalaccess

Access

Invocation

Page 46: Reverse Engineering Techniques 2007-11-29

Class Blueprint shows class internals

Page 47: Reverse Engineering Techniques 2007-11-29

Distribution Map shows propertiesDucasse etal, 2006

Page 48: Reverse Engineering Techniques 2007-11-29

forward engineering

actual development }

{

}

{

}

{

}

{}

{

}

{

}

{}

{

}

{

reve

rse

engin

eerin

g

Page 49: Reverse Engineering Techniques 2007-11-29

forward engineering

actual development }

{

}

{

}

{

}

{}

{

}

{

}

{}

{

}

{

reve

rse

engin

eerin

g

reve

rse

engi

neer

ing

Page 50: Reverse Engineering Techniques 2007-11-29

Spectographs show change activityWu etal, 2004

commit

time

Page 51: Reverse Engineering Techniques 2007-11-29

Evolution Matrix shows changes in classes

Idle class

Pulsar class

Supernova class

White dwarf class

Lanza, Ducasse, 2002

Page 52: Reverse Engineering Techniques 2007-11-29

Evolution Matrix shows changes in classes

Page 53: Reverse Engineering Techniques 2007-11-29

What happens with inheritance?

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

Page 54: Reverse Engineering Techniques 2007-11-29

History contains too much data

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

Page 55: Reverse Engineering Techniques 2007-11-29

History contains too much data

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

A is persistent, B is stable, C was removed, E is newborn ...

Page 56: Reverse Engineering Techniques 2007-11-29

Hierarchy Evolution encapsulates time

A

B

D

C

E

A is persistent, B is stable, C was removed, E is newborn ...

age

changedmethods

changedlines

Removed

Removed

Girba etal, 2005

Page 57: Reverse Engineering Techniques 2007-11-29

Hierarchy Evolution View reveals patterns

Page 58: Reverse Engineering Techniques 2007-11-29

}

{

}

{

}

{}

{

}

{

McCabe = 21

LOC =

753,0

00NOM = 102

Metrics Queries Visualizations ...

Page 59: Reverse Engineering Techniques 2007-11-29

But, what actually happens

behind the scene?

Page 60: Reverse Engineering Techniques 2007-11-29

Example: CVS shows activity

Page 61: Reverse Engineering Techniques 2007-11-29

Who did this?

Page 62: Reverse Engineering Techniques 2007-11-29

Alphabetical order is no orderKuhn

Page 63: Reverse Engineering Techniques 2007-11-29

Ownership Map orders historiesGirba etal, 2006

Page 64: Reverse Engineering Techniques 2007-11-29
Page 65: Reverse Engineering Techniques 2007-11-29

}

{

}

{

}

{}

{

}

{

McCabe = 21

LOC =

753,0

00NOM = 102

Metrics Queries Visualizations ...

Page 66: Reverse Engineering Techniques 2007-11-29

}

{

}

{

}

{}

{

}

{

McCabe = 21

LOC =

753,0

00NOM = 102

Metrics Queries Visualizations ...

Page 67: Reverse Engineering Techniques 2007-11-29