Refactoring
Besonders bei wachsenden Projekten entwickelt sich das ursprüngliche Konzept und damit die Systemanforderungen und der systematische Rahmen und damit die Systemanforderungen fortwährend weiter. Neue Anforderungen werden nach dem Prinzip "never touch a running system" über den Lebenszyklus einer Sofware hinzugefügt und das ursprünngliche Design-Konzept des Systems wird verwässert. Grund hierfür ist schlicht die Tatsache, dass auch erfahrene Entwickler nie auf Anhieb alles richtig machen und alle künftigen Eventualitäten strukturell bedenken können. Mit der Zeit wird es daher notwendig sein, ein sog. Refactoring durchzuführen.
Dabei werden Konsistenz und Performance des gewachsenen Systems geprüft oder Bereiche auf den Stand der Technik gebracht.
Im Endeffekt erweitert sich der Funktionsumfang eines Systems durch diesen Aufwand nicht. Das ist schwer vermittelbar, jedoch notwendig, um die Lebensdauer des Systems zu verlängern. Im wesentlichen sparen Sie nach einem Refactoring künftig durch die wieder hergestellte Ordnung ein vielfaches der Zeit, die das Refactoring in Anspruch genommen hat.
Vorteile:
Refactoring dient der Verbesserung der Wartbarkeit des Designs in der Art, dass es für den/die Programmierer leichter wird, den bestehenden Code funktional zu erweitern oder an anderer Stelle wiederzuverwenden. Dies versucht man zu erreichen, indem man den Code bezüglich folgender Kriterien verbessert:
- Lesbarkeit: Entwickler sollen nachvollziehen können, was der Code tatsächlich macht.
- Wartbarkeit: Neue Funktionen sollen ganzheitlich, rasch und nach dem Stand der Technik implementiert werden können.
- Modularität: Konkrete Problemlösungen sollen Systemübergreifend genutzt werden können und nicht in leicht abgewandelter Form mehrfach vorhanden sein (Redundanz).
Wenn man ein Programm erweitern nöchte, steht man als Entwickler immer vor der Frage, wo und wie man diese neue Funktionalität einbauen soll. Nach einige Schritten Refactoring sehen Sie dieses "Wo" und "Wie" sehr deutlich.
Durch kontinuierliches Refactoring machen Sie ihren Code fit für die Zukunft und wirken dessen Alterung entgegen. Auftraggeber und Entwickler werden hiervon erheblich profitieren.
Im üblichen Softwareentwicklungszyklus ist ein fortwährender Kreislauf von Spezifikation, Design, Implementierung und Tests vorgesehen. Nach jedem Durchlauf kann das Softwareprodukt immer wieder neu in diesen Kreislauf einsteigen. Mit den klassischen Techniken hieße es jedoch, dass nach einer Änderung der Spezifikation oder einem Redesign oft Teile oder sogar das ganze System völlig neu geschrieben werden müsste. Refaktorisierung erlaubt dem Entwickler diesen Zyklus permanent im Kleinen ablaufen zu lassen, und so sein Produkt kontinuierlich zu verbessern.
Machen Sie doch mal folgendes Experiment:
Führen Sie ein Codereview eines bestehenden Softwaresystems durch. Dabei lassen Sie sich von einem Entwickler informell und ohne Vorbereitung vor dem Bildschirm einen zentralen Teil seines Quellcodes erläutern. Sie werden überrascht sein, welche Erkenntnisse Sie gewinnen.
|