It Forensik Cybercrime Kryptomessenger Polizei Analyse Software Code Programmieren

Softwareerstellungsvertrag: Vertrag über die Erstellung von Software

Ein Softwareerstellungsvertrag regelt die Beziehungen und Verpflichtungen zwischen einem Auftraggeber, der Software entwickeln lassen möchte, und einem Softwareentwickler oder einem Softwareentwicklungsunternehmen festlegt.

Der Kern eines solchen Vertrags besteht darin, die Spezifikationen und Anforderungen der zu entwickelnden Software genau zu definieren, um sicherzustellen, dass das Endprodukt den Erwartungen des Auftraggebers entspricht. In der Praxis wird genau dieser Teil aber gescheut, zum einen weil es nicht praktikabel erscheint, da Anforderungen ohnehin immer einem Wandel unterliegen; zum anderen, weil man vor der Arbeit zurückschrickt, die hier anfällt.

Herausforderungen beim Softwareerstellungsvertrag

Eine der größten Herausforderungen für Unternehmen, die Software entwickeln lassen möchten, liegt in der präzisen Formulierung der Projektanforderungen. Unklarheiten in der Spezifikation können zu Missverständnissen führen, die nicht nur das Projekt verzögern, sondern auch die Kosten erheblich steigern können. Zudem müssen Unternehmen sicherstellen, dass der Vertrag angemessene Regelungen bezüglich Zeitplänen, Meilensteinen, Testverfahren und Abnahmekriterien enthält. Eine weitere Herausforderung ist die Gewährleistung der Einhaltung von Datenschutz- und Sicherheitsstandards, die in der Softwarebranche besonders kritisch sind.

Ebenso müssen Auftraggeber darauf achten, die Rechte an der erstellten Software klar zu regeln. Dies umfasst sowohl die Eigentumsrechte an der Software selbst als auch die Nutzungsrechte. Der Ausgleich zwischen der Gewährleistung von Flexibilität bei der Projektentwicklung und der Einhaltung vertraglicher Verpflichtungen stellt eine ständige Herausforderung dar, die durch sorgfältige Vertragsgestaltung bewältigt werden muss.

Moderne Formen der Entwicklung und Nutzung von Software

Softwareentwicklung wandelt sich, die Zeiten, zu denen ein einzelner Entwickler eine tolle Software an seinem Rechner entwickelt hat – wenn es sie denn je so gab – nähern sich ihrem Ende. Heute wird modern entwickelt, ohne Team, KI und Verzähnung von Anforderung-/Entwicklung klappt nichts mehr. Weiter unten finden Sie dazu konkrete Ausführungen. Dabei stellen sich auch neue Fragen, wie etwa, ob ein Feintuning eines LLM überhaupt eine Softwareentwicklung ist und welche rechtliche Bedeutung dies haben kann.

Grundlegende vertragliche Gestaltung bei der Erstellung von Software

Softwareerstellungsverträge sind komplexe Rechtsdokumente, die insbesondere aufgrund des individuellen Charakters der Softwareentwicklung besondere Herausforderungen mit sich bringen. Diese Verträge unterscheiden sich wesentlich von Standard-Softwarekaufverträgen, da sie die spezifischen Bedürfnisse des Kunden berücksichtigen und häufig detaillierte Spezifikationen und Erwartungen enthalten:

1. Wichtige Elemente eines Softwareerstellungsvertrags

Zunächst ist die klare Definition der Haupt- und Nebenleistungspflichten essenziell. Die Hauptleistungspflichten beschreiben detailliert, was der Entwickler zu liefern hat, einschließlich aller Funktionen und technischen Spezifikationen der Software. In der Vereinbarung sollten auch Regelungen zu Änderungsanfragen (Change Requests) und die Anpassung der Leistungen an veränderte Anforderungen während des Projektverlaufs enthalten sein.

Die Einräumung von Nutzungsrechten ist ein weiterer kritischer Punkt: Es muss geklärt werden, welche Rechte der Kunde an der entwickelten Software erhält, einschließlich exklusiver oder nicht-exklusiver Nutzungsrechte. Die vertragliche Regelung muss auch zukünftige Nutzungsmöglichkeiten und die Rechte an modifizierter oder erweiterter Software abdecken. Hier kommt dann auch die Frage auf, wie man mit dem Quelltext umgeht, etwa ob eine Escrow-Vereinbarung getroffen wird.

2. Mitwirkungspflichten und Datenschutz

Ein weiteres wesentliches Element sind die Mitwirkungspflichten des Auftraggebers. Dies umfasst die Bereitstellung von Informationen, Zugängen oder Materialien, die für die Entwicklung der Software erforderlich sind. Versäumt der Kunde diese Pflichten, kann dies erhebliche Verzögerungen nach sich ziehen und beeinflusst möglicherweise die Haftung bei Nichterfüllung.

Überdies spielen Datenschutzvereinbarungen eine Rolle, insbesondere wenn personenbezogene Daten verarbeitet oder gespeichert werden. Diese müssen den Bestimmungen der DSGVO entsprechen und erfordern oft spezifische Sicherheitsmaßnahmen und Protokolle.

3. Gewährleistung und Haftung

Gewährleistungsansprüche sind ebenfalls zu definieren. Es muss klar sein, welche Kriterien die Software erfüllen muss, und wie mit Mängeln umgegangen wird. Dies schließt Regelungen zur Mängelbeseitigung, Nachbesserungen und mögliche Schadenersatzansprüche ein.

4. Vertragsbeendigung und Streitbeilegung

Regelungen zur Kündigung des Vertrags sind für beide Parteien von Bedeutung. Dies beinhaltet die Bedingungen unter denen eine Kündigung möglich ist, sowie die Abwicklung der Beendigung, inklusive der Übergabe der bisher erbrachten Leistungen und der finalen Abrechnung. Streitschlichtungsmechanismen können helfen, langwierige und kostspielige Rechtsstreitigkeiten zu vermeiden.

5. Anwendbares Recht und Gerichtsstand

Schließlich sollte der Vertrag eine klare Regelung zum anwendbaren Recht und zum Gerichtsstand enthalten. Dies gibt beiden Parteien Sicherheit darüber, unter welcher Rechtsordnung der Vertrag ausgelegt wird und wo mögliche Streitigkeiten zu verhandeln sind.

Durch die Berücksichtigung dieser Aspekte in der Vertragsgestaltung können viele der häufigen Probleme, die bei Softwareentwicklungsprojekten auftreten, minimiert oder ganz vermieden werden. Dies stellt sicher, dass das Endprodukt den Erwartungen entspricht und beide Seiten ihre rechtlichen Risiken minimieren.


Rechtliche Einordnung

Bei Softwareerstellungsverträgen ist die rechtliche Einordnung als Dienst- oder Werkvertrag zentral, was erhebliche Auswirkungen auf die Vertragsabwicklung und die damit verbundenen Pflichten hat. Die Unterscheidung ist in der Praxis oft nicht eindeutig und kann je nach Vertragsgestaltung variieren.

Werkvertrag

Ein Werkvertrag liegt vor, wenn der Erfolg der Dienstleistung geschuldet wird, das heißt, der Softwareentwickler verpflichtet sich zur Erstellung eines funktionierenden Softwareprodukts, das den spezifischen Anforderungen des Kunden entspricht. Typisch für Werkverträge ist die Abnahme der Software durch den Kunden, bei der geprüft wird, ob die Software den vereinbarten Spezifikationen entspricht.

Das Werkvertragsrecht ist in Deutschland im Bürgerlichen Gesetzbuch (BGB) geregelt. Es beinhaltet Regelungen zur Mängelhaftung, die besagen, dass der Auftragnehmer für eine gewisse Zeit nach der Abnahme für Mängel haften muss. Bei einem Werkvertrag stehen dem Auftraggeber umfassende Gewährleistungsrechte zu, sollte die Software nicht den vertraglichen Vereinbarungen entsprechen.

Dienstvertrag

Ein Dienstvertrag wird angewendet, wenn der Dienstleister sich zur Erbringung einer Leistung verpflichtet, jedoch ohne die Garantie eines bestimmten Erfolges. Hier steht die Tätigkeit selbst im Vordergrund, nicht das Endprodukt. Bei Softwareentwicklungsprojekten unter einem Dienstvertrag wäre der Entwickler also nicht für das Endprodukt verantwortlich, sondern lediglich dafür, seine Arbeitszeit und sein Know-how zur Verfügung zu stellen.

Dienstverträge werden typischerweise verwendet, wenn es um Beratungsleistungen oder fortlaufende Unterstützung ohne spezifische Erfolgsgarantie geht. Die Vergütung erfolgt oft auf Stunden- oder Tagessatzbasis, abhängig von der erbrachten Arbeitszeit.

Hybridformen

In der Praxis finden sich oft Vertragsformen, die Elemente von sowohl Werk- als auch Dienstverträgen enthalten. Insbesondere bei agilen Softwareentwicklungsmethoden, wo Flexibilität in der Projektgestaltung und kontinuierliche Anpassungen üblich sind, kann die Zuordnung zu einem reinen Werk- oder Dienstvertrag schwierig sein. Solche Verträge können spezielle Klauseln enthalten, die eine dynamische Anpassung der Leistungserwartungen und des Leistungsumfangs während der Projektlaufzeit ermöglichen.

Die Wahl der Vertragsart hängt stark von den spezifischen Umständen des Projekts und den Bedürfnissen der Vertragsparteien ab. Eine sorgfältige Vertragsgestaltung ist entscheidend, um Rechte und Pflichten klar zu definieren und spätere Konflikte zu vermeiden. Bei Unsicherheiten ist es oft ratsam, rechtlichen Rat einzuholen, um die für das jeweilige Projekt am besten geeignete Vertragsform zu bestimmen.


Wasserfall vs. agil

Wasserfall

  • Struktur und Flexibilität
    • Dieser Ansatz ist stark strukturiert und sequenziell, was sich in einem sehr detaillierten Vertrag niederschlägt, in dem alle Anforderungen und Spezifikationen von Beginn an festgelegt sind.
    • Änderungen an den Anforderungen sind formalisiert und können nur durch einen klar definierten Änderungsprozess vorgenommen werden.
  • Vergütung und Zahlungsbedingungen
    • Oft wird eine Festpreisvergütung vereinbart, die nach erfolgreicher Abnahme der Software fällig wird.
    • Dies bedeutet, dass das finanzielle Risiko stärker beim Entwickler liegt, falls das Projekt umfangreicher wird als ursprünglich geplant.
  • Abnahme und Rechteübergang
    • Die Abnahme erfolgt nach einem festen Plan, und erst mit der Abnahme wechseln die wesentlichen Rechte an der Software auf den Auftraggeber über.
  • Projektorganisation und Mitwirkungspflichten
    • Der Auftraggeber hat feste Mitwirkungspflichten, die zu bestimmten Zeitpunkten zu erfüllen sind, was die Zusammenarbeit strukturiert aber weniger dynamisch macht.

Agil

  • Struktur und Flexibilität
    • Im agilen Modell liegt der Fokus auf Flexibilität und iterativer Entwicklung. Der Vertrag ist daher weniger spezifisch in der Anfangsdefinition des Endprodukts und erlaubt fortlaufende Anpassungen und Präzisierungen während des Projektverlaufs.
    • Anforderungen und Lösungen entwickeln sich durch die Zusammenarbeit zwischen selbstorganisierten Teams und ihren Kunden.
  • Vergütung und Zahlungsbedingungen
    • Die Vergütung ist häufig aufwandsbasiert und orientiert sich an den tatsächlich erbrachten Leistungen, was im Einklang mit der iterativen Natur der agilen Methodik steht.
    • Der Vertrag kann eine maximale Vergütungssumme festlegen, darüber hinausgehende Kosten müssen gesondert vereinbart werden.
  • Abnahme und Rechteübergang
    • Inkremente (Teilprodukte) werden regelmäßig überprüft und freigegeben, was eine kontinuierliche Bewertung und Anpassung ermöglicht. Die formelle Abnahme des gesamten Entwicklungsergebnisses markiert den Rechteübergang.
    • Die Rechte am Entwicklungsergebnis sind meist nicht-exklusiv, was den Auftraggeber in der Verwertung gegenüber dem strengeren Wasserfallmodell einschränkt.
  • Projektorganisation und Mitwirkungspflichten
    • Die Mitwirkung des Auftraggebers ist integraler und kontinuierlicher Teil des Prozesses, wobei er in regelmäßigen Meetings und Sprints aktiv einbezogen ist.

Geheimhaltung

In Software-Projekten ist der Austausch von Informationen elementar. Vor dem Hintergrund wird rasch ein NDA eine erhebliche Rolle spielen. Grundsätzlich sollte es hier auch keine Bedenken geben – wenn aber übertrieben hohe Vertragsstrafen und ein Ideenschutz um die Ecke kommen, sollte man vorsichtig sein.


Moderne Entwicklung von Software

DevOps war gestern … die zunehmende Verwendung von KI-Technologien, No-Code- und Low-Code-Plattformen in der Softwareentwicklung bringt zahlreiche Vorteile mit sich, darunter beschleunigte Entwicklungszeiten und reduzierte Kosten. Allerdings werfen diese Technologien auch komplexe urheberrechtliche Fragen auf, die Unternehmen und Entwickler berücksichtigen müssen, um rechtliche Risiken zu vermeiden.

Urheberrechtliche Probleme bei KI-generiertem Code

Der Einsatz von KI zur Codegenerierung stellt eine Herausforderung für das traditionelle Urheberrechtsverständnis dar. KI-Systeme wie OpenAI’s Codex oder GitHub Copilot erzeugen Code, der oft auf bestehenden Codefragmenten basiert. Dies wirft die Frage auf, ob und wie solcher Code urheberrechtlich geschützt werden kann. Da KI als solche keine „persönliche geistige Schöpfung“ leisten kann, fällt sie nicht unter die konventionellen Kategorien des Urheberrechts, die ein menschliches Schaffen voraussetzen.

Ein weiteres Problem ist die mögliche Verletzung bestehender Urheberrechte durch KI-erzeugten Code. Wenn eine KI Codefragmente verwendet, die urheberrechtlich geschützt sind, könnten diese ohne angemessene Lizenzierung und damit unrechtmäßig genutzt werden. Darüber hinaus besteht bei der Verwendung großer Datenmengen für das Training von KI-Modellen das Risiko, dass urheberrechtlich geschützte Daten ohne entsprechende Genehmigungen verwendet werden.

Urheberrechtliche Probleme bei No-Code/Low-Code-Plattformen

Bei No-Code- und Low-Code-Plattformen besteht oft Unklarheit über die Eigentumsrechte am generierten Code. Diese Plattformen verwenden umfangreiche Bibliotheken von vordefinierten Modulen, was die Frage aufwirft, wem der damit erstellte Code gehört. Darüber hinaus kann die leichte Zugänglichkeit dieser Plattformen zur Entwicklung von Schatten-IT führen, bei der nicht autorisierte Softwareanwendungen außerhalb der offiziellen IT-Infrastruktur eines Unternehmens erstellt werden, was Sicherheitsrisiken birgt und die Einhaltung von Unternehmensrichtlinien gefährden kann.

Die Flexibilität von No-Code- und Low-Code-Plattformen kann zudem Integrationsprobleme in bestehende Systeme mit sich bringen, insbesondere wenn Anpassungen oder Erweiterungen erforderlich sind, die über die vorgesehenen Funktionen der Plattformen hinausgehen.

Der Einsatz von Softwareentwicklungsplattformen erfordert daher letztlich klare vertragliche Vereinbarungen, die Nutzungs-, Eigentums- und Haftungsfragen regeln. Darüber hinaus ist die Einhaltung von Industriestandards und gesetzlichen Vorgaben, insbesondere im Bereich des Datenschutzes und der Datensicherheit, kritisch. Diese Aspekte sind entscheidend, um rechtliche Risiken zu minimieren und Compliance zu gewährleisten.

Umgang mit der Verwendung von KI-Technologien, No-Code- und Low-Code-Plattformen

Die Integration von KI, No-Code und Low-Code in die Softwareentwicklung bietet große Chancen, erfordert aber auch eine sorgfältige Prüfung der damit verbundenen urheberrechtlichen Fragen. Unternehmen müssen sicherstellen, dass sie die rechtlichen Implikationen dieser Technologien verstehen und geeignete Maßnahmen ergreifen, um sich vor Urheberrechtsverletzungen und anderen rechtlichen Risiken zu schützen. Strategische Planung und die Einbeziehung von Rechtsexperten können dabei helfen, die Vorteile dieser Technologien voll auszuschöpfen und gleichzeitig die Einhaltung der Vorschriften zu gewährleisten und das Risiko von Rechtsstreitigkeiten zu minimieren.

Rechtsanwalt Jens Ferner (Fachanwalt für IT-Recht)

Veröffentlicht von

noreply

Rechtsanwalt Jens Ferner (Fachanwalt für IT-Recht)

IT-Fachanwalt, Ihr Rechtsanwalt für Softwarerecht bei sämtlichen Fragen rund um die Entwicklung und den Vertrieb von Software im professionellen Umfeld. Dazu auch das LinkedIn-Profil beachten!