Konferenzprogramm

Konferenzprogramm 2020

Track: Pair Programming

Nach Tracks filtern
Alle ausklappen
  • Dienstag
    01.09.
12:05 - 12:40
Di 2.3
Competitive Pair Programming - vier Entwickler für ein Halleluja!
Competitive Pair Programming - vier Entwickler für ein Halleluja!

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.

Markus Lachenmayr, MSc in Software Engineering von der TU München, arbeitet für die Siemens AG und beschäftigt sich mit der Analyse und Sicherung operativer Eigenschaften von Software Architekturen von Cloud-basierten Systemen.
Dr. Joachim Fröhlich, ACM Senior und IEEE Member, arbeitet für die Siemens AG und beschäftigt sich mit Techniken, Methoden und Prozessen für Entwicklung und Test von Software für verlässliche Systeme.
Markus Lachenmayr, Joachim Fröhlich
Markus Lachenmayr, Joachim Fröhlich
Vortrag: Di 2.3

Zurück