Towards Clean Legacy Code. Lars Martin, Clean Code Days 2013, 11.09.2013 ...
“Make sure you know what the code does before you attempt any ...
Towards Clean Legacy Code Lars Martin, Clean Code Days 2013, 11.09.2013
Towards Clean Legacy Code
Who am I?
§ Developer, Architect, Consultant § Java Enterprise, Eclipse, Continuous …
Towards Clean Legacy Code
Agenda + introduction into model based software modernization approaches (software evolution) + introduction of Eclipse based tooling − full migration of legacy systems “Make sure you know what the code does before you attempt any modifications, don't just jump in.”
Towards Clean Legacy Code
Motivation
§ legacy system § heavy database access § ORM è java.sql.* § new team © Katharina Bregulla / pixelio.de
Towards Clean Legacy Code
Motivation
§ Raising Questions Ø which tables will be accessed? Ø will other tables (modules) be accessed? Ø if yes, migrated already?
Ø automation possible? © Katharina Bregulla / pixelio.de
Towards Clean Legacy Code
Horseshoe-Model Re-Engineering PIM Architecture Transformation
PSM’
Code’
PSM
Code
Foreward Engineering (MDA)
Reverse Engineering (ADM)
PIM’
Reverse engineering: ”… is the process of analyzing a software system to create representations of the system at a higher level of abstraction.” Re-Engineering: “... is the analysis and modification of a software system to change its form and implement it in its new form.” (Forward) Engineering: “… is the way of designing systems, starting from abstract logical and implementation independent specification to gradually lead to the implementation of a physical system. © unknown
Towards Clean Legacy Code
MoDisco - Concepts Documentation Impact Analysis
Source Code
Models Viewpoints
Databases
Restruct. Code Migrated Code
Configuration Files
MoDisco ..other
Eclipse Modeling
Metrics Norm checking
Towards Clean Legacy Code
MoDisco - Modernization Phases
Existing Artifacts
Software Artifacts • Source Code • Configuration • Tests • Database • …
Discover
Models
Understand
Transform
Viewpoints
New Artifacts
Towards Clean Legacy Code
MoDisco – Use Cases
© Michael Bührke / pixelio.de
Towards Clean Legacy Code
MoDisco – Use Cases
§ § § §
Quality Assurance (Metrics, ...) Documentation (Structure, Dataflow, …) Refactorierung (Design Pattern, Standards, …) Migration (Framework, Architecture, …) © Michael Bührke / pixelio.de
Towards Clean Legacy Code
Practical Session (1/2)
Towards Clean Legacy Code
Practical Session
JUnit4 é JUnit3
© Katharina Wieland Mülle / pixelio.de
Towards Clean Legacy Code java.ecore customizes
conforms to
extends
Java EMF Model JUnit3 Facet
JUnit3 Customization
uses
JUnit3 Queries
uses
Towards Clean Legacy Code
Practical Session (2/2)
Towards Clean Legacy Code
Practical Session
Abstract Factory, Adapter, Bridge, Builder, …, Singleton, …, Visitor © kiramain / pixelio.de
Towards Clean Legacy Code
Conclusion ü Customizability o Metamodels o M2M, M2T ü Extensive o Discoverer o Queries ü Workflow ü DSL (Xtext, …)
ü (Focus on Java) ü Entry barriers ü Toolset
© Gerd Altmann / pixelio.de
Towards Clean Legacy Code
Outlook ü Metrics on software maintainability o bugs / commits per time unit o committer per time unit o … ü Identification of variants within branches o modularization o … ü Sync domain model DB © Mario De Ma?a / pixelio.de
© Gerd Altmann / pixelio.de
Master Thesis / Abschlussarbeit – Software Engineering Aufgabengebiet: • Entwicklung von Methoden zur Informationsgewinnung • Implementierung der Methoden mittels Eclipse basierter Technologien Studienbereiche: • Informatik und -Informatik
© Willi Heidelbach / pixelio.de
Dipl.-Inf. Lars Martin +49-(0)173-64 24 461
[email protected]
SMB GmbH – Plauenscher Ring 21 – D-01187 Dresden