Zukunftsfähigkeit durch Clean Code Development

Die Beständigkeit und Zukunftsfähigkeit von Software sicherzustellen ist eine der spannendsten Herausforderungen in der Softwareentwicklung. In seiner neusten Blogreihe beschäftigt sich Ralf Westphal mit dem Thema Zukunftsfähigkeit im Rahmen des Clean Code Developments.

Ralf Westphal ist, gemeinsam mit Frank Lieser, Begründer der Initiative Clean Code Developer in Deutschland. Die Initiative, die für mehr Professionalität in der Softwareentwicklung steht, sieht zwei elementare Aspekte professioneller Softwareentwicklung. Kontinuierliches Reflektieren und Weiterentwicklung sowie die Treue dem Wertesystem gegenüber sind für Sie Grundvoraussetzung um einen Qualitätsstandard in der .NET-Entwicklung sicherzustellen.

Auf dem Blog der Clean Code Developer School beschäftigt sich Westphal aktuell mit dem Thema „Zukunftsfähigkeit“ bei Software. Durch Zukunftsfähigkeit des Codes wird die Verwendung und Nutzung der Software auch bei künftigen und bisher unbekannten Anforderungen sichergestellt.

Jeder Code stellt ein bestimmtes Verhalten her, wobei Verhalten als Laufzeitanforderung angesehen wird. Zukunftsfähigkeit wird nach den Maßstäben des Clean Code Developments hingegen als Lebenszeitanforderung angesehen und gewährleistet eine Software, die aktuelle und zukünftige Verhaltensanforderungen erfüllt. Dies ist allerdings nur möglich, wenn neben Funktionalität und Effizient des Codes auch die Aspekte Korrektheit und Wandelbarkeit beachtet werden.

Um die Zukunftsfähigkeit der Software sicherzustellen, nennt Westphal die Aspekte Korrektheit/Maturität, Korrektheit/Regressionsfreiheit und Wandelbarkeit/Verständlichkeit, welche jeweils erfüllt sein müssen und sich gegenseitig bedingen.

Zukunftsfähigkeit I – Korrektheit/Maturität

Die Korrektheit/Maturität von Software kann über Akzeptanztests sichergestellt werden. Die Akzeptanztests müssen für jede Anforderung codiert und automatisch ausführbar sein. Sie prüfen die Oberfläche der Software und werden daher von Gerüsttests gefolgt, welche die Logik des Codes überprüfen und so den Aufbau korrekten Codes sicherstellen. Die Gerüsttests werden am Ende des Reviews wieder gelöscht.

Der Review wird von Ralf Westphal als „erste Entwicklerpflicht“ angesehen und dient als erster Schritt, um Zukunftsfähigkeit beim Code zu erhalten. Wichtig ist hierbei der Fokus auf die Korrektheit der Software.

Zukunftsfähigkeit II – Korrektheit/Regressionsfreiheit

Im zweiten Schritt, der Korrektheit/Regressionsfreiheit, soll Regression über automatisierte Tests vermieden werden. Die Herausforderung liegt darin, dass neben allen aktuellen Neuerungen und Änderungen auch alle früheren Verhaltensanforderungen weiterhin korrekt sein müssen. Eine konsequente Überprüfung ist daher zur Erreichung von Regressionsfreiheit unbedingt notwendig. Um Regressionsfreiheit sicherzustellen, ist ebenso eine Überprüfung von bereits Vorhandenem sinnvoll. Bisher vorhandener Code, der noch ohne Tests ist, sollte nachgerüstet werden. Neuerungen werden direkt testgetrieben (test-first) implementiert.

Zukunftsfähigkeit III – Wandelbarkeit/Verständlichkeit

Weiterhin muss es möglich sein, Logik zu verändern und zu ergänzen. Die Wandelbarkeit/Verständlichkeit von Software muss hoch sein, damit die Software zukunftsfähig ist. Zu beachten ist hierbei, dass Neuerungen immer von bereits Vorhandenem abhängig sind und die Verständlichkeit des Codes nicht beeinflusst werden darf. Bedeutungen und Zusammenhänge müssen klar erkennbar sein.

Um dies zu ermöglichen sind folgende Punkte zu beachten:

  • Verwendung expliziter Daten und sprechender Namen
  • Zusammenfassung von Logik und sprechende Funktionsnamen
  • Übersichtlicher Umfang von Modulen
  • Einfachen und natürlichen Lesefluss gestalten
  • Anzahl der Verzweigungen begrenzen
  • Abstraktionsniveau ohne Wechsel (auf eine Sprache begrenzen)
  • Kommentare nutzen um Überblick zu geben und das Warum zu erläutern

Verständlicher Code kann über den Review sichergestellt werden. Dennoch muss im Team ein gemeinsames Verständnis entstehen. Durch regelmäßige gemeinsame Reviews entstehen mit der Zeit die Angleichungen auch automatisch und sichern so zukunftsfähige Software.

Lesen Sie die drei Blogbeiträge von Ralf Westphal auf dem Blog der Clean Code Developer School.