Jürgen Ernst, Dipl.-Ing.(FH) HomepageKontaktInformationLinksNews
Hard- & Software-EntwicklungInformation: Software-Patente unter der Lupe [3.3]
 

Information: Software-Patente unter der Lupe [3.3]



3.3 EU-Richtlinie: Kritische Analyse von Artikel 5

3.3.1 Auszug aus dem Richtlinientext

Artikel 5: Form des Patentanspruchs [1]

(1) Die Mitgliedstaaten stellen sicher, dass auf eine computerimplementierte Erfindung entweder ein Erzeugnisanspruch erhoben werden kann, wenn es sich um einen programmierten Computer, ein programmiertes Computernetz oder eine sonstige programmierte Vorrichtung handelt, oder aber ein Verfahrensanspruch, wenn es sich um ein Verfahren handelt, das von einem Computer, einem Computernetz oder einer sonstigen Vorrichtung durch Ausführung von Software verwirklicht wird.

(2) Ein Patentanspruch auf ein Computerprogramm, sei es auf das Programm allein oder auf ein auf einem Datenträger vorliegendes Programm, ist nur zulässig, insoweit das Programm, wenn es auf einem Computer, auf einem programmierten Computernetz oder einer sonstigen programmierbaren Vorrichtung installiert und ausgeführt wird, einen in derselben Patentanmeldung erhobenen Erzeugnis- oder Verfahrensanspruch gemäß Absatz 1 begründet.

3.3.2 Analyse der Formulierungen

Der nachfolgende Text ist noch nicht vollkommen fertig gestellt.
Dennoch sei der erste Ansatz hier schon mal veröffentlicht.

Besteht eine Erfindung aus mehreren Objekten (z.B. Gegenstände oder Tätigkeiten), dann kann die Realisierung dieser Objekte beliebig variiert werden. Eine äquivalente Verletzung liegt immer dann vor, sobald sich wieder dasselbe Ergebnis ergibt.

Ist ein Teilobjekt einer Erfindung ein Programm, dann ergibt sich eine äquivalente Verletzung, wenn man ein beliebiges anderes Programm benutzt, das dieselbe Funktion auch erfüllen kann.

Es gibt viele Programme, die jeweils unterschiedliche "computerimplementierte Erfindungen" begründen können. In der Menge all ihrer äquivalenten Realisierungen finden sich auch gemeinsame Formen, die für alle diese Erfindungen im Quelltext vollkommen identisch sind und das obwohl sie als unterschiedliche Erfindungen gelten.

Noch allgemeiner:

Zwei beliebige Programme P1 und P2 stehen immer in einer Transformationsbeziehung zueinander, so dass mindestens eines in das andere umwandelbar ist. Beispielsweise gilt für den Fall P1 = f(P2):

  • a) P1 besitzt eine äquivalente Realisierung P1'
  • b) P2 besitzt eine äquivalente Realisierung P2'
  • c) P1' enthält das Programm P2' komplett
  • d) P1' benutzt das Programm P2' immer vollständig für seine eigene Berechnung
  • e) P1' berechnet am Ende dasselbe Ergebnis wie P1

Da man obige Aussage mathematisch beweisen kann, liegt immer eine extrem dichte Patentverletzungssituation vor, sobald man Patentansprüche auf Programme gewährt.

Daher ist das Urheberrecht für den Schutz von Programmen wesentlich günstiger!

Beispiel

Programm P1:                                Programm P2:
  "Addition zweier Zahlen"                    "Ausgabe einer Meldung"

Definition:                                 Definition:

  func P1 ( zahl1, zahl2 : number )           func P2 ( msg : string )
  {                                           {
    x := zahl1 + zahl2 ;                        print ( msg ) ;
  }                                           }

Anwendung:                                  Anwendung:

  x := 0 ;                                    P2 ( 'TEST' ) ;
  P1 ( 1413808128, 21332 ) ;

Ergebnis:                                   Ergebnis:

  Variable x hat den Wert 1413829460.         Bildschirm zeigt 'TEST' an.
-----------------------------------------------------------------------------------------

Programm P1':                               Programm P2':
  (äquivalentes Programm zu P1)               (äquivalentes Programm zu P2)

Definition:                                 Definition:

  func P1' ( a, b, c : number )               func P2' ( a, b, c : number )
  {                                           {
    mem[a] := b + c ;                           mem[a] := b + c ;
  }                                           }

Anwendung:                                  Anwendung:

  adr1 := 12345678 ;                          adr2 := 3221225472 ;
  P1' ( adr1, 1413808128, 21332 ) ;           P2' ( adr2, 1413829460, 0 ) ;
bzw.                                        bzw.
  adr1 := $bc614e ;                           adr2 := $c0000000 ;
  P1' ( adr1, $54450000, $5354 ) ;            P2' ( adr2, $54455354, 0 ) ;

Ergebnis:                                   Ergebnis:

  Speicheradresse [adr1] enthält den          Speicheradresse [adr2] enthält den
  Wert 1413829460 bzw. $54455354.             Wert 1413829460 bzw. $54455354.
  [adr1] sei Position der Variable x.         [adr2] sei Position des Bildschirms.
                                              Bildschirm zeigt 'TEST' an.
-----------------------------------------------------------------------------------------

P2' eingebettet in P1 ergibt P1":           P1' eingebettet in P2 ergibt P2":

  func P1" ( zahl1, zahl2 : number )          func P2" ( msg : string )
  {                                           {
    adr1 := &x ;                                adr2 := $c0000000 ;
    P2' ( adr1, zahl1, zahl2 ) ;                P1' ( adr2, number ( msg ), 0 ) ;
  }                                           }

Da P1' mit P2' identisch ist, können die beiden Funktionen gegeneinander
ausgetauscht werden.

3.3.3 Quellenverzeichnis

[1] http://register.consilium.eu.int/pdf/de/04/st09/st09713.de04.pdf
[2] http://europa.eu.int/comm/internal_market/de/indprop/comp/02-277.htm
[3] http://www.european-patent-office.org
[4] http://europa.eu.int/comm/internal_market/en/indprop/comp/com02-92de.pdf