Softwaresanierung und Refactoring
Auch wenn Software nicht rostet und kein Putz abbröckeln kann, so unterliegt sie doch in der Regel dauernden Änderungen und Anpassungen und kann dadurch zum Sanierungsfall werden. Sei es, dass Funktionalitäten der Software ergänzt, geändert oder gestrichen werden oder dass sich einfach das Umfeld von benutzten Komponenten oder das Betriebssystem ändert. Gerne wird aus Zeitgründen auf dabei erforderliche Refactorings verzichtet, und mit der Zeit wird es immer schwieriger, Änderungen umzusetzen oder die Software zu warten und alte Fehler zu beheben, ohne dabei neue zu produzieren. RAD-Systeme wie Delphi verleiten zudem dazu, Konzepte wie die Schichtentrennung außen vor zu lassen und Businesscode bunt gemischt mit GUI-Code in verschiedenste Ereignis-Handler zu verstreuen. Das Ergebnis ist ein System, dessen Abhängigkeiten Tests extrem erschweren oder gar unmöglich machen und dessen Reaktion auf Änderungen nur schlecht abgeschätzt werden kann.
Es gibt nicht das eine Rezept, um im Handumdrehen aus jedem System, das durch Änderungen aus dem Ruder gelaufen ist oder noch nie testbar war, eine testbare und damit wartbare Anwendung zu machen. Aber es gibt sehr wohl hilfreiche Prinzipien, die bei Refactorings beachtet werden sollten, und es gibt Rezepte und Vorgehensmuster, wie Sie Code Schritt für Schritt testbar machen, die unterschiedlichsten Abhängigkeiten auflösen und Klassen entkoppeln können.
Der Workshop beginnt mit einem Überblick über die Grundlagen, die SOLID-Prinzipien, Unit-Tests, Patterns und Antipatterns, insbesondere für die Entkopplung von Schichten und die klassischen Refactorings von M. Fowler. An einer kleinen RAD-Beispielanwendung wird dann im Laufe des Workshops gezeigt, wie Refactorings eingesetzt werden, um den Code sukzessive testbar zu machen. In Demos und Übungen werden Wege und Methoden erarbeitet, um Code durch Anwendung von OOP-Konzepten und Designpatterns zu strukturieren. Es werden verschiedene Wege gezeigt, Abhängigkeiten zwischen Klassen oder von globalen Variablen aufzuheben oder temporär zu kapseln und testbar zu machen. So können mit den Praxistipps und Rezepten aus dem Workshop letztendlich auch Änderungen an Legacy-Systemen so vorgenommen werden, dass diese Erweiterungen testbar sind.
Agenda
Basics
- SOLID-Prinzipien
- Architekturkonzepte
- Patterns und Antipatterns
- Unit-Tests, Mocks und Dummies
- Probleme finden – von Code Smells zu Metriken
Refactorings
- Einfache Refactorings
- Refactorings in Delphi und Modelmaker Code Explorer
- Refactorings planen und durchführen
- Design for Testability
- Refactoring von nichttestbaren Klassen
- RAD/Legacy-Code testbar erweitern
- Designpatterns für testbaren Code
Teilnahmevoraussetzungen
Sicherer Umgang mit Delphi und Kenntnisse objektorientierter Entwicklung
Zusätzliche Hinweise
Zum direkten Nachvollziehen der Beispiele und für Übungen wird ein Laptop mit einer Delphi-Version zwischen mindestens Delphi XE5 und der aktuellen Delphi-Version sowie dem MMX-Code-Explorer-Plug-in empfohlen.