Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS · Legacy Code Retreat – Softwerkskammer...

21
Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart 05.12.2017 Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS

Transcript of Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS · Legacy Code Retreat – Softwerkskammer...

Page 1: Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS · Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS. Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart

Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart 05.12.2017

Legacy Code Retreat – Softwerkskammer Stuttgart / JUGSLegacy Code Retreat – Softwerkskammer Stuttgart / JUGS

Page 2: Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS · Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS. Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart

Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart 05.12.2017

Agenda• Kurzvorstellung der Referenten

• Was ist Legacy Code

• Mögliche Wege zur Wiederbelebung

• Workshop Trivia Legacy Code

• Diskussion come together

Page 3: Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS · Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS. Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart

Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart 05.12.2017

Agenda• Kurzvorstellung der Referenten

• Was ist Legacy Code

• Mögliche Wege zur Wiederbelebung

• Workshop Trivia Legacy Code

• Diskussion come together

Page 4: Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS · Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS. Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart

Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart 05.12.2017

Oliver Böhm• SW-Arch. beim Optica Abrechnungszentrum

• Board-Mitglied Java User Group Stuttgart

• Buch-Autor

Page 5: Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS · Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS. Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart

Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart 05.12.2017

Daniel Georges• Head of Competence Unit bei der Zühlke Engineering GmbH in Stuttgart

• Ansprechpartner Softwerkskammer Stuttgart

• 20 Jahre Erfahrung u.a. als• Softwareentwickler• Softwarearchitekt• Projektmanager / Product Owner• Bereichsleiter

• Fokus auf Beratung• Agile Coach • Softwarecraftsmanship

[email protected]://www.zuehlke.com

Page 6: Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS · Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS. Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart

Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart 05.12.2017

Über ZühlkeFacts & Figures

• Gegründet 1968

• Im Besitz von Partnern

• Teams in Deutschland, Großbritannien, Österreich, Serbien, Singapur und der Schweiz

• Mehr als 8’000 Projekte realisiert

• 1000 Mitarbeiterinnen & Mitarbeiter und CHF 133 Mio. Umsatz (2016)

• ISO 9001 und 13485 zertifiziert

Page 7: Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS · Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS. Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart

Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart 05.12.2017

Agenda• Kurzvorstellung der Referenten

• Was ist Legacy Code

• Mögliche Wege zur Wiederbelebung

• Workshop Trivia Legacy Code

• Diskussion come together

Page 8: Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS · Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS. Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart

Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart 05.12.2017

Definition von Legacy Code?

Quelle:http://bento.de

Page 9: Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS · Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS. Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart

Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart 05.12.2017

Definition von Legacy Code?

Page 10: Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS · Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS. Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart

Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart 05.12.2017

Definition von Legacy Code?

«Code without tests is bad code. It doesn't matter how well written it is; it doesn't matter how pretty or object-oriented or well-encapsulated it is. With tests, we can change the behavior of our code quickly and verifiably. Without them, we really don't know if our code is getting better or worse.» Michael Feathers

Page 11: Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS · Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS. Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart

Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart 05.12.2017

Warum sind Tests notwendig?

1. To improve some piece of code, we must be able to refactor it

2. To be able to refactor code, we must have tests that prove our refactoring didn‘t break anything

3. To have reasonable tests, the code has to be testable…

Page 12: Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS · Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS. Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart

Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart 05.12.2017

Warum überhaupt was ändern?

1. Adding a feature (behavior)2. Fixing a bug (behavior)3. Improving the design4. Optimizing resource usage (internal behavior)

Page 13: Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS · Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS. Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart

Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart 05.12.2017

2 Möglichkeiten

1. Edit and Pray

2. Cover and Modify

Page 14: Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS · Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS. Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart

Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart 05.12.2017

Agenda• Kurzvorstellung der Referenten

• Was ist Legacy Code

• Mögliche Wege zur Wiederbelebung

• Workshop Trivia Legacy Code

• Diskussion come together

Page 15: Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS · Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS. Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart

Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart 05.12.2017

Einleitung der Wiederbelebung

1. Identify change points2. Find test points3. Break dependencies4. Write tests5. Make changes and refactor

Page 16: Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS · Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS. Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart

Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart 05.12.2017

Einleitung der Wiederbelebung

1. Cover code with tests -> dilemma

2. Ensure behavior with Golden Master Technique

3. Refactoring using small steps (boy scout)

4. Use Software Craftsmanship Techniques

Page 17: Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS · Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS. Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart

Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart 05.12.2017

Agenda• Kurzvorstellung der Referenten

• Was ist Legacy Code

• Mögliche Wege zur Wiederbelebung

• Workshop Trivia Legacy Code

• Diskussion come together

Page 18: Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS · Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS. Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart

Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart 05.12.2017

1. Pairprogramming

2. Write unit tests

3. Use Golden Master Technique if possible

4. 3x changes after 15 mins – 5 mins discussions

Workshop - https://github.com/jbrains/trivia

Page 19: Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS · Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS. Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart

Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart 05.12.2017

Agenda• Kurzvorstellung der Referenten

• Was ist Legacy Code

• Mögliche Wege zur Wiederbelebung

• Workshop Trivia Legacy Code

• Diskussion come together

Page 20: Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS · Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS. Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart

Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart 05.12.2017

1. What did I learn today?

2. What will I use tomorrow?

3. Peer group discussion

Resumée - Diskussion

Page 21: Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS · Legacy Code Retreat – Softwerkskammer Stuttgart / JUGS. Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart

Oliver Böhm JUGS / Daniel Georges – Softwerkskammer Stuttgart 05.12.2017

Come together