helping you reengineering your legacy
TRANSCRIPT
Stéphane Ducasse
LSE
Stéphane [email protected]://stephane.ducasse.free.fr/
Helping you evolving yoursystems
1
S.Ducasse LSE
Roadmap• Some facts• Our approach
• Supporting maintenance• Moose an open-platform
• Some visual examples• Conclusion
2
1946
?1956 2006
Software is complex.
The Standish Group, 2004
53% Challenged
18% Failed
29% Succeeded
How large is your project?
1’000’000 lines of code
* 2 = 2’000’000 seconds
/ 3600 = 560 hours
/ 8 = 70 days
/ 20 = 3 months
Software developmentis more than forward engineering.
Forward engineering
Actual development}
{
}
{
}
{
}
{}
{
}
{
}
{}
{
}
{
Maintenance is is needed to evolve the code.
Rever
se en
ginee
ring
Forward engineering
Actual development}
{
}
{
}
{
}
{}
{
}
{
}
{}
{
}
{
S.Ducasse LSE
Roadmap• Some facts• Our approach
• Supporting maintenance• Moose an open-platform
• Some visual examples• Conclusion
9
S.Ducasse
Supporting the evolution of applications
Our research goal and agenda grounded in reality
How to help companies maintaining their large software?What is the xray for software?
code, people, practicesWhich analyses?How can you monitor your system (dashboards....)How to present extracted information?
10
S.Ducasse
Covered topics
TopicsMetamodeling, Software metrics,Program understanding,Visualization, Evolution analysis,Duplicated code detection,Code Analysis, Refactorings,TestsContributions
Moose: an open-source extensible reengineering environment: (Lugano, Bern, Annecy, Anvers, Louvain la neuve, ULB, UTSL)
ContactsHarman-Becker (3 Millions C++), Bedag (Cobol), Nokia, ABB, IMEC
11
Representation Transformations
Reverse
Engineering
Analyses
Evolution
S.Ducasse LSE12
Representation Transformations
Reverse
Engineering
Analyses
EvolutionLanguage Independent Meta Model (FAMIX)
[UML99]An Extensible Reengineering Environment (Moose)
[Models 06]
Reengineering PatternsVersion Analyses
[ICSM 05]HISMO metamodel
[JSME 05]
Understanding Large Systems [WCRE99, TSI00, TSE03]Static/Dynamic Information
[ICSM99]Feature Analysis
[JSME 06]Class Understanding
[OOPSLA01,TSE04]Package Blueprints
[ICSM 07]Distribution Maps
[ICSM 06]
Software Metrics [LMO99, OOPSLA00]
Duplicated Code Identification[ICSM99, ICSM02]
Group Identification [ASE03]
Test Generation [CSMR 06]Concept Identification
[WCRE 06]
Language Independent Refactorings
[IWPSE 00]
S.Ducasse
One Example: who is responsible of what?
13
(1) Extraction
(2) Modèle
(4) Visualisation
(3) Analyses
Distribution Map of authors on JBoss
}
{
}
{
}
{}
{
}
{
McCabe = 21
LOC =
753,0
00NOM = 102
Metrics Queries Visualizations ...
Moose is a powerful environment
Metrics compress the system into numbers
Cyclomatic complexity = 21
LOC = 753,000NOM = 102
}
{
}
{
}
{}
{
}
{
Queries reduce the analysis space
}
{
}
{
}
{}
{
}
{
Visualization compresses the system into pictures
}
{
}
{
}
{}
{
}
{
S.Ducasse LSE
Roadmap• Some facts• Our approach
• Supporting maintenance• Moose an open-platform
• Some visual examples• Conclusion
18
70% of our sensors are dedicated to vision
Polymetric views show up to 5 metrics.
Color metric
Width metric
Height metric
Position metrics
Lanza etal, 03
System Complexity shows class hierarchies.
lines
attributes
methods
Class Blueprint shows class internals.
Initialize Interface Internal Accessor Attribute
invocation and access direction
Ducasse, Lanza, 05
Class Blueprint shows class internals.
S.Ducasse LSE
Developers• More efficient to put people working together in the
same office? • How can we optimize software development?
24
S.Ducasse LSE
Who did that?
25
Files
Time
S.Ducasse LSE
Which author “possesses” which files?
26
S.Ducasse LSE
Alphabetical order is no order!
27
S.Ducasse LSE
Based on similar commit signature
28
DialogueMonologue
Edit Takeover
Familiarization
S.Ducasse LSE
How can we predict changes?Common wisdom stresses that what changes yesterday will change today, but it is true?
In the Sahara the weather is constant, tomorrow: 90% chance that it is the same as today
In Belgium, the weather is changing really fast (sea influence), 30% chance that it is the same as today
29
S.Ducasse LSE
With history analysis we can get the climate of a software system
30
Past LateChangers
Future EarlyChangers
Presentversion
Pastversions
Futureversions
1, TopLENOM1..i (S, t1) ∩ TopEENOMi..n (S, t2) ≠ ∅
YWi(S) = 0, TopLENOM1..i (S, t1) ∩ TopEENOMi..n (S, t2) = ∅
hitYW(S, t1, t2) =
∑ YWi(S, t1, t2)
n - 2
S.Ducasse LSE
Roadmap• Some facts• Our approach
• Supporting maintenance• Moose an open-platform
• Some visual examples• Conclusion
31
}
{
}
{
}
{}
{
}
{
McCabe = 21
LOC =
753,0
00NOM = 102
Metrics Queries Visualizations ...
Duplicationdetection
Evolution analysis
Dynamic analysis
Semantic analysis
S.Ducasse LSE
Moose has been validated on real life systems written in different languages
• Several large, industrial case studies (NDA)• Harman-Becker• Nokia• Daimler• Siemens
• Different implementation languages (C++, Java, Smalltalk, Cobol)
• Different sizes
33
Current TeamStéphane DucasseTudor GîrbaAdrian Kuhn
Previous TeamSerge DemeyerMichele LanzaSander Tichelaar
Current ContributorsHani Abdeen Ilham AllouiGabriela Arevalo Mihai BalintPhilipp Bunge Marco D’AmbrosOrla Greevy Markus Hofstetter Matthias Junker Adrian LienhardMartin von Löwis Mircea LunguMichael Meyer Damien PolletSara Sellos Lucas StreitToon Verwaest Roel WuytsRichard Wettel
Previous ContributorsTobias Aebi Frank BuchliThomas Bühler Calogero ButeraDaniel Frey Georges GolomingiDavid Gurtner Reinout HeeckMarkus Kobel Michael LocherPietro Malorgio Michael MeerLaura Ponisio Daniel RatiuMatthias Rieger Azadeh Razavizadeh Andreas Schlapbach Daniel SchweizerMauricio Seeberger Lukas SteigerDaniele Talerico Herve VerjusVioleta Voinescu.
~ 100 men years
S.Ducasse LSE
Possible New Research Directions
• Remodularization• Clustering analysis• Open and Modular modules
• SOA - Service Identification• Architecture Extraction/Validation• Software Quality• Cost prediction• EJB Analysis• Business rules extraction• Model transformation
35
S.Ducasse LSE
Evolution is difficult
• We are expert in reengineering • We are interested in your problems!
• Moose is open-source, you can use it, extend it, change it
• We can collaborate!
36
}
{
}
{
}
{}
{
}
{
NOM > 10 & LOC > 100