Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Legacy Evolution - Done Right

Legacy Evolution - Done Right

As developers and architects, we spend most of our time adding features to our products (so-called "maintenance"). We are often annoyed about the many deficits of these systems.

Even supposedly simple things are becoming incredibly difficult
with these _legacy systems_, the _time-to-market_ is getting worse and worse, as business is calling for more and more features. Rarely we find time to reduce technical debt and clean up increasingly messy dependencies.

In this talk you'll learn about possibilities to systematically escape legacy hell and reduce technical and other debt in your systems. Get to know strategical and tactical improvement approaches
you can scale to fit your actual situation.

In the first step, we will conduct a breadth-first search for existing problems, issues and risks within your system. We clearly identify technical, organizational and communicative debts and determine their severity in order to concentrate on the worst of them..

Only then we'll start improving the existing situation: I will present a number of strategic improvement approaches.

Dr. Gernot Starke

October 29, 2021
Tweet

More Decks by Dr. Gernot Starke

Other Decks in Programming

Transcript

  1. Problems in complicated system (0) • taste • price •

    appearance • location (of restaurant) https://flic.kr/p/6xuSMU
  2. Problems in complicated system (1) • taste • temperature •

    consistency • popularity • purchase price
  3. Problems in complicated system (2) Nutritional value: carbs, protein, fat,

    vitamins drugs, contamination, poison, radioactivity https://flic.kr/p/bDGDMY
  4. Breadth-first search 1. Stakeholder 2. (Overall) structure 3. Code details

    4. Cohesion 5. Context 6. Qualities 7. Development process 8. Persistence 9. Technology 10. Infrastructure examples... examples...
  5. Level-1: Component Disorder Sales Frontend Private + Corporate Configurator Shell

    Client Contracts UDS (User Data Service) Order & Fullfillment Vouchers & Rebates eGov Shop Sales & Contracts Archive External Partners Price Management Data Warehouse Marketing & Sales Campaigns Atlas Customs & Logistics Pricing Engine Sales Backend Private+Corp Hodor Optical Archive Post-Sales Services Security Extensions Legend: Java PHP Python C/C++ Hask ell Cobol PL/ SQL Flash HTML/ JS Sales Backend eGovernment
  6. Metrics • coupling / dependencies • code complexity • performance

    • … • errors per component • Know-How per component • change frequency • … good better
  7. VENOM External Interface Hell „Standard“ supplier Suppler API „Custom“ supplier

    >200 >200 point2point interfaces „Standard“ craftsmen „Custom“ craftsmen Craftsmen API ~35
  8. (bad) Cohesion UDS (User Data Service) Order & Fullfillment Vouchers

    & Rebates Sales & Contracts Archive Price Management Marketing & Sales Campaigns Atlas Customs & Logistics Pricing Engine Sales Backend Private+Corp Sales Backend eGovernment determines prices calculations & data ALSO relevant for pricing
  9. Clean Code + Bad Persistence ... (500) ... (300) ...

    (400) ... (400) ... (400) relational DB, „done wrong“
  10. Example: Use of Rule-Engine • Review identifies deviation from standard

    (concerning loading strategy of Working-Memory) • Default: few but huge data sets • Reality: many but small data sets
  11. Breadth-first search Stakeholder Kontext Qualität Architektur Code Laufzeit Daten Tests

    Prozesse Infrastruktur Security .... H ? H H M M ? M H H H M ? ? ? M M M M H M M ? H H M M H H M M ? H M M M M H H Priorities needed!
  12. Breadth-first search Stakeholder Kontext Qualität Architektur Code Laufzeit Daten Tests

    Prozesse Infrastruktur Security .... H ? H H M M ? M H H H M ? ? ? M M M M H M M ? H H M M H H M M ? H M M M M H H Priorities needed!
  13. Estimation: Fundamentals... Term Description Subject What do we estimate Unit

    Time, money, effort, pain (cost) factor What influences the subject? Assumptions What do we estimate/guess about these factors Observation Metrics, counts etc. of single factors Probability How sure are we of these numbers?
  14. Categories of long-term improvements... Throw away & rebuild reduce size

    Improve some parts improve internal structure & cohesion «category» Long-Term Improvement Approach «category» Rewrite «category» Restructure «category» Data Migration «category» Brainsize «category» Improve Modularization «category» Supporting Patterns Improve processes or technology
  15. Change by Extraction 2 1 Client Flawed (incohesive) System Client

    „other“ other features Client Flawed System Client „other“ other features Better other features Client (reduced) Flawed System Client „other“
  16. Change by Split 1 2 3 Client Type 1 Flawed

    System Client Type 2 Client Type 1 Flawed System Client Type 2 Flawed System Client Type 1 Reduced to Type 1 Client Type 2 Reduced to Type 2 New Type 1 System Client Type 1 Client Type 2 New Type 2 System
  17. Decorating Collaborator Client Code Flawed Supplier «use» Client Code Flawed

    Supplier „Proxy“ «use» «delegate» 1. 2. New functionality Client Code Flawed Supplier „Proxy“ «use» «delegate» «decoration» 1. 2. 3.