-
KREUZBEZUG AUF BEZOGENE ANMELDUNGEN
-
Diese
Anmeldung ist eine teilweise Weiterführung (continuation-in-part)
von der anhängigen US-Patentanmeldung
mit Seriennummer 11/476,990, eingereicht am 27. Juni 2006 durch
Erfinder Edmund Y. L. Sung, Timothy A. Rosemore, Jennifer Possin,
Raymond S. Tenenbaum, und Stephen L. Molloy, mit Titel "Method and Apparatus
for Authorizing a Software Product to be Used an a Computer System" (Anwaltsaktenzeichen
INTU-060798), wobei die Inhalte dieser Anmeldung hierin durch Bezugnahme
aufgenommen werden. Diese Anmeldung beansprucht dadurch Priorität unter
35 U. S. C. § 120 der
oben aufgelisteten Vorgängerpatentanmeldung.
-
HINTERGRUND
-
Die
vorliegende Erfindung betrifft Techniken zum dynamischen Konfigurieren
von Softwareprodukten. Insbesondere betrifft die vorliegende Erfindung
ein System, welches dynamisches Konfigurieren von Softwareprodukten
erleichtert.
-
Während es
im Online-Geschäft
ein beträchtliches
neuerliches Wachstum gegeben hat, bleiben körperliche Verkaufseinrichtungen
ein wichtiger Verkaufskanal. Unglücklicherweise haben diese körperlichen
Verkaufseinrichtungen inhärente
Betriebskosten, welche Erlösmargen
begrenzen können.
Zum Beispiel führen
viele Verkaufseinrichtungen ein diverses Sortiment von Produkten
und halten große
Inventare vor, um die Bedürfnisse
von verschiedenen Verbrauchern zufrieden zu stellen. Das diverse
Sortiment von Produkten und die großen Inventare erhöhen jedoch
die Ausgaben, welche Führen
einer Verkaufseinrichtung mit sich bringt, zum Beispiel durch Erfordern
von mehr Ausstellungsraum.
-
Diese
Probleme berühren
auch Softwareprodukte. Insbesondere stellen viele Softwareverkäufer ein
Sortiment von nahe verwandten Softwareprodukten in einer Produktfamilie
bereit, welche verschiedene Funktionalitäten und Preispunkte haben,
wie etwa Verbraucherversionen und professionelle Versionen von Steuervorbereitungssoftware.
Typischerweise teilen die Softwareprodukte in diesen Produktfamilien mehrere
Module. Wenn Änderungen
an einem gegebenen Modul erforderlich sind, betreffen folglich diese Änderungen
mehrere Softwareprodukte mit zugeordneten Wirkungen auf Testen und
Verteilung.
-
Verkaufseinrichtungen
führen
typischerweise die verschiedenen Softwareprodukte in einer gegebenen
Produktfamilie und stellen diese aus, was Anforderungen an wertvollen
Regalraum oder Bodenfläche
stellt, um dadurch die Größe der Verkaufseinrichtung
zu erhöhen
und Investitionsanforderungen signifikant zu erhöhen. Unglücklicherweise ist es oft schwierig,
ein Inventar für
solch ein breites Sortiment von Softwareprodukten geeignet handzuhaben. Folglich
können
Verkaufseinrichtungen zu wenig Inventar für populäre Softwareprodukte und zuviel
Inventar für
weniger populäre
Softwareprodukte haben.
-
Außerdem bündeln Unternehmen
typischerweise eine diskrete Menge von Funktionalitäten in jedes
dieser Softwareprodukte in einer Bemühung, die Bedürfnisse
einer spezifischen Gruppe von Verbrauchern zu erfüllen und
die Softwarepro dukte voneinander abzuheben. Häufig kaufen Kunden jedoch ein gegebenes
Softwareprodukt basierend auf einer kleinen Untermenge dieser Funktionalitäten und
die übrigen
Funktionalitäten
haben geringen oder keinen erhöhten
Wert für
den Kunden. Außerdem
erhöhen diese
zusätzlichen
Funktionalitäten
oft die Komplexität
der Benutzerschnittstellen in dem gegebenen Softwareprodukt und
können
daher die Gesamtbenutzererfahrung für das Softwareprodukt herabmindern.
-
Daher
ist oft der Verkauf von Softwareprodukten durch Verkaufseinrichtungen
durch die Notwendigkeit kompliziert, ein breites Sortiment von Softwareprodukten
mit verschiedenen Mengen von festgelegten Funktionalitäten bereitzustellen.
-
ZUSAMMENFASSUNG
-
Eine
Ausführungsform
dieser Erfindung betrifft ein System, welches Zugriff auf mindestens
einen Teil eines Softwareprodukts bereitstellt. Während eines
Betriebs empfängt
dieses System Kaufinformation von einem ersten Ort, wobei die Kaufinformation
Information über
gekaufte Softwarefunktionalitäten
umfasst, auf welche ein Benutzer Zugriff kaufte, und wobei die gekauften
Softwarefunktionalitäten durch
eine erste Untermenge von Modulen in dem Softwareprodukt bereitgestellt
sind. Als Nächstes empfängt das
System eine Zugriffsanfrage von einem zweiten Ort, wobei die Zugriffsanfrage
einen Identifikator umfasst, welcher dem Benutzer bereitgestellt
wurde, als der Benutzer Zugriff auf die gekauften Softwarefunktionalitäten kaufte.
Als Nächstes
stellt das System dem zweiten Ort, von welchem aus auf das Softwareprodukt
zugegriffen werden kann, Konfigurationsanweisungen bereit, wobei
die Konfigurationsanweisungen die erste Untermenge der Module dynamisch
freigeben.
-
In
einigen Ausführungsformen
umfassen die Konfigurationsanweisungen einen Entschlüsselungsschlüssel. Zum
Beispiel kann der Entschlüsselungsschlüssel einen öffentlichen
Schlüssel
umfassen, welcher einem privaten Schlüssel zugeordnet ist, welcher
benutzt wurde, um mindestens einen Teil des Softwareprodukts zu
verschlüsseln.
-
In
einigen Ausführungsformen
erlaubt dynamisches Freigeben der ersten Untermenge von Modulen
dem Benutzer, die gekauften Softwarefunktionalitäten zu benutzen: Ohne einen
Teil des Softwareprodukts neu zu installieren; ohne einen Computer neu
zu starten, auf welchem das Softwareprodukt installiert ist; und/oder
ohne einen anderen Teil des Softwareprodukts zu installieren. Außerdem erlaubt in
einigen Ausführungsformen
dynamisches Freigeben der ersten Untermenge von Modulen dem Benutzer,
die gekauften Softwarefunktionalitäten zu benutzen, ohne zusätzliche
Module herunterzuladen.
-
In
einigen Ausführungsformen
wird die erste Untermenge von Modulen dynamisch freigegeben, während das
Softwareprodukt auf einem Computer ausgeführt wird.
-
In
einigen Ausführungsformen
erleichtern die Konfigurationsanweisungen "a la carte"-Auswahl von gekauften Softwarefunktionalitäten durch
den Benutzer aus Modulen, welche in dem Softwareprodukt bereits
getestet und übersetzt
(compiled) sind.
-
In
einigen Ausführungsformen
ist der erste Ort eine körperliche
Verkaufseinrichtung und/oder eine Online-Verkaufseinrichtung. Außerdem kann der
erste Ort verschieden von dem zweiten Ort sein.
-
In
einigen Ausführungsformen
werden die Konfigurationsanweisungen über ein Netzwerk durch einen
Server dem zweiten Ort über
ein Netzwerk bereitgestellt.
-
In
einigen Ausführungsformen
werden die Operationen von Empfangen der Zugriffsanfrage und Bereitstellen
der Konfigurationsanweisungen nach einem Zeitintervall wiederholt,
um dadurch Synchronisation von momentanen Softwarefunktionalitäten, welche
in dem Softwareprodukt freigegeben sind, zu erlauben.
-
In
einigen Ausführungsformen
empfängt
das System eine Kaufanfrage und Zahlung von dem Benutzer, wobei
die Kaufanfrage zusätzlich
gekauften Softwarefunktionalitäten
zugeordnete Information umfasst, und wobei die zusätzlich gekauften
Softwarefunktionalitäten
einer zweiten Untermenge von Modulen in dem Softwareprodukt zugeordnet
sind. Als Nächstes
stellt das System dem zweiten Ort zusätzliche Konfigurationsanweisungen
bereit, wobei die zusätzlichen
Konfigurationsanweisungen die zweite Untermenge der Module dynamisch
freigeben. Man bemerke, dass die zusätzlich gekauften Funktionalitäten verschieden
von den gekauften Funktionalitäten
sein können
oder dass die zusätzlich
gekauften Funktionalitäten
mindestens teilweise mit den gekauften Funktionalitäten überlappen
können.
Außerdem
ist in einigen Ausführungsformen
die Zahlung auf den zusätzlich
gekauften Softwarefunktionalitäten
basiert.
-
Eine
andere Ausführungsform
betrifft ein Computerprogrammprodukt zum Gebrauch in Verbindung
mit dem System. Dieses Computerprogrammprodukt kann Anweisungen
umfassen, welche zumindest einigen der oben beschriebenen Operationen
entsprechen.
-
Eine
andere Ausführungsform
stellt ein Verfahren zum Bereitstellen von Zugriff auf mindestens einen
Teil des Soft wareprodukts bereit. Dieses Verfahren kann mindestens
einige der oben beschriebenen Operationen durchführen.
-
KURZE BESCHREIBUNG DER FIGUREN
-
1 ist
ein Blockdiagramm, welches ein Computersystem umfassend Computer
und Server illustriert, welche zusammen vernetzt sind, in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung.
-
2 ist
ein Flussdiagramm, welches ein Verfahren zum Bereitstellen von Zugriff
auf mindestens einen Teil des Softwareprodukts in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung illustriert.
-
3 ist
ein Blockdiagramm, welches ein Computersystem in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung illustriert.
-
4 ist
ein Blockdiagramm, welches eine Datenstruktur in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung illustriert.
-
5 ist
ein Blockdiagramm, welches eine Datenstruktur in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung illustriert.
-
Man
bemerke, dass sich ähnliche
Bezugsnummern durch die Zeichnungen hindurch auf entsprechende Teile
beziehen.
-
DETAILLIERTE BESCHREIBUNG
-
Die
folgende Beschreibung ist präsentiert, um
irgend einem Fachmann in der Technik zu ermöglichen, die Erfindung durchzuführen und
zu benutzen, und ist in dem Kontext einer bestimmten Anwendung und
ihrer Anforderungen bereitgestellt. Verschiedene Abwandlungen von
den offenbarten Ausführungsformen
werden leicht für
die Fachleute in der Technik offensichtlich sein und die allgemeinen
hierin definierten Prinzipien können
auf andere Ausführungsformen
und Anwendungen angewendet werden, ohne von dem Geist und dem Geltungsbereich der
vorliegenden Erfindung abzuweichen. Somit ist die vorliegende Erfindung
nicht beabsichtigt, auf die gezeigten Ausführungsformen beschränkt zu sein, sondern
es ist ihr der weiteste Geltungsbereich eingeräumt, welcher mit den hierin
offenbarten Prinzipien und Merkmalen konsistent ist.
-
Ausführungsformen
eines Computersystems, eines Verfahrens und eines Computerprogrammprodukts
(d. h. Software) zum Gebrauch mit dem Computersystem werden beschrieben.
Diese Systeme, Software und Prozesse können benutzt werden, um Zugriff
auf mindestens einen Teil eines Softwareprodukts bereitzustellen.
Insbesondere kann das Computersystem einem Benutzer, welcher vorher
Zugriff auf Softwarefunktionalitäten
gekauft hat, Konfigurationsanweisungen bereitstellen. Diese Konfigurationsanweisungen
können
dynamisch Gebrauch einer Untermenge von Modulen in einem Softwareprodukt
freigeben, welche Module den gekauften Softwarefunktionalitäten zugeordnet
sind. Man bemerke, dass der Zugriff auf die Softwarefunktionalitäten in einer
körperlichen
Verkaufseinrichtung und/oder in einer Online-Verkaufseinrichtung,
wie etwa bei einer Website oder einer Webseite, gekauft sein kann.
-
In
einigen Ausführungsformen
erleichtern die Konfigurationsanweisungen "a la carte"-Auswahl der gekauften Softwarefunktionalitäten durch
den Benutzer aus Modulen, welche in dem Softwareprodukt bereits
getestet und übersetzt
(compiled) sind. Außerdem
kann der Benutzer dynamisch die Untermenge von Modulen freigeben:
Ohne einen Teil des Softwareprodukts neu zu installieren; ohne einen
Computer neu zu starten (rebooting), auf welchem das Softwareprodukt
installiert ist; und/oder ohne einen anderen Teil des Softwareprodukts
zu installieren.
-
Zu
einer späteren
Zeit kann der Benutzer zusätzliche
Softwarefunktionalitäten
von dem Computersystem kaufen und das Computersystem kann zusätzliche
Konfigurationsanweisungen bereitstellen, welche eine zusätzliche
Untermenge von Modulen in dem Softwareprodukt freigeben, welche
den zusätzlichen
Softwarefunktionalitäten
zugeordnet sind. Man bemerke, dass die zusätzlichen Module verschieden sein
können
von der Untermenge von Modulen oder mindestens teilweise mit der
Untermenge von Modulen überlappen
können
und dass die Zahlung auf den zusätzlich
gekauften Softwarefunktionalitäten
basieren kann.
-
Diese
Techniken können
als eine alleinstehende (stand-alone)
Softwareanwendung implementiert sein, oder als ein Programmmodul
oder eine Unterroutine (subroutine) in einer anderen Anwendung. Weiterhin
kann mindestens ein Teil des Programms konfiguriert sein, auf einem
Client-Computer ausgeführt
zu werden (wie etwa ein Personalcomputer, ein Laptop-Computer, Mobiltelefon,
PDA, oder ein anderes Gerät,
welches befähigt
ist, computerlesbare Daten zu manipulieren) oder entfernt von einem
Client-Computer über
zugeordnete Computersysteme über
ein Netzwerk ausgeführt
zu werden (wie etwa das Internet, Intranet, LAN, WAN, MAN, oder
eine Kombination von Netzwerken, oder eine andere Technologie, welche
Kommunikation zwischen Computersystemen ermöglicht). Daher können die
Kaufinformation, das Softwareprodukt, und die Konfigurationsanweisungen
lokal gespeichert sein (zum Beispiel auf einem lokalen Computer)
und/oder entfernt (zum Beispiel auf einem Computer oder Server,
auf welchen über
ein Netzwerk zugegriffen ist).
-
Durch
dynamisches Freigeben von Untermengen von Modulen und/oder Untermengen
von Funktionalitäten
in einem zuvor getesteten und übersetzten
Softwareprodukt, erlauben diese Techniken, dass Softwarefunktionalitäten in diesem
Softwareprodukt den Bedürfnissen
eines gegebenen Benutzers angepasst werden können. Andererseits ermöglicht diese
Fähigkeit
Verkaufseinrichtungen, weniger Softwareprodukte zu führen und
auszustellen, um dadurch Operationen zu vereinfachen, Ausgaben zu vermindern,
und/oder Unterschüsse
oder Überschüsse an Inventar
zu vermindern. Außerdem
sind solche Softwareprodukte im Allgemeinen weniger komplex und
leichter zu testen und zu verteilen. Zum Beispiel kann durch dem
Benutzer Erlauben, nur diejenigen Funktionalitäten zu kaufen, welche von Interesse
sind, die Benutzerschnittstelle vereinfacht werden und die Gesamtbenutzererfahrung
verbessert werden.
-
Wir
beschreiben nun Ausführungsformen von
Systemen, Geräten
und Prozessen zum Bereitstellen von Zugriff auf mindestens einen
Teil eines Softwareprodukts. 1 präsentiert
ein Blockdiagramm, welches eine Ausführungsform eines Computersystems 100 umfassend
Computer und Server illustriert, welche zusammen vernetzt sind.
In dieser Ausführungsform
kann ein Benutzer zuerst ein Softwareprodukt kaufen oder Zugriff
auf mindestens einen Teil des Softwareprodukts von einer oder mehr Verkaufseinrichtungen 116 kaufen,
welche umfassen können:
Ein Geschäft 118,
einen Verteiler 120, eine Website 122, und/oder
einen anderen 124 Verkaufskanal. Im Allgemeinen umfasst
das Softwareprodukt oder mindestens der Teil eines Softwareprodukts
ein oder mehr Softwarefunktionalitäten, welche der Benutzer gerne
benutzen möchte.
Außerdem
sind diese Softwarefunktionalitäten
mindestens einer Untermenge der Module in dem Softwareprodukt zugeordnet.
-
Wenn
der Benutzer das Softwareprodukt kauft oder Zugriff auf einen Teil
des Softwareprodukts kauft, empfängt
der Benutzer ein Kurzzeichen (token) oder einen Identifikator, welcher
dem Benutzerkauf entspricht. Außerdem
kann der Benutzer Anweisungen empfangen, wie der Identifikator zu
benutzen ist, um das Softwareprodukt zu empfangen, oder um Zugriff
auf den Teil des Softwareprodukts zu ermöglichen. Zum Beispiel kann
der Benutzer eine verschlüsselte
Version des Softwareprodukts kaufen und (wie unten beschrieben)
der Benutzer kann den Anweisungen folgen und den Identifikator benutzen, um
Zugriff auf mindestens den Teil des Softwareprodukts freizugeben.
Alternativ kann der Benutzer den Anweisungen folgen und den Identifikator
benutzen, um mindestens den Teil des Softwareprodukts zu empfangen
oder auf die Softwarefunktionalität(en) zuzugreifen, welche mindestens
dem Teil des Softwareprodukts zugeordnet sind.
-
Nachdem
die Kauftransaktion vollendet ist, kann die Verkaufseinrichtung
(wie etwa das Geschäft 118)
einem Server 114 über
ein Netzwerk 112, wie etwa das Internet, Kaufinformation
bereitstellen. Dieser Server kann einem Anbieter des Softwareprodukts
zugeordnet sein, und die Kaufinformation kann den dem Benutzer bereitgestellten
Identifikator umfassen und Information über das Softwareprodukt oder
einen Teil des Softwareprodukts, für welches der Benutzer zum
Zugriff bezahlt hat. Allgemeiner umfasst die Kaufinformation Information über gekaufte
Softwarefunktionalitäten,
auf welche der Benutzer Zugriff gekauft hat.
-
Dann
kann der Benutzer auf den Server 114 von einem Computer 110 durch
Netzwerk 112 zugreifen. Computer 110 kann entfernt
von der Verkaufseinrichtung 116 gelegen sein. Zum Beispiel
kann Computer 110 in dem Heim des Benutzers oder an einer
Benutzerarbeitsstelle sein. Wenn der Benutzer auf Server 114 zugreift,
kann der Benutzer eine Zugriffsanfrage bereitstellen, welche den
Identifikator umfasst.
-
Basierend
auf der Kaufinformation und der Zugriffsanfrage kann der Server 114 dem
Benutzer freigeben, auf die Untermenge der Module und/oder die Untermenge
der Funktionalitäten
in dem Softwareprodukt (welche der Untermenge von Softwaremodulen
zugeordnet sein kann) zuzugreifen. In einigen Ausführungsformen
kann der Server 114 dem Computer 110 Konfigurationsanweisungen
bereitstellen. Diese Konfigurationsanweisungen können dynamisch die Untermenge
der Module und/oder die Untermenge der Funktionalitäten freigeben.
Zum Beispiel können
die Konfigurationsanweisungen einen Entschlüsselungsschlüssel umfassen,
wie etwa einen öffentlichen
Schlüssel,
welcher einem privaten Schlüssel
zugeordnet ist, welcher benutzt wurde, um mindestens den Teil des
Softwareprodukts vorher zu verschlüsseln. Unter Benutzung dieses
Entschlüsselungsschlüssels kann
der Benutzer mindestens denjenigen Teil des Softwareprodukts entschlüsseln, welcher
von einer der Verkaufseinrichtungen 116 gekauft wurde.
-
In
einer beispielhaften Ausführungsform
installiert der Benutzer das gekaufte Softwareprodukt auf dem Computer 110.
Dieses Softwareprodukt kann mehrere Module (verschiedenen Softwarefunktionalitäten zugeordnet)
umfassen. Außerdem
können
die mehreren Module bereits übersetzt
und getestet und daher bereit zur Benutzung sein. Diese Module können jedoch
verschlüsselt
sein, so dass der Benutzer zunächst
ein gegebenes Modul vor Benutzen des Moduls entschlüsseln muss.
Durch Zugreifen und Empfangen der Konfigurationsanweisungen (welche
einen oder mehr Entschlüsselungsschlüssel umfassen)
kann der Benutzer die geeignete Untermenge der Module, welche der
Benutzer zum Zugriff bezahlt hat, entschlüsseln.
-
Man
beachte, dass in diesen Ausführungsformen
das durch die Verkaufseinrichtungen 116 verkaufte Softwareprodukt
mehr Module und/oder mehr Softwarefunktionalitäten umfassen kann als diejenigen,
auf welche der typische Benutzer zu einer gegebenen Zeit zugreifen
können
möchte.
Anstatt verschiedene Versionen dieses Softwareprodukts auf Lager
zu haben und zu verkaufen, können
Verkaufseinrichtungen 116 eine generische Version des Softwareprodukts
auf Lager haben. Außerdem
können Verkaufseinrichtungen 116 dieses
generische Softwareprodukt auf die Bedürfnisse eines spezifischen Benutzers
zuschneiden, indem dem Benutzer erlaubt ist, "a la carte" diejenigen Softwarefunktionalitäten auszuwählen, auf
welche der Benutzer gern zugreifen würde. Wie oben geschrieben,
erlaubt Computersystem 100 den Benutzern, nachfolgend die
geeigneten Konfigurationsanweisungen zu empfangen, um die Untermenge
derjenigen Module und/oder die Untermenge derjenigen Softwarefunktionalitäten freizugeben,
welche gekauft sind.
-
Das
dynamische Freigeben der Untermenge der Module und/oder der Untermenge
der Softwarefunktionalitäten
in dem Softwareprodukt kann durchgeführt werden, ohne dass der Benutzer:
einen Teil des Softwareprodukts neu installiert; ohne dass er den
Computer, auf welchem das Softwareprodukt installiert ist, zunächst neu
startet (rebooting); und/oder ohne dass er einen anderen Teil des
Softwareprodukts installiert. Außerdem erlaubt in einigen Ausführungsformen
dynamisches Freigeben der Untermenge von Modulen und/oder der Untermenge
der Softwarefunktionalitäten
dem Benutzer, die gekauften Softwarefunktionalitäten zu benutzen, ohne zusätzliche
Module herunterzuladen. Folglich kann die Untermenge von Modulen
und/oder die Untermenge der Softwarefunktionalitäten dynamisch freigegeben werden,
während
das Softwareprodukt auf dem Computer 110 ausgeführt wird.
-
In
einigen Ausführungsformen
wiederholt der Benutzer nach einem Zeitintervall die Operation,
dem Server 114 die Zugriffsanfrage bereitzustellen, und der
Server 114 wieder holt die Operation, die Konfigurationsanweisungen
bereitzustellen. Zum Beispiel kann eine Version der Konfigurationsanweisungen nach
dem Zeitintervall auslaufen (expire), und eine neuere Version kann
benötigt
werden. Dies kann Synchronisation von momentanen Softwarefunktionalitäten erlauben,
welche in dem Softwareprodukt freigegeben sind, oder kann Zugriff
auf die Softwarefunktionalitäten
erlauben, welche auf einer Subskriptionsbasis zu verkaufen sind.
Somit kann der Benutzer routinemäßig oder
wiederkehrend bezahlen, um Zugriff auf die Untermenge der Module
und/oder die Untermenge der Softwarefunktionalitäten fortzuführen.
-
Nach
dem anfänglichen
Kauf kann weiterhin der Benutzer wählen, Zugriff auf eine zusätzliche
Untermenge von den Modulen und/oder auf eine zusätzliche Untermenge der Softwarefunktionalitäten in dem
Softwareprodukt zu kaufen. In diesen Ausführungsformen kann der Benutzer
Zugriff auf die zusätzlichen
Softwarefunktionalitäten
von einer der Verkaufseinrichtungen 116 oder direkt von
dem Anbieter des Softwareprodukts (zum Beispiel über den Server 114)
kaufen. Nach Empfangen einer Kaufanfrage (welche zusätzlichen
Softwarefunktionalitäten zugeordnete
Information umfasst) und Zahlung durch den Benutzer (welche auf
den zusätzlichen
Softwarefunktionalitäten
basieren kann), kann Server 114 zusätzliche Konfigurationsanweisungen
bereitstellen, welche die zusätzliche
Untermenge der Module und/oder die zusätzliche Untermenge der Softwarefunktionalitäten für den Computer 110 dynamisch freigeben.
Man bemerke, dass diese zusätzlichen Softwarefunktionalitäten: Die
ursprünglichen
durch den Benutzer gekauften Softwarefunktionalitäten umfassen
können,
teilweise mit den ursprünglichen Softwarefunktionalitäten überlappen
können,
oder verschiedene Softwarefunktionalitäten sein können. Weiterhin kann die zusätzliche
Untermenge der Module: Die Untermenge der Module umfassen, teilweise
mit der Untermenge von Modulen überlappen, oder
verschiedene Module umfassen.
-
In
anderen Ausführungsformen
empfängt der
Benutzer nicht das Softwareprodukt von einer der Verkaufseinrichtungen 116 zum
Kaufzeitpunkt. Zum Beispiel kann der Benutzer das Softwareprodukt
von dem Server 140 auf Computer 110 nachfolgend
herunterladen. Man bemerke, dass das Softwareprodukt eine alleinstehende
Anwendung (stand-alone application) auf dem Computer 110 sein
kann und/oder in eine andere Anwendung eingebettet sein kann. In
einer exemplarischen Ausführungsform
umfasst das Softwareprodukt Einkommenssteuervorbereitungssoftware
und/oder Finanzbuchhaltungssoftware.
-
In
einigen Ausführungsformen
umfasst die Einkommenssteuersoftware: TurboTaxTM (von
Intuit, Inc., aus Mountain View, California), TaxCutTM (von H&R Block, Inc.
aus Kansas City, Missouri), TaxActTM (von
2nd Story Software, Inc. aus Cedar Rapids,
Iowa) und/oder andere Software, welche befähigt ist, eine Einkommenssteuererklärung vorzubereiten.
Weiterhin umfasst in einigen Ausführungsformen die Finanzbuchhaltungssoftware
Gehaltsbuchhaltungssoftware, wie etwa QuickBooksTM (von
Intuit, Inc., aus Mountain View, California), PeachTree CompleteTM (von der Sage Group PLC, aus London, United
Kingdom), MYOB Business EssentialsTM (von
MYOB US, Inc., aus Rockaway, New Jersey), NetSuite Small Business
AccountingTM (von NetSuite, Inc. aus San Mateo,
California), Cougar MountainTM (von Cougar Mountain
Software, aus Boise, Idaho), Small Business ManagerTM (von
Microsoft Corporation, aus Redmont, Washington), Simply AccountingTM (von der Sage Group PLC, aus London, United
Kingdom), CYMA IV AccountingTM (von CYMA
Systems, Inc., aus Temple, Arizona), DacEasyTM (von
Sage Software SB, Inc., aus Lawrenceville, Georgia), Microsoft MoneyTM (von Microsoft Corporation, aus Redmont, Washington),
und/oder andere Finanzbuchhaltungssoftware, welche befähigt ist,
Gehaltsinformation zu verarbeiten. Schließlich umfasst in einigen Ausführungsformen
die Finanzbuchhaltungssoftware Finanzplanungssoftware, wie etwa QuickenTM (von Intuit, Inc., aus Mountain View,
California), Microsoft MoneyTM (von Microsoft
Corporation, aus Redmont, Washington), SplashMoneyTM (von
SplashData, Inc., Los Gatos, CA), MvelopesTM (von
In2M, Inc., Frager, Utah), und/oder Open-Source-Anwendungen wie etwa
GnucashTM, PLCashTM,
BudgetTM (von Snowmmint Creative Solutions,
LLC), und/oder andere Finanzplanungssoftware, welche befähigt ist,
Finanzinformation zu verarbeiten.
-
Während das
Softwareprodukt auf dem Computer 110 gelegen sein kann,
können
andere Ausführungsformen
ein Softwarewerkzeug (software tool) benützen, welches in einer Webseite
eingebettet ist (wiederum entweder als alleinstehende Anwendung
oder als ein Teil einer anderen Anwendung). Diese Webseite kann
durch einen Server 114 über
Netzwerk 112 bereitgestellt sein. In einer exemplarischen
Ausführungsform
ist das Finanzsoftwarewerkzeug ein Softwarepaket geschrieben in
JavaScriptTM (d. h. das Finanzsoftwarewerkzeug
umfasst Programme oder Prozeduren, welche JavaScript-Anweisungen
enthalten), in ECMAScript (wofür
die Spezifikation durch die europäische Computerherstellerassoziation
International (European Computer Manufacturers Association International)
veröffentlicht ist),
in VBScriptTM (eine Handelsmarke von Microsoft, Inc.)
oder in irgend einer anderen Client- oder Server-seitigen Script-Sprache.
Mit anderen Worten kann das Softwarewerkzeug Programme oder Prozeduren
umfassen, welche JavaScript-, ECMAScript-Anweisungen, VBScript-Anweisungen,
oder Anweisungen in einer anderen Programmiersprache umfassen, welche
zum Wiedergeben (rendering) durch einen Browser oder eine andere
Client-Anwendung
auf dem Computer 110 geeignet sind. In diesen Ausführungsformen
können
die Konfigurationsanweisungen, welche mit der Webseite bereitgestellt sind
oder vorher dem Computer 110 bereitgestellt sind, benutzt
werden, um dynamisch Zugriff auf das Softwarewerkzeug freizugeben.
-
In
einer exemplarischen Ausführungsform umfasst
ein durch die Verkaufseinrichtungen verkauftes Softwareprodukt Module
und/oder Funktionalitäten,
welche drei Softwareprodukttypen zugeordnet sind (wie etwa Verbraucher,
fortgeschritten und professioneller), wobei jeder Produkttyp fünf Gruppen von
Softwarefunktionalitäten
umfasst. Basierend auf den Benutzerauswahlen kann das Softwareprodukt für die Bedürfnisse
eines gegebenen Benutzers konfiguriert werden. Zum Beispiel können die
Konfigurationsanweisungen einen der Softwareprodukttypen und eines
von vier verschiedenen Anordnungen der fünf Gruppen von Softwarefunktionalitäten auswählen.
-
In
einigen Ausführungsformen
umfasst der Computer 100 weniger oder zusätzliche
Komponenten. Außerdem
können
zwei oder mehr Komponenten in eine einzelne Komponente kombiniert
werden und/oder es kann eine Position von einer oder mehr Komponenten
geändert
sein.
-
Wir
diskutieren nun Verfahren zum Bereitstellen von Zugriff auf Softwareprodukte.
Insbesondere präsentiert 2 ein
Flussdiagramm, welches eine Ausführungsform
des Verfahrens 200 zum Bereitstellen von Zugriff auf mindestens
einen Teil des Softwareprodukts illustriert, welches in einem Computersystem
implementiert sein kann, wie etwa das Computersystem 100 in 1.
Während
eines Betriebs empfängt
dieses System Kaufinformation von einem ersten Ort (210),
wobei die Kaufinformation Information über gekaufte Softwarefunktionalitäten umfasst,
auf welche ein Benutzer Zugriff kaufte, und wobei die gekauften
Softwarefunktionalitäten
durch eine erste Untergruppe von Modulen in dem Softwareprodukt
bereitgestellt sind. Als Nächstes
empfängt
das System eine Zugriffsanfrage von einem zweiten Ort, von welchem
aus auf das Softwareprodukt zugegriffen werden kann (212),
wobei die Zugriffsanfrage einen Identifikator umfasst, welcher dem
Benutzer bereitgestellt wurde, als der Benutzer Zugriff auf die
gekauften Softwarefunktionalitäten kaufte.
Dann stellt das System dem zweiten Ort Konfigurationsanweisungen
bereit (214), wobei die Konfigurationsanweisungen die erste
Untergruppe der Module dynamisch freigeben.
-
In
einigen Ausführungsformen
empfängt
das System optional eine Kaufanfrage und Zahlung von dem Benutzer
(216), wobei die Kaufanfrage zusätzlich gekauften Softwarefunktionalitäten zugeordnete Information
umfasst und wobei die zusätzlich
gekauften Softwarefunktionalitäten
einer zweiten Untermenge von Modulen in dem Softwareprodukt zugeordnet sind.
Als Nächstes
stellt das System optional dem zweiten Ort zusätzliche Konfigurationsanweisungen bereit
(218), wobei die zusätzlichen
Konfigurationsanweisungen die zweite Untermenge der Module dynamisch
freigeben.
-
Man
beachte, dass es in einigen Ausführungsformen
des Verfahrens 200 geben kann: Zusätzliche oder weniger Operationen;
die Ordnung der Operationen kann geändert werden; und zwei oder mehr
Operationen können
in eine einzelne Operation kombiniert sein.
-
Wir
beschreiben nun Computersysteme zum Implementieren dieser Techniken. 3 präsentiert ein
Blockdiagramm, welches eine Ausführungsform eines
Computersystems 300 illustriert. Computersystem 300 umfasst:
Einen oder mehr Prozessoren 310, eine Kommunikationsschnittstelle 312,
eine Benutzerschnittstelle 314, und eine oder mehr Signalleitungen 322,
welche diese Komponenten zusammenkoppeln. Man bemerke, dass die
eine oder mehr Verarbeitungseinheiten 310 Parallelverarbeitung
und/oder Multi-Threaded-Operation unterstützen können, dass die Kommunikationsschnittstelle 312 eine
persistente Kommunikationsverbindung haben kann, und dass die eine
oder mehr Signalleitungen 322 einen Kommunikationsbus bilden
können.
Außerdem
kann die Benutzer schnittstelle 314 umfassen: Eine Anzeige 316,
eine Konsole 318, und/oder einen Zeiger 320, wie
etwa eine Maus.
-
Speicher 324 in
dem Computersystem 300 kann volatilen Speicher und/oder
nicht-volatilen Speicher umfassen. Insbesondere kann Speicher 324 umfassen:
ROM, RAM, EPROM, EEPROM, FLASH, ein oder mehr Smart-Karten (smart
cards), ein oder mehr Magnetplattespeichergeräte, und/oder ein oder mehr
optische Speichergeräte.
Speicher 324 kann ein Betriebssystem 326 speichern,
welches Prozeduren (oder einen Satz von Anweisungen) zum Handhaben
verschiedener grundlegender Systemdienste zum Durchführen von
Hardware-abhängigen
Aufgaben umfasst. Während
nicht im Computersystem 100 gezeigt, kann in einigen Ausführungsformen
Speicher 324 einen Browser umfassen. Speicher 324 kann
auch Kommunikationsprozeduren (oder einen Satz von Anweisungen)
in einem Kommunikationsmodul 328 speichern. Diese Kommunikationsprozeduren
können
zum Kommunizieren mit einem oder mehr Computern und/oder Servern
benutzt werden, umfassend Computer und/oder Server, welche in Bezug
auf das Computersystem 300 entfernt gelegen sind.
-
Speicher 324 kann
mehre Programmmodule (oder einen Satz von Anweisungen) umfassen,
umfassend Konfigurationsmodul 330 (oder einen Satz von
Anweisungen) und/oder Verschlüsselungsmodul 350 (oder
einen Satz von Anweisungen). Konfigurationsmodul 330 kann
Kaufinformation 332 (wie etwa kommerzieller Einrichtung
A 334-1 und/oder kommerzieller Einrichtung B 334-2 zugeordnet)
benutzen, um in Antwort auf ein oder mehr Zugriffsanfragen 336 Konfigurationsanweisungen 344 bereitzustellen.
Außerdem
sind in einigen Ausführungsformen
zusammen mit der einen oder mehr Zugriffsanfragen 336 ein
oder mehr Benutzeridentifikatoren 348 und/oder Zahlungsinformation 346 bereitgestellt. Diese
Konfigurationsanweisungen 344 können dynamisch mindestens eine
Untermenge der Module und/oder eine Untermenge der Softwarefunk tionalitäten in Softwareprodukten 340 (wie
etwa Modul A 342-1 und/oder Modul B 342-2) freigeben.
-
In
einigen Ausführungsformen
umfassen die Konfigurationsanweisungen 344 ein oder mehr
Entschlüsselungsschlüssel, welche
Verschlüsselungsmodul 350 zugeordnet
sind. Zum Beispiel kann Verschlüsselungsmodul 350 die
Softwareprodukte 340 verschlüsseln und die Entschlüsselungsschlüssel können benutzt
werden, um das eine oder mehr der Module 342 zu entschlüsseln.
-
Außerdem ist
in einigen Ausführungsformen das
Konfigurationsmodul 330 benutzt, um routinemäßig oder
wiederkehrend die freigegebenen Module und/oder freigegebenen Funktionalitäten in den
Softwareprodukten 340 unter Benutzung von optionaler Synchronisationsinformation 338 zu
synchronisieren.
-
Anweisungen
in den verschiedenen Modulen in dem Speicher 324 können in
einer prozeduralen Hochsprache (high-level procedural language),
einer objektorientierten Programmiersprache und/oder in Assembler
oder einer Maschinensprache implementiert sein. Die Programmiersprache
kann übersetzt werden
oder interpretiert werden, d. h. konfigurierbar sein oder konfiguriert
sein, um durch eine oder mehr Verarbeitungseinheiten 310 ausgeführt zu werden.
-
Obwohl
das Computersystem 300 mit einer Anzahl von diskreten Komponenten
illustriert ist, ist 3 beabsichtigt, eine funktionale
Beschreibung der verschiedenen Merkmale bereitzustellen, welche in
dem Computersystem 300 vorhanden sein können, anstatt ein strukturelles
Schema der hierin beschriebenen Ausführungsformen. In Praxis, und
wie durch die Fachleute in der Technik erkannt wird, können die
Funktionen des Computersystems 300 über eine große Zahl
von Servern oder Computern verteilt sein, wobei verschiedene Gruppen
der Server oder Computer bestimmte Untermengen der Funktionen durchführen. In
einigen Ausführungsformen
kann ein Teil oder ein Ganzes der Funktionalität des Computersystems 300 in
einem oder mehr ASICs und/oder einem oder mehr digitalen Signalprozessoren
DSPs implementiert sein.
-
Computersystem 300 kann
weniger Komponenten oder zusätzliche
Komponenten umfassen. Außerdem
können
zwei oder mehr Komponenten in eine einzelne Komponente kombiniert
sein und/oder eine Position von einer oder mehr Komponenten kann
geändert
sein. In einigen Ausführungsformen kann
die Funktionalität
des Computersystems 300 mehr in Hardware und weniger in
Software oder weniger in Hardware und mehr in Software implementiert
sein, wie in der Technik bekannt.
-
Wir
beschreiben nun Datenstrukturen, welche in dem Computersystem 100 (1)
und/oder 300 (3) benutzt werden können. 4 präsentiert
ein Blockdiagramm, welches eine Ausführungsform einer Datenstruktur 400 illustriert.
Diese Datenstruktur kann Kaufinformation 410 umfassen.
Gegebene Kaufinformation 410, wie etwa Kaufinformation 410-1,
kann umfassen: Einen Zeitstempel (time stamp) 412-1, einen
Benutzer 414-1, ein oder mehr Softwareprodukte 416-1,
ein oder mehr Softwarefunktionalitäten 418-1, und/oder
ein oder mehr Geschäftseinrichtungen 420-1.
-
5 präsentiert
ein Blockdiagramm, welches eine Ausführungsform einer Datenstruktur 500 illustriert.
Diese Datenstruktur kann Softwareprodukten 510 zugeordnete
Information umfassen. Information für ein gegebenes Softwareprodukt,
wie etwa Softwareprodukt 510-1, kann umfassen: Einen Zeitstempel 512-1,
ein oder mehr Softwarefunktionalitäten 514-1, ein oder
mehr Module 516-1, und/oder übersetzten Code 518-1.
-
Man
bemerke, dass in einigen Ausführungsformen
der Datenstruktur 400 (4) und/oder 500 weniger
oder zusätzliche
Komponenten vorhanden sein können.
Außerdem
können
zwei oder mehr Komponenten in einer einzelnen Komponente kombiniert
sein, und/oder eine Position von einer oder mehr Komponenten ist
geändert.
-
Die
vorangehenden Beschreibungen von Ausführungsformen der vorliegenden
Erfindung sind nur für
Zwecke einer Illustration und Beschreibung präsentiert worden. Sie ist nicht
beabsichtigt, umfassend zu sein oder die vorliegende Erfindung auf
die offenbarten Formen zu beschränken.
Demgemäß werden
viele Abwandlungen und Abänderungen
für in
der Technik ausgebildete Praktiker offensichtlich sein. Zusätzlich ist
die obige Offenbarung nicht beabsichtigt, die vorliegende Erfindung
zu beschränken. Der
Geltungsbereich der vorliegenden Erfindung ist durch die angehängten Ansprüche definiert.