SlideShare a Scribd company logo
WPS - Workplace Solutions GmbH //// Hans-Henny-Jahnn-Weg 29 //// 22085 HAMBURG
Improving Legacy
Dr. Carola Lilienthal
Carola.Lilienthal@wps.de, @cairolali
www.wps.de
Improving legacy
@cairolaliwww.llsa.de
www.sustainable-software-architecture.com
@cairolali
Improving legacy
@cairolali
7 41
63
128
90 bis 15 Mio
bis 5 Mio
bis 1 Mio
bis 500.000
bis 100.000
@cairolali
HOW DO WE SPEND OUR TIME?
70%
20%
10%
Code verstehen
Problem lösen
Code schreiben
Code comprehension
Problem solving
Writing code
Improving legacy
@cairolali
WELL-FORMED COMPLEX STRUCTURES = SAVING TIME!
Cognitive Mechanisms
HierarchiesChunking Schemata
@cairolali
Improving legacy
@ naturfotographen-forum.de
Marion Meixner
@cairolali
public class XYManager {
void registerService(Service s)…
Service getService(String n)...
void initializeServiceRegistry()…
void initializeEventQueue()…
void sendEvent(Event event)…
void initializePrinterQueue()…
void printDocument(Doc d)…}
@cairolali
WELL-FORMED COMPLEX STRUCTURES = SAVING TIME!
Cognitive Mechanisms
HierarchiesChunking Schemata
Well-formed
architecture
Modularity
@cairolali
MODULARITY
▪High Cohesion and lose Coupling
▪Responsibility Driven Design
▪Separation of Concerns
▪Single Responsibility Principle
@cairolali
FOUR MODULES
Modul
Green
Modul
Purple
Modul
Orange
Modul
Blue
@cairolali
HIGH COHESION?
@cairolali
HIGH COHESION!
@cairolali
WELL-FORMED COMPLEX STRUCTURES = SAVING TIME!
Cognitive Mechanisms
HierarchiesChunking Schemata
Well-formed
architecture
Modularity
@cairolali
HIERARCHIES
 
Improving legacy
@cairolali
WELL-FORMED COMPLEX STRUCTURES = SAVING TIME!
Cognitive Mechanisms
HierarchiesChunking Schemata
Well-formed
architecture
Modularity
Hierarchical
Layerng
@cairolali
Improving legacy
Improving legacy
@cairolali
WELL-FORMED COMPLEX STRUCTURES = SAVING TIME!
Cognitive Mechanisms
HierarchiesChunking Schemata
Well-formed
architecture
Modularity
Hierarchical
Layerng
Pattern
Consistency
@cairolali
PATTERN HELP US TO BE QUICK
Domain Module
Model
View
Controller
ValueObject
Service
BusinessObject
@cairolali
WRONG PATTERN STOP THE FLOW
Domain Module
Model
View
Controller
ValueObject
Service
BusinessObject
Factory
✓ createBusinessObject()
✓ createValueObject()
× calculate(BO)
× process(BO)
@cairolali
WELL-FORMED COMPLEX STRUCTURES = SAVING TIME!
Cognitive Mechanisms
HierarchiesChunking Schemata
Well-formed
architecture
Modularity
Hierarchical
Layerng
Pattern
Consistency
@cairolali
@cairolali
TWO DIMENSIONS IN ON ARCHITECTURE
Technical layering Domain layering
Tree violations
that are easy to
resolve
Difficult
violations
One component
cuasing several
problems
One component
causing a
problem
@cairolali
DOMAIN LAYERING IS MISSING
Technical layering No domain layering
Some violations
of the technical
layering
Allmost all
domain
components
need each other
@cairolali
119 classes from 4 components
+ 28 other classes
@cairolali
327 classes from 8 components
That all need each other
Improving legacy
@cairolali
WELL-FORMED COMPLEX STRUCTURES = SAVING TIME!
Cognitive Mechanisms
HierarchiesChunking Schemata
Well-formed
architecture
Modularity
Hierarchical
Layerng
Pattern
Consistency
@cairolali
MODULARITY: SIMULAR-SIZED
Typical metrics:
▪ LOC per method, class, package, components
▪ Duplicated Code
▪ Cyclomatic complexity
▪ Is the system balanced at different levels?
▪ Which code sections stand out due to their size?
Anti-Pattern
„Godclass“
@cairolali
UNEVEN MODULES
One big monolith with satellites
950.860 LOC
84.808 LOC
@cairolali
UNEVEN MODULES
9 Components = 17 Subsystems
@cairolali
128 BUILD UNITS WITH NUMBER OF CLASSES
▪ 3 Mio of
9 Mio LOC
▪ 1/3 of the
system
@cairolali
5.270 CLASSES IN ONE CYCLE IN ONE BUILDUNIT
@cairolali
DOMAIN-DRIVEN ARCHITECTURE
Domain
Module B
Domain
Module A
Loose coupling = as little coupling as possible!
Technicallayering Domain
Module C
User Interface User InterfaceUser Interface
Domain
Application
Domain
Application
Domain
Application
@cairolali
DOMAIN MODULES?
UseCase-Driven
@cairolali
DOMAIN MODULES?
Models integrated in UseCasesUseCase-Driven
@cairolali
WELL-FORMED COMPLEX STRUCTURES = SAVING TIME!
Cognitive Mechanisms
HierarchiesChunking Schemata
Well-formed
architecture
Modularity
Hierarchical
Layering
Pattern
Consistency
@cairolali
User
Interface
Domain
Application
Domain
Module
Domain
Module
Domain Module
Model
View
Controller
ValueObject
Service
Entity
Layeringbypattern
@cairolali
PATTERN CONFORMITY: GOOD EXAMPLE
☺ 90% of the source code can be assigned to pattern
☺ 0,1% violations between the pattern
Eventer
Processes
Service
@cairolali
@cairolali
WELL-FORMED COMPLEX STRUCTURES = SAVING TIME!
Cognitive Mechanisms
HierarchiesChunking Schemata
Modularity
Hierarchical
Layerng
Pattern
Consistency
→ Consistent and
integrated pattern
→ Use a pattern
language
→ No cycles neither
on architectural
level nor on class
level
→ responsibility
→ coupling
→ size
→ interfaces
@cairolali
FREE TOOLS
• SonarQube:
▪ Control station for quality metrics
▪ Platform for multiple plugins
• JDepend:
▪ few metrics
▪ simple dependency analysis
• JDepend + Google Architecture Rules:
• simple architecture description
• Ndepend/CDepend:
▪ Metrics
▪ dependency analysis
• XRadar:
▪ Analysis of Java projects via maven
▪ Reports on complexity and architecture violations
• Moose
• Code City
@cairolali
COMMERCIAL PRODUCTS
▪ Axivion Bauhaus: Java, C#, C/C++, Ada, VB and Cobol
▪ Lattix: Java, .Net, C/C++, Ada, Delphi and DB Systema
▪ Structure101: Java, C++, Ada
▪ SotoArc and Sonargraph: Java, C#, C/C++, ABAP, PHP
▪ Teamscale: C#, Java, ABAP
▪ Seerene: Java, C#, C/C++, ABAP
@cairolali
▪Do test driven development
▪Use design and architecture patterns
▪Write modular classes with one single
responsibility
▪Aim for high cohesion and low coupling
MOB ARCHITECTING WITH THE TEAM
Structure101
SotoArc
Lattix
@cairolali
612.869 LOC
14.756.435 LOC
252.062 LOC
804.093 LOC
543.388 LOC
1.035.668 LOC
486.358 LOC
175.258 LOC
42.311 LOC
193.383 LOC
643.466 LOC
245.754 LOC
2.890.204 LOC
141.696 LOC
512.086 LOC
9.988.363 LOC
200.591 LOC
922.949 LOC
22.658 LOC
663.862 LOC
3.270.188 LOC
1.521.357 LOC
0
2
4
6
8
10
MODULARITY MATURITY INDEX (MMI)
@cairolali
@cairolali
cl@wps.de
Available in English since Summer 2019
www.sustainable-software-architecture.com
THANK YOU FOR YOUR ATTENTION!

More Related Content

PDF
Resolving technical debt in software architecture
PDF
Its all about the domain honey engl
PDF
Reducing technical debt in php
PPTX
Engineering 4.0: Digitization through task automation and reuse
PDF
its all about the domain honey! Experiences from 15 years of Domain-Driven De...
PDF
NoCMS - from monolithic CMS to dissolved CMS
PDF
Incquery Suite Models 2020 Conference by István Ráth, CEO of IncQuery Labs
PDF
Getting Healthy with Magnolia, Blossom and Spring
Resolving technical debt in software architecture
Its all about the domain honey engl
Reducing technical debt in php
Engineering 4.0: Digitization through task automation and reuse
its all about the domain honey! Experiences from 15 years of Domain-Driven De...
NoCMS - from monolithic CMS to dissolved CMS
Incquery Suite Models 2020 Conference by István Ráth, CEO of IncQuery Labs
Getting Healthy with Magnolia, Blossom and Spring

Similar to Improving legacy (20)

PDF
XebiCon'17 : AxonFramework @ SGCIB (our experience) : (CQRS, Eventsourcing, A...
PDF
AI Cloud Sprawl Is Real—Here’s How CXOs Can Regain Control Before It Costs Mi...
PDF
Implementing IBM RSA and IBM ClearQuest integration: UML to State-Machine wit...
PDF
Implementing IBM RSA and IBM ClearQuest integration: UML to State-Machine wit...
PDF
LOTAR-PDES: Engineering digitalization through task automation and reuse in t...
PPTX
Serverless machine learning architectures at Helixa
PPTX
Simplifying the Creation of Machine Learning Workflow Pipelines for IoT Appli...
PPTX
Opportunities and Challenges for Running Scientific Workflows on the Cloud
PDF
Practical machine learning
PDF
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
PDF
AI/ML Infra Meetup | ML explainability in Michelangelo
PPTX
Distributed GLM with H2O - Atlanta Meetup
PPTX
High Interoperability with Magnolia's Open Suite Approach
PDF
DevOps Workshops at IBM Edge 2016
PDF
DevOps workshops at EDGE 2016
PPTX
Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...
PPTX
Embracing Failure - AzureDay Rome
PPTX
Reactive Microservices Roadshow Berlin
PDF
QCon Beijing - April 2010
PPTX
Microservices with .Net - NDC Sydney, 2016
XebiCon'17 : AxonFramework @ SGCIB (our experience) : (CQRS, Eventsourcing, A...
AI Cloud Sprawl Is Real—Here’s How CXOs Can Regain Control Before It Costs Mi...
Implementing IBM RSA and IBM ClearQuest integration: UML to State-Machine wit...
Implementing IBM RSA and IBM ClearQuest integration: UML to State-Machine wit...
LOTAR-PDES: Engineering digitalization through task automation and reuse in t...
Serverless machine learning architectures at Helixa
Simplifying the Creation of Machine Learning Workflow Pipelines for IoT Appli...
Opportunities and Challenges for Running Scientific Workflows on the Cloud
Practical machine learning
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
AI/ML Infra Meetup | ML explainability in Michelangelo
Distributed GLM with H2O - Atlanta Meetup
High Interoperability with Magnolia's Open Suite Approach
DevOps Workshops at IBM Edge 2016
DevOps workshops at EDGE 2016
Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...
Embracing Failure - AzureDay Rome
Reactive Microservices Roadshow Berlin
QCon Beijing - April 2010
Microservices with .Net - NDC Sydney, 2016
Ad

More from Carola Lilienthal (13)

PDF
its all about the domain, honey! Experiences from 15 years of Domain-Driven D...
PDF
DDD Foundation: Improving legacy
PDF
Monolithen mit ddd zerlegen
PDF
The joy of multiple models
PDF
Technische Schulden tun weh! Wie man sie erkennt und beseitigt
PPTX
Its all about the domain honey
PDF
From pair programming to mob architecting
PDF
Its all about the domain honey
PDF
Technische Schulden in Architekturen erkennen und beseitigen
PDF
Langlebige architekturen
PDF
Große ziele kleine schritte
PDF
Technische schulden abbauen
PDF
Langlebige Softwarearchitekturen - Der Umgang mit technischen Schulden
its all about the domain, honey! Experiences from 15 years of Domain-Driven D...
DDD Foundation: Improving legacy
Monolithen mit ddd zerlegen
The joy of multiple models
Technische Schulden tun weh! Wie man sie erkennt und beseitigt
Its all about the domain honey
From pair programming to mob architecting
Its all about the domain honey
Technische Schulden in Architekturen erkennen und beseitigen
Langlebige architekturen
Große ziele kleine schritte
Technische schulden abbauen
Langlebige Softwarearchitekturen - Der Umgang mit technischen Schulden
Ad

Recently uploaded (20)

PDF
Tally Prime Crack Download New Version 5.1 [2025] (License Key Free
PDF
17 Powerful Integrations Your Next-Gen MLM Software Needs
PDF
Download FL Studio Crack Latest version 2025 ?
PDF
CapCut Video Editor 6.8.1 Crack for PC Latest Download (Fully Activated) 2025
PDF
CCleaner Pro 6.38.11537 Crack Final Latest Version 2025
PDF
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Designing Intelligence for the Shop Floor.pdf
PDF
Cost to Outsource Software Development in 2025
PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PPTX
WiFi Honeypot Detecscfddssdffsedfseztor.pptx
PPTX
Log360_SIEM_Solutions Overview PPT_Feb 2020.pptx
PPTX
history of c programming in notes for students .pptx
PDF
Nekopoi APK 2025 free lastest update
PPTX
Patient Appointment Booking in Odoo with online payment
PPTX
Advanced SystemCare Ultimate Crack + Portable (2025)
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
Tally Prime Crack Download New Version 5.1 [2025] (License Key Free
17 Powerful Integrations Your Next-Gen MLM Software Needs
Download FL Studio Crack Latest version 2025 ?
CapCut Video Editor 6.8.1 Crack for PC Latest Download (Fully Activated) 2025
CCleaner Pro 6.38.11537 Crack Final Latest Version 2025
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Designing Intelligence for the Shop Floor.pdf
Cost to Outsource Software Development in 2025
Reimagine Home Health with the Power of Agentic AI​
wealthsignaloriginal-com-DS-text-... (1).pdf
WiFi Honeypot Detecscfddssdffsedfseztor.pptx
Log360_SIEM_Solutions Overview PPT_Feb 2020.pptx
history of c programming in notes for students .pptx
Nekopoi APK 2025 free lastest update
Patient Appointment Booking in Odoo with online payment
Advanced SystemCare Ultimate Crack + Portable (2025)
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Wondershare Filmora 15 Crack With Activation Key [2025
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf

Improving legacy