Reverse Engineering Techniques 2007-11-29
-
Upload
tudor-girba -
Category
Technology
-
view
1.204 -
download
4
description
Transcript of Reverse Engineering Techniques 2007-11-29
![Page 1: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/1.jpg)
Reverse engineeringtechniques
Tudor Gîrbawww.tudorgirba.com
![Page 2: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/2.jpg)
forward engineering
actual development }
{
}
{
}
{
}
{}
{
}
{
}
{}
{
}
{
![Page 3: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/3.jpg)
forward engineering
actual development }
{
}
{
}
{
}
{}
{
}
{
}
{}
{
}
{
reve
rse
engin
eerin
g
![Page 4: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/4.jpg)
}
{
}
{
}
{}
{
}
{
McCabe = 21
LOC =
753,0
00NOM = 102
Metrics Queries Visualizations ...
![Page 5: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/5.jpg)
}
{
}
{
}
{}
{
}
{
McCabe = 21
LOC =
753,0
00NOM = 102
Metrics Queries Visualizations ...
![Page 6: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/6.jpg)
}
{
}
{
}
{}
{
}
{
McCabe = 21
LOC =
753,0
00NOM = 102
Metrics Queries Visualizations ...
![Page 7: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/7.jpg)
What are software metrics?
![Page 8: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/8.jpg)
You cannot controlwhat you cannot measure.
Tom de Marco
![Page 9: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/9.jpg)
Software metrics are measurements which
relate to software systems, processes or
related documents
![Page 10: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/10.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/11.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/12.jpg)
Metrics compress the system into numbers
![Page 13: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/13.jpg)
}
{
}
{
}
{}
{
}
{
McCabe = 21
LOC =
753,0
00NOM = 102
Metrics Queries Visualizations ...
![Page 14: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/14.jpg)
}
{
}
{
}
{}
{
}
{
McCabe = 21
LOC =
753,0
00NOM = 102
Metrics Queries Visualizations ...
![Page 15: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/15.jpg)
Queries reduce the analysis space
![Page 16: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/16.jpg)
![Page 17: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/17.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/18.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/19.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/20.jpg)
}
{
}
{
}
{}
{
}
{
McCabe = 21
LOC =
753,0
00NOM = 102
Metrics Queries Visualizations ...
![Page 21: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/21.jpg)
}
{
}
{
}
{}
{
}
{
McCabe = 21
LOC =
753,0
00NOM = 102
Metrics Queries Visualizations ...
![Page 22: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/22.jpg)
Visualization compresses the system into pictures
![Page 23: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/23.jpg)
1854, London cholera epidemic
![Page 24: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/24.jpg)
a picture is worth
a thousand words
![Page 25: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/25.jpg)
![Page 26: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/26.jpg)
UML took it literally :)
![Page 27: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/27.jpg)
Weare
visualbeings
![Page 28: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/28.jpg)
How many groups do you see?
![Page 29: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/29.jpg)
How many groups do you see?
![Page 30: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/30.jpg)
How many groups do you see?
![Page 31: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/31.jpg)
How many groups do you see?
![Page 32: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/32.jpg)
Gestalt principles
proximity
enclosure connectivity
similarity
![Page 33: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/33.jpg)
More Gestalt principles
closure continuity
![Page 34: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/34.jpg)
Weare
visualbeings
![Page 35: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/35.jpg)
a picture is worth
a thousand words
![Page 36: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/36.jpg)
example: what is ?
![Page 37: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/37.jpg)
![Page 38: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/38.jpg)
![Page 39: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/39.jpg)
![Page 40: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/40.jpg)
![Page 41: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/41.jpg)
![Page 42: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/42.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/43.jpg)
System Complexity shows class hierarchies
lines
attributes
methods
Lanza, Ducasse, 2003
![Page 44: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/44.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/45.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/46.jpg)
Class Blueprint shows class internals
![Page 47: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/47.jpg)
Distribution Map shows propertiesDucasse etal, 2006
![Page 48: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/48.jpg)
forward engineering
actual development }
{
}
{
}
{
}
{}
{
}
{
}
{}
{
}
{
reve
rse
engin
eerin
g
![Page 49: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/49.jpg)
forward engineering
actual development }
{
}
{
}
{
}
{}
{
}
{
}
{}
{
}
{
reve
rse
engin
eerin
g
reve
rse
engi
neer
ing
![Page 50: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/50.jpg)
Spectographs show change activityWu etal, 2004
commit
time
![Page 51: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/51.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/52.jpg)
Evolution Matrix shows changes in classes
![Page 53: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/53.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/54.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/55.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/56.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/57.jpg)
Hierarchy Evolution View reveals patterns
![Page 58: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/58.jpg)
}
{
}
{
}
{}
{
}
{
McCabe = 21
LOC =
753,0
00NOM = 102
Metrics Queries Visualizations ...
![Page 59: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/59.jpg)
But, what actually happens
behind the scene?
![Page 60: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/60.jpg)
Example: CVS shows activity
![Page 61: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/61.jpg)
Who did this?
![Page 62: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/62.jpg)
Alphabetical order is no orderKuhn
![Page 63: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/63.jpg)
Ownership Map orders historiesGirba etal, 2006
![Page 64: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/64.jpg)
![Page 65: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/65.jpg)
}
{
}
{
}
{}
{
}
{
McCabe = 21
LOC =
753,0
00NOM = 102
Metrics Queries Visualizations ...
![Page 66: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/66.jpg)
}
{
}
{
}
{}
{
}
{
McCabe = 21
LOC =
753,0
00NOM = 102
Metrics Queries Visualizations ...
![Page 67: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/67.jpg)
![Page 68: Reverse Engineering Techniques 2007-11-29](https://reader034.fdocuments.in/reader034/viewer/2022042700/555bf8cfd8b42a56448b4caf/html5/thumbnails/68.jpg)
Tudor Gîrbawww.tudorgirba.com
creativecommons.org/licenses/by/3.0/