Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Maintaining large software systems with Moose
1. Long living software
systems
Stéphane Ducasse
stephane.ducasse@inria.fr
http://stephane.ducasse.free.fr/
Stéphane Ducasse 1
2. A word of presentation
Co-author of Object-Oriented Reengineering Patterns
Co-developer of Moose (reengineering platform)
13 PhD Theses in Soft. Eng.
50+ articles
Member of the Squale project
Grounded in reality
Maintainer of open-source
projects
Harman-Becker AG, Bedag AG,
Nokia, Daimler
S.Ducasse 2
3. Roadmap
• Some software development facts
• Our approach
• Supporting maintenance
• Moose an open-platform
• Conclusion
S.Ducasse 3
5. 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
S.Ducasse 5 LSE
6. Maintenance is Continuous Development
4.1% Other
18.2% Adaptive
(new platforms or OS)
Relative Maintenance Effort
Between 50% and 75% of global
effort is spent on 17.4% Corrective
“maintenance” ! (fixing reported errors)
60.3% Perfective
(new functionality)
The bulk of the maintenance cost is due to new functionality
even with better requirements, it is hard to predict new functions
S.Ducasse 6 LSE
8. Maintenance is
is needed to evolve the code.
Fo
rw
r ing ar
ee d
en
gin gin
en ee
e
rs rin
ve g
Re
{ {
{ { { {
} { {
}
} Actual development } }
} { } } }
S.Ducasse 8
9. Roadmap
• Some software development facts
• Our approach
• Supporting maintenance
• Moose an open-platform
• Conclusion
S.Ducasse 9
10. Long Living Complex Software
(1) New languages for evolving living software ?
(2) Help teams maintaining large software ?
S.Ducasse 10
11. Fondamental aspects of object languages
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais
lorsqu’il n’y a plus rien à retirer. St-Exupery
Subjects
Components for field devices
Classboxes: Modules for open-classes (Monkey patching in Ruby)
OOPAL: OOP + APL Generalizing message passing (FScript)
Language symbiosis
Encapsulation for dynamic languages
Reusable behavior:Traits
Impacts
Traits used by Fortress (SUN Microsystems), Scala (EPFL),
Perl-6, Squeak, Slate
S.Ducasse 11
12. Current Research
Secure hot-upgrade
Security and dynamic reflexive systems
Towards open VM
S.Ducasse 12
13. Help teams maintaining large software
What is the xray for software?
code, people, practices
Which analyses?
cycles detection, quality models....
How can you monitor your system (dashboards....)
How to present extracted information?
S.Ducasse 13
18. Moose is a powerful environment
McCabe = 21
NOM 0
= 102
3 ,00
75
=
...
C
LO
Metrics Queries Visualizations
{ {
{ {
}
}
}
} { }
19. Moose is designed to be extensible
Class
History
Duplication Class
Version Author
Method Class
Method Class File
Inheritance
Event Inheritance
Trace
open
meta-described
S.Ducasse 19
20. Since 1996 a lot of year/man investment
Used by several research labs (CH, BE, FR)
Consulting companies (CH)
http://www.moosetechnology.org
Open source: BSD
Supports Java, C, Smalltalk (C++ analysis)
S.Ducasse 20
21. Applied on real life systems
Several large, industrial case studies (NDA)
Harman-Becker
Nokia
Daimler
Siemens
Different implementation languages (C++, Java, Smalltalk,
Cobol)
We use external C++ parsers
Different sizes
S.Ducasse 21 LSE
22. Interested in your problems!
• Remodularization/Repackaging
• SOA - Service Identification
• Architecture Extraction/Validation
• Software Quality
• Cost prediction
• EJB Analysis
• Business rules extraction
• Model transformation
S.Ducasse 22