Towards Clean Legacy Code

Post on 10-May-2015

301 views 2 download

Tags:

description

My slides from the Clean Code Days 2013 presentation.

Transcript of Towards Clean Legacy Code

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

Towards Clean Legacy Code

§  Developer, Architect, Consultant

§  Java Enterprise, Eclipse, Continuous …

Who am I?

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

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

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  

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

Towards Clean Legacy Code

MoDisco - Modernization Phases

Models

Discover

Viewpoints

Understand Existing Artifacts

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

New Artifacts

Transform

Towards Clean Legacy Code

MoDisco – Use Cases

©  Michael  Bührke    /  pixelio.de  

§  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  

Practical Session (1/2)

Towards Clean Legacy Code

JUnit4 é

JUnit3

©  Katharina  Wieland  Mülle  /  pixelio.de  

Towards Clean Legacy Code

Practical Session

JUnit3 Queries

JUnit3 Facet

JUnit3 Customization

java.ecore

uses uses

customizes extends conforms to

Java EMF Model

Towards Clean Legacy Code

Practical Session (2/2)

Towards Clean Legacy Code

Abstract Factory, Adapter, Bridge,

Builder, …, Singleton, …, Visitor

©  kiramain  /  pixelio.de  

Towards Clean Legacy Code

Practical Session

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  

©  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

©  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  

SMB GmbH – Plauenscher Ring 21 – D-01187 Dresden

Dipl.-Inf. Lars Martin +49-(0)173-64 24 461 lars.martin@smb-tec.com