Sie möchten eine speziell auf die Bedürfnisse Ihres Unternehmens angepasste Software individuell entwickeln lassen oder Sie benötigen externe Unterstützung bei der Entwicklung Ihrer Software-Lösung? In diesen Fällen müssen Sie sicherstellen, dass Sie einen rechtssicheren Vertrag über die Entwicklung einer Individualsoftware abschließen. Dieser Blogbeitrag zeigt auf, welche Regelungen in einem solchen Vertrag aus Ihrer Sicht nicht fehlen sollten.

Entwicklungsmethoden

Bevor wir uns die wesentlichen vertraglichen Regelungen im Detail anschauen, geht es zunächst um die Methoden, nach denen Ihr Unternehmen Software entwickeln lassen kann. Denn die von Ihnen gewählte Methode hat Einfluss auf die Vertragsstruktur. Wird eine Software etwa nach SCRUM oder einer anderen agilen Methode entwickelt, sieht der Vertrag anders aus als bei einer Entwicklung im Rahmen eines „klassischen“ IT-Projekts. 

Aber was versteht man eigentlich unter SCRUM und wie würde im Vergleich ein eher klassisches IT-Projekt ablaufen? SCRUM ist eine agile Entwicklungsmethode, die keinen klassischen Projektleiter und Projektphasen mehr kennt, vielmehr gibt es Sprints mit einer Dauer von zwei bis vier Wochen. In diesen Sprints wird ein mehr oder weniger fertiges Ergebnis, ein sog. Inkrement geliefert. Bei der SCRUM-Methode gibt es den Product Owner auf Kundenseite, den SCRUM Master auf der Seite des Entwicklers und das Development Team. Der Product Owner pflegt das sog. Product Backlog, das die Anforderungen an die zu entwickelnde Software enthält. Die sog. Backlog Items (=Einträge) werden in Sprints vom Development Team abgearbeitet und im Rahmen eines Sprint Review Meetings erfolgt ein Release der im Sprint erstellten Inkremente. Ein SCRUM-Vertrag sollte Definitionen zu den aufgeführten Begriffen enthalten und den Ablauf insbesondere zur Erstellung des Product Backlogs und des Sprints skizzieren. Diese Regelungen fehlen in einem Entwicklungsvertrag, der einem eher „klassischen“ IT-Projekt folgt. Bei einem klassischen IT-Projekt gibt es oftmals Projektleiter bei beiden Vertragsparteien, die sich in regelmäßigen Jour-Fix-Treffen abstimmen und bei größeren Entscheidungen oder Meinungsverschiedenheiten den Lenkungsausschuss (Steering Committee) anrufen. Änderungen der Anforderungen sind in einem formalisierten Change-Request-Verfahren zu beantragen und die Software wird nach finaler Erstellung abgenommen.   

Nun fragen Sie sich vielleicht, für welche Methode sich Ihr Unternehmen entscheiden sollte? Agile Methoden wie etwa SCRUM sollten im Mindset Ihres Unternehmens vorhanden sein. Dies wird erfahrungsgemäß bei Start Up Unternehmen eher der Fall sein.

Anforderungen richtig bestimmen – das A und O für den Entwicklungserfolg

Ihrem Unternehmen muss bewusst sein, dass die Entwicklung einer Individualsoftware ein kooperatives Projekt ist. Der Softwareentwickler ist auf Ihre Mitwirkung bei der Festlegung der Anforderungen an die zu entwickelnde Software angewiesen. Daher empfehlen wir, zunächst die richtigen Stakeholder im Unternehmen zu identifizieren, einzubinden und diesen neben ihrer sonstigen Tätigkeit in Ihrem Unternehmen ausreichend Zeit für die Mitarbeit an der Anforderungsbestimmung einzuräumen. Denn für den Erfolg der Softwareentwicklung kommt es unabhängig von der Entwicklungsmethode maßgeblich auf die zutreffende und umfassende Bestimmung von Anforderungen an. Sorgen Sie dafür, dass der Softwareentwickler im Entwicklungsvertrag entweder für die Festlegung der Anforderungen verantwortlich ist oder Sie zumindest beratend unterstützen muss und gemeinsam mit Ihnen die Anforderungen festlegt. Diese sollten gut dokumentiert werden, damit der Leistungsumfang des Softwareentwicklers klar definiert ist. Bei der agilen Entwicklung erfolgt die Dokumentation im Product Backlog. Im Laufe der Entwicklung werden Sie mehrfach feststellen, dass die Anforderungen zu ändern sind. Auch diese Änderungen sind gut zu dokumentieren und – sofern nicht agil entwickelt wird – sollte ein Change-Request-Verfahren im Vertrag festgelegt werden. Bei der Entwicklung nach SCRUM werden die einzelnen im Sprint zu erstellenden Inkrements priorisiert und es können stetig veränderte Anforderungen durch neue Backlog Items berücksichtigt werden. Im Rahmen einer SCRUM-Entwicklung können Anforderungen schneller und flexibel den geänderten Umständen angepasst werden. Ein formales Change-Request-Verfahren ist nicht erforderlich.    

Rechte an der Individualsoftware

Bei der Gestaltung des Softwareentwicklungsvertrags sollte ein besonderes Augenmerk auf die Rechteübertragung gelegt werden. Dabei ist auf eine exklusive und vollständige Rechteübertragung zu achten. Der Softwareentwickler sollte Ihnen auch den Quellcode übergeben. Letzteres ist besonders wichtig, wenn der Softwareentwickler einen Teil des Quellcodes im Rahmen Ihres Softwareprodukts entwickelt. Wollen Sie die entwickelte Software kommerziell für sich nutzen, sollten die Ihnen eingeräumten Rechte eine Übertragung an Dritte und eine Einräumung von Nutzungsrechten an Dritte abdecken. 

Freistellung von Ansprüchen Dritter wegen Schutzrechtsverletzungen

Der Softwareentwickler sollte vertraglich verpflichtet werden, sicherzustellen, dass die Software und seine Arbeitsergebnisse vor allem nicht gegen Schutzrechte Dritter verstoßen. Er sollte außerdem Ihr Unternehmen von Ansprüchen Dritter wegen Schutzrechtsverletzungen freistellen.  

Budget und Zeitrahmen richtig im Griff haben

Ihr Unternehmen sollte auf den Abschluss eines Werkvertrags bestehen und einen Festpreis für die erfolgreiche Softwareentwicklung vereinbaren. Lässt sich der Softwareentwickler auch nach Verhandlungen nur auf Entwicklungsleistungen nach Aufwand (Time & Material) ein, raten wir dennoch dazu, den Entwickler zu einer Aufwandsschätzung zu verpflichten, die im besten Fall eine garantierte Kostenobergrenze darstellt. Andernfalls sollte die Aufwandsschätzung zumindest als vereinbarter Kostenrahmen dienen. Der Entwickler sollte verpflichtet sein, Ihrem Unternehmen mitzuteilen, wenn etwa 70% des vereinbarten Kostenrahmens erreicht sind. Dann können Sie ggf. gemeinsam mit dem Softwareentwickler konstruktiv an Lösungen arbeiten, wie der Kostenrahmen eingehalten werden kann. Sie sollten dabei das Recht haben, allein nach eigenem Ermessen zu entscheiden, welche konkreten Maßnahmen zur Einhaltung des Kostenrahmens durch den Softwareentwickler umzusetzen sind. Über die Kostenobergrenze oder den Kostenrahmen hinausgehende Kosten sollten in jedem Fall nur nach schriftlicher Vereinbarung zwischen den Parteien von Ihnen zu erstatten sein.

Der Softwareentwickler wird sich erfahrungsgemäß schwer damit tun, feste Termine für einzelne Entwicklungsmeilensteine verbindlich zuzusagen. Auch hier sollten Sie darauf bestehen oder sich ggf. für SCRUM entscheiden. Denn durch die Entwicklung in Sprints, die in der Regel alle zwei bis vier Wochen stattfinden, erscheint der zu erwartende Abschluss der Entwicklung leichter für Ihr Unternehmen planbar. Grundsätzlich empfehlen wir, von einem realistischen Zeitrahmen auszugehen und unvorhergesehene Herausforderungen bei der Entwicklung einzukalkulieren.  

Sonstige wichtige Vertragsregelungen

Die Software sollte regelmäßig und insbesondere nach ihrer Fertigstellung getestet und zum Schluss insgesamt abgenommen werden. Dabei kann es sinnvoll sein, dass die Parteien bei den Anforderungen an die Software auch Test- und Abnahmekriterien gemeinsam bestimmen. Außerdem dürfen natürlich auch in einem Softwareentwicklungsvertrag Regelungen zur Gewährleistung und Haftung nicht fehlen.  

Support und Wartung

Denken Sie bei der Gestaltung des Vertragsverhältnisses auch an den Support und die Wartung der Individualsoftware. Denn einen dauerhaften Mehrwert wird die Software für Ihr Unternehmen nur haben, wenn deren Support und Wartung sichergestellt ist. Vereinbaren Sie also unbedingt mit dem Softwareentwickler sog. Service Level. Diese regeln im Wesentlichen die Erreichbarkeit des Entwicklers vor allem für die Fehlerbeseitigung, legen Fehlerklassen sowie Reaktions- und Wiederherstellungszeiten fest. Außerdem sollte der Softwareentwickler zu regelmäßigen Updates der Software verpflichtet werden. Um eine langfristig erfolgreiche Softwarenutzung zu ermöglichen, sollte der Support- und Wartungsvertrag für eine feste Laufzeit (etwa 10 Jahre) vereinbart werden und der Softwareentwickler vertraglich zur Übergabe einer ausführlichen Dokumentation der Software verpflichtet sein. 

Fazit  

Wenn Sie bei der Vertragsgestaltung und -verhandlung unsere Gestaltungsempfehlungen berücksichtigen, die richtigen Stakeholder in Ihrem Unternehmen rechtzeitig an Bord holen, den Zeitplan und das Kostenbudget realistisch planen und Angebote der Softwareentwickler daraufhin kritisch überprüfen, stehen die Chancen für eine erfolgreiche Softwareentwicklung gut. In diesem Sinne viel Erfolg!