Towards Clean Legacy Code

20
Towards Clean Legacy Code Lars Martin, Clean Code Days 2013, 11.09.2013

description

My slides from the Clean Code Days 2013 presentation.

Transcript of Towards Clean Legacy Code

Page 1: Towards Clean Legacy Code

Towards Clean Legacy Code Lars Martin, Clean Code Days 2013, 11.09.2013

Page 2: Towards Clean Legacy Code

Towards Clean Legacy Code

§  Developer, Architect, Consultant

§  Java Enterprise, Eclipse, Continuous …

Who am I?

Page 3: 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

Page 4: Towards Clean Legacy Code

Towards Clean Legacy Code

Motivation

§  legacy system § heavy database access § ORM è java.sql.* § new team

©  Katharina  Bregulla  /  pixelio.de  

Page 5: Towards Clean Legacy Code

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  

Page 6: Towards Clean Legacy Code

Towards Clean Legacy Code

Horseshoe-Model

PIM

PSM PSM’

PIM’

Code’ Code

Foreward Engineering (M

DA

) Rev

erse

Eng

inee

ring

(A

DM

)

Re-Engineering

Architecture Transformation

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  

Page 7: Towards Clean Legacy Code

Towards Clean Legacy Code

MoDisco - Concepts

MoDisco

Eclipse Modeling

Source Code

Databases

Metrics Norm checking

Configuration Files

Restruct. Code Migrated Code

Documentation Impact Analysis

Models Viewpoints

..other

Page 8: Towards Clean Legacy Code

Towards Clean Legacy Code

MoDisco - Modernization Phases

Models

Discover

Viewpoints

Understand Existing Artifacts

Software Artifacts •  Source Code •  Configuration •  Tests •  Database •  …

New Artifacts

Transform

Page 9: Towards Clean Legacy Code

Towards Clean Legacy Code

MoDisco – Use Cases

©  Michael  Bührke    /  pixelio.de  

Page 10: Towards Clean Legacy Code

§  Quality Assurance (Metrics, ...)

§  Documentation (Structure, Dataflow, …)

§  Refactorierung (Design Pattern, Standards, …)

§  Migration (Framework, Architecture, …)

Towards Clean Legacy Code

MoDisco – Use Cases

©  Michael  Bührke    /  pixelio.de  

Page 11: Towards Clean Legacy Code

Practical Session (1/2)

Towards Clean Legacy Code

Page 12: Towards Clean Legacy Code

JUnit4 é

JUnit3

©  Katharina  Wieland  Mülle  /  pixelio.de  

Towards Clean Legacy Code

Practical Session

Page 13: Towards Clean Legacy Code

JUnit3 Queries

JUnit3 Facet

JUnit3 Customization

java.ecore

uses uses

customizes extends conforms to

Java EMF Model

Towards Clean Legacy Code

Page 14: Towards Clean Legacy Code

Practical Session (2/2)

Towards Clean Legacy Code

Page 15: Towards Clean Legacy Code

Abstract Factory, Adapter, Bridge,

Builder, …, Singleton, …, Visitor

©  kiramain  /  pixelio.de  

Towards Clean Legacy Code

Practical Session

Page 16: Towards Clean Legacy Code

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  

Page 17: Towards Clean Legacy Code

©  Mario  De  Ma?a  /  pixelio.de  

ü 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

Towards Clean Legacy Code

Outlook

Page 18: Towards Clean Legacy Code

©  Gerd  Altmann  /  pixelio.de  

Page 19: Towards Clean Legacy Code

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  

Page 20: Towards Clean Legacy Code

SMB GmbH – Plauenscher Ring 21 – D-01187 Dresden

Dipl.-Inf. Lars Martin +49-(0)173-64 24 461 [email protected]