Konsequent agile Entwicklung mit funktionaler Programmierung
Raum Rebland
Im Zentrum eines agilen Projekts ist das Primat der funktionierenden Software: möglichst früh und ab da möglichst kontinuierlich. Traditionelle Softwaremethodik sieht allerdings immer noch eine Modellierungsphase vor, die vor der funktionierenden Software steht. Dies ist bei Einsatz objektorientierter Methodik auch sinnvoll, weil der Abstand zwischen der mentalen Welt eines Problems und den Abstraktionsmöglichkeiten der Objektorientierung meist zu groß ist, als dass Entwickler die Grätsche zwischen beiden Welten im Kopf vollziehen sollten.
Moderne funktionale Programmiersprachen (wie Scala, Clojure, F#, Haskell, Racket oder OCaml) und funktionale Programmiermethodik haben dieses Problem allerdings nicht: Sie erlauben die direkte Übersetzung domänenspezifischer Konzepte in ausführbaren Code und machen damit aus dem Systementwurf direkt funktionierende Software. Dies führt im Vergleich mit traditioneller Vorgehensweise zu leistungsfähigeren Architekturen, zum Beispiel durch Higher-Order-Programmierung oder eingebettete domänenspezifischen Sprachen. Gleichzeitig hilft die frühe Implementierung, Inkonsistenzen im Modell früher aufzuspüren und zu verhindern, dass Systementwurf und -architektur auseinanderdriften. Vor allem aber hilft die funktionale Programmierung, die zentrale Forderung des agilen Manifestos nach funktionierender Software umzusetzen.
Der Vortrag illustriert diese Vorgehensweise anhand konkreter Beispiele aus der industriellen Praxis.