Lade Inhalt...

Agile Programmierung

Lehren aus dem privaten Baurecht für eine agile Programmierung (insbesondere durch den Einsatz von SCRUM)

von Dominik H. Hark (Autor:in)
Dissertation 258 Seiten

Zusammenfassung

Es ist branchenübergreifend ein zunehmendes Streben nach Agilität erkennbar. Agile Arbeitsweisen lösen sich von klassischen Hierarchien und setzen auf Kooperation und Kommunikation. Zahlreiche Softwareentwickler wenden sich mittlerweile von einer Programmierung nach dem sogenannten Wasserfallmodell ab und entscheiden sich für eine agile Programmierung.
Rechtlich wirft eine agile Programmierung jedoch zahlreiche Fragen auf. Rechtsdogmatische Unklarheiten und fehlende Rechtsprechung wirken sich unmittelbar auf die Vertragsgestaltung der Unternehmer aus. Der Autor greift die praktisch relevanten und besonders klärungsbedürftigen Problemstellungen einer agilen Programmierung (insbesondere durch den Einsatz von SCRUM) auf und zieht Parallelen zum privaten Baurecht und den dort ausgearbeiteten Lösungsansätzen.

Inhaltsverzeichnis

  • Cover
  • Titel
  • Copyright
  • Autorenangaben
  • Über das Buch
  • Zitierfähigkeit des eBooks
  • Vorwort
  • Inhaltsübersicht
  • Inhaltsverzeichnis
  • A. Einleitung
  • B. Gegenüberstellung von agilem Programmieren (insb. unter Einsatz von SCRUM) und linearer Softwareentwicklung nach dem sog. „Wasserfallmodell“
  • I. Allgemeine Einleitung in das Themengebiet Softwareentwicklung
  • II. Lineare Softwareentwicklung nach dem sog. „Wasserfallmodell“
  • 1. Planungsphase
  • 2. Durchführungsphase
  • 3. Testphase
  • III. Agile Programmierung (insb. unter Einsatz von SCRUM)
  • 1. Das SCRUM-Team
  • a) Product-Owner
  • b) Entwicklungsteam
  • c) SCRUM-Master
  • 2. Die SCRUM-Ereignisse
  • a) Sprint
  • b) Sprint-Planning
  • c) Daily-SCRUMS
  • d) Sprint-Reviews
  • e) Sprint-Retrospektive
  • IV. Gegenüberstellung beider Entwicklungsmethoden
  • 1. Zusammenarbeit von Auftraggeber und Auftragnehmer
  • 2. Unterschiede hinsichtlich eines Marktstarts
  • 3. Änderungen und Dokumentation
  • 4. Mögliche vertragliche Auswirkungen eines Pflichtenheftes
  • 5. Berücksichtigung unerfahrener Auftraggeber
  • 6. Kostenkalkulation und -vorhersehbarkeit
  • a) Problemstellung
  • b) Mögliche Lösungsansätze220
  • 7. Fazit
  • C. Vertragstypologisierung des Softwareentwicklungsvertrages
  • I. Einleitung und allgemeiner Problemaufriss
  • II. Der lineare Softwareentwicklungsvertrag
  • 1. Problemdarstellung
  • 2. Dienstvertrag, § 611 BGB
  • 3. Werkvertrag, § 631 BGB
  • 4. Gesellschaftsvertrag, § 705 BGB
  • 5. Zusammenfassung
  • III. Der agile Softwareentwicklungsvertrag
  • 1. Einführende Skizzierung des gegenwärtigen Streitstandes
  • 2. Werkvertrag, § 631 BGB
  • 3. Dienstvertrag, § 611 BGB
  • 4. Gesellschaftsvertrag, § 705 BGB
  • 5. Zusammenfassung
  • IV. Probleme des Werkvertragsrechts
  • 1. Problemstellung im Allgemeinen
  • 2. Problemstellung in Bezug auf Softwareentwicklungsverträge
  • D. Der agile Softwareentwicklungsvertrag unter Berücksichtigung privat-baurechtlicher Besonderheiten
  • I. Einleitung
  • II. Entwicklung des Bauvertragsrechts (im Überblick)
  • III. Ausgewählte Problemfelder
  • 1. Mitwirkungspflichten des Auftraggebers
  • a) Problemstellung
  • b) Lösungsansätze des Baurechts?
  • c) Übertragbarkeit
  • d) Fazit
  • 2. Change Management / Änderungsmanagement
  • a) Problemstellung
  • b) Lösungsansätze des Baurechts?
  • aa) VOB/B
  • bb) BGB
  • cc) Baurechtliche Rechtsprechung
  • c) Übertragbarkeit
  • d) Fazit
  • 3. Vergütung
  • a) Problemstellung
  • aa) „Festpreisvertrag“
  • bb) Time-and-Material
  • cc) Pay-per-Sprint
  • dd) Agiler Festpreis
  • b) Lösungsansätze des privaten Baurechts?
  • aa) Einheitspreisvertrag
  • bb) Stundenlohnvereinbarung
  • cc) Pauschalpreisvertrag
  • dd) Kosten vor Vertragsschluss
  • c) Übertragbarkeit
  • aa) Time-and-Material – Stundenlohnvereinbarung
  • bb) „Festpreisvertrag“ – Pauschalpreisvertrag
  • cc) Einheitspreisvertrag bei agiler Programmierung und SCRUM
  • dd) Kosten vor Vertragsschluss
  • d) Fazit
  • 4. Abschlagszahlungen, § 632a BGB
  • a) Änderungen der Vorschrift
  • aa) Alte Rechtslage (bis 31.12.2017)
  • (1) Absatz 1 Satz 1
  • (2) Absatz 1 Satz 2
  • (3) Absatz 2
  • (4) Absatz 3
  • (5) Absatz 4
  • bb) Neue Rechtslage (seit 01.01.2018)
  • (1) Absatz 1 Satz 1
  • (2) Absatz 1 Satz 2
  • (3) Absatz 1 Satz 3
  • b) Problemstellung
  • c) Lösungsansätze des Baurechts?
  • d) Übertragbarkeit
  • e) Fazit
  • 5. Abnahme, § 640 BGB
  • a) Änderungen der Vorschrift
  • aa) Alte Rechtslage (bis 31.12.2017)
  • bb) Neue Rechtslage (seit 01.01.2018)
  • (1) Absatz 2 Satz 1
  • (2) Absatz 2 Satz 2
  • (3) Absatz 1
  • b) Problemstellung
  • aa) Angabe eines einzelnen Mangels im Baugewerbe
  • bb) Angabe eines einzelnen Mangels bei IT-Projekten
  • cc) Stellungnahme
  • c) Weitere Lösungsansätze des Baurechts
  • d) Übertragbarkeit
  • e) Fazit
  • 6. Kündigung aus wichtigem Grund, § 648a BGB n. F.
  • a) Änderungen der Vorschrift
  • aa) Alte Rechtslage (bis 31.12.2017)
  • bb) Neue Rechtslage (seit 01.01.2018)
  • (1) Absatz 1
  • α. Ausgestaltung der Kündigung aus wichtigem Grund
  • β. Voraussetzungen des Kündigungsrechts aus wichtigem Grund
  • γ. Notwendigkeit einer Abmahnung bei Vertragspflichtverletzungen
  • (2) Absatz 2
  • (3) Absatz 3
  • (4) Absatz 4
  • (5) Absatz 5
  • (6) Absatz 6
  • b) Problemstellung
  • aa) Absatz 1
  • bb) Absatz 2
  • cc) Absatz 4
  • c) Weitere Lösungsansätze des Baurechts
  • d) Übertragbarkeit
  • e) Fazit
  • IV. Fazit
  • E. Ausblick: Building Information Modeling (BIM)
  • I. Was ist Building Information Modeling?
  • 1. Allgemeines
  • 2. Open-BIM und closed-BIM
  • a) Open-BIM
  • b) Closed-BIM
  • 3. Zielsetzung des Building Information Modeling
  • 4. Building Information Modeling außerhalb Deutschlands
  • II. Mögliche Problemstellung
  • III. Relevante rechtliche Aspekte
  • 1. Auswirkungen auf Verträge
  • 2. Haftung
  • 3. Vergaberecht
  • 4. BIM-Manager
  • IV. Schnittstelle von Agiler Programmierung (SCRUM) und BIM
  • 1. Ablauf des Projekts
  • a) „Traditionelles“ Projekt (HOAI und Wasserfallmodell)
  • b) Agiles Projekt und Building Information Modeling
  • 2. Zusammenarbeit der Beteiligten
  • 3. Vertragliche Grundlagen
  • 4. Fazit
  • F. Fazit und Ausblick
  • I. Allgemein
  • II. IT-Vertragsrecht
  • III. Baubranche
  • G. Zusammenfassung in Kernthesen
  • Literaturverzeichnis

A. Einleitung

Stellen wir uns einmal zwei verschiedene Menschen vor: auf der einen Seite steht Person L, auf der anderen Seite Person A.

L ist ein begeisterter Urlauber, jedoch ist er ein Freund umfangreicher Planung und Strukturierung seiner Reise vor Urlaubsantritt. Er plant und konzeptioniert seine Reise bis ins letzte Detail und möchte seine Planungen während des Urlaubs lediglich „abspulen“. L kann auf Grundlage seiner vorgelagerten Planung ziemlich detailliert planen, welches Budget er benötigen wird für seine Reise. Er wird allerdings während der Reise nur geringe Möglichkeiten haben, um außerplanmäßige Aktivitäten einzubauen.

A hingegen geht seine Reise ganz anders an: Er ist im Vorfeld nur um wenige Informationen und Details bemüht und lässt die Reise auf sich zukommen. A ist nicht festgelegt auf ein Ziel, sondern dazu bereit, während des Urlaubs selbst spontane Änderungen einzubauen, sodass er zu Beginn seiner Reise überhaupt nicht prognostizieren kann, was er am Ende seiner Reise alles erlebt und gesehen haben wird. A kann – anders als L – keine detaillierte Budgetermittlung vornehmen und kann die Kosten seiner Reise nur grob kalkulieren.

Aus diesem Alltagsbeispiel lässt sich der Schluss ziehen, dass es grundverschiedene Charaktere und Vorgehensweisen gibt. Es gibt diejenigen, die linear einem Konzept nachgehen, welches detailliert aufgearbeitet und vorbereitet wurde und es gibt diejenigen, die „agil“ – ohne vorher detailliert festgelegtes Konzept – ihren Weg bestreiten.

In der Softwareentwicklung ist der Sachverhalt ähnlich gelagert. Unterschieden wird hierbei insbesondere zwischen der linearen Softwareentwicklung nach dem sog. „Wasserfallmodell1 sowie der agilen Programmierung.2

Diese Dissertation wird sich in den Kapiteln B und C allen voran den beiden genannten Arbeitsweisen der Softwareentwicklung widmen und die Unterschiede beider Herangehensweisen aufzeigen. Insbesondere die rechtlichen Probleme des agilen Programmierens sollen skizziert und kritisch untersucht werden. Im Fokus wird hierbei in Kapitel C die Typologisierung eines geeigneten Vertragstypen stehen.

←15 | 16→

Darüber hinaus soll anschließend in Kapitel D herausgearbeitet werden, ob und wie Probleme des IT-Vertragsrechts durch die Rechtsentwicklung im Bauvertragsrecht gelöst werden könnten.3 Das IT-Vertragsrecht kann was vom privaten Baurecht lernen.4 Es wird untersucht werden, ob dieser These zuzustimmen ist. Hierbei wird insbesondere ein Blick auf die Rechtsprechung zum privaten Baurecht unerlässlich sein. Es soll aufgezeigt werden, ob und wie die Besonderheiten des Bauvertragsrechts als Orientierungshilfe für softwarerechtliche Fragestellungen geeignet sind.

Es ist unter anderem aufzuzeigen, inwieweit Änderungen durch das „Gesetz zur Reform des Bauvertragsrechts […]“5, welches zum 01. Januar 2018 in Kraft getreten ist, Einfluss auf Softwareentwicklungsverträge und vor allem das agile Programmieren nehmen werden. Vereinzelt wurde bereits in Aussicht gestellt, dass die Neuregelungen der Reform des Werkvertragsrechts das „IT-Vertragsrecht nachhaltig verändern“6 werden. Ob und inwieweit dieser Auffassung zuzustimmen ist, soll im Verlauf dieser Dissertation herausgestellt werden. Auch zur Klärung dessen wird sich gleichermaßen an bau- und werkvertragsrechtlichen Entscheidungen orientiert.

Im Anschluss hieran wird in Kapitel E die digitale Planungsmethode Building Information Modeling vorgestellt und mit Blick auf mögliche Gemeinsamkeiten mit agiler Programmierung erörtert.

Schließen soll diese Arbeit mit einem Fazit sowie einem Ausblick auf die weitere Zukunft der Softwareentwicklung, insbesondere in Form des agilen Programmierens.

←16 | 17→

1 Lutz/Bach, BB 2017, 3016 f.; Witte, ITRB 2010, 44 (45).

2 Fuchs/Meierhöfer/Morsbach/Pahlow, MMR 2012, 427; Hoeren/Pinelli, MMR 2018, 199; Kremer, ITRB 2010, 283 (285 ff.); von Schenck, MMR 2019, 139.

3 Grundlegend hierzu Nicklisch, Der komplexe Langzeitvertrag (1987), S. 17 ff.; siehe für weitere Lösungsansätze auch schon Schneider, in: Nicklisch, Der komplexe Langzeitvertrag (1987), S. 289 f.; sowie Schlotke, in: Nicklisch, Der komplexe Langzeitvertrag (1987), S. 377 ff.

4 Hoeren, Gedächtnisschrift für Manfred Wolf (2011), S. 66.

5 Gesetz v. 28.04.2017 – Bundesgesetzblatt Teil I 2017 Nr. 23 04.05.2017 S. 969.

6 Hoeren, CR 2017, 281.

B. Gegenüberstellung von agilem Programmieren (insb. unter Einsatz von SCRUM) und linearer Softwareentwicklung nach dem sog. „Wasserfallmodell“

I. Allgemeine Einleitung in das Themengebiet Softwareentwicklung

Die Welt entwickelt sich jeden Tag weiter und die globale Digitalisierung schreitet täglich voran.7 Eine große Rolle spielt hierbei Software.8 Durch sie soll eine technische Vorrichtung durch eine Folge von Befehlen für eine festgelegte Aufgabe einsatzfähig gemacht werden.9

←17 | 18→

In einer zunehmend digitalisierten Wirtschaftswelt ist Software mehr denn je ein Faktor für unternehmerische Wettbewerbsfähigkeit.10 Die Aufgabe eines Software-Entwicklers ist es eine benutzungsfähige Software für den Kunden nach dessen Anforderungen zu erstellen.11

Die Entwicklung von Software ist daher häufig eine Leistung, die an die speziellen Bedürfnisse und Wünsche des (späteren) Verwenders angepasst werden muss.12 Eine Software, die von Grund auf nach Kundenwunsch entwickelt wird, nennt man Individualsoftware.13

Neben der Individualsoftware für einen bestimmten Verwender und einen Einzelfall gibt es jedoch auch Software, die für eine Vielzahl von Verwendern bereits erstellt und unabhängig von individuellen Wünschen programmiert wurde.14 Hierbei handelt es sich um sog. Standardsoftware.15

Eine dritte Ausprägung der Softwareerstellung stellt das sog. „Customizing“ dar.16 Hierbei wird eine entwickelte Standardsoftware durch Einarbeitung spezieller Kundenwünsche individualisiert und umgestaltet, sodass sie vom Kunden bestmöglich genutzt werden kann.17 Das „Customizing“ ist insoweit ←18 | 19→gewissermaßen eine Kombination aus klassischer (Standard-)Softwareentwicklung einerseits sowie Individualisierung dieser Software andererseits.18

Üblicherweise ist somit stets zwischen der Entwicklung von Standardsoftware und der Entwicklung von Individualsoftware zu unterscheiden.19

Bei einer Standardsoftware handelt es sich um ein Produkt, bei welchem vor massenhaftem Produktionsstart der Softwaresysteme eine umfangreiche Konzeption stattgefunden hat, welche in der Entwicklung und Produktion lediglich ausgeführt wird.20 Mangels notwendiger Individualisierung der Software ist daher üblicherweise kein Bedarf gegeben, diese Software nach Wunsch und Anspruch des jeweiligen Kunden zu personalisieren.21 Die möglichen Probleme in der Zusammenarbeit von Kunden und Softwareentwickler stellen sich somit bei Standardsoftware im Regelfall gar nicht erst. Die Herstellung von Standardsoftware stellt daher üblicherweise keinen allzu großen Problemfall in der rechtlichen Handhabung ihres Entwicklungsprozess sowie einer etwaigen Mängelgewährleistung dar.22

Aufgrund dessen wird hierbei auch unproblematisch anerkannt, dass der (nicht nur zeitweilige und entgeltliche) Erwerb einer solchen Standardsoftware dem Kaufrecht gemäß §§ 433 ff. BGB unterliegt.23 Die Software wird hierbei als „sonstiger Gegenstand“ gemäß § 453 Abs. 1 Alt. 2 BGB charakterisiert, auf welchen die Vorschriften über den Kauf von Sachen entsprechend angewendet werden.24 Dementsprechend existieren folglich die kaufrechtlichen Gewährleistungsrechte gemäß §§ 437 ff. BGB im Falle einer Mangelhaftigkeit der Standardsoftware.25

←19 | 20→

Gerade bei der Entwicklung und Programmierung von Individualsoftware stellt sich allerdings die Frage, wie dieses Softwareprojekt zwischen dem späteren Verwender und dem Programmierer durchgeführt wird. Unterschieden wird allen voran zwischen zwei möglichen Herangehensweisen der Programmierung: einerseits besteht die Möglichkeit, die Software in einem linearen Verfahren nach dem sog. „Wasserfallmodell“ zu erstellen, andererseits kann die Software „agil“ programmiert werden.26

Doch wie lassen sich diese beiden Vorgehensweisen überhaupt charakterisieren und wie unterscheiden sie sich voneinander? Diese Fragen sollen im Folgenden geklärt werden – an dieser Stelle jedoch zunächst ohne nähere Berücksichtigung der zugrundeliegenden vertragstypologischen Differenzierungen.

II. Lineare Softwareentwicklung nach dem sog. „Wasserfallmodell“

Das sog. Wasserfallmodell ist die traditionelle Weise der Softwareentwicklung.27 Hierbei ist die Vorgehensweise der Entwicklung unterteilt in mehrere eigenständige Abschnitte.28 Das Projekt startet mit einer Planungsphase, es folgt hiernach die sog. Durchführungs- bzw. Entwicklungsphase.29 Sein Ende findet das Projekt in der Testphase durch den Kunden sowie dessen endgültiger Abnahme der Software.30 Diese Phasen werden ihrerseits jeweils vollständig abgeschlossen, bevor es in die nächste Phase übergeht.31 Die Planungs- und Durchführungsphasen sind somit eigenständig und strikt voneinander getrennt.32

1. Planungsphase

Das Softwareentwicklungsprojekt beginnt mit Abschluss eines sog. Projektvertrages zwischen Auftraggeber und Auftragnehmer.33 Im Anschluss hieran startet die Entwicklung bei dieser linearen Vorgehensweise mit der Planung ←20 | 21→und Konzeptionierung der Software.34 Diese erfolgt durch die umfangreiche Zusammenstellung der gewünschten Anforderungen durch den Auftraggeber sowie einer darauf aufbauenden Funktionsbeschreibung durch den Softwareentwickler.35

In der juristischen Literatur wird das Anforderungsprofil eines solchen Softwareentwicklungsprojekts regelmäßig lediglich mit dem Begriff „Pflichtenheft“ versehen.36 In technischer Hinsicht ist jedoch zwischen dem sog. Pflichtenheft und dem sog. Lastenheft zu unterscheiden.37 Ursprünglich stammen diese Begriffe aus dem Maschinenbau, wobei DIN 69901-5:2009 das Lastenheft als „Gesamtheit aller Anforderungen des Auftraggebers an die Lieferungen und Leistungen des Auftragnehmers“ beschreibt und das Pflichtenheft als „ausführliche Beschreibung der Leistungen des Auftragnehmers, die zur Erreichung der Projektziele gefordert oder erforderlich sind“ definiert.38 Die Folge hieraus ist, dass das Lastenheft das „was“ beschreibt,39 während ein Pflichtenheft das „wie“ beschreibt.40 Hierbei ist zu beachten, dass das Lastenheft nach dieser Definition ausschließlich durch den Auftraggeber bereits vor dem eigentlichen Projektbeginn erstellt wird,41 während das Pflichtenheft für gewöhnlich in Zusammenarbeit von Auftraggeber und Auftragnehmer erarbeitet wird.42 Das Lastenheft definiert vereinfacht gesagt alle Wünsche und Vorstellungen des Auftraggebers an die zu erstellende Software.43 Das Pflichtenheft hingegen ist eine Reaktion des Auftragnehmers auf das Lastenheft und legt fest wie die Software erstellt ←21 | 22→werden soll.44 Das Pflichtenheft beinhaltet somit das „Soll-Konzept“ des Projekts, genauer gesagt die „vereinbarte Beschaffenheit“ gemäß § 633 Abs. 2 S. 1 BGB.45

Durch vielfache fehlerhafte Darstellungen werden die Begriffe jedoch häufig nicht nennenswert differenziert, sodass vereinzelt das „Pflichtenheft“ als Anforderungsprofil angesehen wird.46 Trotzdem sei jedoch nochmals darauf hingewiesen, dass Lasten- und Pflichtenheft zwei unterschiedliche Dokumente sind, die beide dem Projektvertrag zugrunde liegen (sollten),47 beispielsweise als Anlage zu diesem.

Um keinen Verständnisbruch mit der übrigen juristischen Literatur zur Softwareentwicklung herbeizuführen, wird die anfängliche Anforderungsspezifikation eines Projekts ebenfalls nur als „Pflichtenheft“ bezeichnet.48

Vereinfacht gesagt beinhaltet dieses „Pflichtenheft“ eine präzise Festlegung dessen, was die zu entwickelnde Software leisten soll.49 Neben den technischen Ansprüchen an die Software wird zudem im „Pflichtenheft“ festgelegt, welche Qualität die später zur Verfügung gestellte Software haben muss.50 Mögliche regelbare Kriterien hierbei sind u.a. die Wartbarkeit, die Softwaresicherheit, die Bedienfreundlichkeit, mögliche Testumfänge während der Entwicklung oder auch die Dokumentation der Systemarchitektur während des Entwicklungsprozesses.51

Bestenfalls wird im „Pflichtenheft“ alles festgehalten, was sowohl technisch wie auch rechtlich zu berücksichtigen ist, um allen Vertragsparteien im Streitfall konkrete Maßstäbe für die rechtliche Beurteilung des Softwareerstellungsprojektes zu gewährleisten.

←22 | 23→

2. Durchführungsphase

Im Anschluss an die vollständige Planung der zu erstellenden Software startet die sog. Durchführungsphase.52 In der Durchführungsphase wird die Software entwickelt.53 Der Softwareentwickler gestaltet hierbei die Software nach den Vereinbarungen, die innerhalb der Planungsphase durch die Parteien getroffen wurden.54 Gewöhnlich endet diese Durchführungsphase mit umfangreichen Funktionstests der fertigen Software durch den Ersteller vor endgültiger Ablieferung an den Kunden.55

Die Software muss hierbei jedoch nicht als Ganzes fertiggestellt werden.56 Es besteht für die Parteien ebenso die Möglichkeit, die Gesamt-Software-Entwicklung in einzelne sog. „Meilensteine“57 aufzuteilen, welche ihrerseits als eigenständige Leistung programmiert, getestet und an den Kunden geliefert werden.58 Solche Vereinbarungen werden gemeinhin im Rahmen der Leistungsvereinbarung während der Planungsphase getroffen.59

3. Testphase

Die letzte Phase der linearen Softwareentwicklung ist die Testphase durch den Kunden selbst.60 Der Kunde unterzieht die fertige Software einem umfangreichen Testverfahren. Hierbei prüft er allen voran, ob die Anforderungen, die in der Planungsphase vereinbart wurden, in der fertigen Software wie gewünscht umgesetzt wurden.

Bei Zufriedenheit mit dem Ergebnis erfolgt im Anschluss hieran eine Abnahme der Software durch den Kunden.61 Mit erfolgter Abnahme findet das Softwareentwicklungsprojekt seinen Abschluss.

←23 | 24→

III. Agile Programmierung (insb. unter Einsatz von SCRUM)

Die agile Programmierung bewährt sich seit ca. 15 Jahren als Alternative zur vorstehend dargestellten Variante linearer Programmierung.62 In der juristischen Diskussion ist sie bereits seit ca. 10 Jahren ein Thema.63 Es ist festzustellen: agile Methoden „setzen sich gerade in der IT immer mehr durch“.64 Überraschend ist daher, dass es bislang kaum eine instanzgerichtliche Entscheidung der ordentlichen Gerichtsbarkeit in Bezug auf agile Programmierung gibt.65

Einheitlich definierbar ist der Begriff „agil“ bislang nicht.66 Agile Projekte unterscheiden sich von der linearen Vorgehensweise dahingehend, dass hierbei allen voran auf eine umfangreiche Anforderungsfestlegung vor Entwicklungsbeginn verzichtet wird.67 Es wird eben gerade kein ausführliches Pflichtenheft erstellt, welches die Anforderungen so genau wie möglich skizzieren soll.68 Hierdurch soll dem wesentlichen Grundgedanken der agilen Vorgehensweise nachgekommen werden: Die Dokumentation soll während der agilen Projektentwicklung auf das nötigste Minimum reduziert werden,69 sodass der Fokus auf die Entwicklung der Software durch Kooperation von Softwareersteller und ←24 | 25→Kunden gerichtet ist.70 Seinen Ursprung hat dieser Grundgedanke im „Agilen Manifest“.

Das „Agile Manifest“ wurde im Februar 2001 von mehreren Softwareentwicklern formuliert und enthält die grundlegenden Werte agiler Projektmethoden.71 Dem „Agilen Manifest“ ist zu entnehmen, dass Individuen und Interaktionen wichtiger sind als Prozesse und Werkzeuge.72 Eine funktionierende Software hat mehr Wert als eine umfassende Dokumentation.73 Die Zusammenarbeit mit dem Kunden ist der Vertragsverhandlung vorzuziehen.74 Das Reagieren auf Veränderung ist notwendiger als das Befolgen eines Plans.75

Im Ergebnis ist die agile Vorgehensweise folglich darauf bedacht, die möglichen Änderungen im Anforderungsprofil der Projektentwicklung durch Flexibilität und Kommunikation mit dem Kunden abzustimmen und umzusetzen.76 Wie genau diese Leitprinzipien während eines agilen Projekts berücksichtigt und respektiert werden müssen lässt das „Agile Manifest“ jedoch offen.77 Somit sind diese Prinzipien lediglich als Orientierungshilfe für die Gestaltung agiler Projekte heranzuziehen.

Ein agiles Projekt verzichtet auf aufeinanderfolgende, eigenständige Phasen während der Entwicklung.78 Die strikte Trennung von Planungs- und Durchführungsphasen, wie sie im Wasserfallmodell üblich sind, wird aufgelöst.79 Hierdurch wird nicht nur der Ablauf des Projektes beeinflusst: Auch die Verantwortungsbereiche der einzelnen Projektparteien, vor allem Softwareersteller und Kunde, werden im Rahmen der auf Kommunikation und Interaktion ausgelegten Zusammenarbeit miteinander vermischt.80 Trotz dessen soll die übliche Struktur eines IT-Projektes hierbei nicht beeinflusst werden: Es soll bei einer ←25 | 26→klaren Rollenverteilung der Projektparteien bleiben, d.h. die Konzeptionshoheit soll auch bei agilen Methoden dem Auftraggeber zustehen, wohingegen die Programmierungshoheit weiterhin dem Auftragnehmer obliegen soll.81

Die agile Softwareentwicklung kennt zahlreiche sog. „agile Prozesse“, welche allesamt darauf ausgelegt sind, die vorgestellten Prinzipien und Grundgedanken des „Agilen Manifests“ umzusetzen.82

Die populärsten agilen Prozesse sind hierbei Kanban, Extreme Programming (XP), Behaviour Driven Development (BDD) oder auch SCRUM.83

Besondere Bedeutung hat das sog. SCRUM.84 Es ist mittlerweile eine etablierte und anerkannte Form agiler Entwicklung.85 Bei SCRUM handelt es sich um eine Arbeitsweise, bei welcher die Aufgaben der Softwareentwicklung durch verschiedene „Teams“ in sich regelmäßig wiederholenden Zeitabständen (sog. „Sprints“) kollegial und kommunikativ abgesprochen und ausgearbeitet werden, um auf diese Weise eine zügige Herstellung nutzbarer Software zu ermöglichen.86

SCRUM wurde in den frühen 1990er Jahren entwickelt und dient seither zur Entwicklung von komplexen Produkten,87 worunter auch Software zu verstehen ist.88 Ken Schwaber und Jeff Sutherland haben SCRUM 1995 erstmals vorgestellt ←26 | 27→und seither weiterentwickelt.89 SCRUM ist nach Auffassung von Schwaber und Sutherland kein eigenständiger Prozess, keine Technik und auch keine Methode, sondern ein Rahmenwerk, welches die Einsatzmöglichkeit verschiedener Prozesse und Techniken ermöglicht.90

SCRUM wird getragen von drei grundlegenden Werten: Es gibt das SCRUM-Team, welches sich wiederum in drei grundlegende Rollen aufteilt.91 Hierneben gibt es die SCRUM-Ereignisse, d.h. die schrittweisen Phasen eines SCRUM-Ablaufs.92 Diese Ereignisse sind der Sprint, das Sprint Planning, der Daily SCRUM, der Sprint Review sowie die Sprint Retrospektive.93 Zuletzt gibt es drei SCRUM-Artefakte, welche der Transparenz der Arbeit dienen sollen.94 Die drei SCRUM-Artefakte lauten Product Backlog, Sprint Backlog und Inkrement.95 Beim SCRUM hat die Berücksichtigung und Respektierung dieser grundlegenden SCRUM-Werte oberste Priorität.96 Ein Abweichen davon ist nicht vorgesehen, sondern bewirkt nach Auffassung von Schwaber und Sutherland lediglich, dass die angewendete Arbeitsweise nicht mehr dem SCRUM entspricht, wie es durch ihren „Scrum-Guide“ definiert ist.97

Details

Seiten
258
ISBN (PDF)
9783631837399
ISBN (ePUB)
9783631837405
ISBN (MOBI)
9783631837412
ISBN (Hardcover)
9783631829189
Sprache
Deutsch
Erscheinungsdatum
2020 (September)
Schlagworte
Kanban Agilität Softwareentwicklung Wasserfallmodell Agiles Manifest Agile Methode Schwaber Sutherland Agile Prozesse Agile Manifesto Building Information Modeling (BIM)
Erschienen
Berlin, Bern, Bruxelles, New York, Oxford, Warszawa, Wien, 2020. 258 S.

Biographische Angaben

Dominik H. Hark (Autor:in)

Dominik H. Hark studierte Rechtswissenschaften an der Philipps-Universität Marburg (2014−2018). Er promovierte an der Westfälischen-Wilhelms-Universität Münster (2018−2020) und war gleichzeitig als Wissenschaftlicher Mitarbeiter in einer auf das private Baurecht spezialisierten Kanzlei tätig. Er ist Repetitor für das erste juristische Staatsexamen und Rechtsreferendar am Landgericht Aachen.

Zurück

Titel: Agile Programmierung