Towards Clean Legacy Code - the Clean Code Days 2014

4 downloads 1759 Views 26MB Size Report
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