In der agilen Softwareentwicklung leiden viele Programme unter der Quick&Dirty Methode. Ein Stakeholder schreit und das gewünschte Programm oder Funktion muss schnellstmöglich umgesetzt werden. Oft bleiben diese Programme oder Funktionen länger im Einsatz als gedacht und eine spätere Pflege wird erschwert oder ist unmöglich. Zusätzlich leiden solche Programme unter verschiedensten Symptomen, wie Geschwindigkeitsprobleme oder unerklärliche Ergebnisse. Somit bleibt ein Refactoring, also eine Strukturverbesserung und eine klare Kommentierung des Programms oder Algorithmus, unter Beibehaltung der gewünschten Funktion, nicht aus, um ein zukunftssicheres Produkt zu erstellen.
Refactoring gibt es in zwei Varianten. Einmal kann man die grundlegende Architektur eines Programmes überdenken und zum anderen kann man den Quellcode optimieren.
Beim Architektur Refactoring stellt man sich grundlegend die Fragen, ob man die richtige Struktur für ein Programm oder Funktion gewählt hat, um die Anforderungen bestmöglich zu erfüllen. Hier sollten Dinge besprochen werden, wie Schnittstellenmöglichkeit, Technologie und Interoperabilität. Erstelle ich eine Anwendung als RichClient oder unter dem Paradigma von SOA. Je nach Bedarfsfall und Anwendung kann sich dies auch im Laufe der Zeit ändern. Somit ist für ein Programm mit längerem Lebenszyklus ein Architectur Refactoring zu empfehlen.
Das Code Refactoring sollte im agilen Prozess stetiger Begleiter sein, weswegen man auch meist von einem kontinuierlichen Refactoring spricht. Am Ende jedes Sprints steht ein potenziell auslieferbares Inkrement mit festgelegten Funktionen. Diese Funktionen müssen während des Sprints auch den Prozess des Code Refactoring durchlaufen. Dabei wird der Code auf Lesbarkeit, Übersichtlichkeit, Verständlichkeit, Erweiterbarkeit, Testbarkeit und Vermeidung von Redundanz geprüft.
Die Vorteile eines kontinuierlichen Refactorings spiegeln sich im Gesetzt der großen Zahlen wieder. In jedem Sprint ein wenig Zeit dafür zu verwenden ist wesentlich einfacher und zeitlich weniger aufwendig als im nach hinein tausende Codezeilen zu bearbeiten.
Refactoring ist somit ein wichtiger Bestandteil eines Entwicklungsprozesses, um ein zukunftsicheres und pflegbares Softwareprodukt herszustellen.
Weiterführende Links zum Thema:
Martin Fowler: Refactoring. Wie Sie das Design vorhandener Software verbessern. Addison-Wesley Verlag, ISBN 3-8273-1630-8
heise developer Podcast Architektur Refactoring http://www.heise.de/developer/artikel/Episode-8-Architektur-Refactoring-353295.html
No responses yet