Ähnlichkeiten zwischen Vertragsprüfung und Debugging: Erklärungen eines ehemaligen IT-Ingenieurs und Anwalts
Im Zentrum der Arbeit eines sogenannten “Unternehmensberaters” steht die Überprüfung und Korrektur von Verträgen, die das Unternehmen täglich mit Kunden und Geschäftspartnern abschließt. Diese Überprüfungen und Korrekturen können jedoch nur von Personen durchgeführt werden, die sowohl mit dem Gesetz als auch mit dem jeweiligen Geschäftsfeld vertraut sind. Im Folgenden erkläre ich, warum das so ist.
Allerdings könnte die folgende Erklärung für Personen ohne Erfahrung in der Programmierung oder im Ingenieurwesen schwierig zu verstehen sein. Die Monolith-Anwaltskanzlei wird von einem ehemaligen IT-Ingenieur und erfahrenen Unternehmer geleitet. Es handelt sich also um einen Artikel, der von einer Anwaltskanzlei, deren Leiter ein ehemaliger IT-Ingenieur und Unternehmer ist, für Geschäftsführer mit Erfahrung in der Programmierung und im Ingenieurwesen über die Überprüfung und Korrektur von Verträgen geschrieben wurde.
Auf dieser Grundlage ist die Überprüfung und Korrektur von Verträgen eine Arbeit, die der sogenannten “Fehlerbehebung” sehr ähnlich ist.
- Was ist überhaupt ein “Fehler”?
- Was beinhaltet die Arbeit der “Fehlerbehebung”?
- Wie legt ein Vertrag Algorithmen fest?
- Was beinhaltet die Arbeit der Vertragskorrektur?
Obwohl diese Diskussion für Ingenieure mit “natürlichem” Verständnis beginnt, werde ich im Folgenden erklären.
Was sind “Bugs” und “Debugging”?
Ein “Bug” ist kein “PC-Ausfall”
Wenn man von einem “Bug” spricht, stellen sich manche vielleicht vor, dass während der Arbeit am PC Rauch aus der Maschine aufsteigt und der Bildschirm seltsame Anzeigen zeigt. Aber grundsätzlich führt ein PC nur die “Befehle” aus, die ihm gegeben werden. Dies gilt auch, wenn ein Bug auftritt. Ein “Bug” ist also,
- trotz der Tatsache, dass der PC die gegebenen Befehle ausführt,
- für den Benutzer ein “unerwartetes Verhalten”.
Dies ist das Phänomen.
Warum tritt “unerwartetes Verhalten” auf?
Betrachten wir zum Beispiel den “Wanddurchbruch”-Bug in einem Mario-Typ-Actionspiel.
Marios Sprung ist eine Parabel. Beschleunigung, Geschwindigkeit, Koordinaten. Aber in einem Videospiel kann die Zeit nicht unendlich fein unterteilt werden, wie es bei einer Parabel der Fall wäre. Der Bildschirm wechselt nur 30 Mal pro Sekunde. Daher “teleportiert” Mario sozusagen 30 Mal pro Sekunde.
In diesem Zusammenhang, wenn zum Beispiel “Mario springt und trifft auf eine Wand in der Luft und prallt ab”, dann ist das der Fall, wenn
- Mario war im vorherigen Moment in der Luft,
- im nächsten Moment sind Marios Koordinaten innerhalb der Wand.
Dies ist der Fall.
In solchen Fällen kann man feststellen, dass “Mario während des Sprungs gegen eine Wand in der Luft gestoßen ist”. Daher, wenn man es in natürlicher Sprache ausdrückt,
Wenn Marios Koordinaten innerhalb der Wand sind, führe eine Abprallbehandlung durch (※1)
Mit diesem Programm kann man das Verhalten “Mario springt und trifft auf eine Wand in der Luft und prallt ab” realisieren.
※1 scheint korrekt zu sein, solange es so geschrieben ist. Und tatsächlich ist dieses Verhalten unter “bestimmten Bedingungen” korrekt.
Aber wenn man genauer darüber nachdenkt, könnte es auch folgenden Fall geben (※2).
In diesem Fall gibt es keinen Moment, in dem “Marios Koordinaten innerhalb der Wand sind”, daher wird keine Abprallbehandlung durchgeführt und Mario würde durch die Wand gleiten.
Dies ist ein Beispiel für einen “Bug”. Selbst wenn ein “Wanddurchbruch-Bug” aus solchen Gründen auftritt, bedeutet das nicht, dass der PC defekt ist. Der PC führt nur die ihm gegebenen Befehle aus, und es sind die Menschen, die dieses Verhalten als “unerwartet” oder “Bug” bewerten. Und dieser “Bug” tritt auf, weil der Algorithmus nicht angemessen ist.
Die Überlegung, ob “unerwartetes Verhalten” auftritt
Allerdings ist es unklar, ob der oben genannte “Wanddurchbruch” tatsächlich während des Spielens auftritt, nur durch abstraktes Nachdenken. Ob ein “Wanddurchbruch” möglich ist oder nicht, hängt davon ab,
- wie stark Marios Sprungkraft (Anfangsgeschwindigkeit) ist, ob es Items wie Sprungkraft-Upgrades gibt,
- wie dick die Wand im dünnsten Fall ist.
Dies hängt von den Bedingungen ab. Es hängt davon ab, ob ein Fall wie ※2 möglich ist. Wenn ※2 nicht möglich ist, dann gibt es kein Problem mit dem Programm von ※1.
Was ist die Arbeit des “Debugging”?
Daher ist es notwendig, um “Debugging” durchzuführen, also Bugs zu finden und zu beheben,
- zu verstehen, welcher Algorithmus das Programm ist (obwohl ※1 in natürlicher Sprache ist, ist das tatsächliche Programm in einer eigenen Sprache geschrieben, so dass das Lesen an sich schwierig ist),
- zu überlegen, unter welchen Bedingungen das Programm funktioniert (z.B. die Sprungkraft und Wanddicke zu untersuchen),
- zu überlegen, ob dabei unerwartetes Verhalten auftritt.
Dies ist der notwendige Prozess.
Was beinhaltet die Überprüfung von Verträgen?
Die Überprüfung von Verträgen ähnelt dieser Aufgabe. Ein Vertrag ist grundsätzlich ein Dokument, das die Parteien, Partei A und Partei B, in Bezug auf zukünftige Ereignisse regelt. Es legt fest, welche Rechte und Pflichten für Partei A und Partei B entstehen und wie beide Parteien als Ergebnis handeln werden. In diesem Sinne kann man sagen, dass es sich um ein “Programm zur Regulierung der realen Welt” handelt. Zum Beispiel,
Wenn Situation XY eintritt, muss Partei A Partei B eine Entschädigung von 1 Million Yen zahlen.
Ein Vertrag, der solche Regeln festlegt, definiert Bedingungen und Auswirkungen für zukünftige Ereignisse.
Die Überprüfung, ob es Probleme mit diesem “Programm zur Regulierung der realen Welt” gibt und die Korrektur dieser Probleme, wenn sie auftreten, ähnelt unweigerlich dem “Debugging”.
Der gesamte Algorithmus ist nicht im Vertrag festgehalten
Es gibt jedoch einen Punkt in Bezug auf “Verträge”, der für Nicht-Juristen schwer zu verstehen, aber äußerst wichtig ist. Ein Vertrag legt nur einen “Teil” des Algorithmus fest, der die Beziehung zwischen den Vertragsparteien regelt. Mit anderen Worten, allein durch das Lesen des Vertrags kann man nicht das gesamte Bild des Algorithmus verstehen, unter dem man und der Vertragspartner geregelt sind.
Zum Beispiel, wenn man eine gebrauchte CD in einem Geschäft kauft, schließen das Geschäft und der Kunde keinen “Kaufvertrag” ab, aber wenn es einen nicht abspielbaren Kratzer auf der Oberfläche der gekauften CD gibt, möchte man sich beim Geschäft beschweren und erwartet, dass das Geschäft darauf reagiert. Dies ist nicht nur eine Frage des “Service”, sondern theoretisch:
- Auch ohne einen schriftlichen Vertrag ist ein Kaufvertrag abgeschlossen
- Das japanische Zivilgesetzbuch (Bürgerliches Gesetzbuch) legt fest, dass der Verkäufer bei einem Kaufvertrag für bestimmte Gegenstände, wie gebrauchte CDs, eine Gewährleistungspflicht hat
- Daher läuft der vom Zivilgesetzbuch festgelegte Algorithmus zwischen dem Geschäft und dem Kunden, und das Geschäft hat eine Gewährleistungspflicht
Das ist die Logik. Und ein “Vertrag” ist etwas, das den vom Zivilgesetzbuch und anderen Gesetzen definierten Algorithmus überschreibt. Zum Beispiel, wenn zwischen dem Geschäft und dem Kunden ein Vertrag oder Ähnliches abgeschlossen wurde, der besagt, dass “unser Geschäft keine nachträglichen Beschwerden über Mängel an CDs akzeptiert”, dann:
- Ein Kaufvertrag ist abgeschlossen
- Das Zivilgesetzbuch legt fest, dass der Verkäufer in diesem Vertrag eine Gewährleistungspflicht hat
- Aber durch die Bestimmungen des Vertrags wird das Prinzip 2 überschrieben, und das Geschäft hat keine Gewährleistungspflicht
Das ist die Situation.
Verträge “überschreiben” die Prinzipien des Bürgerlichen Gesetzbuches (Japanisches Bürgerliches Gesetzbuch)
Dies gilt auch für Verträge, die zwischen Unternehmen, wie zum Beispiel bei der Systementwicklung, abgeschlossen werden. Wenn beispielsweise ein Vertrag für die Entwicklung eines Auftragsystems zwischen den Parteien A und B abgeschlossen wurde,
- wird durch den Abschluss des Vertrags klar, dass ein Auftragsvertrag abgeschlossen wurde
- Im Falle eines Auftragsvertrags entsteht nach den Bestimmungen des Bürgerlichen Gesetzbuches eine Gewährleistungspflicht für den Auftragnehmer
- Wenn es im Vertrag eine Bestimmung zur Gewährleistungspflicht gibt, überschreibt diese Bestimmung das Prinzip des Bürgerlichen Gesetzbuches in Punkt 2. Wenn beispielsweise eine Gewährleistungsklausel für einen längeren Zeitraum als das Prinzip des Bürgerlichen Gesetzbuches vorgesehen ist, wird diese Frist gültig
Das ist die Struktur. Mit anderen Worten, auch wenn es im Vertrag keine spezielle Bestimmung zur Gewährleistungspflicht gibt, entsteht eine Gewährleistungspflicht.
Dies ist nicht nur auf Aufträge und Systementwicklung beschränkt, sondern gilt allgemein für alle Verträge, die ein Unternehmen abschließt, wie Aktienübertragungen, Finanzierung durch Schulden (Darlehen), Beschäftigung, Aktienemissionen usw.
Daher können Sie das vollständige Bild des “Algorithmus”, der die Beziehung zwischen dem Partner und Ihrem Unternehmen regelt, nicht erfassen, indem Sie nur den Vertrag lesen. Um das vollständige Bild zu erfassen, müssen Sie den “Standardalgorithmus”, den Gesetze wie das Bürgerliche Gesetzbuch festlegen, verstehen. Ein Vertrag ist schließlich nur dazu da, diesen “Standardalgorithmus” zu überschreiben.
Ohne die Vorstellung zukünftiger Ereignisse ist “Debugging” nicht möglich
Nur das Verständnis eines Algorithmus reicht nicht aus, um zu überprüfen, ob “unerwartetes Verhalten mit diesem Algorithmus nicht auftritt”. Wie bei einem “Bug” in einem Spiel ist ein Algorithmus letztendlich eine abstrakte Sache. Ohne die Vorstellung, welche Ereignisse in der Zukunft auftreten könnten, kann man nicht überprüfen, ob “solche Ereignisse zu unerwartetem Verhalten führen könnten”.
Dies ist besonders problematisch bei neuen Produkten wie Apps oder Dienstleistungen, neuen Geschäftsmodellen und ähnlichem. Wenn man mit solchen Produkten oder Modellen ein Geschäft aufbaut, was könnte in der Zukunft passieren? Ohne Kenntnisse in diesem Bereich ist es oft schwierig, sich das vorzustellen. Insbesondere bei Verträgen zwischen Unternehmen handeln sowohl das andere Unternehmen als auch das eigene Unternehmen unter bestimmten wirtschaftlichen Rationalitäten. Daher ist ein spieltheoretischer Ansatz zur Unternehmensführung erforderlich, um zukünftige Ereignisse und das Verhalten des anderen Unternehmens, das diese Ereignisse verursacht, vorherzusagen.
Ob etwas “unerwartet” ist, hängt auch von der Geschäftsentscheidung ab
Des Weiteren, genau wie es Menschen und nicht Computer sind, die ein Ereignis als “Bug” einstufen, ist die Entscheidung, ob eine bestimmte Konsequenz eines Vertrags “unerwartet” ist, nicht nur eine Frage des reinen Rechts, sondern auch eine Frage der Geschäftsentscheidung.
Zum Beispiel könnte es durchaus realistisch sein, dass ein Algorithmus, der “nach den Grundsätzen des Bürgerlichen Gesetzbuches (BGB)” arbeitet, für ein bestimmtes Unternehmen in einem bestimmten Geschäftsbereich unannehmbar ist. Obwohl dies von den bisherigen Beispielen abweicht, schreibt das Bürgerliche Gesetzbuch (BGB) zum Beispiel vor, dass eine erneute Beauftragung durch den Beauftragten einen Vertragsbruch darstellt. Es könnte jedoch Fälle geben, in denen “für ein bestimmtes Unternehmen, ein bestimmtes Geschäft natürlich davon ausgeht, dass Subunternehmer verwendet werden”. In solchen Fällen sollte es unmöglich sein, einen Vertrag zu akzeptieren, der die erneute Beauftragung verbietet, also
- nichts über die Möglichkeit der erneuten Beauftragung aussagt (in diesem Fall würde, wie oben erwähnt, der Grundsatz des Bürgerlichen Gesetzbuches (BGB) gelten)
- ausdrücklich besagt, dass eine erneute Beauftragung nicht möglich ist
selbst wenn dieser “nach den Grundsätzen des Bürgerlichen Gesetzbuches (BGB)” ist.
Außerdem gibt es immer das Risiko im Geschäft, dass “man zur Verantwortung gezogen wird, wenn bestimmte Umstände eintreten”. Es gibt grundsätzlich keine Verträge, die für das eigene Unternehmen “risikofrei” sind. Ob man dieses Risiko akzeptiert oder nicht, ist letztendlich eine Geschäftsentscheidung. Diese Entscheidung wird von den Geschäftsführern und nicht von Beratern wie Anwälten getroffen. Berater sollten jedoch
- Risiken, die nicht ständig hervorgehoben werden müssen
- Risiken, deren Akzeptanz eine wichtige Entscheidung für das betreffende Unternehmen darstellt und die möglicherweise eine Besprechung erfordern
in unterschiedlichen Abstufungen hervorheben. Für diese “Abstufung” ist, wie bei Beratern in anderen Bereichen, auch von Anwälten, die Vertragsprüfungen durchführen, ein gewisses Maß an “Geschäftssinn” erforderlich.
Zusammenfassung
Wie wir sehen können, besteht die Überprüfung und Korrektur von Verträgen im Wesentlichen aus den folgenden Aufgaben:
- Verstehen, wie die Prinzipien des Bürgerlichen Gesetzbuches (Japanisches Bürgerliches Gesetzbuch) und ähnlicher Gesetze durch den Vertrag überschrieben werden und welche Art von Algorithmus dadurch entsteht
- Unter diesem Algorithmus zu prüfen, welche Ereignisse in der Zukunft auftreten könnten
- Zu prüfen, ob unerwartetes Verhalten auftreten könnte
Und jede dieser Aufgaben ist:
- Schwierig für jemanden, der das Gesetz nicht versteht
- Schwierig für jemanden, der den Inhalt des Geschäfts, wie zum Beispiel eine App oder einen Webdienst, und das Geschäftsmodell, das der Vertrag regelt, nicht versteht
- Schwierig für jemanden, der das betreffende Unternehmen und den Inhalt des Geschäfts sowie ein gewisses Maß an Geschäftssinn nicht versteht
Das ist der Grund dafür.
Die Überprüfung und Korrektur von Verträgen ist aus diesen Gründen eine sehr “spezialisierte” Aufgabe.
Vertragsentwurf und -prüfung durch unsere Kanzlei
Die Monolith Rechtsanwaltskanzlei bietet als Kanzlei mit Stärken in IT, Internet und Geschäft, eine Vielzahl von Dienstleistungen wie die Erstellung und Überprüfung von Verträgen für unsere Mandanten und Kundenunternehmen an.
Wenn Sie interessiert sind, finden Sie bitte weitere Details unten.
Category: IT
Tag: ITSystem Development