CR-online.de Blog

Was ist eigentlich Software?

avatar  Oliver Stiemerling
Öffentlich bestellter und vereidigter Sachverständiger für Systeme und Anwendungen der Informationsverarbeitung

Ob Software eine „Sache“, ein „Ding“, ein „Recht“ oder eine „Idee“ ist, interessiert einen Programmierer üblicherweise wenig, solange der Computer nachher macht, was der Auftraggeber verlangt hat. Das Interesse an dieser Frage steigt allerdings auch in Informatikerkreisen dramatisch, wenn von der Antwort abhängt, ob der betreffende Programmierer 97 Monate ins Gefängnis kommt oder nicht.

Ein Gericht in den USA – der United States Court of Appeals for the second Circuit – hat Software nun in einer Entscheidung im Fall „United States v. Aleynikov“ als „intangible“ (materiell nicht fassbar) klassifiziert, so dass das Kopieren einer proprietären, komplexen Finanzsoftware nicht als Diebstahl einer Sache im Sinne des US-Amerikanischen NSPA („National Stolen Property Act“) einzuordnen ist. Der des Diebstahls angeklagte Programmierer wurde umgehend auf freien Fuß gesetzt.

Kurz zum Hintergrund: Der betreffende Programmierer einer großen Investmentbank wollte sich bei seinem nächsten Arbeitgeber die Arbeit erleichtern und kopierte kurz vor seiner Abschiedsfeier ca. 500.000 Zeilen geheimen, proprietären Programmcode für ein automatisiertes Handelssystem. Mit diesem Programmcode in der Tasche trat er dann seinen neuen Job an … und wurde anschließend vom FBI verhaftet.

Die Richter in den USA scheinen bei der rechtlichen Einordnung dieser Tat auf Grund unterschiedlicher Auffassungen über die Natur von Software große Schwierigkeiten gehabt zu haben, da die erste gerichtliche Instanz bei gleicher Faktenlage 97 Monate Gefängnis verhängte, während die Berufungsinstanz die sofortige Freilassung veranlasste. Insbesondere geht es dabei um die Frage ob Software einem materiellen Gegenstand gleichgestellt werden kann oder nicht.

Über die Natur von Software ist aus rechtlicher Sicht schon viel gesagt und geschrieben worden (zum Verhältnis zwischen Urheberrecht und Vertragsrecht siehe Ulmer/Hoppen, CR 2008, 681, die auf Seite 684 unter IV. ein immaterielles Vervielfältigungsstück von Software als Ware einordnen). Dieser Beitrag stellt nun aus Sicht der Informatik drei technisch-ökonomische Eigenschaften von Software heraus, die die Unterschiede zwischen Software und materiellen Gegenständen unterstreichen. Die beiden ersten Punkte betreffen mehr oder weniger offensichtliche ökonomische Eigenschaften (günstige Duplizierbarkeit, teure Erstellung des Quellcodes). Der dritte Punkt beschäftigt sich mit den Schwierigkeiten bei der Bestimmbarkeit der Identität einer Software.

Schnelle und günstige Duplizierbarkeit von Software

Im Gegensatz zu einem materiellen Gegenstand kann Software offensichtlich schnell und günstig dupliziert werden, da die Erzeugung einer Kopie bzw. einer neuen Instanz lediglich etwas Speicherplatz bzw. Strom verbraucht. Das „Duplizieren“ eines Goldbarrens hingegen kostet aufgrund des Materialwerts im Wesentlichen wieder genauso viel wie die Herstellung des originalen Goldbarrens.

Teure Erstellung des Quellcodes einer Software

Wenn ein Programmierer eine Software schreibt, so stecken Zeitaufwand und Kosten im Gegensatz zu materiellen Gütern fast ausschließlich in der Erstellung des Plans bzw. Typs, nicht der eigentlichen Instanz einer Software auf CD oder im Hauptspeicher eines Computers. Insbesondere bei sogenannten objektorientierten Programmiersprachen wird dieser Unterschied dadurch verdeutlicht, dass ein Programmierer sich beim Codieren im Wesentlichen mit der Definition von sogenannten Objektklassen (d.h. Typen) beschäftigt, die erst zur Laufzeit des Programms in eindeutig identifizierbare Objektinstanzen ausgeprägt werden. Die manuell erzeugten Klassen definieren, wann welche Instanzen in welcher Multiplizität von Computer erzeugt werden. Auch dieser Aspekt stellt einen großen Unterschied zu materiellen Gegenständen dar.

Schwer bestimmbare Identität einer Software

Ausgehend von dem von Menschen erzeugten Quellcode über Objektcode, Bytecode, Binärcode und Maschinencode bis hin zum laufenden Programm im Hauptspeicher des Computers kann eine Software in vielen verschiedenen Formen vorkommen. Diese verschiedenen Formen werden zumeist über komplexe Verfahren voneinander abgeleitet und haben daher große Unterschiede. Beispielsweise kann die Übersetzung eines Quellcodes in Binärcode im Wesentlichen aus Binärcode-Fragmenten bestehen, die der Entwickler des Übersetzungsprogramms geschrieben hat. Wenn man also zwei im Binärcode vorliegende Softwareprogramme vergleicht, so können diese stellenweise große Ähnlichkeiten aufweisen, obwohl sie von unterschiedlichen Quellcodes abgeleitet wurden.

Selbst wenn man nur den Quellcode einer Software (also quasi den Bauplan) betrachtet, so kann dieser auf Papier oder Lochkarten festgehalten sein, in unterschiedlichen Zeichencodierungsformen (UTF16, ASCII, UTF8, …) auf magnetischen oder optischen Trägern wie Festplatten oder CD-ROMs repräsentiert sein oder als sequentieller Strom einzelner binärer Zustände über elektrische oder optische Übertragungsmedien fließen. Wenn man beispielsweise einen bestimmten Quellcode in UTF16 kodiert, so sieht die entsprechende Bytefolge auf einer Festplatte grundlegend anders aus, als wenn derselbe Sourcecode in UTF8 kodiert wurde.

Wenn man nun  zwei Quellcodes auf Ähnlichkeit vergleichen will, wird man den Vergleich auf einer möglichst normierten Darstellungsebene durchführen, die sich auf den syntaktischen gleichen Aufbau der entsprechenden Programmiersprache beschränkt und von ggf. automatisch geänderter Formatierung, Einrückungen mit Leerzeichen und der Zeichencodierung absieht.

Will man noch weiter zum Kern der Identität von Software vordringen, könnte man auch von den gewählten Variablennamen abstrahieren und nur noch die Struktur der sogenannten Syntaxbäume (d.h. der grammatikalisch interpretierten Struktur) von zwei Quellcodes vergleichen. Auf dieser Ebene wären zwei Quellcodes auch dann als identisch anzusehen, wenn in dem einem Quellcode alle Variablennamen konsistent umbenannt wurden.

Diese hier nur kurz umrissenen Erscheinungsformen, Kodierungsmöglichkeiten und Betrachtungsebenen machen die Bestimmung der Identität einer Software problematisch, was ebenfalls einen großen Unterschied zu materiellen Gegenständen darstellt.

Schlussfolgerungen

Aus Sicht der Informatik hat Software also wesentliche Unterschiede zu materiellen Gegenständen. Die hier aufgezeigten Unterschiede sind insbesondere deshalb für die Praxis relevant, weil sie die wirtschaftlich wichtigen Bereiche der Herstellung, Verbreitung und Identitätsbestimmung einer Software betreffen. Software sollte daher auch bei der rechtlichen Einordung  und Bewertung als Gegenstand ganz eigener Kategorie gewürdigt werden.

Schreiben Sie einen Kommentar

Sie müssen sich einloggen um einen Kommentar schreiben zu können.