55
Software understanding in the large Tudor Gîrba www.tudorgirba.com

Software understanding in the large (EVO 2008)

Embed Size (px)

DESCRIPTION

I used this set of slides for a lecture I gave at the University of Berne (http://scglectures.unibe.ch/evo2008)

Citation preview

Page 1: Software understanding in the large (EVO 2008)

Software understandingin the large

Tudor Gîrbawww.tudorgirba.com

Page 2: Software understanding in the large (EVO 2008)
Page 3: Software understanding in the large (EVO 2008)

}

{}

{

reve

rse

engin

eerin

gforward engineering

}

{

}

{

}

{

}

{

}

{

}

{ }

{

actual development

}

{

Page 4: Software understanding in the large (EVO 2008)

}

{}

{

reve

rse

engin

eerin

gforward engineering

}

{

}

{

}

{

}

{

}

{

}

{ }

{

actual development

reve

rse

engi

neer

ing

}

{

Page 5: Software understanding in the large (EVO 2008)

reve

rse

engin

eerin

gforward engineering

}

{

}

{

}

{

}

{actual development

reve

rse

engi

neer

ing

}

{}

{

}

{

}

{ }

{

}

{

Page 6: Software understanding in the large (EVO 2008)

Systems are large and complex}

{}

{

}

{

}

{ }

{

}

{

Page 7: Software understanding in the large (EVO 2008)

}

{}

{

}

{

}

{ }

{

}

{

… and have many facets

Page 8: Software understanding in the large (EVO 2008)

Still, simple tools can get you far

Page 9: Software understanding in the large (EVO 2008)

for i in $( ls ); do echo `wc -l $i` >> tempdonesort -nr temp | head -10

Page 10: Software understanding in the large (EVO 2008)

Spinellis 2003

Page 11: Software understanding in the large (EVO 2008)

Hindle etal 2008

Indentation correlates with complexity.

Page 12: Software understanding in the large (EVO 2008)

Queries reduce the analysis space

Page 13: Software understanding in the large (EVO 2008)

Mens etal 2006

Intensional Views ensure rules

acceptsClassOfType(?VisitorClass,?VisitedClass) if methodWithNameInClass(?Method,?Selector,?VisitorClass), [’accept*’ match:?Selector asString], argumentOfMethod(?Argument,?Method), [’*’,(?VisitedClass name asString), ’*’ match:?Argument asString]

Page 14: Software understanding in the large (EVO 2008)

Visual queries put results in perspective

Page 15: Software understanding in the large (EVO 2008)

Every system is special.

Page 16: Software understanding in the large (EVO 2008)
Page 17: Software understanding in the large (EVO 2008)

team 1te

am 2

}

{}

{

}

{

}

{ }

{

}

{

}

{}

{

}

{

}

{ }

{

}

{

Page 18: Software understanding in the large (EVO 2008)

team 1te

am 2

}

{}

{

}

{

}

{ }

{

}

{

}

{}

{

}

{

}

{ }

{

}

{

=

Page 19: Software understanding in the large (EVO 2008)

Every system is special.

Page 20: Software understanding in the large (EVO 2008)

Reporting Live analysisvs.

Page 21: Software understanding in the large (EVO 2008)

Every system is special.

Page 22: Software understanding in the large (EVO 2008)

Every technology is special.

Page 23: Software understanding in the large (EVO 2008)

Lanza, Marinescu 2006

Data Classes are dumb data holders

WOC < ONE THIRD

Interface of class reveals data

rather than offering services

AND Data Class

Class reveals many attributes and is

not complex

Page 24: Software understanding in the large (EVO 2008)

java.sun.com

Use a Transfer Object to encapsulate the business data. A single method call is used to send and retrieve the Transfer Object.

When the client requests the enterprise bean for the business data, the enterprise bean can construct the Transfer Object, populate it with its attribute values, and pass it by value to the client.

Page 25: Software understanding in the large (EVO 2008)

Every technology is special.

Page 26: Software understanding in the large (EVO 2008)

In Java

= .java

}

{}

{

}

{

}

{ }

{

}

{

Page 27: Software understanding in the large (EVO 2008)

In J2EE

= .java

}

{}

{

}

{

}

{ }

{

}

{

Page 28: Software understanding in the large (EVO 2008)

In J2EE

= .java

.jsp

}

{}

{

}

{

}

{ }

{

}

{

Page 29: Software understanding in the large (EVO 2008)

In J2EE

= .java

.jsp

.xml

}

{}

{

}

{

}

{ }

{

}

{

Page 30: Software understanding in the large (EVO 2008)
Page 31: Software understanding in the large (EVO 2008)
Page 32: Software understanding in the large (EVO 2008)

By looking only at .java we

would miss useful information

Page 33: Software understanding in the large (EVO 2008)

}

{}

{

reve

rse

engin

eerin

gforward engineering

}

{

}

{

}

{

}

{

}

{

}

{ }

{

actual development

reve

rse

engi

neer

ing

}

{

Page 34: Software understanding in the large (EVO 2008)

}

{}

{

reve

rse

engin

eerin

gforward engineering

}

{

}

{

}

{

}

{

}

{

}

{ }

{

actual development

reve

rse

engi

neer

ing

}

{

*//**

Page 35: Software understanding in the large (EVO 2008)

Schreck etal 2007

Page 36: Software understanding in the large (EVO 2008)

Schreck etal 2007

Page 37: Software understanding in the large (EVO 2008)

}

{}

{

reve

rse

engin

eerin

gforward engineering

}

{

}

{

}

{

}

{

}

{

}

{ }

{

actual development

reve

rse

engi

neer

ing

}

{

*//**

Page 38: Software understanding in the large (EVO 2008)

}

{}

{

reve

rse

engin

eerin

gforward engineering

}

{

}

{

}

{

}

{

}

{

}

{ }

{

actual development

reve

rse

engi

neer

ing

}

{ .pdf

*//**

@

Page 39: Software understanding in the large (EVO 2008)

Adams etal 2007

MAKAO shows Makefile dependencies

Page 40: Software understanding in the large (EVO 2008)

The sources can tell you how the system looks like,but not why.

Page 41: Software understanding in the large (EVO 2008)
Page 42: Software understanding in the large (EVO 2008)

ugly?

Page 43: Software understanding in the large (EVO 2008)

Model

Page 44: Software understanding in the large (EVO 2008)

GUI

Model

Page 45: Software understanding in the large (EVO 2008)

Helpers GUI

Model

Page 46: Software understanding in the large (EVO 2008)

Murphy etal 1995Helpers GUI

Model

Page 47: Software understanding in the large (EVO 2008)
Page 48: Software understanding in the large (EVO 2008)

Helpers

Model

Page 49: Software understanding in the large (EVO 2008)

Brühlmann etal 2008

Page 50: Software understanding in the large (EVO 2008)

Brühlmann etal 2008

Page 51: Software understanding in the large (EVO 2008)

Put findings in perspective.

Page 52: Software understanding in the large (EVO 2008)
Page 53: Software understanding in the large (EVO 2008)

It’s not Lupus

Page 54: Software understanding in the large (EVO 2008)

You mainly see what you are looking for.