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

Le projet Legacy : quelles stratégies pour s'en...

Le projet Legacy : quelles stratégies pour s'en sortir ? — ATBDX 2020

Arnaud LEMAIRE

October 28, 2020
Tweet

More Decks by Arnaud LEMAIRE

Other Decks in Programming

Transcript

  1. A code you want to change that no one understands

    but still provides value. Definition
  2. A code without predictability Definition Developers have no idea how

    long a change can take 01. 02. There is no correlation between the business and the technical complexity 03. You don’t know when something will break
  3. A code with no test Definition « Most of the

    fear involved in making changes to large code bases is fear of introducing subtle bugs; fear of changing things inadvertently. Without test, you just don’t know whether things are getting better or worse. » — Michael Feathers
  4. Hello, I am a software developer. My name is Arnaud

    LEMAIRE, and you can find me on lilobase.me & @lilobase Who am I?
  5. A natural process Why does it appear? Add lines of

    code More complexity Increase in software entropy Legacy Code
  6. You need to let your software die* * part of

    your software 01. 02. Without bringing the remaining parts with it 03. Write code that is easy to delete, not easy to extends A natural process that cannot be stopped
  7. That can be speeded up or slowed down Why does

    it appear? Refactoring helps to keep complexity under control 01. 02. A good software design is critical in the long term 03. Technical debt ≠ legacy software, but it can accelerate the process
  8. You need to have empathy, and take the time to

    understand the project's history What do we do now ?
  9. Would you rather go to the dentist twice a year

    or brush your teeth every day? When to refactor
  10. Always leave the campground cleaner than you found it. When

    to refactor This is the « boy scout rule » 01. 03. When you found a bug, first write a test that triggers it, then fix it. Developing a new feature and refactoring doesn’t mix well! 02. 04. Beware of the broken windows syndrome
  11. Stop the weekly technical debt repayment session When to refactor

    The « We’ll fix it later » syndrome 01. 02. The same cause always produces the same effect Instead provide a learning time, so you stop writing legacy code 03.
  12. The golden master Testing « In nearly every legacy system,

    what the system does is more important that what it’s supposed to do. » — Michael Feathers How to refactor
  13. Ask your business to help you map your (business) domain

    01. Invoice Generation Invoicing Car rental
  14. Ask them to tag where there is room for improvement.

    02. Invoice Generation Invoicing Car rental
  15. Starting with your core business Don’t start with your core

    business Invoice Generation Invoicing Car rental !
  16. Starting with your core business Don’t start with your core

    business Too many legacy dependencies 01. 02. The developers will need some training…
  17. And put an anti-corruption layer to prevent legacy leakage 05.

    Invoicing New invoice Generation Legacy API Legacy Database New Api ACL
  18. The Anti-Corruption Layer Anti-Corrupution Layer The Greenfield code must not

    call directly the Legacy code 01. 02. The Legacy code must not call directly the Greenfield code 03. Even through the persistence system: database or event/message bus
  19. This strategy is also known as the strangler pattern How

    to tackle it? You’ll need to coordinate your actions at the system level 01. 02. Beware of functional debt 03. Optimise your new system for replacement!
  20. • The Mikado method (Ola Ellnestam; Daniel Brolund) • Software

    Design X-Rays (Adam Thornhill) • Working Effectively with Legacy Code (Michael C. Feather) • Refactoring (Martin Fowler) • Accelerate (Jez Humble; Nicole Forsgren; Gene Kim) Going further Thanks to Cyrille Martraire, Thomas Pierrain, Jean-Baptiste Dusseaut, Adrian Bolboaca
  21. Hello, I am a software developer. My name is Arnaud

    LEMAIRE, and you can find me on lilobase.me & @lilobase Thanks