Anfang der 70er Jahre: Bud Spencer und Terence Hill lassen ihre Fäuste sprechen, während David Parnas seine ersten Arbeiten zu Softwaremodulen vorstellt. Natürlich Zufall. Doch wir wollen in diesem Talk zeigen, wie Wettstreit in einem agilen Team, im Einklang mit Modularisierung und Tests, die Softwarequalität verbessern kann.
Modulkontrakte werden gemeinsam im Team definiert, bevor wettstreitende Entwicklerpaare die Module implementieren. Der Austausch der Modultests vertieft das gemeinsame Verständnis der Aufgaben. Die Entwicklerpaare messen ihre Module gegen die Tests und im System - ganz ohne Fäuste. Halleluja!
Zielpublikum: Entwickler, Tester, Architekten, Projektmanager
Vorraussetzungen: Grundlagenwissen zu agilen Vorgehensmodellen, Interesse an Software-Architekturen, Modularisierung und Software-Qualität.
Level: Basic
Extended Abstract:
Softwareentwickler verstehen die Absichten von gut formulierten User Stories, Use Cases oder Systemanforderungen. Umsetzungen in Systemfunktionen liegen jedoch nicht immer schnell auf der Hand, oder die Konsequenzen von unterschiedlichen Umsetzungen mit mächtigen oft aber schwer zu handhabenden Technologien sind nicht offensichtlich. Wenige Fakten und lückenhafte Argumentation führen zu unsicheren Entscheidungen. Dem wirkt Competitive Pair Programming (CPP) entgegen.
CPP besetzt schnell und flexibel Lücken, die die Variabilität in unklaren Problembereichen schafft. Gruppen von Entwicklern eines Teams erarbeiten unterschiedliche Lösungen. Kontinuierlich bespricht das Team vorliegende Ergebnisse und die gesammelten Erfahrungen. Das Ende ist erreicht - nach einem oder mehreren Entwicklungsabschnitten - wenn die Aufgabe hinreichend einfach und überzeugend umgesetzt ist oder wenn die notwendige und nützliche Information für die eine Produktivimplementierung vorliegt. Damit ist CPP eine agile Entwicklungsmethode mit starkem Fokus auf Qualität und Nachhaltigkeit. CPP verspricht einige Vorteile für die agile und für schlanke (lean) Softwareentwicklung, zum Beispiel:
Motivierender Wettstreit im Team um die am besten zur Aufgabe passende Lösung.
Förderung der Kommunikation durch unterschiedliche Sichten, Ansätze und Lösungen.
Erkenntnisgewinn in kürzerer Zeit durch parallele Implementierungen von alternativen Systemarchitekturen.
Nutzung der gewonnenen Erkenntnisse, um anstehende, weitreichende Entscheidungen fundiert treffen zu können.
Validierung einer Systemfunktion durch Vergleich unterschiedlicher Implementierungen.
Diversifizierte Implementierungen von im Ergebnis hochwertigen Systemfunktionen.
Fokussierung an Entscheidungspunkten, die kritisch sind für die Systemarchitektur und weitere Entwicklung.
Demgegenüber steht der Mehraufwand, den die Funktionenvielfalt naturgemäß mit sich bringt. CPP bietet sich an für die Implementierung und Erprobung von kritischen Systemfunktionen in dynamischen Einsatz- und Entwicklungsumgebungen. CPP fördert und profitiert von modularer Programmierung und Softwaremodulen. Der Vortrag stellt zunächst die Grundzüge von CPP vor. Danach wird CPP agilen Prozessmodellen zugeordnet und Einsatzbedingungen besprochen. Erfahrungen aus dem praktischen Einsatz runden den Vortrag ab.
Vortrag Teilen