CH702260B1 - Umgebungsentwicklungsvorrichtung. - Google Patents
Umgebungsentwicklungsvorrichtung. Download PDFInfo
- Publication number
- CH702260B1 CH702260B1 CH00730/11A CH7302011A CH702260B1 CH 702260 B1 CH702260 B1 CH 702260B1 CH 00730/11 A CH00730/11 A CH 00730/11A CH 7302011 A CH7302011 A CH 7302011A CH 702260 B1 CH702260 B1 CH 702260B1
- Authority
- CH
- Switzerland
- Prior art keywords
- data
- synonym
- environment
- synthetic
- development
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3698—Environments for analysis, debugging or testing of software
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
- G06F21/6254—Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/288—Entity relationship models
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Strategic Management (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Human Resources & Organizations (AREA)
- Entrepreneurship & Innovation (AREA)
- General Health & Medical Sciences (AREA)
- Economics (AREA)
- General Business, Economics & Management (AREA)
- Tourism & Hospitality (AREA)
- Operations Research (AREA)
- Marketing (AREA)
- Data Mining & Analysis (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Die Erfindung betrifft eine Umgebungsentwicklungsvorrichtung umfassend einen Speicher, einen sich mit dem Speicher in Kommunikation befindenden Prozessor, welcher derart konfiguriert ist, dass er eine Vielzahl von im Speicher gespeicherten Verarbeitungsinstruktionen ausgibt. Der Prozessor gibt Instruktionen aus zum Empfangen einer Anfrage zur Erzeugung einer Entwicklungsumgebung, Identifizieren reeller Datensätze basierend auf die Anfrage, Erzeugen variierter Daten aus den reellen Daten und Generieren einer synthetischen Entwicklungsumgebung. Die Generierung umfasst weiter Instruktionen zum Instantiieren von Benutzerkonten, Bevölkern der synthetischen Entwicklungsumgebung mit einem Profil von Testkomponenten, Laden der variierten Daten in die synthetische Entwicklungsumgebung, und Verteilen der synthetischen Entwicklungsumgebung zu einem in der Anfrage angegebenen Standort.
Description
Zugehörige Anwendungen
[0001] Die vorliegende Anmeldung betrifft eine Umgebungsentwicklungsvorrichtung nach Anspruch 1.
[0002] Die vorliegende Anmeldung umfasst Ansprüche zur Verhinderung von nicht autorisierten Verwendungen von Daten einschliesslich der Verhinderung von Piraterie, der Verletzung der Privatsphäre, oder der nicht autorisierten Datenmodifikation (vorgeschlagene Klasse/Unterklasse: 726/26). Um aber ein Verständnis des Lesers im Hinblick auf die Beschreibungen der anderen Implementierungen zu entwickeln, wurden die Implementierungen in eine einzige Anwendung zusammengefasst, um darzustellen und klarzustellen, wie Aspekte dieser Implementierungen unabhängig voneinander arbeiten, wie zwischen einzelnen Ausführungsformen miteinander arbeiten und/oder kollektiv zusammenarbeiten. Weiter beschreibt die Anmeldung die Wechselbeziehung und die Synergien wie zwischen jeder der unterschiedlichen Implementierungen im Kontext eines allumfassenden erfinderischen Systems; das alles geschieht um weiter die Einhaltung des U.S.C. §112 zu gewährleisten.
[0003] Weiter beansprucht die Anmelderin hiermit gemäss 35USC §119 die Priorität der US-amerikanischen Provisional Patentanmeldung Nr. 61/095 009, eingereicht am 8. September 2008 mit dem Titel «SYSTEM UND VERFAHREN ZUR BEREITSTELLUNG EINER ENTWICKLUNGS- UND/ODER BANKINGUMGEBUNG EINSCHLIESSLICH SYNTHETISCHER DATEN.»
[0004] Der gesamte Inhalt der oben genannten Anmeldung wird hier ausdrücklich durch Bezug aufgenommen.
Gebiet
[0005] Die vorliegende Erfindung zielt im Allgemeinen auf Vorrichtungen des Testens von Computern und spezifischer auf VORRICHTUNGEN ZUR BEREITSTELLUNG EINER VIRTUELLEN ENTWICKLUNGS- UND IMPLEMENTIERUNGSUMGEBUNG EINSCHLIESSLICH REELLER UND SYNTHETISCHER DATEN.
Hintergrund
[0006] Das Testen von Software wird von Softwareentwicklern verwendet, um Programmierfehler in Software-Anwendungen zu reduzieren. Integrierte Entwicklungsumgebungen (IDEs), wie z.B. Microsoft Visual Studio und Eclipse, und die in solchen IDEs enthaltenen Debugger stellen ein Set von Werkzeugen dar, welche von Softwareentwicklern zum Testen von Software verwendet werden können.
Beschreibung der Erfindung
[0007] Es stellt sich die Aufgabe, eine Möglichkeit zu schaffen, Software-Anwendungen, insbesondere bestehende, komplexe Software-Anwendungen mit verteilten Modulen, zu testen, ohne dass die tatsächliche Software-Umgebung von Testabläufen beeinflusst wird, mit dem Ziel, Unterbrechungen von Arbeitsabläufen zu vermeiden bzw. zu minimieren.
[0008] Diese Aufgabe wird mit einer Umgebungsentwicklungsvorrichtung gemäss Anspruch 1 gelöst.
[0009] Die VORRICHTUNG ZUR BEREITSTELLUNG EINER VIRTUELLEN ENTWICKLUNGS- UND IMPLEMENTIERUNGSUMGEBUNG EINSCHLIESSLICH REELLER UND SYNTHETISCHER DATEN (im Folgenden «SYNONYM» genannt) stellt eine virtuelle Entwicklungs- und Implementierungsumgebung bereit. In einer Ausführungsform umfasst eine Umgebungsentwicklungsvorrichtung einen Speicher und einen sich mit dem Speicher in Kommunikation befindenden Prozessor, welcher derart konfiguriert ist, dass er eine Vielzahl von im Speicher gespeicherten Verarbeitungsinstruktionen ausgibt. Der Prozessor gibt Instruktionen aus zum Empfangen einer Anfrage zur Erzeugung einer Verteilungsumgebung, Identifizieren reeller Datensätze basierend auf die Anfrage, Erzeugen variierter Daten aus den reellen Daten und Generieren einer synthetischen Verteilungsumgebung. Die Generierung umfasst weiter Instruktionen zum Instanziieren von Benutzerkonten. Weiter umfasst die Generierung Instruktionen zum Bevölkern der synthetischen Verteilungsumgebung mit einem Profil von Testkomponenten, wobei ein solches Profil ein Profil für eine Sammlung von Software für einen Server, einen Desktop-Computer, einen Notebook-Computer, ein mobiles Gerät, usw. darstellen kann. Weiter umfasst die Generierung Instruktionen zum Laden der variierten Daten in die synthetische Verteilungsumgebung, und Verteilen der synthetischen Verteilungsumgebung zu einem in der Anfrage angegebenen Standort.
Kurze Beschreibung der Zeichnungen
[0010] Die beigefügten Anhänge und/oder Zeichnungen stellen verschiedene, nicht limitierende Beispiele, erfinderische Aspekte, in Übereinstimmung mit der vorliegenden Offenbarung dar:
[0011] Fig. 1A zeigt ein Blockdiagramm, welches die Erzeugung und die Verwendung einer virtuellen Entwicklungs- und/oder Testumgebung in einer Ausführungsform des SYNONYM darstellen;
[0012] Fig. 1B zeigt ein Flussdiagramm, welches die Transformation reeller Daten in synthetische Daten in einer Ausführungsform des SYNONYM darstellt;
[0013] Fig. 1C zeigt ein Diagramm einer Bildschirmkopie, welches eine Web-basierte Benutzerschnittstelle des SYNONYM darstellt;
[0014] Fig. 2A zeigt ein logisches Flussdiagramm, welches die Erzeugung von anonymisierten Daten in einer Ausführungsform des SYNONYM darstellt;
[0015] Fig. 2B zeigt eine Tabelle, welche Anonymisierungsregeln in einer Ausführungsform des SYNONYM darstellt;
[0016] Fig. 2C zeigt ein Diagramm einer Bildschirmkopie, welches eine Web-Formular-basierte Benutzerschnittstelle in einer Ausführungsform des SYNONYM darstellt;
[0017] Fig. 3 zeigt ein logisches Flussdiagramm, welches die Erzeugung synthetisierter Daten in einer Ausführungsform des SYNONYM darstellt;
[0018] Fig. 4 zeigt ein logisches Flussdiagramm, welches die Erzeugung einer virtuellen Entwicklungs- und/oder Testumgebung in einer Ausführungsform des SYNONYM darstellt;
[0019] Fig. 5 zeigt ein logisches Flussdiagramm, welches eine Instantiierung von Benutzerkonten in einer Ausführungsform des SYNONYM darstellt;
[0020] Fig. 6A zeigt ein Blockdiagramm, welches ein Kopieren einer synthetischen Datenbank von einer «Master» virtuellen Entwicklungs- und/oder Testumgebung in eine neue virtuelle Entwicklungs- und/oder Testumgebung in einer Ausführungsform des SYNONYM darstellt;
[0021] Fig. 6B zeigt ein Blockdiagramm, welches eine Entwickler-Server-Zone (DvSZ) und Offshore-Enwicklungszentren (ODC) in einer Ausführungsform des SYNONYM darstellt;
[0022] Fig. 6C zeigt ein Blockdiagramm, welches eine spezielle Verwendung von Hardware in einer DvSZ in einer Ausführungsform des SYNONYM darstellt;
[0023] Fig. 6D zeigt ein Blockdiagramm, welches eine Kontrolle eines physischen Zugangs beim ODC in einer Ausführungsform des SYNONYM darstellt;
[0024] Fig. 6E zeigt ein Blockdiagramm, welches eine Verwendung einer Infrastruktur für öffentliche Schlüssel (PKI) in einer Ausführungsform des SYNONYM darstellt;
[0025] Fig. 6F zeigt ein Blockdiagramm, welches einen Transfer sensibler Informationen in die DvSZ in einer Ausführungsform des SYNONYM darstellt;
[0026] Fig. 6G zeigt ein Blockdiagramm, welches eine Netzwerkstruktur einer DvSZ in einer Ausführungsform des SYNONYM darstellt;
[0027] Fig. 7 zeigt ein Blockdiagramm, welches Ausführungsformen des SYNONYM Controllers darstellt.
[0028] Die Anfangszahl jedes Bezugszeichens in den Figuren beschreibt die Figur, in welcher dieses Bezugszeichen eingeführt und/oder ausgeführt ist. Folglich würde eine detaillierte Beschreibung des Bezugszeichens 105 in Fig. 1 gefunden und/oder eingeführt werden. Das Bezugszeichen 205 wird in Fig. 2 eingeführt, usw.
Detaillierte Beschreibung
Überblick
[0029] Da Software-Anwendungen im Hinblick auf Grösse und Komplexität gewachsen sind, ist das Testen von Software-Anwendungen immer wichtiger geworden. Aufgrund einer Vielzahl von Komponenten, einschliesslich mehrerer Datenbank-Komponenten, steigt in umfangreichen Software-Anwendungen die Anzahl der Interaktionen, die zwischen Anwendungskomponenten stattfinden können, exponentiell. Daher sollten Testverfahren verwendet werden, um zu prüfen, wie Änderungen in einer Anwendungskomponente andere Anwendungskomponenten beeinflusst, mit dem Ziel, zu vermeiden, dass Programmierfehler und ineffiziente Implementierungen als Folge von Änderungen in existierenden Komponenten oder Hinzufügungen neuer Komponenten in Software-Anwendungen eingefügt werden. Die Anzahl und die Typen von Daten, welche in Software-Anwendungen verwendet werden, haben sich auch erhöht. Da die Anzahl von Benutzern und von verfügbaren Optionen für diese Benutzer zugenommen hat, steigt auch die Anzahl von einer Software-Anwendung unterstützten Sonderfällen, Ausnahmen und Sprachen. Daher sollten die Interaktionen zwischen Anwendungskomponenten, einschliesslich Datenbank-Komponenten, und Anwendungsdaten auch getestet werden, um Fehler zu vermeiden. Da sich der Umfang der durchzuführenden Tests erhöht, ist dies auch für die Kosten, die Dauer und/oder die Anzahl der zur Durchführung der Tests notwendigen Personen gültig. Manche Firmen wählen eine Auslagerung oder ein Offshoring der Tests, um die mit dem Testen verbundenen Kosten zu reduzieren. Die Auslagerung oder das Offshoring von Tests erzeugt eine weitere Menge von Herausforderungen, da Kundendaten, welche beim Testen nützlich sind, gemäss verschiedener Datenschutzgesetze und Firmenrichtlinien geschützt werden müssen. Die synthetische Implementierungsumgebung umfasst Anwendungen, welche eine Spiegelung erlauben, indem existierende Umgebungen dupliziert werden, existierende Systeme durch die Implementierung einer Anzahl von synthetischen Umgebungen, welche zusätzlich Kapazitäten schaffen, im Hinblick auf Last ausgleichen, synthetische Spieleimplementierungsumgebungen generieren, synthetische Bildungsimplementierungsumgebungen generieren, Ausbildungsimplementierungsumgebungen generieren, synthetische medizinische Implementierungsumgebungen generieren, die Qualitätsverbesserung durch die Zulassung von Variationen in der Testumgebung, welche Produktionsumgebungen nicht beeinflusst, fördern.
SYNONYM
[0030] Fig. 1A ist ein Blockdiagramm, welches die Erzeugung und die Verwendung einer virtuellen Entwicklungs- und/oder Testumgebung in einer Ausführungsform des SYNONYM darstellt. In Fig. 1A wird eine Anfrage zur Erzeugung einer neuen virtuellen Entwicklungs- und/oder Testumgebung empfangen 105. In einer Ausführungsform kann eine solche Anfrage von einem Mitglied eines Entwicklungsteams und/oder eines Testteams eines Projekts, von einer für einen Aufbau von Entwicklungsumgebungen für Projekten verantwortlichen Person, und/oder dergleichen kommen. In einer anderen Ausführungsform kann eine solche Anfrage automatisch als Teil der Erzeugung einer neuen Software-Anwendung/Komponente, der Änderung von Merkmalen einer Anwendungskomponente, der Hinzufügung einer Unterstützung für neue Datentypen, und/oder dergleichen ausgegeben werden. Die Anfrage kann in E-Mail-Form, in der Form einer programmierten Anfrage zur Erzeugung einer neuen virtuellen Entwicklungs- und/oder Testumgebung, und/oder dergleichen vorliegen. In einer Ausführungsform kann eine Web-basierte Benutzerschnittstelle Textfelder, Kontrollkästchen, Optionsschaltflächen und/oder dergleichen bereitstellen, um Administrativinformationen und Parameter zur Angabe von Testanforderungen eines Projekts betreffende Benutzereingaben anzunehmen. Ein Diagramm einer Bildschirmkopie, welches eine Web-basierte Benutzerschnittstelle in einer Ausführungsform des SYNONYM darstellt, ist in Fig. 1C gezeigt. Solche Daten können z.B. einen Benutzernamen 181, eine Benutzerkennung 182, eine Liste erforderlicher Umgebungen 183, einen Projektnamen 184, eine Projektkennung 185, eine Liste erforderlicher Anwendungen 186, eine Liste erforderlicher Datenbanken 187 und/oder dergleichen umfassen. Die Parameter können in XML gespeichert werden und nach einer Eingabe eines Benutzers über HTTP zu einem SYNONYM-Server gesendet werden. In einer Implementierung bekommt die Anfrage die folgende Form:
[0031]
[0032] In manchen Fällen kann es nützlich sein, den Zugang zu aktuellen Daten zu beschränken, dies aufgrund von Datenschutzbedenken, Richtlinienbedenken und/oder da US- und internationale Bestimmungen die Verwendung und den Austausch persönlicher Informationen beschränkt und da verschiedene regionale, lokale, industrieweite Firmenbestimmungen und/oder Zoll die Verwendung und Offenbarung von Informationen über bestimmten geschäftlichen Beziehungen oder Transaktionen einer Person oder Instanz zu beschränken (z.B. können verschiedene Beschränkungen im Hinblick auf die Verwendung von reellen Kundendaten zum Testen existieren, insbesondere wenn ein solches Testen ausgelagert wird oder Offshore getätigt wird). Eine virtuelle Entwicklungs- und/oder Testumgebung kann daher synthetisierte Daten anstatt von reellen Daten verwenden. In einer Ausführungsform können solche synthetisierten Daten auf anonymisierten, reellen Daten basieren. In einer Implementierung können anonymisierte Daten durch den Austausch von Datenwerten in bestimmten Datenbankfeldern mit anonymisierten Versionen dieser Datenwerte erzeugt werden 107. Weitere Details betreffend die Erzeugung von anonymisierten Daten werden später in der Beschreibung offenbart. In einer Implementierung können synthetisierte Daten durch eine Synthetisierung neuer Dateneinträge, basierend auf anonymisierte reelle Daten, erzeugt werden 110. In einer Implementierung kann die Menge der in einer synthetischen Datenbank (Synbase) gespeicherten Daten verringert werden, um die Effizienz zu erhöhen. Weitere Details betreffend die Erzeugung von anonymisierten Daten werden später in der Beschreibung offenbart.
[0033] In alternativen Ausführungsformen können reelle Daten und/oder modifizierte reelle Daten wie z.B. reelle Daten mit modifizierten IP-Adressen und/oder modifizierten Domain/Computer/Server-Namen anstatt synthetisierten Daten verwendet werden. In einer Ausführungsform umfasst die synthetische Implementierungsumgebung Anwendungen, welche eine Spiegelung durch eine Duplizierung von vorliegenden Umgebungen erlauben. Reelle Daten und/oder modifizierte reelle Daten können z.B. zur Duplizierung mittels einer Synchronisationstechnologie verwendet werden, wie z.B. rsync, einen Ablauf durch einen Job-Scheduler wie cron. In einer Ausführungsform können die IP-Adressen dynamisch solchen zusätzlichen Kopien zugewiesen werden, wobei die neuen Domain/Computer/Server-Namen den vorherigen Namen verwenden und einen Schrittzähler addieren können (z.B. aus PREVIOUS_NAME würde PREVIOUS_NAME_02, PREVIOUS_NAME_03, usw. entstehen). In einer anderen Ausführungsform umfasst die synthetische Implementierungsumgebung Anwendungen, welche einen Lastenausgleich vorliegender Systeme erlauben, indem sie eine Anzahl synthetischer Umgebungen implementieren, wodurch zusätzliche Kapazitäten geschaffen werden. Zum Beispiel können reelle Daten und/oder modifizierte reelle Daten zum Lastenausgleich zwischen mehreren synthetischen Umgebungen verwendet werden, indem ein Round-Robin-Ablaufsteuerungsalgorithmus verwendet wird. In einer solchen Ausführungsform kann jede der anschliessenden duplizierten synthetischen Umgebungen mit neuen Identifikatoren geografisch ein Teil des Round-Robin-Pools werden, oder basierend auf die Round-Robin Zeitzuweisung (z.B. jede synthetische Umgebung, welche einen Teil der Arbeitslast für eine gegebene Zeitspanne bearbeitet). In noch einer weiteren Ausführungsform umfasst die synthetische Implementierungsumgebung Anwendungen, welche Grid-Computing erlauben, indem sie eine Anzahl parallel arbeitender synthetischer Umgebungen, implementieren. Zum Beispiel können reelle Daten und/oder modifizierte reelle Daten im Grid-Computing, unter Verwendung von verteilten Rechentechnologien, wie z.B. Mac OS Xgrid (z.B. im Falle, dass die duplizierten umbenannten synthetischen Umgebungen als individuelle Prozessknoten im Netz (grid) agieren), verwendet werden.
[0034] Eine virtuelle Entwicklungs- und/oder Testumgebung kann als Antwort auf die Anfrage zur Erzeugung einer neuen virtuellen Entwicklungs- und/oder Testumgebung erzeugt werden 115. In einer Ausführungsform kann die virtuelle Entwicklungs- und/oder Testumgebung beständig (ENV) sein und zwischen mehreren Projekten geteilt werden. In einer anderen Ausführungsform kann die Entwicklungs- und/oder Testumgebung auf Anfrage (TED) erzeugt und von einem einzigen Projekt verwendet werden. In noch einer weiteren Ausführungsform kann die Entwicklungs- und/oder Testumgebung eine Datenbank verwenden, welche synthetisierte Datensätze («Synbase» im Folgenden) umfasst. In einer anderen Implementierung kann die Entwicklungs- und/oder Testumgebung eine aus einer Vielzahl von Synbase-Versionen wählen, um sie zum Testen zu verwenden. In einer Ausführungsform kann die Entwicklungs- und/oder Testumgebung physikalisch und/oder logisch von einer Produktionsumgebung getrennt werden. Fig. 6C zeigt ein Blockdiagramm, welches eine dedizierte Verwendung von Hardware in einer DvSZ in einer Ausführungsform des SYNONYM darstellt. In Fig. 6C ist keine Hardware-Teilung zwischen der DvSZ 620 und dem Firmen-Intranet 621 erlaubt. Eine Ausnahme ist die Mainframe, und die Mainframe ist stattdessen logisch in RZ1622 und RZ8/9623 zwischen dem Firmen-Intranet bzw. der DvSZ geteilt.
[0035] In einer Implementierung können unterschiedliche Sicherheitszertifikate (z.B. Sicherheitszertifikate, welche auf einer Infrastruktur für öffentliche Schlüssel basieren) an Ressourcen in der virtuellen Entwicklungs- und/oder Testumgebung und in der Produktionsumgebung ausgegeben werden. Als Beispiel für eine SYNONYM-Ausführungsform zeigt Fig. 6E ein Blockdiagramm, welches die Verwendung der Infrastruktur für öffentliche Schlüssel (PKI) darstellt. In Fig. 6E gibt die PKI 640 im Firmen-Intranet 641 Sicherheitszertifikate an Computern des Firmen-Intranets 641 und der DvSZ 642 aus. Die PKI 640 gibt unterschiedliche Sicherheitszertifikate an Ressourcen des Firmen-Intranets 641 und an Ressourcen der DvSZ 642 aus. Eine Kommunikation zwischen einem Client und einem Server kann nur erfolgreich sein, wenn beide Ressourcen entweder Test-Sicherheitszertifikate oder Produktionssicherheitszertifikate haben. Solche Ressourcen können z.B. Java Anwendungsplattform-Server, COBRA-Adapter, Datenbankserver und/oder dergleichen umfassen. In einer Implementierung kann eine Entwicklungs- und Test-Server-Zone derart erzeugt werden, dass sie die Entwicklungs- und/oder Testumgebung enthält. Zum Beispiel kann ein dediziertes Netzwerk, welches vom Rest eines Intranets einer Organisation getrennt und in seiner Fähigkeit, auf das Intranet der Organisation zuzugreifen, beschränkt ist, welches Komponenten wie Firewall, VPN Gateway, Sicherheitszertifikate und/oder dergleichen verwendet, unter Verwendung von dedizierten Routern eingerichtet werden. Der Zugriff auf die DvSZ kann auf Benutzern mit hoher Authentifizierung beschränkt sein, und keine sensiblen Informationen können in der DvSZ zugänglich sein. Weiter kann die DvSZ als eine «Schwarzes Loch»-Netzwerkzone implementiert sein. Als solche wird jeder Informationsaustausch zwischen der DvSZ und äusseren Datenquellen nur erlaubt, wenn er von ausserhalb der DvSZ initiiert wird. Fig. 6F zeigt ein Blockdiagramm, welches den Transfer sensibler Informationen in die DvSZ in einer Ausführungsform des SYNONYM darstellt. Fig. 6F zeigt, dass keine automatische Synchronisation 650 von Informationen zwischen Ablagen 651 im Firmen-Intranet 652 und Ablagen 653 in der DvSZ 654 existiert. Nur sensible Informationen, welche durch eine Qualitätsschleuse 655A-B freigegeben wurden, können in die DvSZ übertragen werden. Der Verbindungsaufbau vom Inneren der DvSZ 654 zu einer äusseren Ressource ist blockiert. Informationen, welche zur Verwendung in der DvSZ freigegeben sind, können nur für diejenigen Benutzer der DvSZ zugänglich sein, die zur Verwendung der Informationen befugt sind. Fig. 6G zeigt ein Blockdiagramm, welches eine Netzwerkstruktur der DvSZ in einer Ausführungsform des SYNONYM darstellt. Fig. 6G zeigt, wie das Netzwerk aufgebaut wird 660A–C und die für den Aufbau verwendete Hardware 661A–D. Weitere Details hinsichtlich der Erzeugung einer virtuellen Entwicklungs- und/oder Testumgebung werden später in der Beschreibung bereitgestellt. Benutzerkonten, die zur Verwendung einer virtuellen Entwicklungs- und/oder Testumgebung berechtigt sind, können instantiiert werden 120. In einer Ausführungsform können eine Vielzahl von Benutzerkontotypen, mit einer Anzahl von Rechten und Authentifizierungsanforderungen, instantiiert werden. Weitere Details hinsichtlich der Instantiierung von Benutzerkonten werden später in der Beschreibung bereitgestellt.
[0036] Autorisierte Benutzer können die notwendige Entwicklung und Tests 125 durch Verwendung einer virtuellen Entwicklungs- und/oder Testumgebung und/oder einer zugeordneten Synbase durchführen. In einer Ausführungsform kann ein solches Testen Modultests, Merkmaltests, Anwendungstests und/oder dergleichen umfassen. In einer Ausführungsform kann das Testen von dedizierten menschlichen Testern, welche Testergebnisse mit vorgegebenen Leistungsparametern vergleichen, durchgeführt werden. In einer anderen Implementierung kann das Testen mit Hilfe von automatischen Testroutinen, welche Testergebnisse mit vordefinierten Werten oder getesteten Durchschnittswerten vergleichen. Das Ergebnis einer «Überprüfe Kontostand»-Operation, welche für ein neulich eröffnetes Konto angewendet wird, kann z.B. mit einem vorgegebenen Wert von 0$ verglichen werden, um sicherzustellen, dass sich die Operation für diesen Testfall korrekt verhält. Als anderes Beispiel können die Zeit, um «Überprüfe Kontostand»-Operationen auszuführen, und der Durchschnitt der Ausführungszeit im Vergleich mit der Zeit zur Ausführung der aktuellen «Überprüfe Kontostand»-Operation, verfolgt werden, um die Ausführungsgeschwindigkeit zu testen. In einer anderen Ausführungsform können Zufallswerte in ein Eingabefeld eingefügt werden, um festzustellen, ob eine Programmkomponente Fehler richtig behandelt, indem die Programmantworten bei solchen Eingangswerten protokolliert/verfolgt werden. In einer anderen Ausführungsform kann Anwendungsquellcode im Hinblick auf Hartkodierung von sensiblen Daten überprüft werden. In einer Implementierung kann ein legaler Parser verwendet werden, um potentiell sensible Daten in einer Quellcode-Datei, geschrieben in einer Programmiersprache wie PL/I, Java und/oder dergleichen, welche eventuell aufgestellte Datenschutz- oder Geheimhaltungsvorschriften verletzen, zu identifizieren. Zum Beispiel kann eine für die Spezifikation von Datenschutzvorschriften verantwortliche Abteilung, wie eine Rechts- und Complianceabteilung, eine Liste potentiell sensibler Datentypen (z.B. Namen, CIF-Nummern, Kontonummern und/oder dergleichen) spezifizieren. Der legale Parser kann dann dazu verwendet werden, Quellcode-Dateien eines Projekts auf potentielle Übereinstimmungen zu durchsuchen und eine Meldung für jede solche Übereinstimmung bereitzustellen. Zum Beispiel können Quellcode und Kommentare unter Verwendung von Standard-Analyse-Techniken gescannt werden, wie z.B. durch Verwendung des m// Operators in Perl, z.B. m/$LegalParser/ für Einträge einer 12-stelligen Nummer, welche mit der Länge einer CIF-Nummer übereinstimmt. In einer solchen Ausführungsform kann eine Datenstruktur des legalen Parsers (z.B. eine Datei, memory struct, usw.) eine Liste von markierten Begriffen, Zahlen, usw., welche für die Überprüfung unautorisierter Verwendung dieser benutzt wird, enthalten. Eine Vielzahl von Verfahren kann zum Informationsaustausch zwischen Team-Mitgliedern während des Testens verwendet werden. In einer Implementierung können E-Mail, Sofort-Kommunikation (Instant Messaging), http Nachrichten und/oder ähnliche Protokolle zum Informationsaustausch verwendet werden. Zum Beispiel können sich Team-Mitglieder mit Hilfe von E-Mail-Software wie Microsoft Outlook, Lotus Notes und/oder dergleichen gegenseitig E-Mails schicken, um Fragen zu stellen und um Antworten zu bekommen. In einer anderen Implementierung können Technologien wie Microsoft SharePoint, welche Dokumentenverwaltung, Diskussionsforen, Umfragen und E-Mail-basierte Nachrichten bereitstellen, zum Informationsaustausch verwendet werden. In einer Ausführungsform kann die synthetische Implementierungsumgebung zur Simulation einer virtuellen Bank verwendet werden. In einer anderen Ausführungsform kann die synthetische Implementierungsumgebung dazu verwendet werden, synthetische Implementierungsumgebungen in Bereichen wie Spiele, Simulation, Bildung, Medizin, Qualitätskontrolle und/oder dergleichen zu generieren.
[0037] Eine virtuelle Entwicklungs- und/oder Testumgebung kann auf Anfrage ausser Betrieb gesetzt werden 130. Zum Beispiel kann eine virtuelle Entwicklungs- und/oder Testumgebung nach der Beendigung von Tests, welche für eine bestimmte Anwendungskomponente, Projektphase, Projekt und/oder dergleichen notwendig waren, ausser Betrieb gesetzt werden. In einer Implementierung kann eine solche Ausserbetriebnahme sicheres Löschen, einschliesslich mehrerer Datenlöschvorgänge, von mit der virtuellen Entwicklungs- und/oder Testumgebung verknüpften Benutzerkonten und Synbase umfassen. In einer anderen Ausführungsform kann die Ausserbetriebnahme eine Archivierung der Umgebung bei einer Eigentümerfirma und ein sicheres Löschen der Umgebung an dem Sitz eines Auslagerungslieferanten verwendet werden.
[0038] Fig. 1B zeigt ein Datenflussdiagramm, welches die Transformation reeller Daten in synthetischen Daten in einer Ausführungsform des SYNONYM darstellt. Um realistische Daten für die virtuelle Entwicklungs- und/oder Testumgebung bereitzustellen, können in einer Implementierung reelle Daten 150 als Basis für synthetisierte Daten verwendet werden. In einer Implementierung können die reellen Daten Felder wie Kundenname, Kundenadresse, Aktennummer der Kundeninformation (CIF) und/oder dergleichen umfassen. In einer Implementierung werden reelle Daten in anonymisierte Daten 160 konvertiert. In einer Implementierung kann die Anonymisierung den Austausch des Kundennamens- und Kundenadressfelder mit anonymisierten Versionen dieser Felder, welche gemäss vordefinierten Vorschriften erzeugt wurden, umfassen. Weitere Details hinsichtlich der Erzeugung anonymisierter Daten werden später in der Beschreibung aufgeführt. In einer Implementierung werden anonymisierte Daten in synthetische Daten 170 konvertiert. In einer Implementierung kann eine Teilmenge anonymisierter Daten 165, welche repräsentativ für jeden für das Testen benötigten Kundentyp, für die Synthetisierung ausgewählt werden. In einer Ausführungsform weist die Reduzierung der Datensätze eine erhöhte Ansprechbarkeit auf, um einen bestimmten Datentyp effektiver zu testen. Es können z.B. etliche Kontotypen existieren, wobei SYNONYM nur einen oder eine Selektion einiger weniger Kontotypen zum Testen verwenden kann (z.B. können Premiumkonten eine grössere Anzahl und Vielfalt von Kontotypen enthalten und können als solche als bessere Datensätze für Stresstests eines Systems dienen). In einer anderen Ausführungsform bewirkt die Teilmenge eine Reduzierung der Menge synthetisierter Daten, um schnellere Testzyklen zu erlauben. Die selektierten Daten können in synthetisierten Daten dadurch konvertiert werden, dass eine neue CIF für jeden selektierten Kunden erzeugt wird und die CIF-Nummer des jeden Kunden derart aktualisiert wird, dass sie auf die neu erzeugte synthetische CIF zeigt. Weitere Details betreffend die Erzeugung synthetisierter Daten werden später in der Beschreibung dargelegt.
[0039] Fig. 2A zeigt ein logisches Flussdiagramm, welches die Erzeugung anonymisierter Daten in einer Ausführungsform des SYNONYM darstellt. In Fig. 2A wird eine Anfrage zur Anonymisierung von Datensätzen empfangen 205. In einer Ausführungsform kann die Anfrage eine Liste von Datenbanken 251, Datenbanktabellen 252, und Datenfelder 253, welche anonymisiert werden müssen, enthalten. Die Liste von Datenbanken, Datenbanktabellen und Datenfelder kann auf die Eingaben eines Benutzers, welcher eine neue Testumgebung angefordert hat, basieren. In einer Implementierung kann die Liste in XML-Format sein, und die Anfrage kann die folgende Form erhalten:
[0040]
[0041] In einer Ausführungsform kann das obige XML das Ergebnis von Benutzerselektionen von Einblendmenueinträgen in einer Web-basierten Benutzerschnittstelle sein. Fig. 2C zeigt ein Diagramm einer Bildschirmkopie, welches eine Web-basierte Benutzerschnittstelle in einer Ausführungsform des SYNONYM darstellt. In einer anderen Implementierung kann die Liste in einer Datenbanktabelle gespeichert werden, wobei SYNONYM über einen SQL-SELECT-Befehl darauf zugreift. In noch einer anderen Ausführungsform kann die Liste in einer Konfigurationsdatei gespeichert werden, wobei SYNONYM über I/O-Aufrufe, welche ein Lesen aus einer Datei erlauben, darauf zugreift. Basierend auf die Liste werden die zu anonymisierenden Datenbanktabellen selektiert 207, und Datensätze werden zur Verarbeitung entnommen 209. In einer Implementierung kann eine solche Selektion über einen oder mehrere SQL-SELECT-Befehle (z.B. SELECT CIF, Name FROM Customer_Info) erreicht werden, und die Entnahme kann dadurch erfolgen, dass die selektieren Datensätze in eine Datendatei abgelegt werden. Anonymisierungsvorschriften und Referenztabellen können bei 213 geladen werden. Anonymisierungsvorschriften geben an, wie anonymisierte Austauschwerte für ein bestimmtes Feld generiert werden können. Fig. 2B ist eine Tabelle, welche Anonymisierungsvorschriften in einer Ausführungsform des SYNONYM darstellt. Referenztabellen enthalten Daten, die als Austauschwerte gemäss Anonymisierungsvorschriften verwendet werden können. Zum Beispiel kann in einer Implementierung eine Referenztabelle eine Liste von 676 männlichen und weiblichen Namen enthalten, zusammen mit einer Liste von Regionen, in denen jeder Name gebräuchlich ist. In einer Ausführungsform wird eine Tabelle mit erfundenen Namen besetzt; in einer Ausführungsform kann ein Namensgenerator (z.B. www.fakenamegenerator.com) zur Generierung und/oder Besetzung einer Datenbanktabelle mit erfundenen Namen verwendet werden.
[0042] In einer Ausführungsform kann ein Datensatz, welcher reelle Daten enthält, aus einer Datendatei zur Anonymisierung selektiert werden 215. Zum Beispiel können I/O-Aufrufe, welche das Lesen aus einer Datendatei erlauben, verwendet werden. Der Datensatz kann mit Hilfe eines Analysealgorithmus analysiert werden, um das nächste vorhandene Feld 217 zu selektieren. In einer Implementierung kann eine Standard-XML-Formatierung verwendet werden, um die Analyse zu ermöglichen. Es wird ermittelt, ob das aktuell selektierte Feld einer Anonymisierung 219 basierend auf die Anonymisierungsvorschriften bedarf. Zum Beispiel kann der Name des Feldes mit der Liste von Feldnamen in den Anonymisierungsvorschriften verglichen werden. Wenn der Feldname keinem der in den Anonymisierungsvorschriften spezifizierten Feldnamen entspricht, wird der aktuelle Feldwert beibehalten 221. Anderenfalls wird eine geeignete Vorschrift für das Feld aus den Anonymisierungsvorschriften ausgesucht 223. In einer Implementierung können die Anonymisierungsvorschriften geladen werden, wobei der Vergleich mittels einer Programmiersprache wie PL/I, Perl und/oder dergleichen durchgeführt wird. In einer Implementierung kann ein Beispiel der PL/I-Vorschriften die folgende Form haben:
[0043]
[0044] Basierend auf die Anonymisierungsvorschrift wird ein anonymisierter Wert für das Feld 225 generiert. In einer Ausführungsform kann der anonymisierte Wert derart generiert werden, dass ein zufälliger Wert aus einer Liste mit verwendbaren Werten aus einer in der Anonymisierungsvorschrift spezifizierten Referenztabelle, selektiert wird, z.B. aus einer erfundenen Namenstabelle. In einer anderen Ausführungsform kann der anonymisierte Wert basierend auf in den Anonymisierungsvorschriften spezifizierte Instruktionen zufällig generiert werden. Der generierte anonymisierte Wert ersetzt den originalen Feldwert 227. Wenn mehrere Felder im aktuell selektierten Datensatz vorhanden sind, kann das nächste Feld für die Anonymisierung 229 selektiert werden, anderenfalls kann der nächste vorhandene Datensatz für die Anonymisierung 231 selektiert werden. Sobald alle Datensätze anonymisiert sind, können die anonymisierten in eine oder mehreren Datendateien 233 durch Verwendung von I/O-Aufrufen, welche ein Schreiben in eine Datendatei erlauben, ausgegeben werden. In einer Implementierung werden die Daten in eine neue Datendatei geschrieben. In einer anderen Implementierung wird die existierende Datendatei mit neuen anonymisierten Daten überschrieben. Die anonymisierten Daten werden übertragen 235, um allen Teilen von SYNONYM Zugang zu den anonymisierten Daten zu erlauben. Zum Beispiel können die anonymisierten Daten in Dateien und/oder Datenbanken in Speicherabschnitten kopiert werden, welche so konzipiert sind, dass sie mit unterschiedlichen Betriebssystemen wie Microsoft Windows XP, Unix, Apple Macintosh OS und/oder dergleichen arbeiten.
[0045] Fig. 3 zeigt ein logisches Flussdiagramm, welches die Erzeugung synthetisierter Daten in einer Ausführungsform des SYNONYM darstellt. In Fig. 3 wird eine Anfrage zur Erzeugung synthetisierter Daten empfangen 310. In einer Ausführungsform kann die Anfrage eine Liste von Datenbanken, welche bei der Synthetisierung verwendet werden sollen, enthalten. Die Liste der Datenbanken kann auf die Eingabe eines Benutzers, der eine neue Testumgebung angefordert hat, basieren. In einer Ausführungsform kann die Liste im XML-Format vorliegen, und die Anfrage kann die folgende Form annehmen:
[0046]
[0047] In einer anderen Implementierung kann die Liste in einer Datenbanktabelle gespeichert werden, wobei SYNONYM über SQL-Befehle darauf zugreifen kann. Zum Beispiel kann eine Web-Schnittstelle, welche einem Benutzer erlaubt, Datenbanken zu selektieren (z.B. über Kontrollkästchen), welche bei der Synthetisierung verwendet werden sollen, benutzt werden. Das obige XML kann zum SYNONYM geschickt werden, welches sich mit den spezifizierten Datenbanken mittels Datenbankadaptern verbindet, wie z.B. indem es durch die Open Database Connectivity (ODBC) API-Protokoll verfügbare Adapter, durch die WebObjects Enterprise Objects Framework (EOF) verfügbare Adapter und/oder dergleichen verwendet. In noch einer anderen Ausführungsform kann die Liste in einer Konfigurationsdatei gespeichert werden und vom SYNONYM unter Verwendung von I/O-Aufrufen, welche das Lesen aus einer Datei erlauben, abgegriffen werden. Basierend auf die Liste werden anonymisierte Daten zur Synthetisierung eingegeben 315. In einer Implementierung werden die anonymisierten Daten durch Bereitstellung eines Namens einer oder mehrerer Dateien, welche die anonymisierten Daten enthalten, eingegeben. In einer anderen Implementierung werden die anonymisierten Daten durch Bereitstellung des Namens einer oder mehrerer SQL-Datenbanken und/oder Tabellen, welche die anonymisierten Daten enthalten, und/oder durch ein SQL SELECT von spezifizierten Tabellen eingegeben. In noch einer Implementierung werden die anonymisierten aus einer oder mehreren SQL-Datenbanken in eine oder mehreren Dateien exportiert, und die Namen dieser Dateien werden eingegeben. In einer Ausführungsform werden auch andere Daten, die den anonymisierten Daten zugeordnet sind, eingegeben.
[0048] Die Anfrage zur Erzeugung synthetisierter Daten kann auch spezifizieren, dass eine Teilmenge der für jeden Kundentyp repräsentativen Daten, die zum Testen angefordert sind, für die Synthetisierung ausgewählt werden sollen, um die Menge der synthetisierten Daten zu reduzieren. In einer Ausführungsform kann die Teilmenge der Daten, die selektiert werden soll, als Geschäftskonstellationen spezifiziert werden, und die Geschäftskonstellationen können als Äquivalenzklassen spezifiziert werden. In einer Implementierung kann eine Äquivalenzklasse: Titel, Geschäftsbereich, Zweigstelle, Staatsbürgerschaft, Domizil, Sprache, Kundentyp, Kundensegment, usw. umfassen, und eine Geschäftskonstellation kann eine eindeutige Kombination von Werten einer oder mehrerer Äquivalenzklassen umfassen. Zum Beispiel kann eine Geschäftskonstellation als einen männlichen Geschäftskunden aus den USA spezifiziert werden. Diese Geschäftskonstellation kann in XML-Format wie folgt als Teil der Anfrage übertragen werden:
[0049]
[0050] Die Daten können basierend auf spezifizierte Geschäftskonstellationen 320 abgefragt werden. In einer Ausführungsform können programmierte Befehle, welche in jede Programmiersprache wie C++, Perl, SQL und/oder dergleichen geschrieben wurden, ausgegeben werden, um Datenwerte mit in einer Geschäftskonstellation spezifizierten Werten verglichen werden. In einer anderen Ausführungsform kann ein SQL SELECT für einen Kundentyp eine Teilmenge von mehreren Testergebnissen, welche verwendet werden können, bereitstellen. Eine Teilmenge von Daten, welche aussagekräftig für alle spezifizierten Geschäftskonstellationen sind, können dann basierend auf Vergleiche erlangt werden 330. In einer Implementierung wird der erste gefundene Datensatz, der allen Äquivalenzklassen einer gegebenen Geschäftskonstellation genügt, ausgewählt, um die gegebene Geschäftskonstellation zu repräsentieren. Jede Geschäftskonstellation kann auch durch mehrere Datensätze bis zu einer vorgegebenen maximalen Zahl repräsentiert werden.
[0051] Synthetisierte Daten basieren auf die Teilmenge der für alle spezifizierten Geschäftskonstellationen repräsentativen Daten. In einer Ausführungsform können neue Kundeninformationsdateien mit neuen CIF-Nummern für jeden Kunden in der Teilmenge von Daten erzeugt werden, und die CIF-Nummern in den anonymisierten Daten oder in anderen, den anonymisierten Daten zugeordneten Daten können mit neuen synthetischen CIF-Nummern 335 ausgetauscht werden. Zum Beispiel können neue CIF-Nummern zufällig und/oder seriell derart generiert werden, dass sie eindeutig sind und dasselbe Format wie echte CIF-Nummern haben. In einer Implementierung können die zum Generieren synthetisierter CIF-Nummern verwendeten Zahlenbereiche in der Produktionsumgebung verboten werden. Nachdem dies vollzogen ist, ist es nicht länger möglich, aus den neuen CIF-Nummern irgendwelche echten Kundenidentifikations-Informationen zu bestimmen oder die neuen synthetisierten CIF-Daten auf einen echten Kunden zurückzuführen. In einer Implementierung werden die resultierenden synthetisierten Daten in eine oder in mehreren Datendateien mittels I/O-Aufrufe, die ein Schreiben in eine Datendatei erlauben, ausgegeben.
[0052] Eine synthetische Datenbank kann derart erzeugt werden 345, dass sie die neuen synthetisierten Daten enthält. In einer Ausführungsform wird eine neue Synbase erzeugt, indem jede Anzahl von Datenbankplattformen wie Microsoft SQL Server, MySQL und/oder dergleichen verwendet werden. Zum Beispiel kann sie mit dem folgenden mySQL SQL-Befehl erzeugt werden:
create database Dbname;
[0053] In einer anderen Ausführungsform können Inhalte einer existierenden Datenbank gelöscht werden (z.B. durch Verwendung von SQL DELETE FROM synbase_table_name [WHERE constraint]) und/oder mit synthetisierten Daten überschrieben werden (z.B. durch Verwendung von SQL UPDATE synbase_table_name SET field_value=’SomeNewValue’[WHERE constraint])
[0054] In einer alternativen Ausführungsform können andere Daten, welche den synthetisierten Daten zugeordnet sind, auf ähnliche Weise synthetisiert werden, bevor eine synthetische Datenbank in 345 erzeugt wird. In einer Implementierung können neue Konten/Depots mit neuen Konten-/Depotnummern für Konten/Depots, welche den synthetisierten CIF-Daten zugeordnet sind, erzeugt werden, und die Konto-/Depotnummern werden mit neuen Konto-/Depotnummern 340 ausgetauscht. Zum Beispiel können neue Konto-/Depotnummern nach dem Zufallsprinzip derart generiert werden, dass sie eindeutig sind und dasselbe Format wie echte Konto-/Depotnummern aufweisen. In einer Implementierung können die Zahlenbereiche, die zur Generierung von synthetisierten Konto-/Depotnummern verwendet werden, in der Produktionsumgebung verboten werden.
[0055] Die synthetisierten Daten werden in einer Synbase 350 abgelegt. In einer Implementierung können die in einer oder in mehreren Datendateien synthetisierten Daten mittels I/O-Aufrufen, welche das Lesen aus einer Datendatei erlauben, ausgelesen, analysiert, wie z.B. durch Verwendung des m//-Operators in Perl (z.B. m/l . * | / zur Extrahierung eines mit «|» eingeschlossenen Feldwertes) und in eine Synbase durch Verwendung von SQL-Befehlen abgelegt. Es wird eine Feststellung durchgeführt, ob die virtuelle Entwicklungs- und/oder Testumgebung zusätzlich zu den synthetisierten Daten 355 Transaktionsdaten aufweisen sollte. In einer Ausführungsform kann eine solche Feststellung durch eine Überprüfung der Anfrage zur Synthetisierung von Daten auf ein Vorliegen weiterer Informationen, welche Ende-des-Tages Arbeitsabläufe (EODs) spezifizieren, welche zur Erzeugung von Transaktionsdaten ausgeführt werden sollten. Zum Beispiel können in einer Implementierung diese Informationen in XML-Format als Teil der Anfrage abgegeben werden, wie folgt:
[0056]
[0057] In einer Ausführungsform können die EODs die Auswahlkriterien für Transaktionen, welche für die virtuelle Entwicklungs- und/oder Testumgebung erzeugt werden sollen, angeben 360. Zum Beispiel kann in einer Implementierung ein EOD die Erzeugung eines spezifischen Typs von Transaktionsdaten anstossen (z.B. EOD MakePayments kann Transaktionsdaten, welche von Kunden getätigte Zahlungen simulieren, erzeugen, während EOD CancelPayments Transaktionsdaten erzeugen, welche von Kunden stornierte Zahlungen simulieren). Daher wird durch die Spezifizierung, dass ein gegebener EOD ausgeführt werden soll, um Transaktionsdaten zu erzeugen, auch die Art der Transaktionsdaten, die erzeugt werden sollen, festgelegt. Durch die Verwendung von EODs wird eine Synbase-Version erzeugt 365, welche Transaktionsdaten umfasst. In einer Ausführungsform können Transaktionsdaten, wie z.B. Geldüberweisungen zwischen zwei Kunden, derart mit einem EOD simuliert werden, dass eine vorgegebene Anzahl von zufälligen Geldüberweisungstransaktionen erzeugt wird (z.B. in Perl Auswahl zweier zufälligen Konten, Auswahl einer Zahl in einem vorgegebenen Bereich, welche eine zu überweisende Geldsumme darstellt, und die Überweisung dieser Geldsumme vom ersten zum zweiten Konto), und dass Datensätze, welche diese Überweisungen repräsentieren, unter Verwendung von I/O-Aufrufen ausgegeben werden. In einer Implementierung werden die Transaktionsdatensätze zusammen mit Synbase-Daten in eine neue Synbase kopiert (z.B. durch Verwendung von Adaptern, die durch den Open Database Connectivity (ODBC) API-Standard, von Adaptern, die durch die WebObjects Enterprise Objects Framework (EOF) und/oder dergleichen bereitgestellt werden), welche eine neue Synbase-Version umfasst. In einer anderen Implementierung werden nur die Transaktionsdatensätze in eine separate Datenbank oder in eine separate Datenbanktabelle kopiert, wobei, zusammen mit den synthetisierten Daten, die zwei Teile eine neue Synbase-Version umfassen.
[0058] Fig. 4 zeigt ein logisches Flussdiagramm, welches die Erzeugung einer virtuellen Entwicklungs- und/oder Testumgebung in einer Ausführungsform dies SYNONYM darstellt. In Fig. 4 wird eine Anfrage zur Erzeugung einer virtuellen Entwicklungs- und/oder Testumgebung empfangen 440. In einer Ausführungsform kann diese Anfrage, wie oben beschrieben, auf die Eingaben eines Benutzers basiert sein, der eine neue Testumgebung angefordert hat, und sie kann verschiedene vom Benutzer gewünschte Umgebungen, Anwendungen und Datenbanken angeben. In einer Implementierung hat die Anfrage die folgende Form:
[0059]
[0060] Die angeforderte Laufzeit-, Middleware-, Datenbankumgebung und/oder dergleichen werden bei 442 installiert. In einer Implementierung kann eine solche Software ein Betriebssystem umfassen, wie z.B. Microsoft Windows XP, Unix, Apple Macintosh OS und/oder dergleichen; Laufzeitumgebungen wie Java Runtime Environment, GTK+ und/oder dergleichen; Middleware-Umgebungen wie CORBA, DCOM, RPC und/oder dergleichen; und Datenbankumgebungen wie Microsoft SQL Server, MySQL und/oder dergleichen. Die angeforderten projektspezifischen Anwendungen, Infrastruktur und Testprogramme werden bei 444 installiert. In einer Implementierung kann eine solche Software Anwendungen wie z.B. einen Web-Server für web-basierte Projekte umfassen; Infrastruktur wie Concurrent Versioning System (CVS); und Testprogramme wie SilkTest. Die angeforderte Synbase-Version wird selektiert 446 und in eine oder in mehreren Datenbanken, welche von der virtuellen Entwicklungs- und/oder Testumgebung verwendet werden, kopiert 448. In einer Ausführungsform können mehrere Synbase-Versionen in einer virtuellen «Master» Entwicklungs- und/oder Testumgebung vorhanden sein. Sobald eine Anfrage zur Erzeugung einer neuen virtuellen Entwicklungs- und/oder Testumgebung empfangen wird, kann die angeforderte Synbase-Version von der virtuellen «Master» Entwicklungs- und/oder Testumgebung in die neue virtuelle Entwicklungs- und/oder Testumgebung kopiert werden. In einer Implementierung kann eine Synbase-Version ohne Transaktionsdaten von der virtuellen «Master» Entwicklungs- und/oder Testumgebung in die neue virtuelle Entwicklungs- und/oder Testumgebung als Teil der FIT-Abbildung kopiert werden. Zum Beispiel kann ein solches Kopieren mittels einer schnellen Kopieranwendung wie IBM FlashCopy durchgeführt werden. Fig. 6A zeigt ein Blockdiagramm, welches das Kopieren einer synthetischen Datenbank von einer virtuellen «Master» Entwicklungs- und/oder Testumgebung 601 in eine neue virtuelle Entwicklungs- und/oder Testumgebung in einer Ausführungsform des SYNONYM darstellt. In Fig. 6A wird Synbase-Version 1 mit Hilfe von FlashCopy von der virtuellen «Master» Entwicklungs- und/oder Testumgebung 601 in eine beständige Env1 virtuelle Entwicklungs- und/oder Testumgebung 602 kopiert, und in 450 beschriebene anwendungsspezifische Daten werden zum Datenspeicher hinzugefügt. Synbase-Version 3 wird mit Hilfe von FlashCopy von der virtuellen «Master» Entwicklungs- und/oder Testumgebung 601 in eine neue TED 1 virtuelle Entwicklungs- und/oder Testumgebung 603 kopiert und in 450 beschriebene anwendungsspezifische Daten werden zum Datenspeicher hinzugefügt.
[0061] In einer Ausführungsform können anwendungsspezifische Daten zu dem von der virtuellen Entwicklungs- und/oder Testumgebung verwendeten Datenspeicher hinzugefügt werden 450. In einer Implementierung können Wiki-Seiten, welche projektspezifische Informationen enthalten, ihre Daten in eine oder in mehreren Datenbanken speichern. In einer anderen Implementierung wird Quellcode in Programmiersprachen wie Java, PL/I und/oder dergleichen durch CVS hinzugefügt.
[0062] Fig. 5 zeigt ein logisches Flussdiagramm, welches eine Instantiierung von Benutzerkonten in einer Ausführungsform des SYNONYM darstellt. In Fig. 5 wird eine Anfrage zur Instantiierung von Benutzern empfangen 540. In einer Ausführungsform kann diese Anfrage auf die Eingaben eines Benutzers, der wie oben beschrieben eine neue Testumgebung angefordert hat, basieren, und es kann ein Set von Benutzern und jedem Benutzer zugeordnete Kontotypen spezifiziert werden. In einer Implementierung können Kontotypen normale Benutzer, Offshore-Benutzer und/oder dergleichen darstellen. Jeder Kontotyp kann verschiedene ihm zugeordnete Authentifizierungs- und Autorisierungseinstellungen aufweisen. Das spezifizierte Set von Benutzern erhält Zugangsrechte zur virtuellen Entwicklungs- und/oder Testumgebung 542, wobei Sicherheitszertifikate 544 zur Verwendung für eine Authentifizierung und/oder eine Autorisierung ausgegeben werden. In einer Implementierung können solche Sicherheitszertifikate auf Public Key Infrastructure basieren und von einer Zertifikatbehörde ausgegeben werden. In einer anderen Implementierung können solche Zertifikate auf SmartCards gespeichert werden. In einer Ausführungsform kann der Zugang zu Ressourcen auf Benutzer beschränkt sein, die diese Ressourcen für ihre Arbeit brauchen. Folglich können Benutzer mit demselben Kontotyp Zugang zu unterschiedlichen Ressourcen haben. In einer Implementierung können Zugangsrechte zu verschiedenen, gut definierten Zeitpunkten (z.B. zum Projektabschluss) oder nach einer vorgegebenen Zeitspanne (z.B. von 6 Monaten) entzogen werden.
[0063] Eine First-Installation-Tool(FIT)-Abbildung ist eine Sammlung von Software, welche dazu verwendet werden kann, für jeden Computer in einer Organisation dasselbe Basisset von Software bereitzustellen. In einer Ausführungsform kann eine FIT-Abbildung ein Betriebssystem wie Windows XP; einen Web-Browser wie Microsoft Internet Explorer; einen Antivirus wie McAfee Antivirus; VPN Software wie Checkpoint VPN Connectivity and Integrity Client; Zugangssoftware wie IBM Personal Communications; und ein Set von Büroproduktivitätssoftware wie Microsoft Word, Microsoft Excel, Microsoft PowerPoint und Microsoft Outlook enthalten. In einer Implementierung können Entwicklungsprogramme, die für Entwicklungs- und Testprojekte benötigt werden, als vorgepackte Bündel von FIT (z.B. TIPD, SSH Clients, 3270 Terminalemulation, Rational Software, Eclipse, Clear Case, Clear Quest und/oder dergleichen) vorhanden sein. In einer Implementierung kann die in einer FIT-Abbildung enthaltene Software in Abhängigkeit von vordefinierten Profilen unterschiedlich sein. Zum Beispiel können solche Profile ein Profil für einen Server, einen Desktop-Computer, ein Profil für einen Notebook-Computer, ein Profil für ein mobiles Gerät und/oder dergleichen enthalten. In einer Implementierung können die Profile wie unten spezifiziert werden:
[0064]
[0065] Zusätzliche Software kann auf Wunsch auch auf einem Computer mit einer FIT-Abbildung installiert werden. Solche zusätzliche Software kann Programme wie Microsoft Visio, Microsoft Project, Eclipse und/oder dergleichen umfassen. Es kann bei 546 festgestellt werden, welche Benutzer im spezifizierten Set von Benutzern normale Benutzer und welche Offshore-Benutzer sind. In einer Ausführungsform können lokale Benutzer eine FIT-Abbildung zusammen mit jeder zusätzlichen Software mittels eines Ferninstallationsprogramm wie Windows Deployment Services auf ihrem Computer 560 installiert haben, und sie können Zugriff auf SYNONYM haben. In einer anderen Ausführungsform kann eine VMware-Festplattenabbildung zum Packen und verteilen einer FIT-Abbildung verwendet werden. Zum Beispiel können Software Anwendungen, welche in die FIT-Abbildung einbezogen werden sollen, als VMware ThinApps gepackt werden und in die Vmware-Festplattenabbildung integriert werden. Zusätzlich benötigte Anwendungen können mit zusätzlichen ThinApps-Installationen über Basisinstallationen (z.B. Desktop, Mobil, usw.) bereitgestellt werden. Die Vmware-Festplattenabbildung kann dann an eine Workstation mittels VMware-Software verteilt werden. In einer Ausführungsform können sich von Offshore-Benutzern verwendete Computer in einem sicheren Offshore-Entwicklungszentrum (ODC), welches bei einem Drittanbieter untergebracht sein kann, befinden. In einer Implementierung sind Computer in einem ODC physisch und/oder logisch von jedem anderen Computer getrennt, und der Zugang zu diesen Computern ist auf autorisiertes Personal beschränkt. Zum Beispiel kann ein ODC in physisch getrennten Räumen mit physischer Zugangskontrolle und dedizierten Anlagen und Ressourcen installiert sein. Das Netzwerk des ODC muss nicht mit dem übrigen Netzwerk des Drittanbieters verbunden sein. Das ODC kann mit dem DvSZ mittels VPN verbunden sein und Offshore-Benutzer, die nicht im ODC arbeiten, haben unter Umständen keinen Zugang zum DvSZ. Fig. 6D zeigt ein Blockdiagramm, welches die physische Zugangskontrolle zum ODC in einer Ausführungsform des SYNONYM darstellt. In Fig. 6D ist das ODC 630 physisch vom Rest des Sitzes des Drittanbieters 631 getrennt. Nur Computern innerhalb des ODC 630 wird erlaubt, sich mit dem DvSZ 632 zu verbinden, und dies nur durch einen VPN-Tunnel 633.
[0066] Offshore-Benutzer können eine virtuelle FIT-Abbildung zusammen mit jeder zusätzlichen Software auf ihrem Computer installiert haben 548. In einer Implementierung kann Software auf den Computern von Offshore-Benutzern ein Betriebssystem wie Windows XP; eine Virtualisierungssoftware wie VMware Player; und eine FIT-Abbildung, welche durch die Virtualisierungssoftware (virtuelle FIT-Abbildung) verwendet wird, enthalten. In einer Implementierung kann die virtuelle FIT-Abbildung mittels eines sich im ODC befindlichen Code Servers verteilt werden. Ein Code Server kann dazu dienen, die FIT-Abbildung auf Workstations in einem ODC zu installieren, zusätzliche Software an die Workstations zu verteilen und Updates (z.B. Virusdefinitionsdatei-Updates für ein Antivirus Programm) für auf den Workstations installierten Software bereitzustellen. Zum Beispiel kann der Code Server ein Betriebssystem wie Windows XP und eine Virtualisierungssoftware wie VMware Player auf einer Workstation installieren. VMware Player kann dann dazu verwendet werden, eine virtuelle FIT-Abbildung, welche in einer VMware-Festplattenabbildung auf der Workstation gepackt ist, auszuführen. Ein VPN-Tunnel kann bei 550 vom ODC zur virtuellen Entwicklungs- und/oder Testumgebung in der DvSZ eingerichtet werden, was den Zugang von Offshore-Benutzer zu SYNONYM erlaubt. In einer Implementierung kann die Authentifizierung der VPN-Parteien auf Systemebene und nicht auf Benutzerebene geschehen. In einer Implementierung können Offshore-Benutzer nur zu Diensten innerhalb der DvSZ Zugang haben. Fig. 6B zeigt ein Blockdiagramm, welches die Entwickler-Serverzone 610 und die Offshore-Entwicklungszentren 611A–C in einer Ausführungsform des SYNONYM darstellt. In Fig. 6B ist eine DvSZ 610, welche vom Rest des Firmenintranets 612 getrennt ist, mit den ODCs 1–3 durch VPN-Tunnel 613A–C verbunden. Die sich in den ODCs 614A–F befindliche Workstations können mit Diensten innerhalb der DvSZ mittels der von den Code Servern 615A–C erhaltenen, installierten FIT-Abbildungen, kommunizieren. Die Workstations können nicht auf Dienste im Firmenintranet ausserhalb des DvSZ zugreifen.
SYNONYM-Controller
[0067] Fig. 7 zeigt erfinderische Aspekte eines SYNONYM-Controllers 701 in einem Blockdiagramm. In dieser Ausführungsform kann der SYNONYM-Controller 701 dazu dienen, Interaktionen mit einem Computer mit Hilfe einer Vielzahl von Informationstechnologien und/oder anderer verwandter Daten zu aggregieren, verarbeiten, speichern, suchen, betreuen, identifizieren, instruieren, generieren, abgleichen und/oder ermöglichen.
[0068] Typischerweise können Benutzer, die Personen und/oder andere Systeme sein können, sich Informationstechnologiesystemen (z.B. Computer) bedienen, um die Verarbeitung von Informationen zu ermöglichen. Wiederum verwenden Computer Prozessoren, um Informationen zu verarbeiten; solche Prozessoren 703 können zentrale Recheneinheiten (CPU) genannt werden. Eine Art von Prozessor wird Mikroprozessor genannt. CPUs verwenden kommunizierende Schaltungen, um binär kodierte Signale, die als Instruktionen fungieren, zu führen, um verschiedene Operationen zu ermöglichen. Diese Instruktionen können operationale und/oder Dateninstruktionen sein, die andere Instruktionen und Daten in verschiedenen Speicherbereichen 729 (z.B. Register, Cache Speicher, Arbeitsspeicher, usw.), zu denen der Prozessor Zugang hat und mit welchen er Operationen durchführen kann, enthalten und/oder referenzieren können. Solche kommunikative Instruktionen können in Bündeln (z.B. Instruktionsbündeln) als Programme und/oder Datenkomponenten gespeichert und/oder gesendet werden, um gewünschte Operationen zu ermöglichen. Diese gespeicherten Instruktionscodes, z.B. Programme, können von den Schaltungskomponenten der CPU und von anderen Motherboard- und/oder Systemkomponenten Gebrauch machen, um gewünschte Operationen durchzuführen. Ein Typ von Programm ist ein Betriebssystem, welches von der CPU auf einem Computer ausgeführt werden kann; das Betriebssystem ermöglicht und erleichtert den Zugriff auf und den Betrieb von Computerinformationstechnologien und Ressourcen durch den Benutzer. Manche Ressourcen, welche in Informationstechnologiesystemen eingesetzt werden können, sind: Ein- und Ausgabemechanismen, durch welche Daten in den und aus dem Computer wandern können; Speicher, in welchen Daten gespeichert werden können; und Prozessoren, von welchen Informationen verarbeitet werden können. Diese Informationstechnologiesysteme können zur Sammlung von Daten für spätere Abfragen, Analyse und Manipulation verwendet werden, was durch ein Datenbankprogramm ermöglicht werden kann. Diese Informationstechnologiesysteme stellen Schnittstellen bereit, die Benutzern den Zugriff und Betrieb verschiedener Systemkomponenten erlauben.
[0069] In einer Ausführungsform kann der SYNONYM-Controller 701 mit Einheiten wie: einem oder mehreren Benutzern von Benutzereingabevorrichtungen 711; Peripheriegeräten 712; einem optionalen Verschlüsselungsprozessor 728; und/oder Kommunikationsnetzwerken 713, jedoch nicht darauf beschränkt, verbunden sein und/oder damit kommunizieren.
[0070] Netzwerke sind normalerweise dazu gedacht, die Zusammenschaltung und Zusammenarbeit von Clients, Servern und Zwischenknoten in einer Graphenstruktur zu beinhalten. Es sollte angemerkt werden, dass sich der Begriff «Server», so wie er in dieser gesamten Anmeldung verwendet wird, generell auf einen Computer, auf ein anderes Gerät, Programm oder Kombination davon bezieht, welche die Anfragen von Remote-Benutzern über ein Kommunikationsnetzwerk verarbeitet und auf diese antwortet. Server stellen ihre Informationen anfragenden «Clients» zur Verfügung. Der Begriff «Client», wie hier verwendet, bezieht sich generell auf einen Computer, Programm, auf ein anderes Gerät, Benutzer und/oder eine Kombination davon, welche in der Lage ist, jegliche Antworten vom Server über ein Kommunikationsnetzwerk zu verarbeiten, Anfragen zu tätigen und die Antworten zu bekommen und zu verarbeiten. Ein Computer, ein anderes Gerät oder eine Kombination davon, welche Informationen verarbeitet, ermöglicht und anfragt und/oder sie von einem Quellenbenutzer an einen Zielbenutzer weitergibt, wird normalerweise «Knoten» genannt. Netzwerke sind normalerweise dazu gedacht, den Transfer von Informationen von Quellenpunkten zu Zielen zu ermöglichen. Ein Knoten, der insbesondere die Aufgabe hat, den Informationsfluss von einer Quelle zu einem Ziel weiterzuleiten, wird normalerweise «Router» genannt. Es gibt viele Arten von Netzwerken wie z.B. Local Area Networks (LANs), Pico-Netzwerke, Wide-Area-Netzwerke (WANs), Drahtlose Netzwerke (WLANs), usw. Zum Beispiel wird das Internet generell als eine Zusammenschaltung einer Vielzahl von Netzwerken, wobei Remote-Clients und Server aufeinander zugreifen und miteinander arbeiten können, akzeptiert.
[0071] Der SYNONYM-Controller 701 kann auf Computersystemen basieren, welche Komponenten wie: ein Computersystem 702, welche mit dem Speicher 729 verbunden ist, umfassen kann, ist auf diese jedoch nicht beschränkt.
Computersystem
[0072] Ein Computersystem 702 kann einen Taktgeber 730, eine zentrale Recheneinheit («CPU(s)» und/oder «Prozessor(en)» (diese Begriffe sind überall in der Offenbarung austauschbar, wenn nicht anders angegeben)) 703, einen Speicher 729 (z.B. einen Festwertspeicher (ROM) 706, einen Arbeitsspeicher (RAM) 705, usw.), und/oder einen Schnittstellenbus 707 umfassen, und meistens, obwohl nicht notwendig, sind alle miteinander verbunden und/oder kommunizieren über einen Systembus 704 auf einer oder mehreren (Mother)board(s) 702, mit leitfähigen und/oder auf andere Weise transportierenden Schaltungswegen, durch welche Instruktionen (z.B. binär kodierte Signale) laufen können, um Kommunikationen, Operationen, Speichervorgänge, usw. zu bewirken. Optional kann das Computersystem an einer internen Leistungsquelle 786 angeschlossen sein. Optional kann ein Verschlüsselungsprozessor 726 am Systembus angeschlossen sein. Der Systemtaktgeber weist typischerweise einen Kristalloszillator und generiert ein Basissignal durch die Schaltungen des Computersystems. Der Systemtaktgeber ist typischerweise mit dem Systembus und verschiedenen Takt-Multiplikatoren, welche die Basisbetriebsfrequenz für andere im Computersystem zugeschaltete Komponenten erhöhen oder vermindern, gekoppelt. Der Taktgeber und verschiedene Komponenten in einem Computersystem treiben Signale, welche Informationen durch das gesamte System verkörpern. Ein solches Senden und Empfangen von Informationen verkörpernde Instruktionen durch ein gesamtes Computersystem kann normalerweise Kommunikation genannt werden. Diese kommunizierenden Instruktionen können weiter gesendet, empfangen und können ein Zurückschicken und/oder eine Antwortkommunikation jenseits des aktuellen Computersystems an: Kommunikationsnetzwerken, Eingabegeräten, anderes Computersystem, Peripheriegeräte und/oder dergleichen bewirken. Sicher können alle der obigen Komponenten direkt miteinander, mit der CPU verbunden sein und/oder in einer Vielzahl von Variationen organisiert werden, wie von einer Vielzahl von Computersystemen beispielhaft gezeigt.
[0073] Die CPU umfasst mindestens einen Hochgeschwindigkeitsdatenprozessor, welcher zur Ausführung von Programmkomponenten zur Ausführung von Benutzer- und/oder Systemgenerierten Anfragen geeignet ist. Oft umfassen die Prozessoren selbst verschiedene spezialisierte Recheneinheiten wie z.B: integrierte System(bus)-Controller, Steuereinheiten für Speicherverwaltung, Gleitkommaeinheiten, und sogar spezialisierte Rechenuntereinheiten wie Grafikrecheneinheiten, digitale Signalverarbeitungseinheiten und/oder dergleichen, wobei sie nicht darauf beschränkt sind. Zusätzlich können Prozessoren interne adressierbare Schnellzugriffsspeicher enthalten und imstande sein, ausserhalb des Prozessors selbst Speicher 529 abzubilden und zu adressieren; ein interner Speicher kann: schnelle Register, verschiedene Stufen von Cache-Speicher (z.B. Stufe 1, 2, 3, usw.), RAM, usw. umfassen, ist aber nicht darauf beschränkt. Der Prozessor kann auf diesen Speicher durch die Verwendung eines Adressraumes, welcher mittels einer Adresseninstruktion zugänglich ist, welche vom Prozessor aufgebaut und dekodiert wird, zugreifen, was ihm erlaubt, Zugriff auf einen Schaltungspfad zu einem spezifischen Speicherbereich mit einem Speicherzustand zu erlangen. Die CPU kann ein Mikroprozessor wie: Athlon, Duron und/oder Opteron von AMD; Applikationsprozessoren, eingebettete Prozessoren und Sichere Prozessoren von ARM; DragonBall und PowerPC von IBM und/oder Motorola; Zellenprozessoren von IBM und Sony; Celeron, Core (2) Duo, Itanium, Pentium, Xeon und/oder Xscale von Intel und/oder ähnliche Prozessor(en) sein. Die CPU interagiert mit dem Speicher mittels Instruktionen, welche durch leitfähige und/oder transportierende Leitungen (z.B. (gedruckte) elektronisch und/oder optische Schaltungen), um gespeicherte Instruktionen (z.B. Programmcode) gemäss üblichen Datenverarbeitungstechniken auszuführen. Ein solcher Instruktionstransport erleichtert die Kommunikation im SYNONYM-Controller und ausserhalb durch verschiedene Schnittstellen. Wenn Rechenvorschriften eine höhere Geschwindigkeit und/oder Kapazität auferlegen, können verteilte Prozessoren (z.B. verteilte SYNONYM), Mainframe, Multi-Kern, parallele und/oder Supercomputerarchitekturen auf die gleiche Weise verwendet werden. Alternativ, im Falle, dass Verteilungsanforderungen eine höhere Portabilität auferlegen, können kleinere Personal Digital Assistants (PDAs) verwendet werden.
[0074] Abhängig von verschiedenen Implementierungen können Merkmale des SYNONYM durch die Implementierung eines Mikrocontrollers wie den R8051XC2 Mikrocontroller von CAST; der MCS 51 (z.B. 8051 Mikrocontroller); und/oder dergleichen erreicht werden; und/oder dergleichen. Um auch bestimmte Merkmale des SYNONYM zu implementieren, können manche Merkmale auf eingebettete Komponenten wie; anwendungsspezifische integrierte Schaltungen (ASIC), Digital Signal Processing («DSP»), Field Programmable Gate Arrax («FPGA») und/oder auf ähnlichen eingebetteten Technologien basieren. Zum Beispiel kann jede der SYNONYM-Komponentenkollektion (verteilt oder dergleichen) und/oder können Merkmale über den Mikroprozessor und/oder über eingebettete Komponenten; implementiert sein, z.B: ASIC, Koprozessor, DSP, FPGA und/oder dergleichen. Alternativ können manche Implementierungen des SYNONYM mittels eingebetteten Komponenten, welche derart konfiguriert und verwendet werden, dass eine Vielzahl von Merkmalen oder Signalprozesse erreicht werden, implementiert werden.
[0075] Abhängig von der jeweiligen Implementierung können die eingebetteten Komponenten Softwarelösungen, Hardwarelösungen und/oder einige Kombinationen beider Software- und Hardwarelösungen umfassen. Zum Beispiel können hier beschriebene SYNONYM-Merkmale durch die Implementierung von FPGAs, welche Halbleiterbausteine sind, die programmierbare Logikkomponenten sind, «logische Blöcke» genannt, und durch programmierbare Verbindungen, wie die Hochleistungs-FPGA-Virtex-Reihen und/oder die kostensparenden Spartan-Reihen, welche von Xilinx hergestellt werden, erreicht werden. Logikblöcke und Verbindungen können vom Kunden oder Designer programmiert werden, nachdem das FPGA hergestellt wurde, um jegliche SYNONYM-Merkmale zu implementieren. Eine Hierarchie programmierbarer Verbindungen erlauben Logikblöcken, so miteinander verbunden zu werden, wie vom SYNONYM Systemdesigner/Administrator benötigt, ähnlich wie eine Ein-Chip-programmierbare Lochrasterplatte. Ein FPGA-Logikblock kann so programmiert werden, dass er die Funktion von Basislogikblöcken wie AND und XOR oder von komplexeren kombinatorischen Funktionen wie Decoder oder einfache mathematische Funktionen ausführen kann. In den meisten FPGAs umfassen die Logikblöcke auch Speicherelemente, welche einfache Flip-Flops oder umfangreichere Speicherblöcke sein können. Unter gewissen Umständen kann SYNONYM auf regulären FPGAs entwickelt und dann in eine feste Version, welche mehr ASIC-Implementierungen ähnelt, migriert werden. Alternative oder koordinierende Implementierungen können SYNONYM-Controller Funktionen auf ein finales ASIC, anstelle der oder zusätzlich zu den FPGAs migrieren. Abhängig von der Implementierung können alle bereits genannten eingebetteten Komponenten und Mikroprozessoren als die «CPU» und/oder «Prozessor» für das SYNONYM aufgefasst werden.
Leistungsquelle
[0076] Die Leistungsquelle 786 kann jede Standardausführung zur Versorgung kleiner elektronischer Leiterplattenanordnungen, wie z.B. die folgenden Kraftzellen: alkalische, Lithium-Hybrid, Lithium-Ion, Lithium-Polymer, Nickel-Cadmium, Solarzellen und/oder dergleichen, sein. Andere Typen von AC- oder DC-Leistungsquellen können auch verwendet werden. Im Falle von Solarzellen stellt das Gehäuse in einer Implementierung eine Öffnung bereit, durch welche die Solarzelle Photonenenergie einfangen kann. Die Kraftzelle 786 ist mit mindestens mit einer der folgenden, miteinander geschalteten Komponenten des SYNONYM verbunden, wodurch sie einen elektrischen Strom aller nachfolgenden Elementen abgibt. In einem Beispiel ist die Kraftzelle 786 mit der Systembuskomponente 704 verbunden. In einer alternativen Ausführungsform wird eine äussere Leistungsquelle 786 mittels einer Verbindung über die I/O-Schnittstelle 708 bereitgestellt. Zum Beispiel trägt eine USB- und/oder IEEE-1394-Verbindung beides, Daten und Leistung, über die Verbindung und ist daher eine geeignete Leistungsquelle.
Schnittstellenadapter
[0077] Schnittstellenbus(se) 707 können eine Menge von Schnittstellenadaptern, jedoch normalerweise nicht notwendigerweise in der Form von Adapterkarten, annehmen, sich damit verbinden und/oder damit kommunizieren, wie z.B: Eingabe/Ausgabe-Schnittstellen (I/O) 708, Speicherschnittstellen 709, Netzwerkschnittstellen 710 und/oder dergleichen, jedoch nicht darauf beschränkt. Optional können Verschlüsselungsprozessorschnittstellen 727 auch mit dem Schnittstellenbus verbunden sein. Der Schnittstellenbus stellt die Kommunikation von Schnittstellenadaptern untereinander sowie mit anderen Komponenten des Computersystems sicher. Schnittstellenadapter sind für einen kompatiblen Schnittstellenbus ausgestaltet. Schnittstellenadapter verbinden sich normalerweise mit dem Schnittstellenbus über eine Slot-Architektur. Übliche Slot-Architekturen können als: Accelerated Graphics Port (AGP), Card Bus, (Extended) Industry Standard Architecture ((E)ISA), Micro Channel Architecture (MCA), NuBus, Peripheral Component Interconnect (Extended) (PCI(X)), PCI Express, Personal Computer Memory Card International Association (PCMCIA) und/oder dergleichen, jedoch nicht darauf beschränkt, eingesetzt werden.
[0078] Speicherschnittstellen 709 können eine Menge von Speichergeräten annehmen, damit kommunizieren und/oder sich damit verbinden, wie z.B: Speichergeräte 714, Wechselfestplatten und/oder dergleichen, jedoch nicht darauf beschränkt. Speicherschnittstellen können Verbindungsprotokolle verwenden, wie: (Ultra) (Serial) Advanced Technology Attachment (Packet Interface) ((Ultra) (Serial( ATA(PI)), (Enhanced) Integrated Drive Electronics ((E)IDE), Institute of Electrical and Electronics Engineers (IEEE) 1394, Fiberglass, Small Computer Systems Interface (SCSI), Universal Serial Bus (USB) und/oder dergleichen, jedoch nicht darauf beschränkt.
[0079] Netzwerkschnittstellen 710 können ein Kommunikationsnetzwerk 713 annehmen, damit kommunizieren und/oder sich damit verbinden. Durch ein Kommunikationsnetzwerk 713 kann auf den SYNONYM-Controller durch Benutzer 733a mittels Remote-Clients 733b (z.B. Computer mit Web-Browsern) zugegriffen werden. Netzwerkschnittstellen können Verbindungsprotokolle wie: direkte Verbindung, Ethernet (dick, dünn, verdrillt 10/100/1000 Base T, und/oder dergleichen), TokenRing, drahtlose Verbindung wie IEEE 802.11a–x, und/oder dergleichen, jedoch nicht darauf beschränkt. Wenn Verarbeitungsanforderungen eine höhere Geschwindigkeit und/oder Kapazität erfordern, können verteilte Netzwerk-Controller (z.B. verteilte SYNONYM), Architekturen auf die selbe Weise eingesetzt werden, um die vom SYNONYM-Controller benötigte Kommunikationsbandbreite zu vereinigen, eine Lastverteilung durchzuführen und/oder auf andere Weise zu erhöhen. Ein Kommunikationsnetzwerk kann eines von und/oder eine Kombination von: einer direkten gegenseitigen Verbindung; dem Internet; einen Local Area Network (LAN); einem Metropolitan Area Network (MAN); einem Operating Missions als Knoten im Internet (OMNI); einer gesicherten proprietären Verbindung; einem Wide Area Network (WAN); einem drahtlosen Netzwerk (z.B. durch Verwendung von Protokollen wie Wireless Application Protocol (WAP), I-Mode und/oder dergleichen, aber nicht darauf beschränkt); und/oder dergleichen sein. Eine Netzwerkschnittstelle kann als eine spezialisierte Art einer Eingabe/Ausgabe-Schnittstelle angesehen werden. Weiter können mehrere Netzwerkschnittstellen 710 in Wechselwirkung mit mehreren Kommunikationsnetzwerkstypen 713 treten. Zum Beispiel können mehrere Netzwerkschnittstellen dazu eingesetzt werden, die Kommunikation über Rundfunk-, Multicast- und/oder Unicastnetzwerke zu ermöglichen.
[0080] Eingabe/Ausgabe-Schnittstellen (I/O) 708 können Benutzereingabegeräte 711, Peripheriegeräte 712, Verschlüsselungsprozessoren 728 und/oder dergleichen annehmen, damit kommunizieren und/oder sich damit verbinden. I/O kann Verbindungsprotokolle wie: Audio: Analog, Digital, Mono, RCA, Stereo und/oder dergleichen; Daten: Apple Desktop Bus (ADB), IEEE 1394a-b, seriell, Universal Serial Bus (USB); Infrarot; Joystick; Tastatur; Midi; optisch; PC AT; PS/2; parallel; Radio; Video Schnittstelle: Apple Desktop Connector (ADC), BNC, koaxial, Komponent, Komposit, Digital, Digital Visual Interface (DVI), High-definition Multimedia Schnittstelle (HDMI), RCA, HF Antenne, S-Video, VGA und/oder dergleichen; drahtlos: 802.11a/b/g/n/x, Bluetooth, Code division multiple access (CDMA), global system for mobile Communications (GSM), WiMax, usw; und/oder dergleichen annehmen, damit kommunizieren und/oder sich damit verbinden. Ein typisches Ausgabegerät kann ein Videodisplay umfassen, das typischerweise ein Cathode Ray Tube (CRT) oder einen Liquid Crystal Display (LCD)-basierten Monitor mit einer Schnittstelle (z.B. DVI Verschaltung und Kabeln), welche Signale von einer Video-Schnittstelle akzeptiert, welche verwendet werden können, umfasst. Die Video-Schnittstelle verbindet Informationen, die von einem Computersystem generiert werden und generiert auf die Verbundinformationen basierende Videosignale in einem Videospeicherframe. Ein anderes Ausgabegerät ist ein Ferseher, welcher Signale von einer Videoschnittstelle annimmt. Typischerweise stellt die Videoschnittstelle die Verbundvideoinformation durch eine Videoverbindungsschnittstelle, welche eine Videodisplayschnittstelle annimmt (z.B. einen RCA-Verbundvideokonnektor, welcher ein RCA-Verbundvideokabel annimmt; einen DVI-Konnektor, welcher ein DVI-Displaykabel annimmt, usw.).
[0081] Benutzereingabegeräte 711 können Kartenleser, Dongles, Fingerabdruckleser, Handschuhe, Grafiktabletts, Joysticks, Tastaturen, Mäuse, Fernbedienungen, Netzhautleser, Trackballs, Trackpads und/oder dergleichen sein.
[0082] Peripheriegeräte 712 können mit I/O und/oder anderen derartigen Einrichtungen wie Netzwerkschnittstellen, Speicherschnittstellen und/oder dergleichen verbunden sein und/oder kommunizieren. Peripheriegeräte können Audiogeräte, Kameras, Dongles (z.B. für Kopierschutz, zur Sicherstellung von sicheren Transaktionen mit einer digitalen Signatur und/oder dergleichen), externe Prozessoren (für zusätzliche Funktionalität), Brillen, Mikrophone, Monitore, Netzwerkschnittstellen, Drucker, Scanner, Speichergeräte, Videogeräte, Videoquellen, Visiere und/oder dergleichen sein.
[0083] Es wird angemerkt, dass obwohl Benutzereingabegeräte und Peripheriegeräte eingesetzt werden können, der SYNONYM-Controller als eingebettet, proprietär, und/oder monitorloses (z.B. Headless) Gerät ausgeführt sein kann, wobei der Zugang über eine Netzwerkschnittstellenverbindung bereitgestellt werden würde.
[0084] Verschlüsselungseinheiten wie Mikrocontroller, Prozessoren 726, Schnittstellen 727 und/oder Geräte 728, jedoch nicht darauf beschränkt, können an den SYNONYM-Controller angeschlossen werden und/oder damit kommunizieren. Ein MC68HC16-Mikrocontroller, welcher von Motorola Inc. hergestellt wird, kann für und/oder in Verschlüsselungseinheiten verwendet werden. Der MC68HC16-Mikrocontroller verwendet eine 16-Bit-Multiplikations- und Summieroperation in der 16-MHz-Konfiguration und benötigt weniger als eine Sekunde, um eine 512-Bit-RSA-Privatschlüsseloperation auszuführen. Verschlüsselungseinheiten unterstützen die Authentifizierung der Kommunikation für interagierende Parteien und sie erlauben anonyme Transaktionen. Verschlüsselungseinheiten können auch als Teil der CPU konfiguriert werden. Äquivalente Mikrocontroller und/oder Prozessoren können auch verwendet werden. Andere herkömmliche, spezialisierte Verschlüsselungsprozessoren umfassen: CryptoNetX von Broadcom und andere Sicherheitsprozessoren; nShield von nCipher, Luna PCI (z.B. 7100) Reihen von SafeNet; 40-MHz-Roadrunner 184 von Semaphore Communications; Cryptographic Accelerators (z.B. Accelerator 6000 PCIe Board, Accelerator 500 Daughtercard) von Sun; Via Nano Processor (z.B. L2100, L2200, U2400) Linie, welche imstande ist, 500+ MB/s an Verschlüsselungsinstruktionen zu verarbeiten; 33 Mhz 6868 von VLSI Technology; und/oder dergleichen.
Speicher
[0085] Im Allgemeinen wird jede Mechanisierung und/oder Ausführungsform, welche einem Prozessor erlaubt, die Speicherung und/oder das Abrufen von Informationen zu beeinflussen, als Speicher 729 angesehen. Speicher ist jedoch eine ersetzbare Technologie und Ressource, so dass jede Anzahl von Speicherausführungsformen anstatt von anderen oder zusammen eingesetzt werden kann. Es muss verstanden werden, dass der SYNONYM-Controller und/oder ein Computersystem verschiedene Formen von Speicher 729 einsetzen kann. Zum Beispiel kann ein Computersystem so konfiguriert werden, dass die Funktionalität von On-Chip CPU Speicher (z.B. Register), RAM, ROM und jedes andere Speichergerät durch ein Lochkartenband oder einem Lochkartenmechanismus bereitgestellt wird; sicher würde eine solche Ausführungsform eine extrem langsame Ausführung von Operationen bedeuten. In einer typischen Konfiguration umfasst der Speicher 729 ROM 706, RAM 705 und ein Speichergerät 714. Ein Speichergerät 714 kann jeder herkömmliche Computersystemspeicher sein. Speichergeräte können eine Trommel umfassen; ein (festes und/oder austauschbares) magnetisches Laufwerk; ein magneto-optisches Laufwerk; ein optisches Laufwerk (z.B. Blueray, CDROM/RAM/Recordable (R)/ReWritable (RW), DVD R/RW, HD DVD R/RW, usw.); ein Array von Geräten (z.B. Redundant Array of Independent Disks (RAID)); Solid-State-Speichergeräte (USB Speicher, Solid-State-Laufwerke (SSD), usw.); andere Speichermedien, die Prozessor-lesbar sind; und/oder andere derartige Geräte. Also benötigt und verwendet ein Computersystem normalerweise Speicher.
Komponentensammlung
[0086] Der Speicher 729 kann eine Sammlung von Programmen und/oder Datenbankkomponenten und/oder Daten enthalten, wie z.B: Betriebssystemkomponente(n) 715 (Betriebssystem); Informationsserverkomponente(n) 716 (Informationsserver); Benutzerschnittstellenkomponente(n) 717 (Benutzerschnittstelle); Web-Browser-Komponente(n) 718 (Web-Browser); Datenbank(en) 719; Mailserverkomponente(n) 721; Mailclientkomponente(n) 722; Verschlüsselungsserverkomponente(n) 720 (Verschlüsselungsserver); die SYNONYM-Komponente(n) 735; und/oder dergleichen (z.B. insgesamt eine Komponentensammlung). Diese Komponenten können gespeichert, und es kann auf sie von den Speichergeräten und/oder von Speichergeräten, auf die mittels eines Schnittstellenbusses zugegriffen werden kann, zugegriffen werden. Obwohl nicht konventionelle Programmkomponenten, so wie diejenigen in der Komponentensammlung, typischerweise in einem lokalen Speichergerät 714 gespeichert werden, können sie auch in einem Speicher wie: Peripheriegeräten, RAM, Fernspeichereinrichtungen durch ein Kommunikationsnetzwerk, ROM, verschiedene Formen von Speicher und/oder dergleichen geladen und/oder gespeichert werden.
Betriebssystem
[0087] Die Betriebssystemkomponente 715 ist eine ausführbare Programmkomponente, welche den Betrieb des SYNONYM-Controllers ermöglicht. Typischerweise ermöglicht das Betriebssystem den Zugang des I/O, Netzwerkschnittstellen, Peripheriegeräte, Speichergeräte und/oder dergleichen. Das Betriebssystem kann ein in hohem Masse fehlertolerantes, skalierbares und sicheres System wie: Apple Macintosh OS X (Server); AT&T Plan 9; Be OS; Unix und Unix-ähnliche Systemvarianten (wie UNIX von AT&T; Berkley Software Distribution (BSD) Variationen wie FreeBSD, NetBSD, OpenBSD und/oder dergleichen; Linux Varianten wie Red Hat, Ubuntu und/oder dergleichen); und/oder ähnliche Betriebssysteme. Es können jedoch auch eingeschränktere und/oder weniger sichere Betriebssysteme wie Apple Macintosh OS, IBM OS/2, Microsoft DOS, Microsoft Windows 2000/2003/3.1/95/98/CE/Millenium/ NT/Vista/XP (Server), Palm OS und/oder dergleichen zum Einsatz kommen. Ein Betriebssystem kann mit anderen Komponenten in einer Komponentensammlung kommunizieren, einschliesslich mit sich selbst und/oder dergleichen. Meistens kommuniziert das Betriebssystem mit anderen Programmkomponenten, Benutzerschnittstellen und/oder dergleichen. Beispielsweise kann das Betriebssystem Programmkomponenten, Systeme, Benutzer und/oder Datenkommunikationen, Anfragen und/oder Antworten enthalten, damit kommunizieren, generieren, erhalten und/oder bereitstellen. Das Betriebssystem, einmal in der CPU ausgeführt, kann die Interaktion mit Kommunikationsnetzwerken, Daten, I/O, Peripheriegeräten, Programmkomponenten, Speicher, Benutzereingabegeräten und/oder dergleichen ermöglichen. Das Betriebssystem kann Kommunikationsprotokolle bereitstellen, welche dem SYNONYM-Controller erlauben, mit anderen Einheiten durch ein Kommunikationsnetzwerk 713 zu kommunizieren. Verschiedene Kommunikationsprotokolle können vom SYNONYM-Controller als ein Träger-Transportmechanismus für Interaktionen wie Multicast, TCP/IP, UDP, Unicast und/oder dergleichen, jedoch nicht darauf beschränkt, verwendet werden.
Informationsserver
[0088] Eine Informationsserverkomponente 716 ist eine gespeicherte Programmkomponente, die von der CPU ausgeführt wird. Der Informationsserver kann ein konventioneller Internet Informationsserver wie z.B. Apache, von Apache Software Foundation, Internet Information Server von Microsoft, und/oder dergleichen, jedoch nicht darauf beschränkt. Der Informationsserver kann die Ausführung von Programmkomponenten mittels Einrichtungen wie Active Server Page (ASP), ActiveX, (ANSI) (Objective-) C (++), C# und/oder .NET, Common Gateway Interface (CGI) Skripten, dynamic (D) hypertext markup languange (HTML), FLASH, Java, Javascript, Practical Extraction Report Language (PERL), Hypertext Pre-Processor (PHP), pipes, Python, wireless application protocol (WAP), WebObjects und/oder dergleichen erlauben. Der Informationsserver kann sichere Kommunikationsprotokolle wie File Transfer Protocol (FTP); HyperText Transfer Protocol (HTTP); Secure Hypertext Transfer Protocol (HTTPS), Secure Socket Layer (SSL), Nachrichtenprotokolle (z.B. America Online (AOL) Instant Messenger (AIM), Application Exchange (APEX), ICQ, Internet Relay Chat (IRC), Microsoft Network (MSN) Messenger Service, Presence and Instant Messaging Protocol (PRIM), Session Initiation Protocol (SIP) von Internet Engineering Task Force (IETF) , SIP für Instant Messaging and Presence Leveraging Extensions (SIMPLE), open XML-basierte Extensible Messaging and Presence Protocol (XMPP) (z.B. Jabber oder Instant Messaging and Presence Service (IMPS) von Open Mobile Alliance (OMA), Instant Messenger von Yahoo!), und/oder dergleichen, jedoch nicht darauf beschränkt, unterstützen. Der Informationsserver stellt Web-Browsern Ergebnisse in der Form von Web-Seiten bereit und erlaubt die manipulierte Generierung von Web-Seiten durch Interaktion mit anderen Programmkomponenten. Nach der Auflösung eines Teils einer HTTP-Anfrage, enthaltend ein Domain Name System (DNS), als einen bestimmten Informationsserver, löst der Informationsserver Anfragen nach Informationen an bestimmten Stellen auf dem SYNONYM-Controller auf, basierend auf den Rest der HTTP-Anfrage. Zum Beispiel könnte bei einer Anfrage wie http://123.124.125.126/myInformation.html der IP-Teil der Anfrage «123.124.125.126» von einem DNS Server als ein Informationsserver an dieser IP-Adresse aufgelöst werden; Dieser Informationsserver könnte hingegen weiter die http-Anfrage nach dem «/mylnformation.html»-Teil der Anfrage absuchen und als eine Stelle im Speicher auflösen, welche die Information «myInformation.html» enthält. Zusätzlich können andere Informationen bereitstellende Protokolle über verschiedene Ports eingesetzt werden, wie z.B. FTP Kommunikation über Port 21 und/oder dergleichen. Ein Informationsserver kann mit anderen Komponenten in einer Komponentensammlung kommunizieren, einschliesslich mit sich selbst, und/oder mit derartigen Einrichtungen. Meistens kommunizieren der Informationsserver mit der SYNONYM-Datenbank 719, mit Betriebssystemen, mit anderen Programmkomponenten, Benutzerschnittstellen, Web-Browsern und/oder dergleichen.
[0089] Der Zugang zur SYNONYM-Datenbank kann durch eine Anzahl von Datenbank-Brückenmechanismen wie z.B. durch Skript-Sprachen, wie unten aufgezählt (z.B. CGI) und durch Kommunikationskanäle zwischen Anwendungen wie unten aufgezählt (z.B. CORBA, WebObjects, usw.). Alle Datenanfragen durch einen Web-Browser werden mittels des Brückenmechanismus, mit Hilfe von geeigneter Grammatik, wie vom SYNONYM verlangt, abgesucht. In einer Ausführungsform würde der Informationsserver eine für einen Web-Browser zugängliche Web-Form bereitstellen. Eingaben in bereitgestellte Felder in der Web-Form werden derart gekennzeichnet, dass sie in den bestimmten Feldern eingegeben worden sind, und als solche abgesucht. Die eingegebenen Begriffe werden dann zusammen mit den Feldkennzeichnungen, welche dazu dienen, den Parser anzuweisen, die Generierung von Suchvorgängen an geeigneten Tabellen und/oder Feldern zu richten, weitergegeben. In einer Ausführungsform kann der Parser Suchvorgänge in Standard-SQL generieren, indem er ein Suchzeichen instantiiert, mittels der richtigen join/select-Befehlen, basierend auf die gekennzeichneten Texteingaben, wobei der resultierende Befehl über den Brückenmechanismus dem SYNONYM als eine Suche bereitgestellt wird. Nach der Generierung von Suchergebnissen werden die Ergebnisse über den Brückenmechanismus weitergegeben und können nach Formatierung abgesucht werden, wobei eine neue Ergebnis-Web-Seite vom Brückenmechanismus generiert wird. Eine solche neue Ergebnis-Web-Seite wird dann dem Informationsserver zur Verfügung gestellt, welcher sie dem anfragenden Web-Browser liefert.
[0090] Auch kann ein Informationsserver Programmkomponenten-, System-, Benutzer- und/oder Datenkommunikationsanfragen und/oder Antworten enthalten, damit kommunizieren, generieren, bekommen und/oder bereitstellen.
Benutzerschnittstelle
[0091] Die Funktion von Computerschnittstellen ist unter bestimmten Voraussetzungen ähnlich mit Automobilbetriebsschnittstellen. Elemente von Automobilbetriebsschnittstellen wie Lenkräder, Schaltungen und Tachos ermöglichen den Zugang, den Betrieb und die Anzeige von Automobilressourcen, Funktionalität und Status. Schnittstellenelemente zur Interaktion mit Computern, wie z.B. Kontrollkästchen, Zeiger, Menüs, Scroller und Fenster (insgesamt und normalerweise Widgets genannt) ermöglichen auf dieselbe Weise den Zugang, den Betrieb und die Anzeige von Daten und Computer-Hardware und Betriebssystemressourcen, Funktionalität und Status. Betriebsschnittstellen werden allgemein Benutzerschnittstellen genannt. Grafische Benutzerschnittstellen (GUIs) wie das Betriebssystem Aqua von Apple Macintosh, OS/2 von Microsoft, Windows 2000/2003/3.1/95/98/CE/Millenium/NT/XP/Vista/7 (z.B. Aero) von Microsoft, X-Windows von Unix (z.B. welches zusätzliche Unix Grafikschnittstellenbiblotheken und Ebenen wie K-Desktop Environment (KDE), mythTV und GNU Network Object Model Environment ((GNOME)), Web-Schnittstellenbibliotheken (z.B. Active X, AJAX, (D)HTML, FLASH, Java, Javascript, usw. Schnittstellenbibliotheken wie Dojo, jQuery(UI), MooTools; Prototype, Script.aculo.us, SWObjects, Yahoo! Benutzerschnittstelle, jedoch nicht darauf beschränkt, alle welche verwendet werden können) stellen eine Basis und Mittel für den Zugang zu und die Anzeige von Informationen grafisch an den Benutzer.
[0092] Eine Benutzerschnittstellenkomponente 717 ist eine gespeicherte Programmkomponente, welche von der CPU ausgeführt wird. Die Benutzerschnittstelle kann eine konventionelle grafische Benutzerschnittstelle, wie von, mit und/oder auf Betriebssystemen und/oder Betriebsumgebungen, wie schon beschrieben, bereitgestellt. Die Benutzerschnittstelle kann die Anzeige, die Ausführung, die Interaktion, die Manipulation und/oder den Betrieb von Programmkomponenten und/oder Systemeinrichtungen durch textuelle und/oder grafische Einrichtungen erlauben. Die Benutzerschnittstelle stellt eine Einrichtung bereit, durch welche Benutzer ein Computersystem beeinflussen, damit interagieren und/oder es betreiben können. Eine Benutzerschnittstelle kann mit anderen Komponenten in einer Komponentensammlung kommunizieren, einschliesslich mit sich selbst und/oder anderen Einrichtungen. Meistens kommuniziert die Benutzerschnittstelle mit Betriebssystemen, anderen Programmkomponenten und/oder dergleichen. Die Benutzerschnittstelle kann Kommunikation, Anfragen und/oder Antworten von Programmkomponenten, System, Benutzer und/oder Daten enthalten, damit kommunizieren, sie generieren, bekommen und/oder bereitstellen.
Web-Browser
[0093] Eine Web-Browser-Komponente 718 ist eine gespeicherte Programmkomponente, welche von der CPU ausgeführt wird. Der Web-Browser kann eine konventionelle Anwendung zur Darstellung von Hypertext, wie Microsoft Internet Explorer oder Netscape Navigator sein. Sicheres Internet-Surfen kann mit einer 128-Bit(oder mehr)-Verschlüsselung mittels HTTPS, SSL und/oder dergleichen ausgestattet werden. Web-Browser erlauben die Ausführung von Programmkomponenten durch Einrichtungen wie ActiveX, AJAX, (D)HTML, FLASH, Java, JavaScript Web-Browser Plug-in APIs (z.B. Firefox, Safari Plug-in und/oder dergleichen) und/oder dergleichen. Web-Browser und ähnliche Tools für das Zugreifen auf Informationen können in PDAs, Mobiltelefonen und/oder anderen mobilen Geräten integriert werden. Ein Web-Browser kann mit anderen Komponenten in einer Komponentensammlung und/oder ähnlichen Einrichtungen kommunizieren, einschliesslich mit sich selbst. Meistens kommuniziert der Web-Browser mit Informationsservern, Betriebssystemen, integrierten Programmkomponenten (z.B. Plug-ins) und/oder dergleichen; z. B. kann er Kommunikation, Anfragen und/oder Antworten von Programmkomponenten, System, Benutzer und/oder Daten enthalten, damit kommunizieren, sie generieren, bekommen und/oder bereitstellen. Natürlich kann anstelle von Web-Browsern und Informationsservern eine kombinierte Anwendung entwickelt werden, welche dieselben Funktionen beider ausführen kann. Die kombinierte Anwendung würde auf gleiche Weise die Beschaffung und die Bereitstellung von Informationen an Benutzern, User-Agents und/oder dergleichen von den vom SYNONYM aktivierten Knoten beeinflussen. Die kombinierte Anwendung kann auf Systemen, die Standard Web-Browser einsetzen wertlos sein.
Mailserver
[0094] Eine Mailserverkomponente 721 ist eine gespeicherte Programmkomponente, welche von einer CPU 703 ausgeführt wird. Der Mailserver kann ein gewöhnlicher Internet Mailserver wie sendmail, Microsoft Exchange oder dergleichen sein, ist jedoch nicht darauf beschränkt. Der Mailserver kann die Ausführung von Programmkomponenten durch Einrichtungen wie ASP, ActiveX, (ANSI) (Objective-)C(++), C# und/oder .NET, CGI-Skripten, Java, Javascript, PERL, PHP, pipes, Python, WebObjects und/oder dergleichen erlauben. Der Mailserver kann Kommunikationsprotokolle wie: Internet message access protocol (IMAP), Messaging Application Programming Interface (MAPI)/Microsoft Exchange, post office protocol (POP3), simple mail transfer protocol (SMTP) und/oder dergleichen unterstützen, ist jedoch nicht darauf beschränkt. Der Mailserver kann ankommende und ausgehende Mail-Nachrichten, welche gesendet, weitergeleitet und/oder auf andere Weise durch und/oder zum SYNONYM gelangen, routen, weiterleiten und verarbeiten.
[0095] Den Zugang zur SYNONYM-Mail kann durch eine Anzahl von APIs, welche von der jeweiligen Web-Server-Komponente und/oder Betriebssystem bereitgestellt werden, erreicht werden.
[0096] Auch ein Mailserver kann Kommunikation, Anfragen und/oder Antworten von Programmkomponenten, System, Benutzer und/oder Daten enthalten, damit kommunizieren, sie generieren, bekommen und/oder bereitstellen.
E-Mail-Client
[0097] Eine E-Mail-Client-Komponente 722 ist eine gespeicherte Programmkomponente, welche von einer CPU 703 ausgeführt wird. Der E-Mail-Client kann eine konventionelle E-Mail-Betrachtungsanwendung wie Apple Mail, Microsoft Entourage, Microsoft Outlook, Microsoft Outlook Express, Mozilla Thunderbird, und/oder dergleichen sein. E-Mail-Clients können eine Vielzahl von Transferprotokollen wie: IMAP, Microsoft Exchange, POP3, SMTP und/oder dergleichen unterstützen. Ein E-Mail-Client kann mit anderen Komponenten in einer Komponentensammlung und/oder ähnlichen Einrichtungen kommunizieren, einschliesslich mit sich selbst. Meistens kommuniziert der E-Mail-Client mit E-Mail-Servern, Betriebssystemen, anderen E-Mail-Clients und/oder dergleichen; z.B. kann er Kommunikation, Anfragen und/oder Antworten von Programmkomponenten, System, Benutzer und/oder Daten enthalten, damit kommunizieren, sie generieren, bekommen und/oder bereitstellen. Normalerweise stellt der E-Mail-Client eine Einrichtung zum Verfassen und Senden von elektronischen E-Mail-Nachrichten dar.
Verschlüsselungsserver
[0098] Eine Verschlüsselungsserver-Komponente 720 ist eine gespeicherte Programmkomponente, welche von einer CPU 703, vom Verschlüsselungsprozessor 726, Verschlüsselungsprozessorschnittstelle 727, Verschlüsselungsprozessorgerät 728 und/oder dergleichen ausgeführt wird. Verschlüsselungsprozessorschnittstellen erlauben die Beschleunigung von Verschlüsselungs- und/oder Entschlüsselungsanfragen durch die Verschlüsselungskomponente; jedoch kann die Verschlüsselungskomponente alternativ auf einer normalen CPU laufen. Die Verschlüsselungskomponente erlaubt die Verschlüsselung und/oder Entschlüsselung von bereitgestellten Daten. Die Verschlüsselungskomponente erlaubt beides: symmetrische und asymmetrische (z.B. Pretty Good Protection (PGP)) Verschlüsselung und/oder Entschlüsselung. Die Verschlüsselungskomponente kann Verschlüsselungstechniken wie: digitale Zertifikate (z.B. X.509 authentication framework), Digitalsignaturen, Doppelsignaturen, Kuvertierung, Zugriffschutz mit Passwortabfrage, Management von öffentlichen Schlüsseln und/oder dergleichen, verwenden, ist jedoch nicht darauf beschränkt. Die Verschlüsselungskomponente ermöglicht eine Vielzahl (Verschlüsselung und/oder Entschlüsselung) von Sicherheitsprotokollen wie: Checksum, Data Encryption Standard (DES), Elliptical Curve Encryption (ECC), International Data Encryption Algorithm (IDEA), Message Digest 5 (MD5), welches eine Einbahn-Hashfunktion ist), Passwörter, Rivest Cipher (RC5), Rijndael, RSA (welche ein Internetverschlüsselungs- und Authentifizierungssystem ist, das ein 1977 von Ron Rivest, Adi Shamir und Leonard Adleman entwickeltes Algorithmus ist), Secure Hash Algorithm (SHA), Secure Socket Layer (SSL), Secure Hypertext Transfer Protocol (HTTPS) und/oder dergleichen, jedoch nicht darauf beschränkt. Durch die Verwendung solcher Verschlüsselungssicherheitsprotokolle kann das SYNONYM die gesamte eingehende und ausgehende Kommunikation verschlüsseln und es kann als Knoten innerhalb eines Virtual Private Network (VPN) mit einem breiteren Kommunikationsnetzwerk dienen. Die Verschlüsselungskomponente ermöglicht den Prozess der «Sicherheitsautorisierung», wobei der Zugriff auf eine Ressource von einem Sicherheitsprotokoll verhindert wird, wobei die Verschlüsselungskomponente einen autorisierten Zugriff auf die gesicherte Ressource durchführt. Zusätzlich kann die Verschlüsselungskomponente eindeutige Identifikatoren für den Inhalt bereitstellen, z.B. durch den Einsatz eines MD5-Hash, um eine eindeutige Signatur für eine digitale Audiodatei zu erhalten. Eine Verschlüsselungskomponente kann mit anderen Komponenten in einer Komponentensammlung und/oder ähnlichen Einrichtungen kommunizieren, einschliesslich mit sich selbst. Die Verschlüsselungskomponente unterstützt Verschlüsselungsschemas, welche die sichere Übertragung von Informationen über ein Kommunikationsnetzwerk erlauben, so dass es für die SYNONYM-Komponente möglich wird, in sicheren Transaktionen einzugreifen, wenn dies gewünscht ist. Die Verschlüsselungskomponente ermöglicht den sicheren Zugang zu Ressourcen auf dem SYNONYM und ermöglicht den Zugang zu sicheren Ressourcen auf fernen Systemen; z.B. kann sie als ein Client und/oder Server von sicheren Ressourcen agieren. Meistens kommuniziert die Verschlüsselungskomponente mit Informationsservern, Betriebssystemen, anderen Programmkomponenten und/oder dergleichen; z.B. kann er Kommunikation, Anfragen und/oder Antworten von Programmkomponenten, System, Benutzer und/oder Daten enthalten, damit kommunizieren, sie generieren, bekommen und/oder bereitstellen.
Die SYNONYM-Datenbank
[0099] Die SYNONYM-Datenbankkomponente 719 kann in eine Datenbank und ihren gespeicherten Daten eingegliedert werden. Die Datenbank ist eine gespeicherte Programmkomponente, welche von der CPU ausgeführt wird; der gespeicherte Teil der Programmkomponente, welcher die CPU konfiguriert, um die gespeicherten Daten zu verarbeiten. Die Datenbank kann eine konventionelle, fehlertolerante, relationale, skalierbare, sichere Datenbank sein, wie Oracle oder Synbase. Relationale Datenbanken sind eine Erweiterung einer Einfachdatei. Relationale Datenbanken bestehen aus eine Reihe von verknüpften Tabellen. Die Tabellen sind mittels eines Schlüsselfeldes miteinander verbunden. Die Verwendung des Schlüsselfeldes erlaubt die Kombination der Tabellen durch Indexierung mit dem Schlüsselfeld; z.B. agieren die Schlüsselfelder als dimensionale Drehpunkte für die Kombination von Informationen aus verschiedenen Tabellen. Beziehungen identifizieren normalerweise zwischen den Tabellen aufrechterhaltene Links durch einen Abgleich von Primärschlüsseln. Primärschlüssel stellen Felder dar, welche eindeutig die Reihen einer Tabelle in einer relationalen Datenbank identifizieren. Um noch genauer zu sein, identifizieren sie Reihen einer Tabelle auf der «einen» Seite einer One-to-Many-Beziehung.
[0100] Alternativ kann die SYNONYM-Datenbank durch Verwendung verschiedener Standard-Datenstrukturen, wie einem Array, Hash, (verkettete) Liste, Struct, strukturierte Textdatei (z.B. XML), Tabelle und/oder dergleichen. Solche Datenstrukturen können im Speicher oder in (strukturierten) Dateien gespeichert werden. In einer anderen Alternative kann eine Objekt-orientierte Datenbank wie Frontier, ObjectStore, Poet, Zope und/oder dergleichen verwendet werden. Objektdatenbanken können eine Anzahl von Objektsammlungen umfassen, welche mittels einiger gemeinsamer Attribute zusammen gruppiert und/oder verkettet werden; sie können mit anderen Objektsammlungen mittels einiger gemeinsamer Attribute in Beziehung stehen. Objekt-orientierte Datenbanken arbeiten in ähnlicher Weise wie relationale Datenbanken, mit der Ausnahme, dass Objekte nicht nur Datenfragmente sind, sondern andere Arten von in einem gegebenen Objekt eingeschlossener Funktionalität aufweisen können. Wenn die SYNONYM-Datenbank als eine Datenstruktur implementiert ist, kann die Verwendung der SYNONYM-Datenbank 719 in eine andere Komponente, wie der SYNONYM-Komponente 735 integriert werden. Die Datenbank kann auch als eine Mischung von Datenstrukturen, Objekten und relationalen Strukturen implementiert sein. Datenbanken können durch standardisierte Datenverarbeitungstechniken in unzähligen Varianten konsolidiert und/oder verteilt werden. Teile der Datenbank, z.B. Tabellen, können exportiert und/oder importiert und daher dezentralisiert und/oder integriert werden.
[0101] In einer Ausführungsform umfasst die Datenbankkomponente 719 viele Tabellen 719a–g. Eine Benutzertabelle 719a umfasst Felder wie: Kunden-ID, CIF-Nummer, Name, eine Adresse und/oder dergleichen, ist aber nicht darauf beschränkt. Die Benutzertabelle kann mehrere Einheitskonten auf einem SYNONYM unterstützen und/oder verfolgen. Eine Kontotabelle 719b umfasst Felder wie: Kontonummer, Kontotyp, Kontoeröffnungsdatum, Vermögens-ID, Vermögenswert und/oder dergleichen, ist jedoch nicht darauf beschränkt. Eine Depottabelle 719c umfasst Felder wie: Depotnummer, Depottyp, Depotdatum und/oder dergleichen, ist jedoch nicht darauf beschränkt. Eine Anonymisierungstabelle 719d umfasst Felder wie: db-Name der Anonymisierung, db-ID der Anonymisierung, db-Anonymisierungstabelle und/oder dergleichen, ist aber nicht darauf beschränkt. Ein Synthetisierungstabelle 719e umfasst Felder wie: db-Name der Synthetisierung, db-ID der Synthetisierung, db-Synthetisierungstabelle, db-Synthetisierungsfeld und/oder dergleichen, ist jedoch nicht darauf beschränkt. Eine Transaktionstabelle 719f umfasst Felder wie: ID der Transaktion, erste Transaktionskontonummer, zweite Transaktionskontonummer, Transaktionstyp, Transaktionsbetrag und/oder dergleichen, ist jedoch nicht darauf beschränkt. Eine Tabelle für Anonymisierungsaustauschdaten 719g umfasst Felder wie: Austauschvorname, Austauschfamilienname, Austauschadresse und/oder dergleichen, ist jedoch nicht darauf beschränkt.
[0102] In einer Ausführungsform kann die SYNONYM-Datenbank mit anderen Datenbanksystemen interagieren. Zum Beispiel können beim Einsatz eines verteilten Datenbanksystems Suchvorgänge und Datenzugriff durch Suche der SYNONYM-Komponente die Kombination der SYNONYM-Datenbank, einer integrierten Datensicherheitsstufe der Datenbank als eine einzige Datenbankeinheit behandeln.
[0103] In einer Ausführungsform können Benutzerprogramme verschiedene Benutzerschnittstellenprimitive beinhalten, welche für einen Update des SYNONYM dienen können. Verschiedene Konten können auch proprietäre Datenbanktypen, abhängig von den Umgebungen und den Clienttypen, die vom SYNONYM bedient werden müssen, benötigen. Es wird angemerkt, dass jedes eindeutige Feld durchweg als Schlüsselfeld angegeben werden kann. In einer alternativen Ausführungsform wurden diese Tabellen in ihren eigenen Datenbanken und ihren eigenen jeweiligen Datenbankcontrollern (z.B. individuelle Datenbankcontroller für jede der obigen Tabellen) dezentralisiert. Durch die Verwendung von standardisierten Verarbeitungstechniken können die Datenbanken weiter an mehreren Computersystemen und/oder Speichergeräten verteilt werden. Auf die gleiche Weise können Konfigurationen der dezentralisierten Datenbankcontroller dadurch variiert werden, dass die verschiedenen Datenbankkomponenten 719a–g konsolidiert und/oder verteilt werden. Das SYNONYM kann so konfiguriert werden, dass es verschiedene Einstellungen, Eingaben und Parameter über Datenbankcontroller nachverfolgt.
[0104] Die SYNONYM-Datenbank kann mit Programmkomponenten in einer Programmkomponentensammlung kommunizieren, sie generieren, bekommen und/oder bereitstellen. Meistens kommuniziert die SYNONYM-Datenbank mit der SYNONYM-Komponente, mit anderen Programmkomponenten und/oder dergleichen. Die Datenbank kann andere Knoten und Daten betreffende Informationen enthalten, bewahren und bereitstellen.
Die SYNONYME
[0105] Die SYNONYM-Komponente 735 ist eine gespeicherte Programmkomponente, welche von der CPU ausgeführt wird. In einer Ausführungsform umschliesst die SYNONYM-Komponente eine und/oder alle Kombinationen von Aspekten des SYNONYM, welche in den vorangehenden Figuren beschrieben wurden. Als solches beeinflusst das SYNONYM das Zugreifen, das Bekommen und die Bereitstellung des Testens, der Informationen, der Dienste, der Transaktionen und/oder dergleichen über verschiedenen Kommunikationsnetzwerken.
[0106] Die SYNONYM-Komponente macht die Anonymisierung, Synthetisierung, das Testen von Produktionsumgebungen und/oder dergleichen und die Verwendung des SYNONYM möglich.
[0107] Die SYNONYM-Komponente, welche den Zugang von Informationen zwischen Knoten ermöglicht, kann durch den Einsatz von standardisierten Entwicklungstools und -sprachen entwickelt werden, wie: Apache Components, Assembler, ActiveX, ausführbare Binärdateien, (ANSI) (Objective) C (++), C# und/oder .NET, Datenbankadapter, CGI Skripten, Java, JavaScript, Mappingtools, prozedurale und Objekt-orientierte Entwicklungstools, PERL, PHP, Python, Shell-Skripten, SQL-Befehle, Web-Anwendungsservererweiterungen, Web-Entwicklungsumgebungen und -bibliotheken (z.B. ActiveX von Microsoft; Adobe AIR, FLEX & FLASH; AJAX; (D)HTML; Dojo; Java; JavaScript; jQuery(UI); MooTools; Prototype; script.sculo.us; Simple Object Access Protocol (SOAP); SWFObject; Yahoo! User Interface; und/oder dergleichen), WebObjects und/oder dergleichen, jedoch nicht darauf beschränkt. In einer Ausführungsform setzt der SYNONYM-Server einen Verschlüsselungsserver ein, um Kommunikationen zu verschlüsseln und zu entschlüsseln. Die SYNONYM-Komponente kann mit anderen Komponenten in einer Komponentensammlung und/oder ähnlichen Einrichtungen kommunizieren, einschliesslich mit sich selbst. Meistens kommuniziert die SYNONYM-Komponente mit der SYNONYM-Datenbank, mit Betriebssystemen, anderen Programmkomponenten und/oder dergleichen. Das SYNONYM kann Kommunikation, Anfragen und/oder Antworten von Programmkomponenten, System, Benutzer und/oder Daten enthalten, damit kommunizieren, sie generieren, bekommen und/oder bereitstellen.
Verteilte SYNONYME
[0108] Die Struktur und/oder der Betrieb irgendeiner der SYNONYM-Controller-Knotenkomponenten kann auf jede Weise kombiniert, konsolidiert und/oder verteilt werden, um die virtuelle Entwicklung und/oder Verteilung zu erleichtern. Auf dieselbe Weise kann die Komponentensammlung auf jede Art kombiniert werden, um die Verteilung und/oder Entwicklung zu erleichtern. Um dies zu erreichen, können die Komponenten in einer gemeinsamen Codebasis oder in einer Einrichtung, die dynamisch die Komponenten auf Anfrage laden kann, in eine integrierte Weise integrieren.
[0109] Die Komponentensammlung kann in unzähligen Varianten durch die standardisierte Datenverarbeitung und/oder Entwicklungstechniken konsolidiert und/oder verteilt werden. Mehrere Instanzen jeder beliebigen Programmkomponente in der Programmkomponentensammlung kann in einem einzigen Knoten instantiiert werden und/oder über vielen Knoten, um die Leistungsfähigkeit durch Lastverteilungs- und/oder Datenverarbeitungstechniken zu erhöhen. Weiter können einzelne Instanzen auch über mehreren Controllern und/oder Speichergeräte; z.B. Datenbanken, verteilt werden. Alle Programmkomponenteninstanzen und Controller, die zusammenarbeiten, können dies durch standardisierte Datenverarbeitungskommunikationstechniken tun.
[0110] Die Konfiguration des SYNONYM-Controllers hängt vom Kontext der Systemverteilung ab. Faktoren wie Budget, Kapazität, Standort und/oder Verwendung der zugrundeliegenden Hardwareressourcen, jedoch nicht darauf beschränkt, kann die Verteilungs- und Konfigurationsanforderungen beeinflussen. Unabhängig davon, ob sich aus der Konfiguration konsolidiertere und/oder integriertere Programmkomponenten, eine Reihe von Programmkomponenten, die noch mehr verteilt sind und/oder irgendeine Kombination zwischen einer konsolidierten und verteilten Konfiguration ergibt, können Daten kommuniziert, erhalten und/oder bereitgestellt werden. Instanzen von Komponenten, die in einer gemeinsamen Codebasis der Programmkomponentensammlung konsolidiert sind, können Daten kommunizieren, erhalten und/oder bereitstellen. Dies kann durch Datenverarbeitungskommunikationstechniken wie: Datenreferenzierung (z.B. Zeiger), internes Messaging, Kommunikation von Objektinstanzvariablen, geteilter Speicherbereich, Variablenübergabe und/oder dergleichen, jedoch nicht darauf beschränkt, zwischen Anwendungen erreicht werden.
[0111] Wenn Komponenten der Komponentensammlung diskret, geteilt und/oder bezogen aufeinander extern sind, kann die Kommunikation mit, der Erhalt und/oder die Bereitstellung von Daten für eine andere Komponente der Komponenten durch Datenverarbeitungskommunikationstechniken wie: Application Program Interfaces (API) Informationsübergabe; (verteilte) Component Object Model ((D)COM), (verteilte) Object Linking and Embedding ((D)OLE) und/oder dergleichen), Common Object Request Broker Architecture (CORBA), lokale und ferne Anwendungsprogrammschnittstellen Jini, Remote Method Invocation (RMI), SOAP, Prozesspipes, geteilte Dateien und/oder dergleichen, jedoch nicht darauf beschränkt, erfolgen. Nachrichten, die zwischen diskreten Komponenten der Komponenten für die Kommunikation zwischen Anwendungen oder innerhalb von Speicherbereichen einer einzelnen Komponente für die Kommunikation zwischen Anwendungen, können durch die Erzeugung und Analyse einer Grammatik ermöglicht werden. Eine Grammatik kann durch die Verwendung von standardisierten Entwicklungstools wie lex, yacc, XML, und/oder dergleichen entwickelt werden, welche wiederum die Basis der Kommunikationsnachrichten innerhalb und zwischen Komponenten bildet. Zum Beispiel kann eine Grammatik so ausgebildet sein, dass sie die Marken eines HTTP-Post-Befehls erkennt, z.B:
w3c -post http//…Value1
wobei Value1 als ein Parameter erkannt wird, da «http://» ein Teil der Syntax der Grammatik ist, und das, was folgt, als Teil des post-Wertes betrachtet wird. Auf dieselbe Weise kann mit einer solchen Grammatik eine Variable «Value1» in einen HTTP-Post-Befehl eingefügt und dann verschickt werden. Die Syntax der Grammatik selbst kann als strukturierte Daten dargestellt werden, welche interpretiert und/oder auf andere Weise zur Generierung des Analyse-Mechanismus (z.B. eine beschreibende Syntaxtextdatei, wie von lex, yacc, usw. verarbeitet) verwendet wird. Einmal, dass der Analysemechanismus generiert und/oder instantiiert wurde, kann es auch selbst strukturierte Daten wie : durch Zeichen (z.B. Tab) beschriebener Text, HTML, strukturierte Text-Ströme, XML, und/oder ähnliche strukturierte Daten verarbeiten. In einer anderen Ausführungsform können Datenverarbeitungsprotokolle zwischen Anwendungen selbst integrierte und/oder leicht zu bekommende Parser (z.B. den SOAP-Parser) aufweisen, die zur Analyse von Kommunikationsdaten verwendet werden können. Weiter kann die Analysegrammatik in weiterem Sinne als zur Analyse von Nachrichten verwendet werden, und zwar zur Analyse von: Datenbanken, Datensammlungen, gespeicherten Daten, strukturierten Daten und/oder dergleichen. Die gewünschte Konfiguration hängt wieder vom Kontext, der Umgebung und den Anforderungen der Systemverteilung ab.
[0112] Die Gesamtheit dieser Anmeldung (einschliesslich Deckblatt, Titel, Untertitel, Bereich, Hintergrund Zusammenfassung, kurze Beschreibung der Figuren, ausführlich Beschreibung, Ansprüche, Abstract, Figuren und andere) zeigt durch Darstellungen verschiedene Ausführungsformen, in denen die beanspruchte Erfindung ausgeführt werden kann. Die Vorteile und Merkmale der Anmeldung beziehen sich nur auf repräsentative Bespiele von Ausführungsformen und sind nicht erschöpfend und/oder abschliessend. Sie werden nur als Hilfe für das Verständnis und für die Lehre der beanspruchten Prinzipien präsentiert. Es versteht sich, dass sie nicht für alle beanspruchten Erfindungen repräsentativ sind. Folglich wurden hier bestimmte Aspekte der Offenbarung nicht beschrieben. Dass alternative Ausführungsformen für einen spezifischen Teil der Erfindung eventuell nicht beschrieben wurden oder dass weitere, nicht beschriebene alternative Ausführungsformen für einen Teil existieren können, soll nicht als Disclaimer dieser alternativen Ausführungsformen angesehen werden. Dies wird so betrachtet, dass viele jener unbeschriebenen Ausführungsformen dieselben Prinzipien der Erfindung beinhalten und dass andere äquivalent sind. Daher sollte es verstanden werden, dass andere Ausführungsformen verwendet werden können und funktionelle, logische, organisatorische, strukturelle und/oder topologische Änderungen gemacht werden können, ohne sich vom Rahmen und/oder Geist der Erfindung zu entfernen. Daher gelten in der gesamten Offenbarung alle Beispiele und/oder Ausführungsformen als nicht beschränkend. Auch sollten keine Rückschlüsse von diesen hier beschriebenen Ausführungsformen auf jene, die hier nicht beschrieben sind, gezogen werden, ausser im Hinblick auf Platzsparen und Wiederholung. Zum Beispiel soll verstanden werden, dass die logische und/oder topologische Struktur irgendeiner Kombination von irgendwelchen Programmkomponenten (eine Komponentensammlung), von anderen Komponenten und/oder von jedem vorliegenden Merkmalset wie in den Figuren beschrieben und/oder insgesamt nicht auf einen festen Betrieb und/oder Anordnung beschränkt sind, sondern dass jede offenbarte Reihenfolge eher beispielhaft ist und alle Äquivalente, unabhängig von ihrer Reihenfolge, in der Offenbarung in Betracht gezogen sind. Weiter sollte verstanden werden, dass solche Merkmale nicht auf serielle Ausführung beschränkt sind, sondern dass eher jede Anzahl von Threads, Prozessen, Diensten, Server und/oder dergleichen, welche asynchron, gleichzeitig, parallel, synchron und/oder dergleichen ausgeführt werden, von der Offenbarung in Betracht gezogen sind. Daher können einige dieser Merkmale zueinander widersprüchlich sein, insofern als dass sie nicht zur gleiche Zeit in einer einzigen Ausführungsform vorhanden sein können. Weiter sind einige Merkmale für einen Aspekt der Erfindung verwendbar und für andere Aspekte nicht. Zusätzlich umfasst die Offenbarung andere Erfindungen, welche zurzeit nicht beansprucht sind. Die Anmelderin behält sich alle Rechte für diese zurzeit nicht beanspruchten Erfindungen vor, einschliesslich des Rechts, solche Erfindungen zu beanspruchen, zusätzliche Anmeldungen, Continuations, Continuations-in-Part, Teilanmeldungen und/oder dergleichen einzureichen. Daher sollte verstanden werden, dass Vorteile, Ausführungsformen, Beispiele, funktionale Merkmale, logische, organisatorische, strukturelle, topologische und/oder andere Aspekte der Offenbarung nicht als Beschränkungen der Offenbarung, wie von den Ansprüchen definiert, oder als Beschränkung von Äquivalenten zu den Ansprüchen angesehen werden sollen.
Claims (7)
1. Umgebungsentwicklungsvorrichtung umfassend:
einen Speicher;
einen sich mit dem Speicher in Kommunikation befindenden Prozessor, welcher derart konfiguriert ist, dass er eine Vielzahl von im Speicher gespeicherten Verarbeitungsinstruktionen ausgibt, wobei der Prozessor Instruktionen ausgibt zum:
Empfangen einer Anfrage zur Erzeugung einer Verteilungsumgebung;
Identifizieren reeller Datensätze basierend auf die Anfrage;
Erzeugen variierter Daten aus den reellen Daten; Generieren einer synthetischen Entwicklungsumgebung, wobei die Generierung weiter Instruktionen umfasst zum:
Instantiieren von Benutzerkonten, Bevölkern der synthetischen Entwicklungsumgebung mit einem Profil von Testkomponenten,
Laden der variierten Daten in die synthetische Entwicklungsumgebung, und
Verteilen der synthetischen Entwicklungsumgebung zu einem in der Anfrage angegebenen Standort.
2. Verwendung der Umgebungsentwicklungsvorrichtung nach Anspruch 1 zur Erzeugung einer virtuellen Bank.
3. Verwendung der Umgebungsentwicklungsvorrichtung nach Anspruch 1 zur Erzeugung von synthetischen Spielverteilungsumgebungen.
4. Verwendung der Umgebungsentwicklungsvorrichtung nach Anspruch 1 zur Erzeugung synthetischer Simulationsverteilungsumgebungen.
5. Verwendung der Umgebungsentwicklungsvorrichtung nach Anspruch 1 zur Erzeugung synthetischer Bildungsverteilungsumgebungen.
6. Verwendung der Umgebungsentwicklungsvorrichtung nach Anspruch 1 zur Erzeugung synthetischer medizinischer Verteilungsumgebungen.
7. Verwendung der Umgebungsentwicklungsvorrichtung nach Anspruch 1 zur Qualitätssicherung.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US9500908P | 2008-09-08 | 2008-09-08 | |
| PCT/US2009/056278 WO2010028395A1 (en) | 2008-09-08 | 2009-09-08 | Apparatuses, methods and systems for providing a virtual development and deployment environment including real and synthetic data |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CH702260B1 true CH702260B1 (de) | 2014-06-30 |
Family
ID=41797563
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CH00730/11A CH702260B1 (de) | 2008-09-08 | 2009-09-08 | Umgebungsentwicklungsvorrichtung. |
Country Status (3)
| Country | Link |
|---|---|
| US (2) | US8930275B2 (de) |
| CH (1) | CH702260B1 (de) |
| WO (1) | WO2010028395A1 (de) |
Families Citing this family (116)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8204831B2 (en) * | 2006-11-13 | 2012-06-19 | International Business Machines Corporation | Post-anonymous fuzzy comparisons without the use of pre-anonymization variants |
| CN101853264B (zh) * | 2009-04-03 | 2012-12-19 | 鸿富锦精密工业(深圳)有限公司 | 提供主动式网页用户界面的方法 |
| US9978024B2 (en) * | 2009-09-30 | 2018-05-22 | Teradata Us, Inc. | Workflow integration with Adobe™ Flex™ user interface |
| US12045364B1 (en) | 2010-04-21 | 2024-07-23 | Stanley Trepetin | Mathematical method for performing homomorphic operations |
| US9946810B1 (en) | 2010-04-21 | 2018-04-17 | Stan Trepetin | Mathematical method for performing homomorphic operations |
| US8626749B1 (en) * | 2010-04-21 | 2014-01-07 | Stan Trepetin | System and method of analyzing encrypted data in a database in near real-time |
| US20130086557A1 (en) * | 2010-06-21 | 2013-04-04 | Arul Murugan Alwar | System for testing and certifying a virtual appliance on a customer computer system |
| US8782434B1 (en) | 2010-07-15 | 2014-07-15 | The Research Foundation For The State University Of New York | System and method for validating program execution at run-time |
| US8838962B2 (en) | 2010-09-24 | 2014-09-16 | Bryant Christopher Lee | Securing locally stored Web-based database data |
| JP5649171B2 (ja) * | 2010-11-30 | 2015-01-07 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | クライアント上で実行されるアプリケーションのローカル環境を共有可能にする方法、並びにそのサーバ及びコンピュータ・プログラム |
| US9239708B2 (en) * | 2010-12-28 | 2016-01-19 | Microsoft Technology Licensing, Llc | Contextually intelligent code editing |
| US8463752B2 (en) | 2011-03-07 | 2013-06-11 | Sap Ag | Rule-based anonymizer for business data |
| US8850398B1 (en) * | 2011-04-24 | 2014-09-30 | Israel L'Heureux | Automated testing of application programs from an application program ecosystem |
| US9235412B1 (en) | 2011-05-08 | 2016-01-12 | Panaya Ltd. | Identifying dependencies between configuration elements and transactions |
| US9092579B1 (en) | 2011-05-08 | 2015-07-28 | Panaya Ltd. | Rating popularity of clusters of runs of test scenarios based on number of different organizations |
| US9104815B1 (en) | 2011-05-08 | 2015-08-11 | Panaya Ltd. | Ranking runs of test scenarios based on unessential executed test steps |
| US9170925B1 (en) | 2011-05-08 | 2015-10-27 | Panaya Ltd. | Generating test scenario templates from subsets of test steps utilized by different organizations |
| US9201775B1 (en) | 2011-05-08 | 2015-12-01 | Panaya Ltd. | Manipulating a test scenario template based on divergent routes found in test runs from different organizations |
| US9032360B1 (en) | 2011-05-08 | 2015-05-12 | Panaya Ltd. | Selecting a test scenario template based on similarity of testing profiles belonging to different organizations |
| US9170926B1 (en) | 2011-05-08 | 2015-10-27 | Panaya Ltd. | Generating a configuration test based on configuration tests of other organizations |
| US9239777B1 (en) | 2011-05-08 | 2016-01-19 | Panaya Ltd. | Generating test scenario templates from clusters of test steps utilized by different organizations |
| US9201772B1 (en) | 2011-05-08 | 2015-12-01 | Panaya Ltd. | Sharing test scenarios among organizations while protecting proprietary data |
| US9069904B1 (en) | 2011-05-08 | 2015-06-30 | Panaya Ltd. | Ranking runs of test scenarios based on number of different organizations executing a transaction |
| US9201774B1 (en) | 2011-05-08 | 2015-12-01 | Panaya Ltd. | Generating test scenario templates from testing data of different organizations utilizing similar ERP modules |
| US9201776B1 (en) | 2011-05-08 | 2015-12-01 | Panaya Ltd. | Updating a test scenario template according to divergent routes |
| US9317404B1 (en) | 2011-05-08 | 2016-04-19 | Panaya Ltd. | Generating test scenario templates from test runs collected from different organizations |
| US9170809B1 (en) | 2011-05-08 | 2015-10-27 | Panaya Ltd. | Identifying transactions likely to be impacted by a configuration change |
| US9311224B1 (en) | 2011-05-08 | 2016-04-12 | Panaya Ltd. | Manipulating a test based on a subset of similar divergent routes from different organizations |
| US9134961B1 (en) | 2011-05-08 | 2015-09-15 | Panaya Ltd. | Selecting a test based on connections between clusters of configuration changes and clusters of test scenario runs |
| US9201773B1 (en) | 2011-05-08 | 2015-12-01 | Panaya Ltd. | Generating test scenario templates based on similarity of setup files |
| US9348735B1 (en) | 2011-05-08 | 2016-05-24 | Panaya Ltd. | Selecting transactions based on similarity of profiles of users belonging to different organizations |
| US9104811B1 (en) | 2011-05-08 | 2015-08-11 | Panaya Ltd. | Utilizing testing data collected from different organizations to generate test scenario templates that suit a user profile |
| US9317412B1 (en) | 2011-05-08 | 2016-04-19 | Panaya Ltd. | Selecting a configuration test based on testing data from different organizations |
| US20120303503A1 (en) | 2011-05-26 | 2012-11-29 | First Data Corporation | Systems and Methods for Tokenizing Financial Information |
| GB201112665D0 (en) * | 2011-07-22 | 2011-09-07 | Vodafone Ip Licensing Ltd | Data anonymisation |
| US8417609B2 (en) * | 2011-08-19 | 2013-04-09 | Bank Of America Corporation | Methods and systems for modeling deposits' data |
| EP2653984A1 (de) | 2012-04-18 | 2013-10-23 | Software AG | Verfahren und System zur Anonymisierung von Daten während des Exports |
| US9053442B2 (en) | 2012-05-08 | 2015-06-09 | International Business Machines Corporation | Multiple project areas in a development environment |
| US8930917B2 (en) * | 2012-05-22 | 2015-01-06 | Adobe Systems Incorporated | Method and apparatus for mobile application development and testing that avoids repackaging and reinstallation |
| US8776021B1 (en) * | 2012-06-07 | 2014-07-08 | Amazon Technologies, Inc. | Application experiment system |
| US9122873B2 (en) | 2012-09-14 | 2015-09-01 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
| US9069782B2 (en) | 2012-10-01 | 2015-06-30 | The Research Foundation For The State University Of New York | System and method for security and privacy aware virtual machine checkpointing |
| US9171182B2 (en) * | 2012-10-31 | 2015-10-27 | Tata Consultancy Services Limited | Dynamic data masking |
| US9298941B2 (en) | 2012-11-12 | 2016-03-29 | EPI-USE Systems, Ltd. | Secure data copying |
| US9003479B2 (en) | 2012-12-11 | 2015-04-07 | International Business Machines Corporation | Uniformly transforming the characteristics of a production environment |
| US9842044B2 (en) * | 2013-02-13 | 2017-12-12 | Sugarcrm Inc. | Commit sensitive tests |
| US10083027B2 (en) * | 2013-03-14 | 2018-09-25 | Solano Labs, Inc. | Systems and methods for managing software development environments |
| US9215075B1 (en) | 2013-03-15 | 2015-12-15 | Poltorak Technologies Llc | System and method for secure relayed communications from an implantable medical device |
| US9760470B2 (en) * | 2013-05-15 | 2017-09-12 | Mitsubishi Electric Corporation | Device, method, and program analysis of new source code to be added to execution program to check for bug |
| US9860216B2 (en) | 2013-09-16 | 2018-01-02 | Axis Ab | Anonymous decisions in an access control system |
| US9304796B1 (en) * | 2013-09-27 | 2016-04-05 | Amazon Technologies, Inc. | Identification of virtual computing instance issues |
| US9246935B2 (en) | 2013-10-14 | 2016-01-26 | Intuit Inc. | Method and system for dynamic and comprehensive vulnerability management |
| US10210197B2 (en) * | 2013-10-18 | 2019-02-19 | New York Air Brake Corporation | Dynamically scalable distributed heterogenous platform relational database |
| US9501345B1 (en) | 2013-12-23 | 2016-11-22 | Intuit Inc. | Method and system for creating enriched log data |
| US9323926B2 (en) | 2013-12-30 | 2016-04-26 | Intuit Inc. | Method and system for intrusion and extrusion detection |
| US20150304343A1 (en) | 2014-04-18 | 2015-10-22 | Intuit Inc. | Method and system for providing self-monitoring, self-reporting, and self-repairing virtual assets in a cloud computing environment |
| US9325726B2 (en) | 2014-02-03 | 2016-04-26 | Intuit Inc. | Method and system for virtual asset assisted extrusion and intrusion detection in a cloud computing environment |
| US9866581B2 (en) | 2014-06-30 | 2018-01-09 | Intuit Inc. | Method and system for secure delivery of information to computing environments |
| US10757133B2 (en) | 2014-02-21 | 2020-08-25 | Intuit Inc. | Method and system for creating and deploying virtual assets |
| CN104866509A (zh) * | 2014-02-26 | 2015-08-26 | 阿里巴巴集团控股有限公司 | 页面元素的定位方法及装置 |
| US9276945B2 (en) | 2014-04-07 | 2016-03-01 | Intuit Inc. | Method and system for providing security aware applications |
| US20150269064A1 (en) * | 2014-03-21 | 2015-09-24 | Intuit Inc. | Method and system for testing cloud based applications in a production environment using fabricated user data |
| US20150278523A1 (en) * | 2014-03-31 | 2015-10-01 | Intuit Inc. | Method and system for testing cloud based applications and services in a production environment using segregated backend systems |
| US9245117B2 (en) | 2014-03-31 | 2016-01-26 | Intuit Inc. | Method and system for comparing different versions of a cloud based application in a production environment using segregated backend systems |
| US11294700B2 (en) | 2014-04-18 | 2022-04-05 | Intuit Inc. | Method and system for enabling self-monitoring virtual assets to correlate external events with characteristic patterns associated with the virtual assets |
| US9374389B2 (en) | 2014-04-25 | 2016-06-21 | Intuit Inc. | Method and system for ensuring an application conforms with security and regulatory controls prior to deployment |
| US9900322B2 (en) | 2014-04-30 | 2018-02-20 | Intuit Inc. | Method and system for providing permissions management |
| US9378385B1 (en) * | 2014-05-21 | 2016-06-28 | Symantec Corporation | Systems and methods for determining whether transmission of sensitive data is expected |
| US9330263B2 (en) | 2014-05-27 | 2016-05-03 | Intuit Inc. | Method and apparatus for automating the building of threat models for the public cloud |
| US9473481B2 (en) | 2014-07-31 | 2016-10-18 | Intuit Inc. | Method and system for providing a virtual asset perimeter |
| US10102082B2 (en) | 2014-07-31 | 2018-10-16 | Intuit Inc. | Method and system for providing automated self-healing virtual assets |
| US9710672B2 (en) * | 2014-09-08 | 2017-07-18 | Uri Jacob Braun | System for and method of controllably disclosing sensitive data |
| US10333901B1 (en) * | 2014-09-10 | 2019-06-25 | Amazon Technologies, Inc. | Policy based data aggregation |
| US9349022B2 (en) * | 2014-10-01 | 2016-05-24 | Sap Se | Providing integrated role-based access control |
| US10216747B2 (en) | 2014-12-05 | 2019-02-26 | Microsoft Technology Licensing, Llc | Customized synthetic data creation |
| US9892281B1 (en) * | 2015-07-28 | 2018-02-13 | HCA Holdings, Inc. | Testing using deidentified production data |
| US10055297B1 (en) | 2015-08-21 | 2018-08-21 | Amdocs Development Limited | System, method, and computer program for smart database inflation |
| US10284643B2 (en) * | 2015-09-24 | 2019-05-07 | Ebay Inc. | System and method for cloud deployment optimization |
| US9830149B2 (en) * | 2016-01-14 | 2017-11-28 | International Business Machines Corporation | Automatic extraction of sensitive code fragments to be executed in a sandbox |
| US11010409B1 (en) * | 2016-03-29 | 2021-05-18 | EMC IP Holding Company LLC | Multi-streaming with synthetic replication |
| US10540266B2 (en) * | 2016-09-27 | 2020-01-21 | Profilence Oy | Method and system for testing software based system |
| US10055330B2 (en) * | 2016-11-29 | 2018-08-21 | Bank Of America Corporation | Feature file validation tool |
| US10437708B2 (en) * | 2017-01-26 | 2019-10-08 | Bank Of America Corporation | System for refreshing and sanitizing testing data in a low-level environment |
| US10496847B2 (en) * | 2017-02-16 | 2019-12-03 | Visa International Service Association | Systems and methods for anonymized behavior analysis |
| US10740470B2 (en) | 2017-05-31 | 2020-08-11 | Shiftleft Inc. | System and method for application security profiling |
| US10534698B2 (en) | 2017-08-24 | 2020-01-14 | Salesforce.Com, Inc. | Stateless self-sufficient test agents |
| US10956574B2 (en) | 2017-10-07 | 2021-03-23 | Shiftleft Inc. | System and method for securing applications through an application-aware runtime agent |
| US11074362B2 (en) | 2017-12-04 | 2021-07-27 | ShiftLeft, Inc. | System and method for code-based protection of sensitive data |
| US10613971B1 (en) * | 2018-01-12 | 2020-04-07 | Intuit Inc. | Autonomous testing of web-based applications |
| US10481998B2 (en) | 2018-03-15 | 2019-11-19 | Microsoft Technology Licensing, Llc | Protecting sensitive information in time travel trace debugging |
| US11106820B2 (en) * | 2018-03-19 | 2021-08-31 | International Business Machines Corporation | Data anonymization |
| CN108733410B (zh) * | 2018-04-13 | 2021-10-01 | 南京南瑞继保电气有限公司 | 一种指令优化方法 |
| US10877927B2 (en) * | 2018-05-31 | 2020-12-29 | Microsofttechnology Licensing, Llc | Distributed computing system with a synthetic data as a service asset assembly engine |
| US11157563B2 (en) * | 2018-07-13 | 2021-10-26 | Bank Of America Corporation | System for monitoring lower level environment for unsanitized data |
| US11514172B2 (en) | 2018-11-15 | 2022-11-29 | Grabango Co. | System and method for information flow analysis of application code |
| US12678067B1 (en) | 2019-03-20 | 2026-07-14 | Biological Art Group, Inc. | Telemetry implants |
| GB201905966D0 (en) * | 2019-04-29 | 2019-06-12 | Palantir Technologies Inc | Security system and method |
| US11294926B1 (en) | 2019-05-31 | 2022-04-05 | Facteus, Inc. | Master extract, transform, and load (ETL) application for accommodating multiple data source types having disparate data formats |
| US11023365B2 (en) * | 2019-09-20 | 2021-06-01 | The Toronto-Dominion Bank | Systems and methods for automated provisioning of a virtual mainframe test environment |
| CN110879769B (zh) * | 2019-10-16 | 2024-01-26 | 中国航空工业集团公司洛阳电光设备研究所 | 一种基于动态可配置框架的嵌入式系统测试环境构建方法 |
| CN111158645B (zh) | 2019-12-10 | 2022-09-20 | 杭州中天微系统有限公司 | 提供集成开发环境的系统和方法 |
| CN111367810B (zh) * | 2020-03-09 | 2024-03-01 | 杭州迪普科技股份有限公司 | 测试环境生成方法、装置、系统、电子设备及可读介质 |
| US10860466B1 (en) * | 2020-03-18 | 2020-12-08 | Capital One Services, Llc | Systems, methods and media for testing computer-executable code involving sensitive-information domains |
| US11423148B2 (en) * | 2020-07-02 | 2022-08-23 | Dell Products L.P. | Preventing discovery of unique identifiers in firmware |
| CN112636966A (zh) * | 2020-12-18 | 2021-04-09 | 中国人民解放军国防科技大学 | 一种基于远程调试协议的应用批量部署方法 |
| CN114692191A (zh) | 2020-12-30 | 2022-07-01 | 华为技术有限公司 | 一种数据脱敏方法、装置及存储系统 |
| CN112699041B (zh) * | 2021-01-04 | 2024-03-26 | 中车青岛四方车辆研究所有限公司 | 一种嵌入式软件自动部署方法、系统及设备 |
| LU500189B1 (en) | 2021-05-21 | 2022-11-21 | Microsoft Technology Licensing Llc | Using entropy to prevent inclusion of payload data in code execution log data |
| US11675817B1 (en) | 2021-06-22 | 2023-06-13 | Wells Fargo Bank, N.A. | Synthetic data generation |
| CN113468052B (zh) * | 2021-06-30 | 2022-07-26 | 建信金融科技有限责任公司 | 动态挡板测试方法及装置 |
| US12079284B2 (en) * | 2021-08-16 | 2024-09-03 | Sap Se | Generating data regulation compliant data from application interface data |
| US11899525B2 (en) | 2022-02-23 | 2024-02-13 | Microsoft Technology Licensing, Llc | Reproduction of graph data during query evaluation |
| CN114911486A (zh) * | 2022-03-19 | 2022-08-16 | 西安超越申泰信息科技有限公司 | 基于虚拟化技术的系统安装方法、系统、终端及存储介质 |
| US12380217B2 (en) | 2022-03-22 | 2025-08-05 | International Business Machines Corporation | Federated generative models for website assessment |
| CN115659884A (zh) * | 2022-10-21 | 2023-01-31 | 深圳云豹智能有限公司 | 接口信号处理方法、装置、计算机设备存储介质 |
| CN119065862B (zh) * | 2024-11-05 | 2025-03-18 | 浙江晶科储能有限公司 | 储能设备的生产消费平衡方法及电子设备 |
Family Cites Families (31)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5021997A (en) * | 1986-09-29 | 1991-06-04 | At&T Bell Laboratories | Test automation system |
| US6032159A (en) * | 1996-11-27 | 2000-02-29 | Altera Corporation | Apparatus and method for annotated bulk copying files to a database |
| US7100195B1 (en) * | 1999-07-30 | 2006-08-29 | Accenture Llp | Managing user information on an e-commerce system |
| US6633878B1 (en) * | 1999-07-30 | 2003-10-14 | Accenture Llp | Initializing an ecommerce database framework |
| US6907546B1 (en) * | 2000-03-27 | 2005-06-14 | Accenture Llp | Language-driven interface for an automated testing framework |
| GB2377775A (en) * | 2001-07-18 | 2003-01-22 | Ibm | Distributing programs to processing units in a network using information on the capabilities of the units |
| US20030046029A1 (en) * | 2001-09-05 | 2003-03-06 | Wiener Jay Stuart | Method for merging white box and black box testing |
| US7158979B2 (en) * | 2002-05-22 | 2007-01-02 | Ingenix, Inc. | System and method of de-identifying data |
| US20040060035A1 (en) * | 2002-09-24 | 2004-03-25 | Eric Ustaris | Automated method and system for building, deploying and installing software resources across multiple computer systems |
| WO2004086222A2 (en) * | 2003-03-26 | 2004-10-07 | Bizplus Limited | Development of software systems |
| US7596778B2 (en) * | 2003-07-03 | 2009-09-29 | Parasoft Corporation | Method and system for automatic error prevention for computer software |
| US7337176B1 (en) * | 2003-08-29 | 2008-02-26 | Sprint Communications Company L.P. | Data loading tool for loading a database |
| US20050086250A1 (en) * | 2003-10-16 | 2005-04-21 | Richardson Ellen K. | Select/refresh method and apparatus |
| US20050086457A1 (en) * | 2003-10-21 | 2005-04-21 | Hohman Jennifer L. | System and method for providing user controlled migration of a client computer |
| US7555493B2 (en) * | 2004-03-08 | 2009-06-30 | Transreplicator, Inc. | Apparatus, systems and methods for relational database replication and proprietary data transformation |
| US7480898B2 (en) * | 2004-06-11 | 2009-01-20 | American Express Travel Related Services Co., Inc. | System and method for building full batch test environments |
| US7523023B1 (en) * | 2004-09-20 | 2009-04-21 | The Mathworks, Inc. | Automatic generation of component interfaces for computational hardware implementations generated from a block diagram model |
| US7509684B2 (en) * | 2004-10-09 | 2009-03-24 | Microsoft Corporation | Strategies for sanitizing data items |
| US7526759B2 (en) * | 2005-04-19 | 2009-04-28 | International Business Machines Corporation | Debugging prototyped system solutions in solution builder wizard environment |
| US20060230083A1 (en) * | 2005-04-08 | 2006-10-12 | Microsoft Corporation | Method and system for profiling and populating a database |
| US7840944B2 (en) * | 2005-06-30 | 2010-11-23 | Sap Ag | Analytical regression testing on a software build |
| US9514163B2 (en) * | 2005-11-17 | 2016-12-06 | International Business Machines Corporation | Database consolidation tool |
| US7930683B2 (en) * | 2006-03-31 | 2011-04-19 | Sap Ag | Test automation method for software programs |
| US9830145B2 (en) * | 2006-08-14 | 2017-11-28 | Federal Home Loan Mortgage Corporation (Freddie Mac) | Systems and methods for infrastructure and middleware provisioning |
| US7523122B2 (en) * | 2006-09-25 | 2009-04-21 | Microsoft Corporation | Automatic discovery of application settings' storage locations |
| US20080098003A1 (en) * | 2006-10-20 | 2008-04-24 | Oracle International Corporation | Database workload replay remapping infrastructure |
| US20080201227A1 (en) * | 2006-11-07 | 2008-08-21 | Lucia Urban Bakewell | Interactive, Internet-based, trip planning, travel resource, travel community, virtual travel, travel-based education, travel-related gaming and virtual/live tour system, methods, and processes, emphasizing a user's ability to tailor complete travel, trip, route, game and touring choices to unique user-specified personal interests, preferences, and special requirements for self and companions |
| US7933932B2 (en) * | 2006-11-14 | 2011-04-26 | Microsoft Corporation | Statistics based database population |
| US9015301B2 (en) * | 2007-01-05 | 2015-04-21 | Digital Doors, Inc. | Information infrastructure management tools with extractor, secure storage, content analysis and classification and method therefor |
| US8230416B2 (en) * | 2007-12-31 | 2012-07-24 | Sap Ag | System, method and article of manufacture for using shadow installations of software modules during distributed system upgrade |
| US8141029B2 (en) * | 2008-05-12 | 2012-03-20 | Expressor Software | Method and system for executing a data integration application using executable units that operate independently of each other |
-
2009
- 2009-09-08 US US12/555,791 patent/US8930275B2/en active Active
- 2009-09-08 CH CH00730/11A patent/CH702260B1/de not_active IP Right Cessation
- 2009-09-08 WO PCT/US2009/056278 patent/WO2010028395A1/en not_active Ceased
-
2014
- 2014-11-24 US US14/552,036 patent/US20150127575A1/en not_active Abandoned
Also Published As
| Publication number | Publication date |
|---|---|
| WO2010028395A1 (en) | 2010-03-11 |
| US20150127575A1 (en) | 2015-05-07 |
| US20100192220A1 (en) | 2010-07-29 |
| US8930275B2 (en) | 2015-01-06 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8930275B2 (en) | Apparatuses, methods and systems for providing a virtual development and deployment environment including real and synthetic data | |
| DE112021004344B4 (de) | Konsensdienst für Blockchain-Netzwerke | |
| DE112020005075T5 (de) | Effiziente schwellenwertspeicherung von datenobjekten | |
| DE112020005289T5 (de) | Teilweise sortierte blockchain | |
| US20200184847A1 (en) | A system and method for on-premise cyber training | |
| DE112021002797T5 (de) | Datenschutzerhaltende architektur für genehmigungspflichtige blockchains | |
| DE112021000688T5 (de) | Indexstruktur für blockchain-ledger | |
| DE10148194A1 (de) | Computersystem | |
| DE112011102394T5 (de) | Verwalten und Optimieren von Workflows zwischen Computeranwendungen | |
| DE112021004115B4 (de) | Sicherheitssystem für eine Segmentierung von Computerdatei-Metadaten | |
| DE112021006331T5 (de) | Minimieren der auswirkungen von fehlerhaft funktionierenden peers auf eine blockchain | |
| DE112021004613T5 (de) | Redigierbare blockchain | |
| Al-Dhaqm et al. | Model derivation system to manage database forensic investigation domain knowledge | |
| DE102021125859A1 (de) | Konfidenzberechnungen auf datenqualitätsgrundlage für aus zeitreihendaten abgeleitete kpis | |
| Taylor et al. | A privacy-preserving validation server prototype | |
| US8595628B2 (en) | Method and system for reviewing text files using distributable review data packets | |
| DE112021005625T5 (de) | Automatisiertes zusammenführen von dlt-netzwerken | |
| DE112022000423T5 (de) | Automatisches erzeugen von datensätzen durch verarbeiten von kollaborationsforen unter verwendung von techniken künstlicher intelligenz | |
| CN119829683A (zh) | 一种政务数据共享系统、方法、设备及存储介质 | |
| CH701481B1 (de) | Prozessmanagement. | |
| Huisman et al. | On the industrial application of critical software verification with VerCors | |
| Fagerström et al. | Verdict machinery: On the need to automatically make sense of test results | |
| CH719512A2 (de) | Mehrkanal-nachrichtenübermittlungssysteme und -verfahren. | |
| EP3819798A1 (de) | Verfahren und system zur ausführung eines identity und access management systems | |
| DE102019129762B3 (de) | Verfahren und System zur Ausführung eines Identity und Access Ma-nagement Systems |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PL | Patent ceased |