IT-Recht. IP-Recht. 360°

Software, Scrum, Agile Softwareentwicklung & Recht: Zusammenfassung mit Fragen und Antworten

Alles Wichtige zu dem Thema Agile Softwareprogrammierung, Scrum, App-Entwicklung, IT-Recht, Rechtsanwalt für Software und Softwareprojekt.


Sie suchen einen Fachanwalt für IT-Recht, der zum Softwarerecht promoviert hat?

Benötigen Sie Hilfe bei einem Softwareprojekt oder brauchen Sie Hilfe bei der Vertragserstellung, z.B. einem
Softwareentwicklungsvertrag oder einem Vertriebsvertrag? Rechtsanwalt und Fachanwalt Dr. iur. Ole Damm
hilft Ihnen gerne und bundesweit. Er hat zum Thema „Zivil-, urheber-und wettbewerbsrechtliche Fragen zum
Softwarehandel“ promoviert und berät seit Jahren Unternehmen bei ihren Softwareprojekten. Telefonisch
erreichen Sie die Kanzlei unter
04321 / 9639953 oder 040 / 35716-904. Unterlagen können Sie gerne ganz
einfach per E-Mail
(info@damm-legal.de) übersenden. WIr finden eine Lösung für Ihr Problem!



Übersicht

1. Modelle für die Softwareentwicklung / Softwareprogrammierung

a. Was ist Softwareentwicklung nach dem Wasserfall- Modell?
b. Was ist agile Softwareentwicklung? / Was ist agiles Softwareprogrammieren?
aa. HIntergrund
bb. Definition
cc. Kritik
dd. Frameworks
(1) Was ist Scrum?

(2) Was ist Extreme Programming (XP)?
(3) Was ist Kanban?

(4) Was ist Scrumban?
(5) Was ist DSDM?
(6) Was ist Feature Driven Development (FDD)?

(7) Adaptive Software Development (ASD)
(8) Was ist Crystal?
(9) Was ist Lean Startup?

2. Vertragstypen für die Softwareentwicklung / Softwareprogrammierung

a. Dienstvertrag
b. Werkvertrag
c. Kaufvertrag (Werkvertrag nach kaufrechtlichen Vorschriften)

3. Probleme bei der Softwareprogrammierung
4. Klage beim Softwareprojekt
5. Vertragsmuster für die Softwareentwicklung

6. Rechtsanwalt für Softwareentwicklung
7. Rechtsprechung zu Software und Softwareentwicklung
8. Literatur zu Software, Softwareentwicklung & Recht



1. Modelle für die Softwareentwicklung
(Zurück zur Übersicht)


Es existieren verschiedenste Modelle für die Softwareentwicklung, wobei die (konservative) sequenzielle
Programmierung nach dem Wasserfall-Modell und die (innovative) iterative, agile Softwareprogrammierung
wohl die bekanntesten sind.

.


a. Was ist Softwareentwicklung nach dem Wasserfall- Modell?

Nach dem klassischen Wasserfall-Modell (auch Rational Unified Process oder V-Modell) wird die benötigte Software zunächst detailliert anhand des Bedarfs des Kunden geplant, sodann die Softwareentwicklung  zeitlich geplant (wobei der Abschluss eines geplanten Zeitabschnitts als „milestone“ oder „Meilenstein“ bezeichnet wird) und schließlich die Software programmiert. Die Erstellung der Software wird hier also  linear, nämlich in aufeinanderfolgende Phasen organisiert. Ähnlich wie bei einem Wasserfall ist der  vollständige Abschluss einer Planungsphase erforderlich, bevor die nächste Planungsphase beginnen  kann. Bei der Softwareentwicklung können einzelne Phasen agil sein (z. B. Agile Modeling) als auch  der gesamte Entwicklungsprozess (z. B. Extreme Programming oder Scrum).

b. Was ist agile Softwareentwicklung? / Was  ist agiles Softwareprogrammieren?

aa. Hintergrund

Das Prinzip der agilen Softwareentwicklung ist keineswegs eine Modeerscheinung der Neuzeit. Kent Beck veröffentliche 1999 das Buch „Extreme Programmierung“. Hierauf aufbauend wurde 2001 das „Manifest für agile Softwareentwicklung“ [1]Kent Beck, Ken Schwaber, Jeff Sutherland et al, Core, Agiles Manifest, veröffentlicht, welches bei der Softwareentwicklung folgende Forderungen aufstellt:

– Individuen und Interaktionen mehr als Prozesse und Werkzeuge
– Funktionierende Software mehr als umfassende Dokumentation
– Zusammenarbeit mit dem Kunden mehr als Vertragsverhandlung
– Reagieren auf Veränderung mehr als das Befolgen eines Plans


Hinter diesem „Agilen Manifest“ stehen zwölf Prinzipien[2]„Principles“, Kent Beck, Ken Schwaber, Jeff Sutherland et al Agiles Manifest von , die nachstehend dargestellt werden.

Agile Softwareprogrammierung wurde 2013 laut einer Studie von Forrester Resarch bereits von ca. 80 % der Unternehmen eingesetzt[3]Dev Insider.

bb. Definition

Agile Softwareentwicklung wird in Wikipedia treffend wie folgt definiert:

„Agile Softwareentwicklung (von lateinisch agilis „flink, beweglich“) bezeichnet Ansätze im Softwareentwicklungsprozess, die die Transparenz und Veränderungsgeschwindigkeit erhöhen und zu einem schnelleren Einsatz des entwickelten Systems führen sollen, um so Risiken und Fehlentwicklungen im Entwicklungsprozess zu minimieren. Dazu wird versucht, die Entwurfsphase auf ein Mindestmaß zu reduzieren und im Entwicklungsprozess so früh wie möglich zu ausführbarer Software zu gelangen. Diese wird in regelmäßigen, kurzen Abständen mit dem Kunden abgestimmt. So soll es möglich sein, flexibel auf Kundenwünsche einzugehen, um so die Kundenzufriedenheit insgesamt zu erhöhen. Agile Softwareentwicklung zeichnet sich durch selbstorganisierende Teams sowie eine iterative und inkrementelle Vorgehensweise aus.“[4]Wikipedia

Agile Softwareprogrammierung wird – zumindest nach dem Agilen Manifest – durch 12 Prinzipien bestimmt.

1. Der Kunde wird durch frühe und kontinuierliche Auslieferung wertvoller Software zufrieden gestellt
2. Heisse Anforderungsänderungen selbst spät in der Entwicklung willkommen. Agile Prozesse nutzen Veränderungen zum Wettbewerbsvorteil des Kunden.
3. Liefere funktionierende Software regelmäßig innerhalb weniger Wochen oder Monate und bevorzuge dabei die kürzere Zeitspanne.
4. Fachexperten und Entwickler müssen während des Projektes täglich zusammenarbeiten.
5. Errichte Projekte rund um motivierte Individuen. Gib ihnen das Umfeld und die Unterstützung, die sie benötigen und vertraue darauf, dass sie die Aufgabe erledigen.
6. Die effizienteste und effektivste Methode, Informationen an und innerhalb eines Entwicklungsteams zu übermitteln, ist im Gespräch von Angesicht zu Angesicht.
7. Funktionierende Software ist das wichtigste Fortschrittsmaß.
8. Agile Prozesse fördern nachhaltige Entwicklung. Die Auftraggeber, Entwickler und Benutzer sollten ein gleichmäßiges Tempo auf unbegrenzte Zeit halten können.
9. Ständiges Augenmerk auf technische Exzellenz und gutes Design fördert Agilität.
10. Einfachheit — die Kunst, die Menge nicht getaner Arbeit zu maximieren — ist essenziell.
11. Die besten Architekturen, Anforderungen und Entwürfe entstehen durch selbstorganisierte Teams.
12. In regelmäßigen Abständen reflektiert das Team, wie es effektiver werden kann und passt sein Verhalten entsprechend an.

cc. Kritik

Die agile Softwareentwicklung weist ein hohes Maß an liberaler Gesinnung auf. Genau hierin liegt aber auch ein wesentliches Problem, welches in der Praxis regelmäßig zu Konflikten führt, wenn die Arbeiten einen bestimmten Zeit- und Kostenrahmen überschreiten: Agile Softwareentwicklung darf nicht missverstanden werden, als eine Methode, bei welcher den beteiligten Individuen, deren Ideen und Arbeitsweisen maximal freier Raum gelassen wird. Vielmehr bleibt es auch bei dieser Softwareentwicklungs-Methode wichtig, die Arbeiten durch vorausschauende Projektplanung und rechtliche Gestaltung von Rechten und Pflichten abzusichern. Diese ordnen sich aber den ständigen Veränderungen unter.

dd. Frameworks

Um die zwölf Prinzipien der agilen Softwareentwicklung umzusetzen, werden bei einem Softwareprojekt bestimmte Projektmanagement-Methoden („Frameworks“) eingesetzt. Hierzu gehören:

Scrum,
Extreme Programming (XP),
Kanban,
Scrumban,
DSDM,
Feature Driven Development (FDD),
Adaptive Software Development (ASD),
Crystal,
Lean Startup

(1) Was ist Scrum (Software)?

Scrum (englisch, „Gedränge“ [im Rugby]) ist eine Form des Projektmanagements insbesondere zur agilen Softwareentwicklung, die seit Mitte der 1990er-Jahre existiert. Der Ansatz von Scrum ist empirisch, inkrementell und iterativ. Er fußt demnach auf drei Säulen[5]Wikipedia:

Transparenz: Probleme und Fortschritte des Projektes werden fortlaufend für alle Projektbeteiligten veröffentlicht.
Überprüfung: Projektzwischenergebnisse werden fortlaufend vorgelegt und bewertet.
Anpassung: Anforderungen an das Produkt, Pläne und Vorgehen werden nicht ein für alle Mal festgelegt, sondern kontinuierlich und detailliert angepasst.

Die Scrum-Methode basiert auf der Erkenntnis, dass viele Softwareentwicklungsprojekte zu komplex sind, um bereits zu Anfang in einen vollumfänglichen Plan erfasst werden zu können. Ein wesentlicher Teil der Anforderungen an das Produkt und der Lösungsansätze ist zu Beginn unklar; eine abstrakte Klärungsphase zu der notwendigen Gesamtfunktionaliät des Produkts wird für nicht hilfreich erachtet. Bevorzugt wird die Erarbeitung von Zwischenergebnissen, anhand derer weitere Anforderungen und Umsetzungsmöglichkeiten besprochen und geplant werden können. Scrum strukturiert die Aufgabe daher in kleine und möglichst wenig komplexe Bestandteile, die Inkremente. Doch auch die Arbeitsweise wird einer fortlaufenden Optimierung unterzogen: Hierbei wird unterschieden zwischen einem langfristigen Plan, dem sog. Product Backlog, und dem kurzfrstigen Plan, dem sog. Sprint Backlog.

(2) Was ist Extreme Programming (XP)?

(3) Was ist Kanban?


(4) Was ist Scrumban?

(5) Was ist DSDM?

(6) Was ist Feature Driven Development (FDD)?

(7) Adaptive Software Development (ASD)

(8) Was ist Crystal?

(9) Was ist Lean Startup?

g. Was ist RAD (Software)?


2. Vertragstypen für die Softwareentwicklung / Softwareprogrammierung

(Zurück zur Übersicht)


Es gibt grundsätzlich drei Vertragstypen für die Softwareentwicklung: Den Dienstvertrag, den Werkvertrag
und den (de facto) Kaufvertrag.

.


a. Dienstvertrag


b. Werkvertrag


c. Kaufvertrag (Werkvertrag nach kaufrechtlichen Vorschriften)

 


3. Probleme bei der Softwareprogrammierung
(Zurück zur Übersicht)

 



.

 


4. Gehört ein Softwareprojekt vor Gericht?

(Zurück zur Übersicht)

 



5. Vertragsmuster für die Softwareentwicklung

(Zurück zur Übersicht)

 


6. Rechtsanwalt für Softwareentwicklung

(Zurück zur Übersicht)


7. Rechtsprechung zu Software und Softwareentwicklung

(Zurück zur Übersicht)


OLG Frankfurt a.M., Urteil vom 17.08.2017, Az. 5 U 152/16:
Abnahme von Software bei agiler Softwareentwicklung nach SCRUM-Verfahren

OLG Köln, Urteil vom 29.07.2005, Az. 19 U 4/05:
Zur Frage, wer bei einer Softwareentwicklung rechtlich für die Erstellung des Pflichtenhefts zuständig ist


8. Literatur zu Software, Softwareentwicklung & Recht
(Zurück zur Übersicht)

 

 

Quellenhinweise (Rechtsprechung)

Quellenhinweise (Rechtsprechung)
1 Kent Beck, Ken Schwaber, Jeff Sutherland et al, Core, Agiles Manifest
2 „Principles“, Kent Beck, Ken Schwaber, Jeff Sutherland et al Agiles Manifest von
3 Dev Insider
4 Wikipedia
5 Wikipedia
I