Download - Towards Clean Legacy Code

Transcript
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]