Agile Softwareprogrammierung / Scrum-Projekte

Agile Arbeitsweisen und Projekte erfreuen sich auch in der Softwarebranche immer größerer Beliebtheit.

Hierunter versteht man Methoden und Vorgehensweisen, die der Projektdurchführung dienen. Formuliert wurden die Ideen ursprünglich für die Softwareentwicklung.  Stark vereinfacht ausgedrückt wird ein Projekt durch sich wiederholende Entwicklungsphasen vorangetrieben. Verkürzt spricht man auch von „Agile“.

Die Vorteile von Agile können bestechend sein:

So weist die damit hergestellte Software oftmals folgende Vorteile auf:

- Weniger Bugs

- Wartungsfreundlicher Code

- Bessere Termintreue

Auch sind die Projektteams motivierter und zufriedener.

Ziel von Agile ist letztlich die Herstellung der bestmöglichen  Software bzw. des bestmöglichen  Projektergebnisses.

Dies ist selbstverständlich sowohl dem Auftraggeber als auch dem Auftragnehmer höchst willkommen.

Aber was ist eigentlich Agile? Letztlich versteht man hierunter Methoden und Vorgehensweisen, die Softwareteams bei der Projektverwirklichung helfen.

Für den Auftraggeber (dem Kunden) ist es jedoch nicht damit getan, sich einen Anbieter zu suchen, der agile Programmierung anbietet.

Auch der Auftraggeber muss zumindest die Grundideen von Agile verstehen, denn die Software soll ja für ihn die „bestmögliche“ sein.

Keinesfalls vernachlässigt werden sollte hierbei die vertragliche Ausgestaltung des Projektes. Einerseits muss diese dem Auftragnehmer genügend Flexibilität lassen, um die agilen Methoden auch wirklich zur Anwendung bringen zu können.  Andererseits ist auch eine Erfolgs-  und Budgetkontrolle wünschenswert.

 

1.  Wie kann Softwareentwicklung vertraglich ausgestaltet werden?

Die agile Softwareentwicklung stellt eine Alternative zu der Softwareentwicklung nach dem herkömmlichen Wasserfallmodell dar.

Beim Wasserfallmodell erfolgt die Projektverwirklichung in einzelnen Phasen (wie Planung, Entwicklung, Fehlerbeseitigung usw.), die kaskadenartig (daher „Wasserfall“) aufeinanderfolgen.

Am Anfang stehen prinzipiell die genau ausgearbeiteten Anforderungen (z.B. Leistungsbeschreibung). Am Ende das Ergebnis, das alle diese Anforderungen erfüllen muss.

Dieses klassische Modell liegt auch dem gesetzlichen Vertragsmodell des Werkvertrages zugrunde.

Vertraglich geschuldet ist ein bestimmter Erfolg. Nämlich das Projektergebnis. Ob dieses mangelfrei ist, kann „einfach“ kontrolliert werden, indem man feststellt, ob das Ergebnis den am Anfang des Vertrages vereinbarten Anforderungen z.B. der Leistungsbeschreibung entspricht.

Besonders wenn ein Festpreis oder Pauschalpreis zwischen den Vertragsparteien vereinbart ist, schafft dies Sicherheit zwischen beiden Parteien. Der Kunde weiß, was er bekommt und der Auftraggeber weiß, was er leisten muss.

Das Wasserfallmodell ist daher bewährt und sinnvoll, wenn klar definierbare Projektergebnisse erzielt werden sollen.

Die Realität von größeren IT- und Softwareprojekten ist allerding meist deutlich komplexer. Oft kann der Kunde zu Beginn des Projektes gar nicht beurteilen, welche Funktionen sinnvoll sind. Die Anforderungen können nicht im notwendigen Detaillierungsgrad festgelegt werden.

Die Erfahrung zeigt, dass während der Umsetzung beim Kunden oftmals neue Bedürfnisse oder Ideen entstehen. Um diese umzusetzen, ist ein umfangreiches Änderungsmanagement notwendig. Oftmals bringen solche Zusatzwünsche auch das Projekt aus dem Takt und sorgen für Unzufriedenheit im gesamten Projektteam.

Um genau dieses Problem zu vermeiden, ist die Idee der agilen Programmierung entstanden.

Die Grundidee ist, dass eine detaillierte Definition des Endergebnisses am Beginn des Projektes nicht möglich ist. Vielmehr wird das Projekt in sich-wiederholende Phasen aufgeteilt, in denen zusammen mit dem Kunden das Projekt vorwärtsgetrieben wird. Der Kunde hat somit eine permanente  Möglichkeit, auf das Projekt Einfluss zu nehmen. Im Idealfall entsteht bei der agilen Programmierung eine Software, die genau auf die Bedürfnisse des Kunden ausgerichtet ist, die naturgemäß weitgehend mangelfrei sein muss und ohne größeren Zeitverlust zum günstigsten Preis erstellt wurde.

Dies sind bestechende Vorteile, die die Beliebtheit von Agile verständlich machen.

 

2. Agile für Auftraggeber

Um Agile zu verstehen, sollte man sich zunächst mit dem agilen Manifest (https://agilemanifesto.org/iso/de/manifesto.html) auseinandersetzen. Dieses wurde von Softwareentwicklern formuliert, die eine Alternative zu dem starren Wasserfallmodell schaffen wollten.

Wichtig ist hierbei, dass zwar die Zusammenarbeit mit dem Kunden für wichtiger erachtet wird als die Vertragsverhandlungen, diese aber auch von Bedeutung sind.

Dies bedeutet, dass der Kunde deutlich mehr Einfluss auf den Entwicklungsprozess bekommt, aber auch vertraglich abgesichert werden soll und darf.

Agile kann durch verschiedene Methoden verwirklicht werden. Die wohl am häufigsten verwendete Vorgehensweise / Methode ist Scrum.

Scrum ist ein Framework zur Softwareentwicklung mit Schwerpunkt auf Projektmanagement und Produktentwicklung. Es ist letztlich eine Sammlung von bewährten Methoden und Vorgehensweisen, um Projekte durchzuführen.

Auch Sie als Auftraggeber sollten sich zumindest kurz mit den Ereignissen und Rollen von Scrum auseinandersetzen, um zu verstehen, wie das Projekt durch Ihre Mitwirkung beeinflusst werden kann und welche Chancen und Risiken der agilen Programmierung für Sie bestehen.

Scrum-Projekte werden in Zeitabschnitte, sogenannte Sprints, eingeteilt. Jeder Sprint ist gleich lang. Oft wird als Sprintlänge ein Monat gewählt. Innerhalb des Sprints gibt es das Sprint-Planungsmeeting, dann z.B. das Daily Scrum, am Ende das Sprint Review und die Sprint Retrospektive.

Dies sind Projektmanagementmethoden, die den Auftraggeber nicht zu interessieren scheinen. Allerdings ist die Zusammenarbeit mit dem Kunden ein wichtiges Grundprinzip des agilen Manifests.  

Das Sprint Review am Ende des Monats (oder der gewählten Sprintdauer) sieht ein Treffen mit dem Anwender, meist der Auftraggeber / Kunde, vor. Ihnen als Anwender wird die geschaffene und funktionierende Software demonstriert.

Dies ist der Zeitpunkt, von dem an vom Kunden Einfluss auf den Fortgang des Projektes genommen werden kann.

Die Anforderungen an das ganze Projekt werden im Product Backlog verwaltet. Die im jeweiligen Sprint zu verwirklichenden Elemente werden vom Scrum-Team dem Product Backlog entnommen und im Sprint Backlog eingefügt.

Scrum sieht für das Projektteam auch eine bestimmte Rollenverteilung vor. So gibt es das Scrum-Team, den Product Owner und den Scrum Master. Alle zusammen bilden das Scrum-Team.

Aufgabe des „Scrum Masters“ ist es, dem Team das Verständnis und die Umsetzung von Scrum zu vermitteln bzw. diese dabei zu unterstützen.

Der Kunde ist in der Regel am Scrum-Team nicht beteiligt, auch wenn der Begriff des „Product Owner“ dies suggerieren könnte.

Aufgabe des Product Owner ist es, dem Team die Anforderungen des Kunden zu vermitteln und nur er hat die Autorität, bestimmte Einträge im Sprint Backlog als erledigt zu akzeptieren.

Er muss sicherstellen, dass das wesentliche Ziel von Agiler Programmierung, nämlich dem Kunden funktionierende und zufriedenstellende Software, erreicht wird.

 

3. Umsetzung von Agiler Programmierung (und wie kann dies vertraglich ausgestaltet werden?)

Agile kommt typischerweise unternehmensintern zur Anwendung. Dies ist jedoch für kleine und mittlere Unternehmen, die lediglich ein IT-Projekt umsetzen wollen, keine Option. Hier wird man typischerweise einen externen Dienstleister damit beauftragen.

Bei stark in die unternehmenseigenen Prozesse eingebundenen Dienstleistern ist immer die Gefahr der Scheinselbständigkeit im Auge zu behalten.

Eine externe Beauftragung eines solchen Projektes ist daher der Regelfall. Ein klassischer Projektvertrag (Werkvertrag) würde allerdings die Vorteile der agilen Arbeitsweise zunichtemachen.

Sinnvoll ist daher ein Projektvertrag (oder Rahmenvertrag), der auf die Agile ausgerichtet ist.

Eine gewisse Vertragssicherheit für Sie als Kunden ist hierbei allerdings auch zu berücksichtigen.

 

3.1 Projektausstiegsmöglichkeit

Das praktisch wohl wichtigste Steuerungselement wird daher eine Risikobegrenzung für Sie als Auftraggeber sein. Es besteht immer die Gefahr, dass die „Chemie“ mit dem Auftragnehmer nicht stimmt oder die Projekte hinsichtlich der Kosten und / oder des Zeitaufwandes aus dem Ruder laufen. Ein klassischer Werkvertrag kann zwar jederzeit gekündigt werden (§ 648 BGB). Allerdings bleiben dann viele offene Fragen, die die gesetzliche Regelung nur unbefriedigend löst.

Eine vertragliche Projektbeendigungsmöglichkeit mit detaillierten Regelungen ist daher dringend zu empfehlen. Eine Kündigungsmöglichkeit (Projektausstieg) mit einem angemessenen Vergütungsregime gleicht die Interessen zwischen Auftraggeber und Auftragnehmer aus und limitiert Ihren möglichen Verlust als Auftraggeber.

Da bei der agilen Vorgehensweise bereits zu einem frühen Zeitpunkt funktionsfähige Software geschaffen wird, ist es auch sinnvoll, die Rechte an den Zwischenergebnissen und deren weitere Verwendung detailliert zu regeln.

Im Falle eines (regelmäßig) ja erfolgreichen Abschlusses des Projektes ist eine solche Regelung natürlich obligatorisch.

 

3.2 Selbstverständlich müssen die Rechte an den Arbeitsergebnissen geregelt werden. Sie als Auftraggeber haben ein Interesse daran, die erstellte Software umfassend zu nutzen und zu verwerten.

Auch die Berechtigung für Pflegeleistungen, Wartungsarbeiten  und Änderungen ist ein wichtiges Thema, das zwischen den Vertragsparteien geregelt sein sollte.

Hier gibt es die verschiedensten Spielarten. Diese sollte man kennen und mit dem Auftragnehmer diskutieren, um das beste Preis-Leistungsverhältnis zu erzielen.

 

3.3 Die Anwendung der Agilen Methoden liegt naturgemäß beim Softwareersteller (dem Auftragnehmer). Allerdings kann es sinnvoll sein, wenn Sie sich als Kunde ausdrücklich „Einblicksrechte“ in dessen Arbeitsweise vorbehalten.

Agile lebt zwar von einer vertrauensvollen Zusammenarbeit von Personen. Erhalten Sie rechtzeitig  Einblicke, so können Sie Fehlentwicklungen auch frühzeitig entgegensteuern.

 

3.4 Vergütungsregelungen

Festpreise mögen für Sie als Kunde verführerisch sein. So ist doch Budgetsicherheit gewährleistet.

Die Vorteile von Agile kommen aber gerade bei Projekten zum Tragen, bei denen zu Beginn die Anforderungen noch nicht feststehen.

Festpreisvereinbarungen oder Pauschalvereinbarungen sind für beide Vertragsparteien ein erhebliches Risiko. Der Auftragnehmer muss faktisch die Interessen des Kunden an optimaler Software hintanstellen, um seine wirtschaftlichen Interessen zu wahren.

Bei geeigneten Projekten kann die Vergütung auch an der Erreichung von bestimmten Kriterien im Projektverlauf ausgerichtet werden.

 

4. Selbstverständlich sollte ein Projekt- oder Rahmenvertrag noch weitere Regelungen enthalten.

Es kommt hierbei auf die Besonderheiten des Projektes an, das meist nach individuellen vertraglichen Regelungen verlangt, damit das Projektziel auch optimal verwirklicht werden kann.

Wie man sieht, ist dieses Thema höchst komplex und man muss die Regelungen auf die individuellen Bedürfnisse der beiden Parteien abstimmen.

Ein Vertragsmuster suggeriert hierbei eine gewisse Sicherheit, kann aber das Potential der Agilen Programmierung bei weitem nicht ausschöpfen. Eine umfassende Auseinandersetzung mit den Interessen und Möglichkeiten der beiden Vertragsparteien ist daher sinnvoll, um eine optimale vertragliche Lösung zu finden.

 

Die Erfahrung der letzten 20 Jahre zeigt, dass hierdurch oftmals ganz neue Handlungsräume und Lösungen, die beide Vertragsparteien zufriedenstellen, gefunden werden können. 

IT-Verträge

Wie lange dürfen Dienstleistungsverträge mindestens laufen?

BGH Urteil v. 15.03.2018 (AZ.III ZR 126/17)

 

Immer wieder kommt es zwischen dem Anbieter von Dienstleistungs-oder Mietverträgen und dem Kunden zum Streit darüber, wie lange der Kunde mindestens an den Vertrag gebunden sein soll. Sind z.B. 4 Jahre Mindestvertragslaufzeit eines Servicevertrags noch statthaft? Falls die Antwort nein lautet, hat das für den Kunden die angenehme Konsequenz, dass er fast jederzeit zum Ende des Monats den Vertrag kündigen kann.

Ein mittlerweile veröffentlichtes Urteil des BGH gibt Anlass, die Mindestvertragsdauer bei Service- und Mietverträgen zu überprüfen.

Dauerschuldverhältnisse wie beispielsweise Software as a  Service (SaaS), Softwaremietverträge, Service-, Support-, Pflege- oder Wartungsverträge sollen oftmals für eine Mindestvertragslaufzeit abgeschlossen werden.

Dies ist auch völlig legitim, da der Unternehmer entsprechendes Personal langfristig einplanen muss und auch für die notwendige Infrastruktur erhebliche Investitionen tätigen muss.

Umgekehrt hat meist auch der Kunde ein erhebliches Interesse daran, dass ihm die Leistung für einen längeren Zeitraum sicher zur Verfügung gestellt wird.

Bei solchen Dauerschuldverhältnissen wird daher oft eine Mindestvertragslaufzeit vereinbart.

Das vorliegende Urteil musste nun den Streit entscheiden, wann eine lange Vertragslaufzeit unangemessen und damit unwirksam ist.

In dem vom BGH entschiedenen Fall, Urteil v. 15.03.2018 (AZ.III ZR 126/17), ging es um einen Vertrag über Sicherheitsleistungen. Ein Unternehmer hatte die Installation von Überwachungskameras, sowie deren Betrieb nebst 24-Stunden-Überwachung beauftragt. Als Mindestvertragslaufzeit waren 72 Monate (also 6 Jahre vereinbart).

Dem Auftraggeber waren durch den Unternehmer verschiedene Vertragslaufzeiten von 24 bis eben 72 Monaten angeboten worden. Einen Tag nach Vertragsabschluss bereute der Auftraggeber seine Entscheidung und sprach die Kündigung aus. Diese begründete er mit finanziellen Problemen. 

Der Vertrag enthielt zwar Mietleistungen von Gegenständen, wurde vom BGH aber als Dienstvertrag eingeordnet, da die dienstvertraglichen Elemente der Sicherheitsleistung deutlich überwogen.

Die Höchstvertragsdauer von 24 Monaten, die für Verträge gegenüber Verbrauchern gilt, war nicht anzuwenden, da es sich bei den Vertragsparteien um Unternehmer handelte.

Nach der Wertung des BGH und der Instanzgerichte wird durch die lange Laufzeit von 6 Jahren die wirtschaftliche Dispositionsfreiheit des Kunden erheblich eingeschränkt. Dieser Einschränkung stand auch kein angemessener Ausgleich wie beispielsweise  günstigere Preiskonditionen oder eine besondere Kündigungsmöglichkeit wegen Geschäftsaufgabe gegenüber.

Dies führe zu einer unangemessenen Benachteiligung des Kunden mit der Folge, dass die vereinbarte Mindestvertragslaufzeit unwirksam ist.

Damit konnte der Kunde sehr kurzfristig, nämlich nach der gesetzlichen Regelung für Dienstverträge, also bis zum 15. eines Monats, zum Ende des laufenden Monats kündigen.

 

Zusammenfassung: Eine Mindestvertragslaufzeit von 2 Jahren ist immer unproblematisch. Gegenüber Unternehmern ist eine Verdoppelung auf 4 Jahre wohl gerade noch vertretbar. Allerdings sollte man in den Vertragsbedingungen berücksichtigen, dass eine Preisstaffelung und eventuell ein Sonderkündigungsrecht sinnvoll sein kann.

Will man aufgrund unternehmerischer Entscheidung über diesen Zeitraum hinausgehen, so ist ein angemessener Ausgleich zwingend erforderlich, um der Unwirksamkeit zu entgehen.

All dies gilt auch, wenn sich der unternehmerische Kunde bewusst für eine längere Vertragslaufzeit entscheidet, obwohl ihm eine kürzere Vertragslaufzeit in dem Vertragsformular (Allgemeine Geschäftsbedingungen) angeboten worden war.

Verantwortung des Webdesigners für Urheberrechtsverletzungen des Kunden

(AG Oldenburg: Prüfpflicht des Webdesigners)

Der Webdesigner ist „Dienstleister“ und erstellt für den Kunden ein „Werk“, für das im Regelfall Werkvertragsrecht gilt.

 

Wie weit geht hierbei die Verantwortlichkeit des Webdesigners?

 

1. Liefert der Webdesigner alles aus einer Hand, so ist er selbstverständlich auch dafür verantwortlich, dass das verwendete Bildmaterial auf der Webseite verwendet werden darf.

Haftungsausschlüsse, die sich auf diese vertragswesentlichen Eigenschaften beziehen, sind unwirksam.

 

2. Was ist aber, wenn der Kunde selbst Material, wie z.B. Bilder oder Kartenausschnitte, anliefert?

Bei Werkverträgen ist § 645 BGB anzuwenden. Nach § 645 Abs. 1BGB gilt: „Ist das Werk vor der Abnahme infolge eines Mangels des von dem Besteller gelieferten Stoffes oder infolge einer von dem Besteller für die Ausführung erteilten Anweisung untergegangen, verschlechtert oder unausführbar geworden, ohne dass ein Umstand mitgewirkt hat, den der Unternehmer zu vertreten hat, so kann der Unternehmer einen der geleisteten Arbeit entsprechenden Teil der Vergütung und Ersatz der in der Vergütung nicht inbegriffenen Auslagen verlangen.“  Diese Vorschrift ist nach der Rechtsprechung des Bundesgerichtshofs auch entsprechend anzuwenden.

Die Verantwortung für zugelieferte Gegenstände ist daher eindeutig dem Auftraggeber zugeordnet.

Allerdings hat der Webdesigner vertragliche Nebenpflichten, z.B. Prüfpflichten. Er muss die zugelieferten Gegenstände prüfen. Unterlässt er dies sorgfaltswidrig, so haftet er für diese Sorgfaltspflichtverletzung.

Eine solche Verletzung einer Prüfpflicht hat das AG Oldenburg, Az. 8 C 8028/15, angenommen. Der Webdesigner hatte das ihm vom Auftraggeber überlassene Kartenmaterial nicht darauf hin überprüft, ob dies auch verwendet werden dürfe.

Nach Ansicht des Amtsgerichts ist der Webdesigner verpflichtet, vor Veröffentlichung der Internetseite die urheberrechtliche Relevanz der Inhalte zu überprüfen.

Dies bedeutet aber auch, dass ein bloßer Hinweis an den Vertragspartner, dass er für ordnungsgemäße Nutzungsrechte sorgen müsse, nicht ausreicht.

 

3. Was kann der Webdesigner tun, um seine Haftung zu vermeiden?

Wird nichts zwischen den Vertragsparteien vereinbart, so bleibt es bei den grundsätzlich geltenden Nebenpflichten.

Auch ein bloßer Haftungsausschluss ist nach § 307 abs. 2 Nr. 2 BGB unwirksam.

 

Problemlösung: Allerdings gibt es faktisch doch Möglichkeiten, die Haftung zu reduzieren oder ganz auszuschließen. Haupt- und Nebenpflichten eines Vertrages werden im Wesentlichen bestimmt durch den Leistungsgegenstand des Vertrages. Entscheidet sich der Kunde trotz Angebot des Webdesigners, die Bilder zu liefern und geliefertes Bildmaterial auf Nutzungsrechte zu prüfen, gegen ein solches Angebot, so kann diese nicht vereinbarte Hauptpflicht nicht unentgeltliche Nebenpflicht werden. Eine weitere Möglichkeit der Haftungseinschränkung ist die Aufnahme von Nebenpflichten des Auftraggebers in den Vertrag.

Zeit, um über Upgrades nachzudenken.

Der Begriff IT-Verträge ist lediglich ein Oberbegriff für eine Vielzahl von Vertragsgestaltungen.

 

 

 

 

 

 

 

 

 

 

Die folgende Übersicht hilft Ihnen, Ihr Vorhaben einzuordnen.

 

Softwareüberlassung

>Kaufverträge

>Lizenzverträge

>Mietkauf

>Mietverträge

>Application-Service-Providing ASP

>Leasing

>General Public License GPL

>Open-Source

 

Lizenzschutz

>Node-Locked

>Floating

>Dongle

>Registrierung

 

Vertrieb und Zusammenarbeit

Profitieren durch Kooperationen

>Distributionsverträge

>Vertragshändler

>Kooperationsverträge

>Provisionsverträge

Allgemeine Geschäftsbedingungen AGBs 

"David gegen Goliath": Besonders im Umgang mit Großkunden sind eigene AGBs wichtig !

 

Dienstleistung

>Serviceverträge

>Pflegeverträge

>Wartungsverträge

>Hotline

>Training

>Reparatur

>Service-Level-Agreements (SLAs)

>Consulting

 

Systemerstellung / Softwareprojekte

>Werkvertrag

>Outsourcing

>Joint-Ventures

>Arbeitsverträge

>Escrow/Hinterlegung: 

 

 

Vertragseinstieg, -pflege und -anpassung

>Letter of Intent LOI

>Memorandum of Understanding MOU

>Change-Request

>Change-Management

>Customizing

>Vertragscontrolling

>Vorvertrag

>Rahmenvertrag

 

Telekommunikation