DE69434975T2 - Verfahren und vorrichtung zum konfigurieren von systemen - Google Patents

Verfahren und vorrichtung zum konfigurieren von systemen Download PDF

Info

Publication number
DE69434975T2
DE69434975T2 DE69434975T DE69434975T DE69434975T2 DE 69434975 T2 DE69434975 T2 DE 69434975T2 DE 69434975 T DE69434975 T DE 69434975T DE 69434975 T DE69434975 T DE 69434975T DE 69434975 T2 DE69434975 T2 DE 69434975T2
Authority
DE
Germany
Prior art keywords
configuration
component
instance
model
constraint
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69434975T
Other languages
English (en)
Other versions
DE69434975D1 (de
Inventor
John Austin LYNCH
David Austin FRANKE
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Versata Development Group Inc
Original Assignee
Versata Development Group Inc
Trilogy Development Group Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=21908252&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE69434975(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Versata Development Group Inc, Trilogy Development Group Inc filed Critical Versata Development Group Inc
Application granted granted Critical
Publication of DE69434975D1 publication Critical patent/DE69434975D1/de
Publication of DE69434975T2 publication Critical patent/DE69434975T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/04Constraint-based CAD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)
  • Electrotherapy Devices (AREA)
  • Transmitters (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Electrical Discharge Machining, Electrochemical Machining, And Combined Machining (AREA)

Description

  • 1. SACHGEBIET DER ERFINDUNG
  • Die Erfindung betrifft das Gebiet der computerbasierten Systemkonfiguration.
  • 2. STAND DER TECHNIK
  • Das Konfigurieren eines Systems bezieht sich auf den Vorgang der Auswahl und Verbindung von Komponenten zur Erfüllung einer bestimmten Notwendigkeit oder Anforderung. Wenn ein System auf einer begrenzten Anzahl von Komponenten beruht, kann der Prozess der Systemkonfiguration relativ unkompliziert sein. Zum Beispiel erfordert der Kauf eines Autos, dass ein Händler ein System (Auto und verschiedene Optionen) konfiguriert, um eine Kundenanforderung zu erfüllen. Nach der Auswahl aus einer Mehrzahl von Modellen schließt der Händler die Transaktion durch die Wahl von Optionen zur Konfiguration und zur Preisbestimmung eines Autos ab. Die Konfiguration eines solch einfachen Systems kann mit Papier und Bleistift erfolgen.
  • Wenn die Spezifikationen jedoch kundenspezifischer und verschiedenartiger werden, erhöht sich die Anzahl der Konfigurationsalternativen, und die Aufgabe der Konfiguration eines Systems wird immer komplizierter. Diese erhöhte Kompliziertheit hat zu einem Bedarf an computergestützter Hilfe beim Konfigurationsprozess geführt. Frühe computergestützte Systeme erweitern unabhängig generierte Konfigurationsaufträge für Systeme in Produktionsaufträge. Sie erfüllen nicht den eigentlichen Bedarf an computergestützten Werkzeugen vor der Auftragserweiterung. Das heißt, sie lassen die eigentliche Erzeugung einer Systemkonfiguration auf der Grundlage der Eingabe von Notwendigkeiten und/oder Anforderungen außer Acht.
  • Ein Beispiel für ein komplexes System ist ein Desktop-Computersystem. Die verfügbaren Konfigurationsalternativen eines Computersystems sind zahlreich und vielfältig, darunter Alternativen, die bei der Wahl des Mikroprozessors, Motherboards, Monitors, der Grafikkarte, Speicherchips, Stromversorgung, Speichergeräte, Speichergerätsteuerungen, Modems und Software verfügbar werden.
  • Das Konfigurieren eines Desktop-Computersystems erfordert, dass eine gewählte Komponente mit den anderen Komponenten im konfigurierten System kompatibel ist. Zum Beispiel muss die Stromversorgung ausreichend sein, um Strom an alle Systemkomponenten zu liefern. Weiterhin müssen Monitor und Grafikkarte (z. B. Auflösung) und das Speichergerät mit seiner Steuerung (z. B. SCSI-Schnittstelle) kompatibel sein. Ein Motherboard muss über genügend Einbauplätze verfügen, um alle in das System installierten Platinen aufzunehmen.
  • Die physischen Beschränkungen des Gehäuses, in dem die Systemkomponenten untergebracht sind, werden ebenfalls berücksichtigt. Das Gehäuse hat eine feste Anzahl an Einbaurahmen für Speichergeräte (z. B. Diskettenlaufwerke, Festplattenlaufwerke oder Bandlaufwerke). Diese Einbaurahmen haben weitere Eigenschaften, die ihre Verwendung bestimmen. Zum Beispiel kann sich ein Einbaurahmen vorne im Gehäuse befinden und von der Frontplatte des Gehäuses zugänglich sein. Ein anderer Einbaurahmen kann hinter den von vorne zugänglichen Einbaurahmen angeordnet und so auf Geräte beschränkt sein, die nicht zugänglich zu sein brauchen (z. B. ein Festplattenlaufwerk). Einbaurahmen können in voller oder nur in halber Höhe vorliegen. Bevor ein Speichergerät in die Konfiguration aufgenommen werden kann, muss ein Konfigurationssystem den Rahmen erkennen, in dem das Speichergerät untergebracht wird. Dies erfordert, dass zumindest die Zugänglichkeit und Höhe des Speichergeräts untersucht werden müssen, um dessen Kompatibilität mit einem verfügbaren Einbaurahmen im Gehäuse zu bestimmen.
  • Die Verbindung zwischen einem Speichergerät und seiner Steuerung muss auf der Grundlage von deren Ort bestimmt werden. Das Kabel, das das Speichergerät und seine Steuerung verbindet, muss kompatible physische Schnittstellen (z. B. 24-Pin-Stecker und 24-Pin-Buchse) aufweisen.
  • Ein Verfahren zur Einrichtung einer Kommunikationsstrecke in einem Computersystem wird als Prioritätsverkettung bezeichnet. Die Prioritätskette bietet die Möglichkeit, Komponenten so miteinander zu verbinden, dass ein Signal durch eine Komponente hindurch und dann zur nächsten geht. Die Bestimmung, ob eine Prioritätsverkettung eingerichtet werden kann, erfordert, dass die verfügbaren logischen (d. h. IDE oder SCSI) und physischen Schnittstellen (z. B. 24-Pin) aller Elemente in einer Prioritätsverkettung bekannt sind. Weiterhin ist es wichtig zu wissen, ob Konvertierungen vom Quelldatentyp zum Zieldatentyp zulässig sind. Wenn ein Kandidat für die Prioritätsverkettung zum System hinzukommt, können die vorhandenen Verbindungen zwischen vorhandenen Elementen geprüft werden, um festzustellen, ob die neue Komponente ein Element der Prioritätsverkettung sein sollte.
  • Die Beispiele Stromversorgung und Speichergerätkomponente veranschaulichen die Notwendigkeit, die strukturellen Wechselbeziehungen zwischen den Komponenten (d. h. physische und räumliche Beziehungen) zu definieren. Um diese Vorstellung noch etwas mehr zu veranschaulichen, stelle man sich vor, die Komponenten, die elektrischen Strom benötigen, wie Computer-, Telekommunikations-, medizinische oder unterhaltungselektronische Komponenten, seien auf zwei Schränke verteilt. Des Weiteren verfügt jeder Schrank über eine zugehörige Stromversorgung, die die im Schrank befindlichen Komponenten mit elektrischem Strom speist. Um dem Stromverbrauch gerecht zu werden und die Forderung zu erfüllen, dass keine Stromversorgung überlastet werden darf, muss das Modell verstehen, in welchen bestimmten Schrank die einzelnen Komponenten eingebaut werden und den Stromverbrauch pro Schrank aktualisieren. Während die in den beiden Schränken verfügbare Gesamtstromleistung für alle in die beiden Schränke einzubauenden Komponenten ausreichen kann, darf eine Komponente nicht in einen Schrank eingebaut werden, wenn dies zu einer Überlastung der Schrankstromversorgung führen würde. Daher muss die physische Anordnung der Komponente im Schrank bekannt sein, um bestimmen zu können, ob der spätere Einbau einer Komponente zulässig ist. In gleicher Weise müssen die physischen Verbindungen zwischen diesen Komponenten berücksichtigt werden. Die Position der einzelnen Komponenten in der strukturellen Hierarchie wird zur Bestimmung der Mindest- oder Optimallänge der Verbindungskomponenten herangezogen.
  • Frühe computergestützte Konfigurationssysteme gingen von einem als regelbasiert bezeichneten Ansatz aus. Regelbasierte Konfigurationssysteme definieren Regeln (z. B. „wenn A, dann B"), um eine Auswahl von Konfigurationsalternativen auf Gültigkeit zu prüfen. Das System der Digital Equipment Corporation mit der Bezeichnung R1/XCON (beschrieben in McDermott, John, „R1: A Rule-Based Configurer of Computer Systems", Artificial Intelligence 19, (1982), S. 39-88) ist ein Beispiel für ein regelbasiertes Konfigurationssystem. R1/XCON bewertet einen vorhandenen unabhängig generierten Systemauftrag und identifiziert erforderliche Modifizierungen des Systems zur Erfüllung der Konfigurationsregeln des Modells. Die zur Ausführung der Konfiguration und Validierung genutzten Regeln sind zahlreich, miteinander verwoben und voneinander abhängig. Bevor eine Änderung dieser Regeln möglich ist, muss dass Gewebe, das diese Regeln schaffen, erfasst werden. Sämtliche Änderungen dieser Regeln müssen von einer Person vorgenommen werden, die in Bezug auf die Wirkung, die eine Änderung auf das gesamte Regelwerk haben wird, erfahren und kenntnisreich sein muss. Es ist daher schwierig und zeitraubend, diese Regeln zu unterhalten.
  • Eine mögliche Lösung der mit regelbasierten Systemen verbundenen Probleme ist ein restriktionsbasiertes System. Ein restriktionsbasiertes System unterwirft die Verwendung einer Komponente in der Konfiguration Restriktionen bzw. Randbedingungen. Zum Beispiel darf ein Festplattenlaufwerk erst zu einer Konfiguration hinzugefügt werden, wenn eine kompatible Speichergerätsteuerung zur Verwendung durch das Anforderungsspeichergerät verfügbar ist. Das Erfordernis einer Steuerung ist eine „Randbedingung" für das Festplattenlaufwerk.
  • Während vorhandene restriktionsbasierte Systeme einige der Mängel von regelbasierten Systemen aufgreifen, stellen sie jedoch kein komplettes Konfigurations-Tool dar. Reine restriktionslösende Systeme gehen nicht generativ an die Konfiguration heran (d. h., sie erzeugen keine auf Bedürfnissen, Komponentenanforderungen und/oder Ressourcenanforderungen beruhende Systemkonfiguration). Vorhandene restriktionsbasierte Systeme verwenden eine Funktionshierarchie, die mit der Anordnung einer Komponente in einer Konfiguration (z. B. Memory-Chip auf dem Motherboard oder der Speichererweiterungsplatine, Speichergerät im Schrankeinbaurahmen oder Steuerung im Motherboard-Einbauplatz) verbundene strukturelle Aspekte nicht anspricht.
  • Bennett et al., US-Patent 4,591,983 , liefert ein Beispiel für ein restriktionsbasiertes System, das einen Erkennungs- oder Verifizierungsansatz statt eines generativen Herangehens an die Systemkonfiguration anwendet. Das heißt, Bennett validiert lediglich ein unabhängig konfiguriertes System. Im Wesentlichen wird eine Bestellung von einer unabhängigen Quelle wie einem Händler erzeugt und Bennett wird dazu verwendet, zu prüfen, ob das in der Bestellung enthaltene System Randbedingungen verletzt. Bennett erzeugt keine auf Bedürfnissen oder Komponentenanforderungen beruhende Systemkonfiguration (d. h. ein generativer Ansatz). Somit bietet Bennett nicht die Fähigkeit zur interaktiven Konfiguration eines Systems durch interaktive Auswahl seiner Komponenten.
  • Ein Modell besteht aus allen Elementen, die in ein konfiguriertes System einbezogen werden können. Bei Bennett werden die Modellelemente in einer Aggregationshierarchie gruppiert. Eine Aggregationshierarchie schafft Hierarchieebenen, die eine Gruppe von Elementen darstellen. Verzweigungen von einem Eintrag in einer aktuellen Ebene erweitern den Eintrag, so dass der Eintrag „aus den Elementen der Zweige auf den unteren Ebenen zusammengesetzt ist. Ein Desktop-Computer zum Beispiel „besteht aus" einer Tastatur, einem Monitor und einer Systembox. Eine Systembox „besteht aus" Stromversorgung, Motherboard, Baugruppen und Speichergeräten. Die „Besteht aus"-Beziehung beschreibt lediglich die Elemente, die ein anderes Element ausmachen. Die „Besteht aus"-Beziehung definiert jedoch keine strukturellen Beziehungen zwischen den Modellelementen. Die „Besteht aus"-Beziehung beschreibt keine physischen, strukturellen Beziehungen zwischen den Elementen wie „physisch enthalten", „physisch untergeordnetes Teil von" und „physisch verbunden mit". Mit dem beschriebenen Desktop-Computersystem kann also nicht bestimmt werden, ob der Monitor im Desktop-Computersystem „physisch enthalten" ist. Eine Systembox „besteht aus" Speichergeräten, doch kann nicht bestimmt werden, ob eines oder mehrere der Speichergeräte in der Systembox „physisch enthalten" ist/sind.
  • Eine Funktionshierarchie organisiert die Komponenten eines Modells auf der Grundlage des von den Komponenten im Modell erfüllten Zweckes bzw. ihrer Funktion. Jeder Eintrag in der Hierarchie kann weiter in speziellere Funktionseinträge aufgegliedert werden. Somit definiert die Abstammung eines Eintrags seine Funktionalität, und das Fortschreiten von einer Ebene zur nächsten partikularisiert die Funktionalität eines Hierarchieeintrags.
  • So wie sie in aktuellen Konfigurationssystemen verwendet wird, definiert eine Funktionshierarchie keine strukturellen Wechselbeziehungen oder die physischen und räumlichen Verbindungen zwischen den Elementen. Eine Funktionshierarchie kann kein Speichergerät in einem Schrankeinbaurahmen, eine Steuerungsbaugruppe in einem bestimmten Einbauplatz oder einen Speicher-Chip auf der Speichererweiterungsplatine anordnen.
  • 2 stellt ein Beispiel für eine Funktionshierarchie dar. Hardwarekomponente 30 ist das Basiselement der Hierarchie. Die nächste Ebene unter Hardwarekomponente 30 (d. h. der zweiten Ebene 49) gibt allgemeine Funktionen im Modell an. Zum Beispiel führen ROM 31, Prozessoreinheit 31, Prozessor 32, Speicher 34, Käfig 35, Platine 36, Verbinder 37 und Speichergerät 38 alle die Funktion der Hardwarekomponente 30 zusätzlich zu deren speziellen Funktionen aus. Der Prozessor 33 kann auf die Funktion Sonderzweck 40 oder Universalzweck 41 spezialisiert werden. Sonderzweck 40 kann zum Arithmetik-Prozessor 51 spezialisiert werden.
  • Aus 2 ist ersichtlich, dass eine Funktionshierarchie nicht die Fähigkeit bietet, die strukturellen Aspekte des Systems zu definieren. Zum Beispiel ist sie nicht in der Lage, den Inhalt des Käfigs 35 zu ermitteln. Der physische und räumliche Ort des Motherboard-Platzes 54, der vom Einbauplatz 46 abstammt, wobei dieser wiederum vom Verbinder 37 abstammt, kann aus der Funktionshierarchie nicht bestimmt werden. Es besteht keine Möglichkeit zu ermitteln, dass der Motherboard-Platz 54 im Motherboard enthalten ist. Aus der Funktionshierarchiedefinition geht nicht klar hervor, ob sich der Arithmetik-Prozessor 51 auf dem Motherboard 44 oder einem anderen Modellelement befindet. Es lässt sich nicht ermitteln, ob sich Speicher-Chip 42 und ROM 31 auf dem Motherboard 44, der Speicherplatine 52 oder einem anderen Modellelement befinden.
  • Eine Funktionshierarchie verleiht nicht die Fähigkeit, tatsächliche Verbindungen zwischen konfigurierten Instanzen oder der Datenübertragung zu definieren. Das heißt, dass eine Komponente mit einer anderen verbunden ist, die kompatible logische Datentypen (z. B. serielle Schnittstelle) und kompatible physische Verbindungselemente (z. B. 24-Pin) aufweist. Eine Funktionshierarchie definiert lediglich die Funktion, die eine Komponente ausführt.
  • Da sie keine tatsächlichen Verbindungen zwischen den für die Konfiguration ausgewählten Komponenten definiert, kann sie auch keine Prioritätskette zwischen den konfigurierten Komponenten einrichten. In 2 definiert eine Funktionshierarchie den Verbinder 37, die Speichergerätsteuerung 53, das Diskettenlaufwerk 48 und Festplattenlaufwerk 49 als Komponententypen. Zum sparsamen Umgang mit Ressourcen kann der Benutzer ein System konfigurieren wollen, in dem ein Ereignis am Diskettenlaufwerk 48 über eine Prioritätskette mit einem Ereignis der Speichergerätsteuerung 53 über das Festplattenlaufwerk 49 verknüpft ist. Doch kann die Funktionshierarchie lediglich die Tatsache widerspiegeln, dass ein konfiguriertes System den von Speichergerätsteuerung 53, Festplattenlaufwerk 49, und Diskettenlaufwerk 48 gebotenen Funktionsumfang enthält. Sie kann nicht abbilden, dass ein Ereignis des Diskettenlaufwerks 48 über ein Ereignis des Festplattenlaufwerks 49 mit einem Ereignis der Speichergerätsteuerung 53 verbunden ist.
  • Aus diesem Grund kann eine Funktionshierarchie keinen Verbindungspfad durchlaufen, um strukturelle Wechselbeziehungen zwischen konfigurierten Instanzen zu erkennen. Daher kann eine Funktionshierarchie keine Prioritätskette aufstellen. Eine Funktionshierarchie kann also keine Prioritätskette zwischen Komponenten herstellen.
  • Ein weiteres Beispiel für ein restriktionsbasiertes System mit einer Funktionshierarchie ist in den folgenden Artikeln beschrieben: Mittal und Frayman, „Towards a Generic Model of the Configuration Task", in Proceedings of the Ninth IJCAI (IJCAI89), S. 1395-1401; und Frayman und Mittal, „COSSACK: A Constraints-Based Expert System for Configuration Tasks", in Sriram und Adey, Knowledqe-Based Expert Systems in Engineering: Planning and Design, September 1987, S. 143-66.
  • Das Cossack-System verwendet ein auf einer Funktionshierarchie beruhendes Konfigurationssystem. Nach Cossack muss ein System, das eine Funktionshierarchie nutzt, die erforderlichen Funktionen eines konfigurierten Systems erkennen. Wenn die erforderlichen Funktionen erkannt sind, muss Cossack eine oder mehrere bestimmte Komponente(n) identifizieren, die Schlüssel- oder Hauptkomponenten für die Implementierung dieser erforderlichen Funktionen sind. Die Cossack-Darstellung macht die Struktur nicht deutlich. Außerdem bietet Cossack keine Mechanismen für Schlussfolgerungen über oder mit Strukturinformationen an. Somit kann Cossack keine strukturbasierten Schlüsse ziehen. Zum Beispiel sind die internen Datenübertragungspfade innerhalb von Komponenten nicht dargestellt. Es besteht daher keine Möglichkeit, die Datenübertragung innerhalb einer Komponente zu verfolgen und keine Möglichkeit, eine Datenverbindung mit einem anderen Element einzurichten.
  • Ein Konfigurationssystem, ob zum Konfigurieren eines Computersystems oder eines anderen Systems genutzt, sollte ein Tool für die folgenden interaktiven Aktionen bereitstellen: Definition und Unterhaltung eines Modells; Definition und Unterhaltung (d. h. Upgrade) eines konfigurierten Systems; Erzeugung von Marketingpaketen; Erzeugung einer grafischen Darstellung der physischen und räumlichen Positionen der Komponenten des konfigurierten Systems; Verwendung der grafischen Darstellung zur Modifikation oder zum Upgrade eines konfigurierten Systems; und Erzeugung von Konfigurationsberichten (z. B. erfolglose Anforderungen, Angebote und Materiallisten). Ein solches System muss die Systemkomponenten, die strukturellen Beziehungen zwischen den Komponenten (d. h. räumliche und physische Positionen), die eigentlichen physischen und räumlichen Verbindungen der Komponenten und die von den einzelnen Komponenten auferlegten Randbedingungen definieren.
  • Die Patentschrift WO 93/01577 offenbart ein computerbasiertes Design-Tool zur Auswahl und Organisation miteinander verbindbarer Komponenten wie Möbelkomponenten und ein damit verbundenes Verfahren. Das darin beschriebene System verwendet einen regelbasierten Ansatz und weist als wesentliche Komponenten eine Wissensbasis zur Speicherung von Informationen über die verfügbaren Komponenten, eine Regelbasis mit Regeln zur Verbindung von Komponenten und eine Inferenz-Engine zur Auswahl und Anwendung der Regeln auf. Um eine Montageeinheit zu konstruieren, wählt der Benutzer nacheinander Komponenten aus und fügt sie zum System hinzu.
  • DARSTELLUNG DER ERFINDUNG
  • Die vorliegende Erfindung verwendet einen generativen Ansatz zum Konfigurieren von Systemen, so dass das System auf der Grundlage von Komponenten, Ressourcenanforderungen oder Eingaben in Form von Bedürfnissen konfiguriert werden kann. Die vorliegende Erfindung stellt ein restriktionsbasiertes Konfigurationssystem mit einer Funktionshierarchie, die hierarchische und nichthierarchische Struktur versteht, sowie damit verbundene Randbedingungen, die Schlussfolgerungen über strukturelle Beziehungen und deren Generierung ermöglicht. Die strukturellen Aspekte des Modells bieten die Fähigkeit, ein Modellelement als enthalten in oder durch ein anderes Modellelement zu definieren. Zusätzlich bietet das Strukturmodell die Möglichkeit, den logischen Datentyp und physische Verbindungen zwischen Elementen zu erkennen sowie Verbindungen zwischen Elementen herzustellen.
  • Zum Konfigurieren eines Systems akzeptiert die vorliegende Erfindung Eingaben in Form von Anforderungen (z. B. Komponenten oder Ressourcen) oder Bedürfnissen, wie etwa den Ausdruck des Bedürfnisses nach einem Desktop-Computer, der in einer CAD-Umgebung (d. h. computergestütztes Design) verwendet werden soll. Mit diesen Informationen konfiguriert die vorliegende Erfindung ein System durch Erkennen des Bedarfs an Ressourcen und Komponenten, der von oder durch die erkannten Ressourcen oder Komponenten auferlegten Randbedingungen sowie der strukturellen Aspekte des Systems.
  • Die Systemkonfiguration kann auf einer allgemeinen Systemdefinition (d. h. Desktop-Computersystem zum Betrieb in einer CAD-Umgebung) oder einer beliebigen Ebene weiterer Spezifizierung (z. B. Diskettenlaufwerk nach Hersteller und Modellnummer) basieren. Die Systemkonfiguration kann auf spezifischen Komponentenanforderungen (z. B. Laserdrucker) oder Bedürfnissen (z. B. Druckfähigkeit) basieren. Wenn das System konfiguriert ist, kann das konfigurierte System in Produkte gebündelt und ein Angebot erzeugt werden. Der Paketerstellungsprozess kann eine heuristische Spezifizierung umfassen, um die Zuordnung von Produkt und Komponenten zu steuern. So kann das Produkt mit der größten Anzahl an Komponenten zum Beispiel den Vorzug gegenüber anderen möglichen Produktauswahlen, die eine geringere Anzahl von Komponenten abdecken, erhalten.
  • Die funktionale und strukturelle Hierarchie der vorliegenden Erfindung bietet die Fähigkeit, die Struktur des Konfigurationsmodells und des aus dem Modell konfigurierten Systems zu definieren. Die Strukturhierarchie umfasst eine Container-Struktur. Ein Container ermöglicht es zu spezifizieren, dass eine Komponente von bzw. in einer anderen Komponente enthalten ist. Somit lässt sich zum Beispiel erkennen, dass eine Komponentenanforderung für ein Diskettenlaufwerk nicht erfüllt werden kann, weil keine freien Einbaurahmen im Schrank vorhanden sind, die zur Aufnahme der angeforderten Komponente eingerichtet sind.
  • Der Strukturhierarchiebegriff bietet die Möglichkeit der Zusammenlegung von Ressourcen. Die explizite Darstellung der Struktur, insbesondere der hierarchischen Struktur, bietet die Möglichkeit, ererbte Ressourcen zu definieren und auf sie zuzugreifen. Zum Beispiel können Computer-, Telekommunikations-, medizinische oder Unterhaltungselektronik-Komponenten in einem Schrank untergebracht werden, der diese Komponenten mit Strom versorgt. Diese Einzelkomponenten können den elektrischen Strom von einem strukturell übergeordneten Element ererben (d. h. einem Hierarchieeintrag, der eine oder mehrere Ebenen über den Komponenten in der Modellhierarchie angesiedelt ist). Weiterhin kann das strukturell übergeordnete Element Ressourcen zusammenlegen und eine homogene Ressource an strukturell untergeordnete Elemente (d. h. einem Hierarchieeintrag, der eine oder mehrere Ebenen unter dem strukturell übergeordneten Element in der Modellhierarchie angesiedelt ist) stellen. Zum Beispiel kann ein Schrank mehr als eine elektrische Stromquelle enthalten, doch werden diese den strukturell untergeordneten Komponenten als einziger Ressourcenpool präsentiert. Wenn eine Komponente daher eine bestimmte Ressource benötigt, kann diese Ressource von einem Ressourcenpool bereitgestellt werden. Wenn ein Desktop-Computersystem zum Beispiel mehrere Stromversorgungen enthält, kann eine Diskettenlaufwerkkomponente Strom aus einem Ressourcenpool beziehen, ohne zu wissen, dass der Ressourcenbedarf von mehreren Stromquellen befriedigt wird.
  • Außerdem bietet die Strukturspezifikation die Möglichkeit, Verbindungen zwischen Komponenten eines konfigurierten Systems anzugeben. Wenn weitere Komponenten zur Konfiguration hinzukommen, können die zur Montage der Systemkomponenten erforderlichen physischen und logischen Verbindungen geprüft werden. Zum Beispiel muss vor der Eingliederung eines Druckers mit einer seriellen logischen Schnittstelle und einem physischen 24-Pin-Anschluss im konfigurierten System ein serieller Port verfügbar sein. Weiterhin muss eine physische Verbindung zwischen dem Drucker und dem seriellen Port eingerichtet werden. Wenn der serielle Port eine 9-Pin-Buchse ist und der Drucker eine 24-Pin-Buchse aufweist, muss ein Kabel vorhanden sein, das Drucker und seriellen Port physisch miteinander verbinden kann. Außerdem wird die eigentliche Verbindung in der Konfiguration erstellt und kann bei der späteren Verbindungsbearbeitung untersucht werden. Die Verbindungsbearbeitung bietet die Möglichkeit, Kriterien für die Erfüllung einer Verbindungsanforderung zu erkennen. Zum Beispiel können Verbindungskriterien die billigste, längste oder optimale Durchgangsverbindung umfassen.
  • Mit der Verbindungsbearbeitung kann auch die Nutzung der konfigurierten Systemressourcen optimiert werden. Zum Beispiel können die Ressourcen einer Steuerung durch eine Prioritätskette anderer Komponenten optimiert werden. Durch die Verbindung einer Komponente mit einer anderen über mehrere eingreifende Komponenten lassen sich mehrere Komponenten über einen einzigen Port oder eine Verbindung mit einer Komponente verbinden.
  • In der vorliegenden Erfindung wird eine Modellsprache zur Definition einer Modellhierarchie verwendet. Die Modellhierarchie ist strukturell und funktional. Die Modellsprache bietet die Möglichkeit, eine in Produktlinien gruppierte Produktbasis zu definieren. Das Strukturhierarchiemodell umfasst als Grundklassen die Komponente, Verbundgruppe, den Container, Port und Verbinder. Die Grundklassen können sich in abgeleitete Klassen (d. h. systemspezifische Klassen) aufgliedern, die an Blatt-Deszendenten enden. Blatt-Deszendenten definieren den Typ der Komponenten im funktional-strukturellen Hierarchiemodell. Eigenschaften, Datentypen, Ressourcen und Randbedingungen definieren das Modell weiter.
  • Eine Modellsprache liefert das Format für die Definition der Elemente, der den Komponenten auferlegten Randbedingungen und der Modellstruktur. Die Modellsprache kann direkt verwendet oder aufgrund von Eingaben eines interaktiven Modellunterhaltungssystems zur Erstellung und Wartung des Modells generiert werden.
  • Das Unterhaltungssystem zeigt das Modell grafisch an und bildet die Schnittstelle für die Auswahl der zu aktualisierenden Modellelemente. Wenn die gewünschten Aktualisierungen vorgenommen wurden, bietet das Unterhaltungssystem die Möglichkeit, das neue Modell zu testen oder zu prüfen, ob das neue Modell erfolgreich kompiliert werden kann.
  • Wenn das Modell erfolgreich definiert wurde, bietet die vorliegende Erfindung die Möglichkeit, mit dem funktional-strukturellen Hierarchiemodell ein System zu konfigurieren. Eine interaktive Schnittstelle bietet die Möglichkeit, eine Konfiguration als Modellelementanforderung (z. B. Komponenten), Ressourcenanforderung und/oder Bedürfnisanforderung (z. B. Forderungen) auszudrücken. Die Konfigurations-Engine wird aufgerufen, um diese Anforderungen zu erfüllen.
  • Die Konfigurations-Engine greift auf die Produktbasis zu, um Anforderungen mit einer festgelegten Priorität zu erfüllen. Eine Anforderung wird verarbeitet, indem Komponenten zur Konfiguration hinzugefügt oder vorhandene Komponenten erkannt werden, die die Anforderung erfüllen können. Weiterhin werden Verbindungen, Datenübertragungspfade und dynamisch ermittelte Strukturbeziehungen definiert. Bei erfolgreicher Verarbeitung einer Anforderung werden die Konfigurationsmodifikationen ausgeführt. Fehlgeschlagene Anforderungen werden gemeldet.
  • Eine grafische Darstellung veranschaulicht das konfigurierte System und dessen Strukturmerkmale. Die Elemente des konfigurierten Systems werden in Form ihrer physischen und räumlichen Position zu anderen Elementen illustriert. Elemente sind in anderen Elementen enthalten, bestehen aus anderen Elementen oder sind mit solchen verbunden. Diese grafische Darstellung bietet außerdem eine Schnittstelle zur Modifikation und Wartung von Elementen des konfigurierten Systems.
  • Die Elemente des konfigurierten Systems werden zur Preisbestimmung des Systems und aus Fertigungsgründen in verfügbare Marketing- und Fertigungspakete gebündelt. Der Bündelungsprozess führt eine Produkt-Komponenten-Zuordnung auf der Basis von Produktdefinitionen aus.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist eine schematische Darstellung des Konfigurations-Computersystems.
  • 2 stellt eine Funktionshierarchie dar.
  • 3 stellt eine funktional-strukturelle Hierarchie dar, die aus den fünf Grundklassen, abgeleiteten Klassen und Komponententypen besteht.
  • 4 ist die funktional-strukturelle Hierarchie für ein Modell zur Konfiguration von Computersystemen.
  • 5 stellt die Komponentenverbindungen mit mehreren eingreifenden Komponenten und Datentypen dar.
  • 6 stellt den Prozessablauf der Konfigurations-Engine dar.
  • 7 stellt den Ablauf des Prozesses SatisfyResourceRequest (Erfüllen einer Ressourcenanforderung) dar.
  • 8 stellt den Ablauf der Prozesse SatisfyContainerConstraint und SatisfyComponentRestraint (Erfüllen einer Container-Randbedingung, Erfüllen einer Komponenten-Randbedingung) dar.
  • 9A stellt den Ablauf des Prozesses SatisfyConnectionConstraint (Erfüllen einer Verbindungs-Randbedingung) dar.
  • 9B stellt den Ablauf des Prozesses CandidatePorts (Port-Kandidaten) dar.
  • 10 stellt den Ablauf des Prozesses EstablishSetCover (Abdeckung einrichten) dar.
  • 11 stellt ein Systemfenster für eine Konfiguration eines Desktop-Computersystems dar.
  • 12 ist ein Ablaufschema, das die Funktionsweise des Konfigurationssystems darstellt.
  • AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
  • Es wird ein Verfahren und eine Vorrichtung für die Konfiguration von Systemen beschrieben. In der folgenden Beschreibung werden zahlreiche spezifische Details angeführt, um eine genauere Beschreibung der vorliegenden Erfindung zuliefern. Es wird für den Fachmann jedoch offenkundig sein, dass die vorliegende Erfindung auch ohne diese spezifischen Details ausgeführt werden kann. In anderen Fällen wurden wohlbekannte Merkmale nicht im Detail beschrieben, um die Erfindung nicht in den Schatten zu stellen.
  • Die vorliegende Erfindung bietet ein Tool für das Konfigurieren von Systemen, das einen breiten Anwendungsbereich hat, darunter: Computer-Hardware, Computer-Software, Computernetze, Telekommunikationssysteme (z. B. Nebenstellenanlagen und Voicemail), Kopierer, medizinische Bildgebungsanlagen, Fahrzeuge (z. B. Feuerwehr- und Baufahrzeuge), elektronische Steuerungen, Gebäude, Möbel nach dem Baukastenprinzip, Fertigungstechnik, Fertigungssysteme, Unterhaltungselektronik und elektronische Systeme.
  • 1 ist eine schematische Darstellung des erfindungsgemäßen Konfigurationssystems. Das Konfigurationssystem 10 besteht aus dem Modellunterhaltungssubsystem 12, dem Subsystem Konfigurationserstellung und Berichte 14, dem Subsystem Pakete/Angebote, dem Kommunikationsbus 18, Ein-/Ausgabe 20, Speicher 22, Zentraleinheit (CPU) 24 und Massenspeicher 26.
  • 12 ist ein Ablaufschema, das die Funktionsweise des Konfigurationssystems darstellt. In Block 600 wird eine Modellbasis gelesen. Das Konfigurationssystem verwendet die Modellbasis mit Informationen über alle zum Konfigurieren eines Systems verfügbaren Elemente (z. B. Komponenten und Ressourcen). Diese Modellbasis wird als Produktbasis bezeichnet.
  • Die Produktbasis wird mit einer Modellsprache erstellt. Die Modellsprache liefert die Syntax oder Anweisungen zur Definition der Modellelemente, die den Modellelementen auferlegten Randbedingungen und die Struktur des Modells. An Verarbeitungsblock 604 kann mit der Modellsprache die Modelldefinition eingegeben werden, die Modellverarbeitung endet in Block 606.
  • Modellunterhaltung – Der Prozess der Modelldefinition kann durch Wahl des Modellunterhaltungssubsystems an Entscheidungsblock 602 erleichtert werden (d. h. „Modellunterhaltungssubsystem verwenden?"). An Block 608 wird das entweder neue oder vorhandene Modell angezeigt. An Block 610 kann das Modell bearbeitet werden. Das Modellunterhaltungssubsystem 12 bietet die Möglichkeit, die Gültigkeit des modifizierten Modells an Entscheidungsblock 612 zu prüfen oder einem Debugging-Prozess zu unterziehen (d. h. „write Integrity, ProductBase Integrity oder Debugger?"). Die Auswahl „write Integrity" ermittelt die Integrität der Parse-Datei (d. h. Teilmengen der Produktbasis) unter Hinzufügung der Modifikationen. Die Auswahl „ProductBase Integrity" ermittelt die Integrität der Produktbasis unter Hinzufügung der Modifikationen.
  • Bei Auswahl der Option „Debugger" werden an Block 618 Benchmark-Systemkonfigurationsanforderungen aus einer Datei ausgelesen. An Block 14 wird das Subsystem Konfigurationserstellung und Berichte 14 aufgerufen, um mit den modifizierten Modell- und Benchmark-Konfigurationsanforderungen ein System zu konfigurieren. Die Verarbeitung dieser Anforderungen durch das Subsystem Konfigurationserstellung und Berichte 14 kann zur Untersuchung des Konfigurationsprozesses verfolgt werden.
  • Wenn an Entscheidungsblock 622 weitere Modifikationen erfolgen (d. h. „Modell ändern?"), wird in 608 eine grafische Darstellung des Modells angezeigt und der Modifikationsprozess in Block 610 weitergeführt. Wenn keine weiteren Modifikationen erfolgen, wird in Block 624 die Modelldefinition generiert, und das Modellunterhaltungssubsystem endet in Block 606.
  • Subsystem Konfigurationserstellung und Berichte – Das Subsystem Konfigurationserstellung und Berichte 14 generiert mit der Modelldefinition ein nach den benutzerspezifischen Anforderungen und Bedürfnissen konfiguriertes System. Die entsprechende Konfiguration wird grafisch dargestellt. Es werden Berichte mit Angaben zur Konfiguration erstellt. Wenn festgestellt wird, dass eine vorhandene Konfiguration in Entscheidungsblock 630 aktualisiert wird (d. h. „Upgrade des vorhandenen Systems?"), wird das vorhandene System gelesen und seine Elemente in Block 632 als vorhanden markiert. Wenn ein neues System konfiguriert wird, wird an Block 634 eine leere Systeminstanz erstellt. Die Formulare für die Eingabe von Elementanforderungen oder Bedürfnissen werden in 636 angezeigt. Wenn die Eingabe an Block 638 9 unvollständig ist (d. h. „Anforderungen abgeschlossen?"), wird die Verarbeitung in Block 636 fortgesetzt.
  • Konfigurations-Engine – Wenn die Eingabe aller Anforderungen und Bedürfnisse abgeschlossen ist, wird die Konfigurations-Engine aufgerufen, um in 640 anhand der Eingabe ein konfiguriertes System zu generieren. Eine grafische Darstellung der Konfiguration wird in 642 angezeigt. Die Konfiguration kann modifiziert, Berichte können erstellt oder die Komponenten der Konfiguration können in Pakete gebündelt und ein Angebot erstellt werden. Wenn an Entscheidungsblock 644 Modifikationen beabsichtigt sind (d. h. „Konfigurationsänderungen?"), wird die Verarbeitung an Block 652 (d. h. „Modell filtern?") fortgesetzt. Wenn an Entscheidungsblock 652 ein gefiltertes Modell verwendet wird, wird eine Teilmenge des Modells in Block 654 generiert. Das Teilmodell umfasst jene Modellelemente, die aufgrund der gegebenen Konfiguration gewählt wurden. Die Verarbeitung wird mit der Anzeige der Eingabeformulare in 636 fortgesetzt. Wenn kein gefiltertes Modell verwendet wird, wird die Verarbeitung in 636 fortgesetzt.
  • Nach dem Konfigurieren eines Systems können die Konfigurationselemente in Marketing- oder Fertigungsprodukte gebündelt werden. Der Paketierer 660 weist die Konfigurationskomponenten Produkten zu. Die Angebotserstellung 662 erzeugt ein Preisangebot für das konfigurierte System. Das Angebot wird in 664 angezeigt. Wenn es in Entscheidungsblock 666 keine Konfigurationsmodifikationen gibt (d. h. „Konfiguration ändern?"), endet die Verarbeitung bei Block 606. Wenn es Konfigurationsmodifikationen gibt, wird in Block 668 das Subsystem Konfigurationserstellung und Berichte 14 aufgerufen.
  • STRUKTURELLE HIERARCHIE
  • Das erfindungsgemäße Konfigurationssystem ist ein restriktionsbasiertes Schema mit einer funktional-strukturellen Hierarchie. 3 zeigt diese funktional-strukturelle Hierarchie und fünf ihr innewohnende Grundklassen an. Die funktional-strukturelle Hierarchie enthält eine Klassenhierarchie aus fünf inneren Grundklassen 70, die die Grundtypen von Modellobjekten definieren. Diese fünf Grundklassen sind: Komponente 60, Verbundgruppe 62, Verbinder 64, Container 66 und Port 68. Die Komponente 62 ist die Grundklasse, von der alle anderen Klassen und Komponententypen abgeleitet sind. Von Komponente 62 beginnt jeder Zweig des Hierarchiebaums mit einer inneren Grundklasse und verzweigt sich zu systemspezifischen Klassen, die als abgeleitete Klassen 88 bezeichnet werden. Abgeleitete Klassen 88 sind Definitionen von breiten Komponentenkategorien wie Speichergeräte, Stromversorgungen und Peripheriekarten. Aus den Grundklassen können mehrere Generationen von abgeleiteten Klassen hervorgehen. Jeder Zweig endet mit „Blatt-Deszendenten" oder Komponententypen 90. Die Komponententypen 90 repräsentieren tatsächliche Komponenten, die installiert und konfiguriert werden können.
  • Die Klasse Verbundgruppe 62 ist eine statische Struktur (d. h. Elemente mit einer Substruktur). Elemente in dieser Klasse haben oder sind Subkomponenten einer Zusammenstellung. Die Klasse Verbinder 64 zweigt von der Klasse Verbundgruppe 62 ab. Diese Klasse definiert die Modellelemente, die Elemente verbinden. Ein Element in der Klasse Container 66 gibt an, dass dieses Element weitere Elemente enthalten kann. Elemente in der Klasse Port 68 geben Anschlussalternativen an und definieren den Datentyp eines Ports. Von der Klasse Port 68 abgeleitete Elemente können physisch mit anderen von der Klasse Port 68 abgeleiteten Elementen verbunden sein.
  • Die vorliegende Erfindung bietet die Möglichkeit, in einer strukturellen Hierarchie darzustellen, wie Komponenten eines bestimmten Systems räumlich und physisch existieren. Innerhalb der Strukturhierarchie gibt es drei Arten von Substrukturen: Verbundgruppenhierarchien, Container-Hierarchien und Port-Beziehungen. Verbundgruppenhierarchien identifizieren Komponenten als Teil anderer Komponenten. Zum Beispiel hat ein Gestellrahmen acht Baugruppeneinbauplätze. Container-Hierarchien identifizieren in anderen Komponenten enthaltene Komponenten. Eine Container-Hierarchie ist eine dynamische Struktur, da diese bei der Erstellung einer Konfiguration dynamisch erstellt wird. Zum Beispiel wird eine CPU-Karte in Einbauplatz 0 des Gestellrahmens angeordnet.) Port-Beziehungen identifizieren Komponenten, die Verbindungen zu anderen Komponenten herstellen. Eine Verbindungs- oder Port-Beziehung wird bei der Erstellung einer Konfiguration dynamisch erstellt. Die Beziehungen zwischen Generationen innerhalb dieser Substrukturen werden durch die Schlüsselwörter „childOf", „containedBy" und „connectsWith" ausgedrückt.
  • Das Schlüsselwort „childOf" gibt an, dass eine Komponente Teil einer Komponente ist, die von der Klasse Verbundgruppe abstammt. Das Schlüsselwort „containedBy" gibt an, dass eine Komponente in einer Komponente enthalten ist, die von der Grundklasse Container abstammt. Das Schlüsselwort „connectsWith" gibt an, dass eine Komponente eine Verbindung zu einer Komponente herstellt, die von der Port-Klasse abstammt.
  • Container-Hierarchien haben normalerweise eine Wechselbeziehung mit Verbundgruppenhierarchien. Ein Container ist häufig „childOf" einer Verbundgruppe, und die Verbundgruppe ist „containedBy" einem anderen Container. Jede Substruktur hat ein Wurzelmitglied, das auch Deszendent der Grundklasse mit demselben Namen ist (d. h. Verbundgruppe, Container oder Port). Mitglieder einer Substruktur können jeder in der Klassenhierarchie definierten Klasse angehören. Zum Beispiel kann eine von der Klasse Container abstammende Komponente der Klasse Einbaurahmen eine Komponente der Klasse Speichergerät (abstammend von der Klasse Komponente) oder der Klasse Karte_Gestellrahmen (abstammend von der Klasse Container) enthalten.
  • 4 stellt die strukturelle Hierarchie der fünf Grundklassen, abgeleiteten Klassen, Blatt-Deszendenten und Substruktur-Beziehungen dar. Die Strukturbeziehungen definieren weiterhin die Strukturaspekte des Modells. Zum Beispiel ist Einbauplatz 114 „childOf" Schrank 110. Daher ist Einbauplatz 110 eine Subkomponente der Verbundgruppenkomponente Schrank 110. Weiterhin ist Schrank 110 „childOf" System 116. Zweite Auftritte der Karte 118 (d. h. 118A) und des Einbauplatzes (d. h. 114A) veranschaulichen die Substrukturbeziehung zwischen Karte und Einbauplatz. Karte 118A ist „containedBy" Einbauplatz 114A. Auf gleiche Weise ist das Speichergerät 120A „containedBy" Einbaurahmen 122A und Steckerausgang DB25 124A „connectsWith" Buchsenausgang DB25 126.
  • Die Strukturaspekte des erfindungsgemäßen Modells bieten die Möglichkeit, Ressourcen zu ererben und zusammenzulegen. Zum Beispiel kann eine Container-Komponente, Schrank, aus einem Gestellrahmen und zwei 100W-Stromversorgungen A und B bestehen. Jedes der Elemente im Gestellrahmen-Container verbraucht oder erfordert eine gewisse Menge Strom. Wenn die Gestellrahmen-Komponente zwei Zentraleinheiten (CPUs), die zusammen 110 Watt (z. B. je 55 Watt) verbrauchen, einen RAM-Speicher, der 70 Watt verbraucht, und mehrere Karten (z. B. Steuerungen), die insgesamt 20 Watt verbrauchen, enthält, dann kann keine der Stromversorgungen unabhängig von der anderen den Gestellrahmen und seine Elemente mit ausreichend Strom versorgen.
  • Dennoch können, da die beiden Stromversorgungen im Container-Schrank enthalten und Teil von ihm sind, die beiden Stromversorgungen zusammengelegt werden, um die Elemente im Schrank zu versorgen. Wenn also die Ressourcenanforderungen für die Elemente in diesem Beispiel verarbeitet werden, kann die eine oder die andere zur Erfüllung der Anforderung verwendet werden. Außerdem ist es möglich, den Ressourcenbedarf für ein beliebiges Element mit beiden Stromversorgungen zu decken. Wenn zum Beispiel ein CPU-Ressourcenbedarf zuerst mit 55 W von Stromversorgung A verarbeitet wird und die Ressourcenverarbeitung für den RAM-Speicher als nächstes folgt, kann der Bedarf des RAM-Speichers nicht mit Stromversorgung A allein gedeckt werden. Doch ist es möglich, den Ressourcenbedarf des RAM unter Verwendung von 45 Watt aus Stromversorgung A und 25 Watt aus Stromversorgung B zu decken. Eine weitere Ressource, bei der das Zusammenlegen von Ressourcen möglich ist, ist eine Wärmeableitungsressource.
  • CONTAINER
  • Die strukturelle Hierarchie bietet die Möglichkeit, das Modell so zu strukturieren, dass ein Modellelement oder eine Gruppe von Modellelementen in einem bzw. einer anderen enthalten ist. Die Verwendung des enthaltenen Modellelements in einer Konfiguration kann durch die Verfügbarkeit eines Container-Elements in der Konfiguration beschränkt sein.
  • 8 stellt den Ablauf der Prozesse SatisfyContainerConstraint und SatisfyComponentRestraint (Erfüllen einer Container-Randbedingung, Erfüllen einer Komponenten-Randbedingung) dar. An Entscheidungsblock 500 (d. h. „Geforderte Instanz schon in der Konfiguration verfügbar?") wird die Randbedingung durch die verfügbare Instanz erfüllt und die Verarbeitung bei Block 526 fortgesetzt, wenn die geforderte Instanz bereits existiert und zur Erfüllung der Randbedingung zur Verfügung steht. Wenn nicht, wird die geforderte Instanz instantiiert und die Modifikationsliste in Verarbeitungsblock 502 aktualisiert. Bei Entscheidungsblock 504 (d. h. „Sind Randbedingungen zu verarbeiten?") wird die Randbedingung durch die neue Instanz erfüllt und die Verarbeitung bei Block 526 fortgesetzt, wenn die neue Instanz keine Randbedingungen aufweist.
  • Wenn Randbedingungen zu verarbeiten sind, wird die nächste Randbedingung bei 508 erkannt. Wenn festgestellt wird, dass es sich um die Randbedingung „requiresContainer" an Entscheidungsblock 510 (d. h. „Container erforderlich?") handelt, wird die Verarbeitung bei Block 512 (d. h. „Container-Randbedingung erfüllen") fortgesetzt, um die Randbedingung „requiresContainer" zu erfüllen, und die Verarbeitung wird bei Entscheidungsblock 522 (d. h. „Randbedingung erfüllt?") fortgesetzt.
  • Wenn festgestellt wird, dass es sich nicht um die Randbedingung „requiresContainer" an Entscheidungsblock 510, sondern um die Randbedingung „requiresConnection" bei Entscheidungsblock 514 (d. h. „Verbindung erforderlich?") handelt, wird die Verarbeitung bei Block 516 (d. h. „Verbindungs-Randbedingung erfüllen") fortgesetzt, um die Randbedingung „requiresConnection" zu erfüllen, und die Verarbeitung wird bei Entscheidungsblock 522 (d. h. „Randbedingung erfüllt?") fortgesetzt.
  • Wenn es sich nicht um die Randbedingung „requiresContainer" an Entscheidungsblock 510 und nicht um die Randbedingung „requiresConnection" an Entscheidungsblock 514 (d. h. „Verbindung erforderlich?") handelt, wird die Verarbeitung bei Entscheidungsblock 518 (d. h. „Komponente erforderlich?") fortgesetzt. Wenn festgestellt wird, dass es sich um die Randbedingung „requiresComponent" an Entscheidungsblock 518 (d. h.,,Komponente erforderlich?") handelt, wird die Verarbeitung bei Block 520 (d. h. „Komponenten-Randbedingung erfüllen") fortgesetzt, um die Randbedingung „requiresComponent" zu erfüllen, und die Verarbeitung wird bei Entscheidungsblock 522 (d. h. „Randbedingung erfüllt?") fortgesetzt. Bei Entscheidungsblock 522 (d. h. „Randbedingung erfüllt?") wird die Verarbeitung bei Entscheidungsblock 504 (d. h. „Sind Randbedingungen zu verarbeiten?") fortgesetzt, wenn die Randbedingung erfüllt wurde. Wenn die Randbedingung nicht erfüllt wurde, wird die Randbedingung als nicht durch eine vorhandene oder neue Instanz erfüllt markiert und die neue Instanz in Verarbeitungsblock 524 aus der Modifikationsliste entfernt. Die Verarbeitung wird bei Block 526 fortgesetzt.
  • VERBINDUNGSVERARBEITUNG
  • Die Verwendung eines Modellelements in einer Konfiguration kann auch durch die Fähigkeit, eine Verbindung zu einem anderen Modellelement herzustellen, eingeschränkt sein. Die Randbedingung „requiresConnection" erfordert, dass zwischen den beiden Komponenten eine physische Verbindung besteht. 9A stellt den Ablauf des Prozesses zur Erfüllung der Randbedingung „requiresConnection" dar. Bei Verarbeitungsblock 280 wird eine Zielkomponente gewählt und eine Liste von Ports erstellt. Bei Verarbeitungsblock 282 werden die angeforderten Ressourcen zugewiesen. Bei Verarbeitungsblock 284 wird die Liste CandidatePorts aufgerufen, um für die Zielkomponente zugängliche freie Ports zu erkennen. Bei Verarbeitungsblock 286 werden lokale Portkandidaten (d. h. jene Ports, die frei sind und den erforderlichen Datentyp haben) erkannt. Bei Verarbeitungsblock 288 werden die Verbinderkandidaten identifiziert.
  • Bei Verarbeitungsblock 290 (d. h. „Wurden alle Verbinder geprüft?") wird, wenn alle Verbinder geprüft wurden, die Anforderung als erfolglos markiert und die Verarbeitung an Block 306 (d. h. „Rückkehr") fortgesetzt. Wenn nicht, wird der nächste Verbinder bei Block 294 gewählt. Bei Entscheidungsblock 296 (d. h. „Ist der physische Typ von Port1 des Verbinders mit dem physischen Typ des Ziel-Ports verbindbar?") wird die Verarbeitung bei Entscheidungsblock 290 (d. h. „Wurden alle Verbinder geprüft") fortgesetzt, wenn Port1 des Verbinders nicht vom gleichen physischen Typ (z. B. 25-Pin) wie der Ziel-Port ist.
  • Andernfalls wird die Verarbeitung bei Entscheidungsblock 298 fortgesetzt. Bei Entscheidungsblock 298 (d. h. „Ist der physische Typ von Port2 des Verbinders mit dem physischen Typ des lokalen Ports verbindbar?") wird die Verarbeitung bei Entscheidungsblock 290 (d. h. „Wurden alle Verbinder geprüft") fortgesetzt, wenn Port2 des Verbinders nicht vom gleichen physischen Typ (z. B. 25-Pin) wie der lokale Port ist. Andernfalls wird die Verarbeitung bei Entscheidungsblock 300 fortgesetzt. Wenn es bei Entscheidungsblock 300 (d. h. „Gibt es einen Übertragungspfad zwischen Port1 und Port2?") keinen Übertragungspfad zwischen Port1 und Port2 gibt, wird die Verarbeitung bei Entscheidungsblock 290 (d. h. „Wurden alle Verbinder geprüft") fortgesetzt. Andernfalls wird die angeforderte Ressource bei Block 302 zugewiesen. Bei Verarbeitungsblock 304 wird der Ziel-Port an Port2 des Verbinders und der lokale Port an Port1 des Verbinders angeschlossen. Die Verarbeitung wird bei Block 306 beendet.
  • Es müssen Port-Kandidaten erkannt werden, um eine Randbedingung „requiresConnection" zu erfüllen. 9B stellt den Ablauf des Prozesses CandidatePorts(list) (Port-Kandidatenliste) dar. In Verarbeitungsblock 310 von „CandidatePorts(list)" wird die Port-Variable auf den nächsten Port auf der Liste eingestellt. Wenn der Port bei Entscheidungsblock 312 (d. h. „Ist Port verbunden?") verbunden ist, wird die Verarbeitung bei Verarbeitungsblock 316 fortgesetzt. Wenn nicht, bestimmt der Entscheidungsblock 314 (d. h. „Richtiger Daten-Typ oder sind Konvertierungen zulässig?"), ob die Datentypen kompatibel sind. Wenn nicht, wird die Verarbeitung bei Block 310 fortgesetzt und der nächste Port gesucht.
  • Wenn sie kompatibel sind, wird „thePort" auf die Port-Liste gesetzt und die Verarbeitung bei Block 310 fortgesetzt. Wenn festgestellt wird, dass „thePort" bereits bei Verarbeitungsblock 312 angeschlossen wurde, wird die Verarbeitung bei Verarbeitungsblock 316 fortgesetzt und „newPort" auf den Port eingestellt, mit dem „thePort" verbunden ist. Bei Block 320 wird eine neue Portliste für alle Ports, an die „newPort" überträgt, erstellt. Wenn „newList" bei Entscheidungsblock 322 (d. h. „Enthält newList einen Port der anfordernden Komponente?") einen der anfordernden Komponentenports enthält, wird die Verbindung in Block 326 als bereits vorhanden markiert und die Verarbeitung kehrt zu Block 328 zurück. Wenn nicht, wird CandidatePorts(list) für die „newList" aufgerufen.
  • KONFIGURATIONS-ENGINE
  • Wenn der Benutzer die Komponenten für das zu modellierende System gewählt hat, ruft er die Konfigurations-Engine auf. Der Konfigurator greift auf die Produktbasis zu, um die Objektklasse zu erkennen. Nach erfolgreicher Durchführung bestimmter Gültigkeitsprüfungen instantiiert (d. h. erstellt) der Konfigurator ein Mitglied dieser Klasse, das als Objektinstanz bezeichnet wird. Der Konfigurator instantiiert lediglich jene Objekte, die zur Konfiguration des angeforderten Systems erforderlich sind.
  • Die Konfigurations-Engine verarbeitet die Komponenten- und Ressourcenanforderungen mit der angegebenen Priorität. Mit der Bearbeitung der einzelnen Anforderungen wird die vorhandene Konfiguration modifiziert durch: (1) Hinzufügen der angeforderten Komponente und weiterer zur Unterstützung der angeforderten Komponente notwendiger Komponenten sowie (2) Identifizieren vorhandener und neuer Komponenten, die zur Bereitstellung der angeforderten Ressource erforderlich sind. Wenn eine Anforderung erfolgreich verarbeitet wird, werden die Konfigurationsmodifikationen ausgeführt, und diese Konfiguration wird die Eingabekonfiguration bei der Verarbeitung der nächsten Anforderung.
  • 6 stellt den Prozessablauf der Konfigurations-Engine dar. Verarbeitungsblock 202 erstellt eine Prioritätsliste der Anforderungen. Wenn bei Entscheidungsblock 204 (d. h. „Alle Anforderungen verarbeitet?") festgestellt wird, dass alle Anforderungen verarbeitet wurden, wird die Verarbeitung bei Block 206 beendet. Wenn nicht, wird die Verarbeitung bei Block 208 fortgesetzt.
  • Der Anforderungstyp wird in Entscheidungsblock 210 (d. h. „Anforderungstyp?") festgelegt. Handelt es sich um eine Komponentenanforderung, wird die Verarbeitung bei Verarbeitungsblock 212 fortgesetzt. Bei Block 212 wird die angeforderte Komponente instantiiert und zur Modifikationsliste gesendet, und die Verarbeitung wird bei Entscheidungsblock 216 fortgesetzt. Handelt es sich um eine Ressourcenanforderung, wird die Komponente, die diese Ressource liefern kann, in Verarbeitungsblock 214 (d. h. „Ressourcenanforderung erfüllen") identifiziert werden, und die Verarbeitung wird bei Entscheidungsblock 216 fortgesetzt. Bei Entscheidungsblock 216 (d. h. „Instantiierung oder Zuweisung erfolgreich?") wird die Verarbeitung bei Entscheidungsblock 224 (d. h. „Sind Randbedingungen zu verarbeiten?") fortgesetzt, wenn die Instantiierung der Komponente oder Zuweisung der Ressource erfolgreich war. Wenn die Instantiierung der Komponente oder Zuweisung der Ressource nicht erfolgreich war, wird die Verarbeitung bei Entscheidungsblock 218 (d. h. „Gibt es weitere Alternativen zur Erfüllung der Anforderung?") fortgesetzt.
  • Wenn in Entscheidungsblock 218 (d. h. „Gibt es weitere Alternativen zur Erfüllung der Anforderung?") festgestellt wird, dass keine weiteren Alternativen zur Erfüllung der Anforderung bestehen, wird die Anforderung als erfolglos identifiziert und die Verarbeitung bei Entscheidungsblock 204 (d. h. „Alle Anforderungen verarbeitet?") fortgesetzt. Wenn weitere Alternativen bestehen, werden die Modifikationen der fehlgeschlagenen Alternative bei 220 aus der Modifikationsliste entfernt, die nächste Alternative bei 222 an die Modifikationsliste gesendet und die Verarbeitung bei Entscheidungsblock 224 (d. h. „Alle Anforderungen verarbeitet?") fortgesetzt.
  • Wenn keine Randbedingungen zu verarbeiten sind, werden die Modifikationen bei Entscheidungsblock 224 (d. h. „Sind Randbedingungen zu verarbeiten?") zur Konfiguration in Verarbeitungsblock 244 gesendet und die Verarbeitung bei Entscheidungsblock 204 (d. h. „Alle Anforderungen verarbeitet?") fortgesetzt. Wenn Randbedingungen zu verarbeiten sind, wird die nächste Randbedingung bei 226 erkannt. Wenn festgestellt wird, dass es sich um die Randbedingung „requiresContainer" an Entscheidungsblock 228 (d. h. „Container erforderlich?") handelt, wird die Verarbeitung bei Block 230 (d. h.,,Container-Randbedingung erfüllen") fortgesetzt, um die Randbedingung „requiresContainer" zu erfüllen, und die Verarbeitung wird bei Entscheidungsblock 240 (d. h. „Randbedingung erfüllt?") fortgesetzt. Wenn festgestellt wird, dass es sich nicht um die Randbedingung „requiresContainer” an Entscheidungsblock 228, sondern um die Randbedingung „requiresConnection" bei Entscheidungsblock 236 (d. h. „Verbindung erforderlich?") handelt, wird die Verarbeitung bei Block 232 (d. h. „Verbindungs-Randbedingung erfüllen") fortgesetzt, um die Randbedingung „requiresConnection" zu erfüllen, und die Verarbeitung wird bei Entscheidungsblock 240 (d. h. „Randbedingung erfüllt?") fortgesetzt.
  • Wenn es sich nicht um die Randbedingung „requiresContainer" an Entscheidungsblock 228 und nicht um die Randbedingung „requiresConnection" an Entscheidungsblock 236 (d. h. „Verbindung erforderlich?") handelt, wird die Verarbeitung bei Entscheidungsblock 238 (d. h. „Komponente erforderlich?") fortgesetzt. Wenn festgestellt wird, dass es sich um die Randbedingung „requiresComponent" an Entscheidungsblock 238 (d. h. „Komponente erforderlich?") handelt, wird die Verarbeitung bei Block 234 (d. h. „Komponenten-Randbedingung erfüllen") fortgesetzt, um die Randbedingung „requiresComponent" zu erfüllen, und die Verarbeitung wird bei Entscheidungsblock 240 (d. h. „Randbedingung erfüllt?") fortgesetzt. Am Entscheidungsblock 240 (d. h. „Randbedingung erfüllt?") wird die Verarbeitung bei Entscheidungsblock 224 (d. h. „Sind Randbedingungen zu verarbeiten?") fortgesetzt, wenn die Randbedingung erfüllt wurde. Wenn die Randbedingung nicht erfüllt wurde, wird die Verarbeitung bei Entscheidungsblock 218 (d. h. „Gibt es weitere Alternativen zur Erfüllung der Anforderung?") fortgesetzt.
  • Dass Ressourcen von einzelnen Komponenteninstanzen angeboten und nicht als globale Systementitäten dargestellt werden, hilft bei der Erforschung von Alternativen. 7 stellt den Ablauf des Prozesses SatisfyResourceRequest (Erfüllen einer Ressourcenanforderung) dar. Bei Verarbeitungsblock 250 wird die nächste Komponente, die die geforderte Ressource anbietet, gesucht. Wenn in Entscheidungsblock 252 (d. h. „Komponenteninstanzen gefunden?") festgestellt wird, dass keine Komponente diese Ressource anbietet, wird die Verarbeitung bei Verarbeitungsblock 262 fortgesetzt.
  • Wenn eine Komponente gefunden wird, wird die Verarbeitung bei Entscheidungsblock 254 (d. h. „Wurde diese Ressource verbraucht?") fortgesetzt. Wenn die Ressource verbraucht wurde, wird die Verarbeitung bei Verarbeitungsblock 250 (d. h. „Nächste Komponente, die die geforderte Ressource anbietet, suchen") fortgesetzt. Wenn die Ressource nicht verbraucht wurde, wird bei Entscheidungsblock 256 geprüft, ob Klassenanforderungen und optionale Anforderungen gültig sind. Wenn alle Prüfungen gültig sind, wird die aktuelle Instanz bei Verarbeitungsblock 258 gewählt und die Verarbeitung bei Verarbeitungsblock 264 fortgesetzt. Wenn eine der Prüfungen ungültig ist, wird die Verarbeitung bei Verarbeitungsblock 260 (d. h. „Wurden alle Ressourceninstanzen geprüft?") fortgesetzt. Wenn nicht alle Ressourceninstanzen geprüft wurden, wird die Verarbeitung bei Block 250 fortgesetzt, wo nach der nächsten Komponente gesucht wird, die diese Ressource anbietet.
  • Wenn alle die Ressource anbietenden Komponenten geprüft wurden oder wenn (bei Entscheidungsblock 252) festgestellt wird, dass keine vorhandene Komponente die Ressource anbietet, wird die Verarbeitung bei Block 262 fortgesetzt und eine neue Komponenteninstanz erstellt, die Konfigurationsmodifikation zur Modifikationsliste gesendet und die Verarbeitung bei Block 264 fortgesetzt. Bei Block 264 wird der zurückgegebenen Instanzvariable der anfordernden Komponente eine Instanz des angeforderten Komponententyps zugewiesen. Die Verarbeitung wird bei Entscheidungsblock 266 (d. h. „Erfüllt die aktuelle Instanz die Abfrage- und Testbedingungen?") fortgesetzt, um festzustellen, ob alle Abfrage- und Testbedingungen erfüllt sind. Wenn nicht, wird die Verarbeitung bei Verarbeitungsblock 250 fortgesetzt. Ansonsten endet die Verarbeitung bei Block 268.
  • MODELLSPRACHE
  • Die Modellsprache ermöglicht die Definition eines Modells (z. B. Modellelemente, Model-Randbedingungen und Modellstruktur). Mit der Syntax der Modellsprache werden Anweisungen zur Definition der Modell- oder Produktbasis eingegeben. Die Produktbasis enthält alle Informationen über ein Modell. Die Produktbasis enthält die Informationen, mit denen ein System konfiguriert wird.
  • Die Produktbasis kann außerdem hierarchische Produktlinien enthalten. Produktlinien gestatten die Unterteilung einer Produktbasis in Gruppen. Ein Beispiel für eine solche Gruppierung sind Marketing-Abteilungen wie DesktopSysteme. Ein Desktopsystem kann alle Komponenten enthalten, die üblicherweise als Teile eines Desktop-Computersystems verkauft werden, darunter Systemsoftware, Modemkarten, Mikroprozessor-Chips usw. Nur Komponenten, die Teil des gleichen Produkts sind, können zusammen konfiguriert werden. Jedoch kann jede Komponente Teil mehrerer Produktlinien sein. Es können auch Produktlinienhierarchien deklariert werden. Ein Child-Element in einer Produktlinienhierarchie erbt vom Parent-Element, und jede Komponente im Parent-Element wird auf das Child-Element vererbt. Das Format einer Produktliniendeklaration sieht wie folgt aus (Hinweis: reservierte Wörter sind fett gedruckt, doppelte Unterstreichungen deuten Wiederholungen an und Teile in „« »" sind obligatorisch):
    Figure 00250001
  • Oder zur Deklaration von Produktlinienhierarchien:
    Figure 00250002
  • Systemmodelle werden in Dateien gespeichert, die als Parse-Dateien bezeichnet werden. Gemeinsam sind die Parse-Dateien als Produktbasis bekannt. Parse-Dateien enthalten Informationen über eine allgemeine Kategorie in einem Systemmodell. Datenrepräsentationen einzelner Systeme sind als Objekte bekannt. Schränke, Speichergeräte und Peripheriekarten sind Beispiele von Objekten in der Produktbasis, die zur Konfiguration von Computersystemen verwendet wird. Eine Eigenschaft bietet Attribute für ein Objekt. Zum Beispiel sind in der Produktbasis eines Computersystems solche Eigenschaften wie Kapazität, Strombedarf und Anschluss-Schnittstelle Eigenschaften eines Speichergerät-Objekts. Außerdem kategorisiert eine Eigenschaft ein Objekt. Das heißt, dass Objekte mit gleichen Eigenschaften als Objektklassen bezeichnet werden. Objekte können Eigenschaften von anderen Objekten erben. Das heißt, eine Objektklasse fungiert als Parent-Klasse, und die Child-Klasse weist zusätzlich zu weiteren Eigenschaften sämtliche Eigenschaften der Parent-Klasse auf.
  • Attribute definieren als für eine erfolgreiche Konfiguration einer Komponente zu berücksichtigende Aspekte einer Komponente. Beispiele von Attributen einer Stromversorgung sind erforderlicher Schrankeinbauplatz und Restleistung, nachdem alle Stromverbraucherkomponenten in die Konfiguration eingebunden wurden. Attribute können auf Klassenebene zugewiesen werden, wobei die Abkömmlinge (Deszendenten) der Klasse die Klassenattribute erben. Außerdem können Attribute mit bestimmten Komponententypen assoziiert werden. Es gibt keine Grenze für die Anzahl an Attributen, die einer Komponente oder Klasse zugewiesen werden können.
  • Attributwerte können vom Typ Gleitkomma (floating point), Boole (boolean), Kette (string), Datentyp (data type), Komponente (component) und Ressource (resource) sein. Attribute können mehrwertig sein. Das heißt, mehrwertige Attribute können mehr als einen Wert haben. Zum Beispiel kann für eine entweder in einen internen Einbaurahmen mit voller oder halber Höhe einbaubare Komponente das Attribut „attribute_Bay_type_required" beide Werte enthalten. Ein Attribut wird durch eine Anweisung deklariert (Hinweis: „I" gibt eine Auswahl an):
    Figure 00260001
  • Beispiele für Attributdeklarationen:
    Flogt Position
    Flogt throughput_available
    Flogt load_consumed
    resource space_type_required
  • Eine Ressource ist eine Systemware, die mit Komponententypen assoziiert ist. Eine Ressource kann mehreren Komponententypen zugewiesen sein. Mehrere Ressourcen können einer Komponente zugewiesen sein. Wenn eine Komponente instantiiert wird, wird die dieser Komponente zugewiesene Ressource für die Konfiguration verfügbar gemacht. Wenn eine Komponentenressource verbraucht wird, wird nur die von der zugewiesenen Komponente gelieferte Ressource nicht mehr verfügbar. Die Verfügbarkeit einer Ressource des gleichen Typs, die von einer zweiten Komponente angeboten wird, bleibt vom Verbrauch der Ressource der ersten Komponente unberührt. Wenn daher der gleiche Ressourcentyp von der zweiten Komponente bezogen werden kann, bedeutet der Verbrauch der Ressource der ersten Komponente nicht den Verbrauch aller Ressourcen dieses Typs im modellierten System.
  • Bevor ein Ressourcentyp einem Komponententyp zugewiesen oder von einer Komponenteninstanz genutzt werden kann, muss der Ressourcentyp deklariert werden. Eine Ressourcendeklaration hat folgendes Format:
    resource «ResourceName»,
  • Beispiel für eine Ressourcendeklaration:
    resource static RAM resource;
  • Datentypdeklarationen definieren die Schnittstellentypen und Datenübertragungsprotokolle, die den Verbindungen im modellierten System zur Verfügung stehen. Beispiele für Datentypen sind SCSI und IDE. Ein Datentyp wird wie folgt deklariert:
    Figure 00270001
  • Eine abgeleitete Klasse wird durch folgende Anweisung definiert (Hinweis: der mit dem Symbol „¿" gekennzeichnete Teil ist fakultativ):
    Figure 00270002
  • Der Anzeigestatus umfasst die Werte Hidden (Ausgeblendet), Listed (Gelistet) und Drawn (Angezeigt). Drawn gestattet Klassenmitgliedern, in der grafischen Darstellung der Konfiguration angezeigt zu werden. Listed gestattet Klassenmitgliedern, auf der Liste der Zusatzkomponenten angezeigt zu werden. Hidden wird für ausgeblendete Mitglieder (d. h. nicht angezeigt) verwendet, die „children" (Subkomponenten) im Status Drawn haben. Ein Attributwert kann zum Zeitpunkt der Deklaration zugewiesen werden, doch ist dies nicht Bedingung. Connection origin (Verbindungsursprung) gibt an, ob Instanzen dieser Klasse als Anfangspunkte für die Berichterstellung genutzt werden können oder nicht. Beispiel für die Deklaration einer abgeleiteten Klasse:
    Figure 00280001
  • In diesem Beispiel wird die abgeleitete Klasse Bay (Einbaurahmen) erstellt. Sie ist Mitglied der Grundklasse Container. Daher kann sie andere Elemente enthalten. Ihre Attribute sind height, half_height compatibility (mit voller/halber Einbauhöhe kompatibel), front_accessibility (Frontzugang; d. h. die Komponente in diesem Einbaurahmen kann von der Front eines Systemschranks erreicht werden), Höhe und Position. Diese Attribute werden von jedem Deszendenten dieser abgeleiteten Klasse ererbt.
  • Systemkomponenten oder Komponententypen werden durch folgende Deklaration definiert:
    Figure 00280002
  • Das Feld „label" definiert die Bezeichnung, die der grafischen Darstellung der Komponente gegeben wurde. Das Feld „Description" definiert die angezeigte oder gemeldete Beschreibung. Das Feld „dataType" wird verwendet, wenn der Komponententyp Deszendent eines Ports ist und definiert den Datentyp, der von diesem Komponententyp übertragen werden muss. Das Feld „subComponents" definiert die strukturell untergeordneten Elemente des Komponententyps „Composite" (Verbundgruppe). Das Feld „transfers" definiert die Pfade, über die Daten durch eine Verbundgruppenkomponente fließen können. „Transfers" ist ein Mechanismus zum Ausdruck eines internen Datenpfads innerhalb einer Verbundgruppenkomponente. Ein Kabel wird zum Beispiel als Komponente mit zwei Ports dargestellt und zur Übertragung von Daten von einem Port zum anderen verwendet. Das Feld „values" ermöglicht die Einrichtung von Komponentenattributen oder Eigenschaften. „fillDirection" beschreibt die Reihenfolge, in der mehrere in einem einzelnen Container befindliche Komponenten angezeigt werden.
  • Beispiel für eine Komponentendefinition:
    Figure 00290001
  • Dieses Beispiel definiert einen Komponententyp „Cabinet1" innerhalb der Klassen Cabinet (Schrank) und Composite (Verbundgruppe). 4 ist die strukturelle Hierarchie für ein Modell zur Konfiguration von Computersystemen. Cabinet1 108 ist Deszendent von Cabinet 110, der Deszendent von Composite 112 ist. Daher gehört Cabinet1 108 dem Komponententyp Verbundgruppe an. Dieser hat Subkomponenten oder „Children": Slot1_1 bis Slot1_10 und CabinentBay{4}). Die Ganzzahl „4" gibt an, dass Cabinet1 vier Komponententypen CabinetBay (Schrankeinbaurahmen) enthält.
  • Beispiel für den Komponententyp Composite, der Deszendent eines Verbinders ist:
    Figure 00300001
  • Beispiel einer Komponententypdefinition, die eine Ressource bereitstellt:
    Figure 00300002
  • Randbedingungen bieten Konfliktlösungsangaben, um zu ermitteln, ob Komponenten zum konfigurierten System hinzugefügt werden können. Randbedingungen können solche Dinge wie Platzzuweisung, Platzeinschluss und weitere Komponentenanforderungen regeln. Randbedingungen werden als Komponentenkennzeichen und Komponentenabhängigkeiten ausgedrückt. Randbedingungen testen die Attribute und Abstammung von Komponenten und identifizieren Komponenten, die für die erfolgreiche Instantiierung von Komponenten erforderlich sind.
  • Figure 00310001
  • Die Namen der Randbedingung und der Klasse, auf die die Randbedingung angewendet werden kann, werden in der ersten Zeile der Deklaration gekennzeichnet. Der Ausdruck „requiresComponent, „requiresContainer" und „requiresConnection" gibt jeweils zusätzliche Elemente (d. h. Komponenten, Container oder Verbindungen) an, die zur Konfiguration der Komponente mit Randbedingung erforderlich sind. Die benötigten zusätzlichen Elemente können durch eine Kombination aus dem Namen einer abgeleiteten Klasse und Ressourcen, den Namen einer abgeleiteten Klasse oder dem Namen eines Komponententyps identifiziert werden. Wenn während der Konfiguration eine Anforderung erfüllt wird, gibt die Konfigurations-Engine die Instanz des gefundenen angeforderten Komponententyps zurück. Die Variable „?ReturnedInstance" kennzeichnet die mit der Instanz des von der Konfigurations-Engine gefundenen angeforderten Komponententyps assoziierte Variable. Eine Anforderung kann weiter darum bitten, dass die Konfigurations-Engine eine Auswahl auf der Grundlage der Attributmaximierung trifft. Das bedeutet, dass die Auswahl ein gegebenes Attribut maximiert. Daher gibt eine „?ReturnedInstance.AttributeName"-Deklaration das angeforderte Element mit der größten Menge an AttributeName zurück. Die Option Attributmaximierung kann auch ein Ausdruck sein, der auf andere zurückgegebene Instanzen verweist, die von vorherigen Komponentenanforderungen mit der aktuellen Randbedingung erstellt wurden und mit ihnen Operationen ausführen. Eine Komponenteninstanz gilt als verbraucht, wenn sie nicht zur Erfüllung einer Randbedingungsforderung zur Verfügung steht. Das Schlüsselwort „Consumed" (Verbraucht) kann als Zeichen für eine Instanz angesehen werden, die von einer Instanz als nicht verfügbar zurückgegeben wurde. Wenn eine Instanz verbraucht ist, schließt die Konfigurations-Engine diese Instanz bei späteren Suchläufen zur Erfüllung einer anderen Anforderung aus. Das Schlüsselwort „Existing" beschränkt die Suche auf vorhandene Instanzen. Das Schlüsselwort „New" fordert, dass eine neue Instanz zur Erfüllung einer Randbedingungsanforderung erstellt wird.
  • Die Randbedingung „requiresConnection" (Verbindung erforderlich) verfügt über weitere Argumente, die die Anforderungen an den gesamten Verbindungspfad, der mehrere verschiedene Komponenten enthalten kann, beschreiben. Die Randbedingungsanforderung „requiresConnection" hat eine zusätzliche Anforderung, die sich von den Randbedingungen „requiresComponent" und „requiresContainer" unterscheidet. Wie die beiden anderen Randbedingungen erfordert „requiresConnection", dass die Anforderung erfüllt wird. Zusätzlich fordert die Randbedingung „requiresConnection", dass die Instanz mit der Randbedingung mit der erfüllenden Instanz verbunden ist.
  • Das Feld bzw. die Variable „StartingComponentName" verweist auf die Anfangskomponente der Verbindung (d. h. wo die Verbindung beginnt). Wenn diese Variable nicht eingestellt ist, wird die Instanz mit der Randbedingung als Anfangskomponente angenommen. Die nächste Zeile (d. h. «ClassName, ResourceName | ClassName | ComponentName») kennzeichnet die Verbindungskomponente.
  • Der Datentyp, den die Verbindung unterstützt, wird im Feld „DataType" angegeben. Das Feld „dataType" gibt die Datentypanforderungen eines Ports der angeforderten Instanz an. Weiterhin gibt das Feld „dataType" die Datentypanforderungen eines Ports der Instanz mit der Randbedingung an. Da das Feld „dataType" lediglich verlangt, dass die Instanz mit der Randbedingung und die angeforderte Instanz vom gleichen Datentyp sind, kann eine Verbindungsrandbedingung durch eine mehrstufige Verbindung erfüllt werden. Zum Beispiel ist es möglich, ein SCSI-Gerät durch eingreifende Komponenten an eine SCSI-Karte anzuschließen.
  • 5 stellt die Komponentenverbindungen mit mehreren eingreifenden Komponenten und Datentypen dar. Die Instanz mit Randbedingung 161 verfügt über Port 160 und Port 162. Port 162 ist mit dem Verbinder 179 an Port 163 angeschlossen. Port 164 von Verbinderblock 179 ist an Port 165 der ersten eingreifenden Komponente 166 angeschlossen. Port 167 der ersten eingreifenden Komponente ist an Port 168 des Verbinders 180 angeschlossen. Mehrere eingreifende Komponenten 183 stellt eine Anzahl von eingreifenden Komponenten dar, die zwischen der ersten eingreifenden Komponente 166 und der n-ten eingreifenden Komponente 173 angeordnet werden können. Verbinder 180 und Verbinder 181 sind an den beiden Enden der mehreren eingreifenden Komponenten 183 angeordnet. Port 171 des Verbinders 181 ist an Port 172 der n-ten eingreifenden Komponente 173 angeschlossen. Port 174 ist an Port 175 des Verbinders 182 angeschlossen. Port 176 des Verbinders 182 ist an Port 177 der Diskettenlaufwerksteuerung 178 angeschlossen. Die Kette 184 stellt den verketteten Kommunikations- oder Verbindungspfad zwischen der Instanz mit Randbedingung 161 und der Diskettenlaufwerksteuerung 178 dar.
  • Die Felder „?ReturnedInstance" und „?ReturnedInstance.AttributeName" haben die gleiche Funktionalität wie bei den Randbedingungsausdrücken „requiresComponent" und „requiresContainer". Die Variable „%Path" ist an alle Instanzen gebunden, mit denen die Verbindung hergestellt wird. Das heißt, dass alle in die Verbindung einbezogenen Instanzen als Verbindungspfad bezeichnet werden.
  • Hinsichtlich der Instanzvariablen „?ReturnedInstance.AttributeName" und „?ReturnedInstance" ist die Maximierungsoption die gleiche wie für die Randbedingungen „requiresComponent" und „requiresContainer". Für die Pfadinstanzvariable gibt es zwei Maximierungsoptionen. Die erste Option ist der Verbinder. Das Feld „ClassName" gibt die gewünschte Klasse der zur Einrichtung des Pfades genutzten Verbinderinstanzen an. Das Feld „?ConnectorInstance" ist an die zurückgegebene Verbinderinstanz gebunden und „AttributeName" ist das zu maximierende Verbinderinstanzattribut. Die Anforderung für „?ConnectorInstance" wird auf die gleiche Weise maximiert wie die zurückgegebenen Instanzen für „requiresComponent" und „requiresContainer".
  • Die zweite Maximierungsoption von „requiresConnection" ist die Pfadlängenoption. Diese Option bietet die Möglichkeit, Auswahlen unter Pfaden nach Priorität zu ordnen. Die Pfadlänge wird durch die Anzahl an Komponenteninstanzen im Pfad einschließlich Instanzen der Klasse Verbinder definiert. Der längste Pfad wird durch das Schlüsselwort „Longest" in der Randbedingungsdeklaration angegeben. Wenn die Option des längsten Pfades nicht gewählt wurde, wählt die Konfigurations-Engine den kürzesten Pfad.
  • Die Angaben „Consumed", „Existing" und „New" der Randbedingung „requiredConnection" haben die gleiche Funktionalität wie in den Randbedingungsdeklarationen „requiresComponent" und „requiresContainer". Die Option Konvertierungen bietet die Möglichkeit anzugeben, dass die angeforderte Instanz einen anderen Datentyp als die Instanz mit Randbedingung haben kann. Wenn diese Option gewählt wird, braucht der Port auf der angeforderten Seite keine Daten des Datentyps „dataType" zu unterstützen. Die einzige Anforderung besteht darin, dass der in der Variable „dataType" angegebene Datentyp am Port der Anforderungsseite verfügbar ist. Die Option erweitert die Alternativen, die die Konfigurations-Engine bei der Erfüllung der Verbindungsanforderung berücksichtigen darf, denn diese braucht nun nicht mehr eine Abschlusskomponente mit dem gleichen Datentyp wie die Anforderungsinstanz zu wählen. Wenn also eine Verbindungsrandbedingung Konvertierungen zulässt, brauchen zur Erfüllung einer Anforderung nach einer SCSI-Verbindung nur SCSI-Daten an die anfordernde Instanz gesendet zu werden.
  • Beispiel für eine Randbedingungsdefinition:
    Figure 00340001
    Figure 00350001
  • Die Randbedingung „requiresContainer" (Container erforderlich) gibt an, dass der Komponententyp Speichergerät einen Container (d. h. einen Einbaurahmen) erfordert. Zusätzlich erlegt diese Randbedingungsdefinition der Klasse Speichergerät in der Modellhierarchie und allen ihren Deszendenten eine Randbedingung auf. Sie erfordert die längste Kabelkomponententypverbindung zu einem SCSI-Karten-Komponententyp. Der von dieser Verbindung unterstützte Datentyp heißt „SCSIDatatype". Ein Port der Instanz mit Randbedingung muss also diesen Datentyp unterstützen. Die Datentyprandbedingungen lassen sich mit einer mehrstufigen Verbindung erfüllen. Daher muss das SCSI-Speichergerät über eingreifende Komponenten an die SCSI-Karte angeschlossen sein. Die Variable „?card" kennzeichnet die verwendete SCSI-Karteninstanz. Die Variable „%path" enthält Informationen zu den für die Herstellung der Verbindung verwendeten Instanzen.
  • Die Modellsprache ermöglicht die Durchführung weiterer Tests und Abfragen, um zu gewährleisten, dass die Konfigurations-Engine verwendbare Instanzen oder Instanzenmengen zurückgibt. Wenn eine Randbedingung eine Komponentenanforderung enthält, werden diese Tests und Abfragen hinter dieser Anforderung angeordnet. Wenn die Abfragen und Tests nicht erfüllt werden, sucht die Konfigurations-Engine weiter nach einer anderen Alternative zur Erfüllung der Anforderung. Es folgen Beispiele für den in der Modellsprache gelieferten Test: Mathematische Operatoren:
  • +
    (Addition)
    (Subtraktion)
    *
    (Multiplikation)
    /
    (Division)
    ABS
    (Absolutwert)
    SQRT
    (Quadratwurzel)
  • Relationale Operatoren:
    • >
      (größer als)
      <
      (kleiner als)
      =
      (gleich)
      >=
      (größer als oder gleich)
      <=
      (kleiner als oder gleich)
      !=
      (ungleich)
  • Boolesche Operatoren:
    • OR
      (logisch inklusives oder)
      AND
      (logische Konjunktion)
      NOT
      (logische Negation)
  • Zuweisungsoperator:
    • :=
      (wird zu, nimmt den Wert an von)
  • Zum Beispiel kann beim Konfigurieren eines Computersystems ein Test zur Konfiguration eines Diskettenlaufwerks für das Computersystem ausgeführt werden. Ein Diskettenlaufwerk erfordert einen Einbaurahmen oder -platz im Systemschrank. Eine solche Randbedingung würde als eine Komponentenanforderung „requiresContainer" ausgedrückt. Diese Anforderung würde die Konfigurations-Engine dazu veranlassen, nach einer Kandidateninstanz zur Erfüllung der Anforderung zu suchen. Wenn die Engine die Kandidateninstanz (d. h. „?bay") zurückgibt, können weitere Tests durchgeführt werden, um festzustellen, ob das Laufwerk in die zurückgegebene Instanz passt. Dies kann durch Vergleich der Höhenattributwerte der Kandidateninstanz (d. h. „?bay") und der Instanz mit Randbedingung (d. h. „?this") wie folgt erfolgen:
    ?bay.height >= ?this.height
  • Interne Standardfunktionen bieten zusätzliche Test- und Abfragemöglichkeiten.
  • Interne Standardfunktionen lassen sich in Abfrage- und Prädikatfunktionen unterteilen. Beispiele für Abfragefunktionen:
  • ceil
    Fragt ein Attribut vom Typ Gleitkomma oder einen Ausdruck, der einen Gleitkommawert bewertet, nach dem kleinsten ganzzahligen Wert größer als oder gleich dem Gleitkommawert ab. Gibt eine ganze Zahl zurück. Syntax: ceil («Ausdruck»)
    ClassName
    Fragt eine Sollvariable nach allen in der Menge enthaltenen Instanzen ab, die zur angegebenen Klasse gehören. Syntax: ClassName («%InstanzMenge»)
    ComponentName
    Fragt eine Sollvariable nach allen in der Menge enthaltenen Instanzen ab, die zum angegebenen Komponententyp (z. B. Blattklasse) gehören. Syntax: ComponentName («%ZurückgegebeneInstanz»)
    Component
    Fragt eine Sollvariable nach allen Instanzen ab, die nicht Deszendenten der Klasse Verbinder sind. Syntax: ClassName («%InstanzMenge»)
    component,
    Fragt eine Instanz nach dem Komponententyp (d. h. der Klassenhierarchie-Blattklasse) ab, deren Deszendent sie ist. Gibt den Parent-Komponententyp zurück. Syntax: component («%Zurückgegebenelnstanz»)
    COUNT
    Fragt eine Sollvariable nach allen in der Menge enthaltenen Instanzen ab, die zur angegebenen Klasse gehören. Syntax: COUNT («ClassName ComponentTypeName» «(%InstanzMenge)»)
  • Beispiel für eine Randbedingungsdefinition mit Abfrage- und Prädikatfunktionalität:
    Figure 00370001
    Figure 00380001
  • In diesem Beispiel erfordert Storage_Device eine Verbindung zu einer Komponente vom Typ „SCSICard". Die Verbindung muss den Datentyp „SCSIDatatype" aufweisen. Die Komponenteninstanz vom Typ „SCSICard" ist an die Instanzvariable „?card" gebunden, und die Komponenten im Verbindungspfad sind (als Menge) an die Sollvariable „%path" gebunden. Die Verbinderkomponente zur Einrichtung der Verbindung muss den Typ „Cable" haben und ist an die Instanzvariable „?c" gebunden. Kandidatenkabel werden vom kürzesten zum längsten angefordert und bei Vorhandensein von Alternativpfaden von der SCSICard-Instanz wird der längste Pfad (mit der größten Anzahl an Komponenten) bevorzugt.
  • Dieses Beispiel gibt an, dass das Storage_Device in einer Containerkomponente vom Typ „Bay" untergebracht werden muss. Die Instanz vom Typ „Bay" muss die Bay_Resource versorgen. Die Instanz vom Typ „Bay" ist an die Instanzvariable „?bay" gebunden, und die Instanz ist als „consumed" (d. h. nicht verfügbar für spätere Komponentenanforderung vom Typ Bay) gekennzeichnet.
  • Im Beispiel erfordert die Wortgruppe „ancestor (?bay, Cabinet) == ancestor (?card, Cabinet", dass der strukturelle Vorgänger (vom Typ Schrank) der durch „?bay" gekennzeichneten Instanz die gleiche Instanz wie der strukturelle Vorgänger (vom Typ Schrank) der durch „?card" gekennzeichneten Instanz sein muss. Mit anderen Worten müssen sich Karte und Einbaurahmen im gleichen Schrank befinden.
  • Die im vorigen Beispiel verwendete Wendung „Forall" gibt an, dass alle Komponenteninstanzen vom Typ Storage_Device, die am ersten Kabel in „%path" angeschlossen sind, im gleichen Schrank wie die Instanz von Storage_Device mit Randbedingung untergebracht sein müssen.
  • Randbedingungsbeziehungen können entweder auf Komponenten- oder auf Klassenebene hergestellt werden. Auf Komponentenebene geben Randbedingungsbeziehungen an, welche Komponententypen welchen Randbedingungen unterliegen. Die in der Randbedingungsbeziehung bezeichnete Komponente kann jedem der von einer Komponententypdeklaration definierten Komponententypen angehören. Die Randbedingung kann eine durch eine Randbedingungsdeklaration deklarierte Randbedingung sein. Syntax für die Angabe einer Randbedingung auf Komponentenebene:
    Figure 00390001
  • Randbedingungen können auch auf Klassenebene ausgedrückt werden. Eine Randbedingung auf Klassenebene wird als Konjunkt in Ausdrücken von Randbedingungen auf Komponentenebene für alle von der Klasse mit Randbedingung abgeleiteten Komponententypen bewertet. Wenn ein Ausdruck auf Komponentenebene bewertet wird, werden Randbedingungen auf Klassenebene an den Beginn des Randbedingungsausdrucks angehängt und enden mit der Anforderung dieser Randbedingung und Prädikatfunktionausdrücken. Wenn eine Komponente die Randbedingungen auf Klassenebene von verschiedenen Ebenen in der Klassenhierarchie erbt, werden die Randbedingungen von der primitivsten Klasse (d. h. der Wurzelklasse-Komponente) zur systemspezifischsten Klasse (d. h. dem benutzerdefinierten Komponententyp) angefordert. Die Syntax für die Deklaration einer Randbedingungsbeziehung auf Klassenebene lautet wie folgt:
    constrain class «ClassName» with «ConstraintName»
  • Die vorliegende Erfindung bietet die Möglichkeit, in einer strukturellen Hierarchie mit drei Substrukturtypen darzustellen, wie Komponenten eines bestimmten Systems räumlich und physisch existieren: Verbundgruppenhierarchien, Container-Hierarchien und Verbindungsbeziehungen. Verbundgruppenhierarchien identifizieren Komponenten als Teil anderer Komponenten. Container-Hierarchien identifizieren Komponenten als in anderen Komponenten enthalten. Verbindungsbeziehungen identifizieren Komponenten, die Verbindungen zu anderen Komponenten herstellen. Die Beziehungen zwischen Generationen innerhalb dieser Strukturhierarchie werden durch die Schlüsselwörter „childOf, „containedBy" und „connectsWith" ausgedrückt. Strukturbeziehungen werden wie folgt deklariert:
    «ClassName» childOf «ClassName»
    «ClassName» containedBy «ClassName»
    «ClassName» connects With «ClassName»
  • MODELLUNTERHALTUNG
  • Ein Modell kann durch Anweisungen definiert werden, die in ihrer Syntax der oben beschriebenen Modellsprache entsprechen. Weiterhin bietet eine interaktive Einrichtung, das Subsystem Modellunterhaltung, die Möglichkeit, ein Modell mit einer grafischen Benutzeroberfläche zu definieren und zu unterhalten. Das Subsystem Modellunterhaltung bietet die Möglichkeit, die Produktbasis interaktiv mit einer grafischen Benutzeroberfläche zu definieren. Die semantischen Darstellungen, Klassenhierarchien und Strukturhierarchien des Modells können mit einer grafischen Benutzeroberfläche interaktiv angezeigt (d. h. durchsucht) und modifiziert (d. h. bearbeitet) werden. Außerdem wird die Eingabe von Randbedingungen überprüft. Es werden Test- und Debugging-Möglichkeiten angeboten, um Probleme im Modell zu erkennen und die Leistung des modifizierten Modells zu testen und zu optimieren. Zum Beispiel wird die Modelldefinitionssyntax geparst und geprüft und es werden Musteranforderungen ausgeführt. Zur Überwachung der Leistung der Konfigurationsanforderungen im modifizierten Modell können Diagnosefunktionen aufgerufen werden.
  • Die Durchsuchfähigkeit des Unterhaltungssystems bietet die Möglichkeit, grafische Darstellungen der Klassen und Substrukturkomponenten der Modellhierarchie anzuzeigen. Es wird auch ein Klassenbaum zur Darstellung der Deszendenten von Grundklassen in der Modellhierarchie (d. h. eine Objektklassenhierarchie) verwendet. Die Objektklassenhierarchie wird durch fünf separate Bäume, einen für jede Grundklasse, dargestellt. Jeder Zweig kann mehrere Deszendenten aufweisen.
  • Mit einem Komponentenbaum werden die substrukturellen Beziehungen von Verbundgruppen-, Verbinder- und Container-Komponenten dargestellt. Verbundgruppenbäume werden zuerst aufgeführt, gefolgt von Verbinder- und Container-Bäumen.
  • Ein Hierarchiemitglied kann durch Doppelklick auf das Feld, das das Hierarchiemitglied enthält, zur Modifikation ausgewählt werden. Es wird ein Bearbeitungsfenster für die gewählte Hierarchie angezeigt. Es kann auch ein Listenmenü zur Auswahl des zu bearbeitenden Mitglieds verwendet werden. In einer bevorzugten Ausführungsform bestehen die Listenmenüs aus einer Reihe von Pulldown-Menüs, die aus der Menüleiste des Fensters „Unterhaltung" ausgewählt werden können. Die ursprüngliche Menüleiste enthält eine Auswahl für jedes allgemeine Element des Produktbasismodells (d. h. Klassen, Komponententypen, Randbedingungen usw.). Wenn ein allgemeines Element ausgewählt wird, wird ein neues Fenster angezeigt, das die Modellmitglieder dieser allgemeinen Typauswahl auflistet. Ein Modellmitglied kann zusammen mit einer Operation (d. h. Kommentar, Anzeigen, Neu oder Bearbeiten) ausgewählt werden. Eine Kommentar-Operation ermöglicht das Hinzufügen eines Kommentars zur Produktbasis nach dem ausgewählten Mitglied. Die Operation „Anzeigen" bietet die Möglichkeit, die Einstellungen für ein gewähltes Modellelement anzuzeigen. Das Modellmitglied kann durch Auswahl der Operationen „Neu" oder „Bearbeiten" modifiziert werden.
  • Zum Modifizieren eines Attributs eines Modellmitglieds wird in der bevorzugten Ausführungsform zum Beispiel der Attributtyp aus dem Listenmenü gewählt. Wenn die Attribute angezeigt werden, kann eine Operation „Neu" oder „Bearbeiten" gewählt werden, um ein neues Attribut hinzuzufügen bzw. ein vorhandenes Attribut zu modifizieren. Eine Attributauswahl muss auch erfolgen, wenn die Operation „Bearbeiten" gewählt wird. Nach dieser Auswahl wird das Fenster „Attribut-Editor" angezeigt. Die Felder des Fensters (z. B. Name, Attributtyp und Mehrwertig) sind ursprünglich entweder leer oder enthalten die Standardeinstellungen für eine Neu-Operation bzw. die aktuellen Attributeinstellungen für eine Bearbeiten-Operation. Das Feld „Attributname" kann gewählt und modifiziert werden. Das Typfeld kann durch Auswahl aus einer Liste gültiger Attributtypen modifiziert werden. Das Feld „Mehrwertig" lässt sich aktivieren und deaktivieren. Nach dem Vornehmen der Modifikationen können diese gespeichert oder abgebrochen werden.
  • Ressourcen und Datentypen können auf die gleiche Weise wie die Erstellung und Modifikation eines Attributs hinzugefügt oder modifiziert werden. Modellelemente, die relationale Definitionen erfordern, benötigen zusätzliche Bezeichnungen. Beispiele hierfür sind abgeleitete Klassen, Produktlinien (d. h. Parent-Produktlinie), Randbedingungen (d. h. Klasse mit Randbedingungen) und Komponententypen.
  • In der bevorzugten Ausführungsform erfordert das Hinzufügen einer abgeleiteten Klasse einen zusätzlichen Anfangsschritt zur Definition der Position der neuen abgeleiteten Klasse in der Modellhierarchie. An dieser Stelle haben die Operationen „Neu" und „Bearbeiten" die gleichen Operationscharakteristika, einschließlich der Möglichkeit, zu speichern oder abzubrechen. Das heißt, die abgeleiteten Feldwerte (vorhanden, Standard oder leer) werden in einem Editor-Fenster angezeigt. Außerdem können allen Mitgliedern der abgeleiteten Klassen und deren Komponententypen Attribute hinzugefügt werden; Randbedingungen können auf Klassenebene für die abgeleitete Klasse angegeben werden; strukturelle Hierarchiebeziehungen können für die abgeleitete Klasse definiert werden; der Anzeigestatus des Anzeigefensters kann definiert werden; die abgeleitete Klasse kann als Verbindungsursprung (d. h. als Ausgangspunkt für einen Kabelbericht) gewählt werden; und der Komponentenabstand (d. h. der durchschnittliche Abstand von Mitgliedern der abgeleiteten Klasse zu anderen zur gleichen Verbundgruppe gehörenden Objekten sowie der Abstand vom Mitglied der abgeleiteten Klasse zum externen Port auf der Verbundgruppe) für untergeordnete Elemente der in die Verbindungen einbezogenen Verbundgruppenobjekte definiert werden.
  • Zum Hinzufügen einer neuen Komponente zum Modell muss die Klasse gewählt werden, deren Deszendent die neue Klasse ist. Das Feld „Subkomponente" bietet die Möglichkeit, die Strukturhierarchie (d. h. strukturell untergeordnete Elemente) einer Verbundgruppenkomponente anzugeben. Die Operationen „Neu" oder „Bearbeiten" bieten ferner die Möglichkeit, Connectivity-Felder wie Transfers (d. h. Pfade, auf denen sich Daten durch eine Verbundgruppenkomponente bewegen können), Datentyp, Verbindungsursprung anzugeben. Weiterhin können die folgenden Feldinformationen angegeben werden: Name des Komponententyps, zugehörige Attribute, Produktlinien (d. h. Produktlinien, die diese Komponente enthalten), Randbedingungen auf Blattebene, Ressourcen, Beschreibung, Bezeichnung, Teilenummer, Füllrichtung und Anzeigestatus.
  • Das Unterhaltungssystem bietet ferner die Möglichkeit, ein modifiziertes System zu testen. Die Option „Write-Integrität" legt fest, ob eine Parse-Datei (d. h.) geparst werden und eine modifizierte Parse-Datei geschrieben werden kann. Die Option „ProductBase-Integrität" legt fest, ob eine Parse-Datei (d. h.) geparst werden und eine modifizierte Parse-Datei geschrieben werden kann. Wenn nicht, werden Syntaxfehlermeldungen angezeigt. Die Debugger-(d. h. Konfigurier-)Option liest Komponentenanforderungen aus einer Anforderungsdatei und versucht, diese Komponenten mit den gewählten Randbedingungen in der aktuellen Parse-Datei zu konfigurieren. Der Debugger bietet eine Verfolgungsgmöglichkeit für Randbedingungen. Eine Tiefenverfolgung erzeugt Verfolgungsausgaben für eine verfolgte Randbedingung und alle von ihr erzeugten Randbedingungen. Eine flache Verfolgung erzeugt eine Verfolgungsausgabe für verfolgte Randbedingungen.
  • BEDARFSANALYSE
  • Der Prozess der Umsetzung von Kundenanforderungen in spezifische Komponenten und Konfigurationen wird als „Bedarfsanalyse" bezeichnet. Die Modellsprache bietet die Möglichkeit, ein Modell in Form von Kundenbedürfnissen und -anforderungen auszudrücken.
  • Mit einem Bedarfsanalyseansatz zur Modellbildung kann die Konfiguration auch in Form von Kapazitäten (d. h. erforderliche Mindestreaktionszeiten) oder Durchsatz ausgedrückt werden. Die Bedarfsanalysenkonfiguration kann mit einem Sprachnachrichten-Systemmodell veranschaulicht werden. Ein konfiguriertes Sprachnachrichtensystem kann eine bestimmte Anzahl an Stunden von Sprachdaten aufzeichnen und muss eine Reaktionszeit von unter fünf Sekunden für den Zugriff auf gespeicherte Nachrichten bieten müssen. Zur weiteren Veranschaulichung kann eine Telekommunikationskonfiguration in Form von Anrufaufkommen und höchstzulässigen Fehlleitungen (z. B. abgebrochene Anrufe) angegeben oder eine Computersystemkonfiguration erforderlich sein, um bestimmte Verarbeitungslasten, Datenspeichererfordernisse oder Reaktionszeiten zu unterstützen.
  • Die Modellsprache bietet die Möglichkeit, ein Bedarfsanalysemodell in der Konfigurationsmodelliersprache durch folgende Elemente auszudrücken: (1) Interpretation der Kundenanforderungsmengen (z. B. Sprachnachrichtenspeicherkapazität) und (2) Identifzierung der zugehörigen Mengen an Konfigurationskomponenten und Ressourcen. Dies ermöglicht das Erstellen von Modellanforderungen in Form von Bedarf zusätzlich zu Komponentenanforderungen. Komponenten können als Anforderungen oder Bedürfnisse befriedigend identifiziert werden. Das heißt, die Komponenten können als Lieferanten von einer Menge an Ressourcen (z. B. Megabytes an Speicherkapazität) identifiziert werden. Wenn ein Benutzer ein System oder einen Teil davon als Bedürfnisse oder Anforderungen ausdrückt, kann eine oder können mehrere Komponente(n) aus der Produktbasis gewählt werden.
  • EINGABEFORMULARE
  • Eingabeformulare bieten die Möglichkeit, Komponentenanforderungen vom Benutzer zu akzeptieren. Eingabeformulare gestatten dem Benutzer, die im System zu konfigurierenden Typen und Mengen von Komponenten anzugeben. Eingabeformulare bestehen aus Standardfensterformaten wie Listenfeldern und Schaltflächen. Eine dritte Art von Eingabeformularen bietet die Möglichkeit, eine Menge einer gegebenen Komponente anzugeben (Hinweis: Dokumentation bezeichnet dies als einzigartig...brauchen wir für diese Anmeldung mehr über dieses Merkmal?) Die Benutzerauswahlen auf den Eingabeformularen werden als Komponentenanforderungen bezeichnet. Eingabeformulare bieten die Möglichkeit, eine Standardpriorität für Komponentenanforderungen zuzuweisen. Standardprioritäten können von einer Anforderungspriorität (requestPriority) außer Kraft gesetzt werden. Diese Prioritäten bieten die Möglichkeit, die Reihenfolge anzugeben, in der Komponentenanforderungen von der Konfigurations-Engine erfüllt werden.
  • PRODUKT-KOMPONENTEN-ZUORDNUNGEN
  • Produkt-Komponenten-Zuordnungen definieren diskrete und zusammengesetzte Komponenten als Teile und Produkte in einem Verkaufsbestand und ordnen diese Teile und Produkte (d. h. Bündel) einer Menge aller Komponenteninstanzen in einem konfigurierten System zu. Die Produkt-Komponenten-Zuordnung enthält Darstellungen, die die einzelnen Teile und Produkte als angeforderte und optionale Bestandkomponenten definieren. Diese Darstellungen spezifizieren weiter, wie die Produkte in der Angebotserstellung angezeigt werden. Eine Darstellung besteht aus folgenden Abschnitten: Produkt-Header, Liste optionaler Geräte und Optionsrestriktionsliste.
  • Der Abschnitt „Produkt-Header" liefert den Produktnamen, wie er in der Produktbasis erscheint. Dies ermöglicht dem Paketierer, Komponenten in einem konfigurierten System mit Produkten abzustimmen und eine Satzzuordnung zu erkennen. Dieser Abschnitt umfasst auch die folgenden Zusatzinformationen: einen Produktbeschreibungs-String, der das Produkt für die Nutzung durch andere Teile der Erfindung (z. B. die Angebotserstellung) beschreibt; einen Produktnummern-String; den Preis (d. h. den Preis des Produkts); ein Produktlinien-String kennzeichnet die Produktlinien, denen das Produkt angehört und wird zur Eingrenzung der Satzzuordnungsuche verwendet; und eine Liste erforderlicher Komponenten, die für dieses Produkt erforderliche Komponenten (d. h. nach Teilenummer) oder Produkte (d. h. nach Produktnummer) angibt.
  • Die Liste optionaler Geräte führt zusätzliche Produktpakete auf, die in das Basispaket (d. h. das im Produkt-Header beschriebene Produkt) aufgenommen werden können. Ein Listeneintrag für optionale Geräte enthält: eine optionsspezifische ID zur eindeutigen Kennzeichnung des Eintrags; eine Optionsbeschreibung zur Beschreibung des Eintrags; eine Zusatzkostenangabe, die die Extrakosten bei Aufnahme dieses Eintrags aufführt; und eine Konstituentenproduktnummernliste, die die zum Eintrag gehörenden Produkte oder Komponenten nach deren Nummer angibt.
  • Bei der Optionsrestriktionsliste handelt es sich um eine Liste mit Optionengruppen, die voneinander abhängig sind und nach besonderen Kriterien gewählt werden müssen. Jeder Listeneintrag umfasst Folgendes: eine gruppenspezifische ID zur eindeutigen Kennzeichnung des Eintrags, eine Mengenangabe und eine optionsspezifische ID-Liste. Das Mengenangabefeld gibt die Anzahl an Mitgliedern einer Optionsgruppe an, die gewählt werden können oder müssen. Das Mengenangabefeld weist Grenzen oder Schlüsselwörter wie „atLeastOne" (mindestens ein), „atMostOne" (höchstens ein) oder „exactlyOne" (genau ein) auf. Die Grenzen sind zwei ganze Zahlen (in Klammern und durch Komma getrennt), die die obere und untere Grenze angeben. Das Schlüsselwort „atLeastOne" gibt an, das ein Mitglied der Optionsgruppe gewählt werden muss. Das Schlüsselwort „atMostOne" gibt an, dass nur ein Mitglied der Gruppe gewählt werden darf und kein Mitglied gewählt werden muss. Das Schlüsselwort „exactlyOne" gibt an, dass mindestens ein Mitglied der Optionsgruppe gewählt werden muss, doch nicht mehr als eines gewählt werden darf. Die Liste optionsspezifischer IDs ist eine durch Leerzeichen getrennte Liste optionsspezifischer IDs.
  • Beispiel für einen Eintrag in eine Produkt-Komponenten-Zuordnung für ein Modell zur Konfiguration von Computersystemen:
    Figure 00460001
  • PAKETIERER
  • Der Paketierer bündelt Komponenten in Produkt-(d. h. Marketing-)Pakete. Der Paketierer verwendet die Produkt-Komponenten-Zuordnung, um eine Satzzuordnung für ein konfiguriertes System aufzustellen. Bei einer Satzzuordnung handelt es sich um eine Menge von Viel-zu-Eins-Entsprechungen von Komponenteninstanzen in einem konfigurierten System mit den Produktpaketen, wobei die einzelnen Komponenteninstanzen jeweils einem Produktpaket zugeordnet werden.
  • Die Satzzuordnung bezeichnet den Prozess der Zuordnung einer Objektmenge (z. B. Komponenteninstanzen in einer Konfiguration) zu einer Menge von Oberbegriffen (z. B. Produkten). Mit diesem Prozess werden Komponenten für die aktuelle Konfiguration mit einer gewissen Gruppenzuordnung oder Einordnung (z. B. Produkte) erstellt. Ein mit der Satzzuordnung verbundenes häufiges Problem besteht darin, dass bei einer Erhöhung der Anzahl an Objekten und Satzzuordnungsalternativen die Anzahl dieser Alternativen exponentiell anwächst. Zur Begrenzung der Satzzuordnungsalternativen können heuristische Verfahren zur Bestimmung einer Mindestsatzzuordnung eingesetzt werden. Ein Beispiel für eine heuristische Anwendung ist die preisgünstigste Zuordnung. Mit diesem Verfahren werden die Zuordnungen maximiert und die Kosten minimiert. Das heißt, die Produkte, die die größte Zuordnung bei geringsten Kosten bieten, werden ausgewählt.
  • Ein weiteres heuristisches Verfahren basiert auf dem strukturellen Kontext der Alternativen. In einigen Fällen hat ein Produkt eine Struktur, die eine physische Einheit oder Gruppierung von Komponenten definiert. Dies kann zum Beispiel geschehen, wenn eine Senkung der Fertigungskosten durch Fertigung der Komponenten als Einheit erzielt wird. Diese Einsparungen können an den Käufer eines Systems weitergegeben werden, wo das kostenreduzierte System tatsächlich gekauft wird. Es ist daher erforderlich, die konfigurierten Komponenten zur Bestimmung von deren strukturellem Kontext zu untersuchen und dann die Attribute dem Strukturkontext der Produkte zuzuweisen. Ein Beispiel ist die Festplattenanordnung in einem Computerkonfigurationsmodell. Die Festplattenanordnung ist physisch konfiguriert oder gefertigt, mit einem Gestellrahmen, Stromversorgung, Steuerung und fünf Laufwerken. Es muss daher der Strukturkontext von Laufwerksanforderungen untersucht werden. Der Prozess der Auswahl von Instanzen als durch die Laufwerksanordnung „abgedeckt" muss die Feststellung einbeziehen, dass die „abgedeckten" Instanzen im Gestellrahmen oder als Laufwerksanordnung zu konfigurieren sind.
  • 10 stellt den Ablauf des Prozesses EstablishSetCover (Abdeckung einrichten) dar. An Verarbeitungsblock 450 werden die Produkte erkannt, die manche oder alle Komponenteninstanzen in der aktuellen Konfiguration abdecken können. Wenn bei Entscheidungsblock 452 (d. h. „Wurden Produkte erkannt?") keine Produkte erkannt wurden, endet die Verarbeitung bei Block 454. Wenn Produkte erkannt wurden, werden diese anhand der Instanzenanzahl, die das Produkt abdecken kann, in Verarbeitungsblock 456 priorisiert. Wenn bei Entscheidungsblock 458 (d. h. „Sind Instanzen nicht abgedeckt?") alle Instanzen der aktuellen nach Prioritäten geordneten Produktliste zugeordnet wurden, wird eine neue Produktliste erstellt, die Produkte in der aktuellen Konfiguration in Block 474 abdeckt, und die Verarbeitung wird bei Entscheidungsblock 452 (d. h. „Wurden Produkte erkannt?") fortgesetzt.
  • Wenn nicht, wird bei Block 460 das nächste Produkt aus der Liste gewählt. Wenn bei Entscheidungsblock 462 (d. h. „Existieren alle Elemente?") nicht alle Elemente des Produkts im konfigurierten System existieren, wird die Verarbeitung bei Verarbeitungsblock 460 fortgesetzt. Wenn sie existieren, werden zuvor nicht zugeordnete, aber vom aktuellen Produkt abdeckbare Instanzen in Verarbeitungsblock 464 erkannt. Wenn bei Entscheidungsblock 466 (d. h. „Instanzen erkannt?") keine Instanzen vom Produkt abgedeckt werden können, wird die Verarbeitung bei Entscheidungsblock 458 (d. h. „Sind Instanzen nicht abgedeckt?") fortgesetzt.
  • Wenn einige Instanzen erkannt wurden, wird ermittelt, ob eventuell bei Entscheidungsblock 468 (d. h. „Gibt es unerfüllte Produktoptionsrandbedingungen?") Produktoptionsrandbedingungen nicht erfüllt werden können. Wenn das der Fall ist, wird die Verarbeitung bei Entscheidungsblock 458 (d. h. „Sind Instanzen nicht abgedeckt?") fortgesetzt. Wenn nicht, wird die Verarbeitung bei Entscheidungsblock 470 (d. h. „Alle strukturellen Kontexte erkannt?") fortgesetzt. Wurden diese nicht erkannt, wird die Verarbeitung bei Block 460 fortgesetzt und das nächste Produkt herangezogen. Wenn ja, werden die zugeordneten Komponenteninstanzen bei Block 472 als durch das aktuelle Produkt abgedeckt markiert und die Verarbeitung bei Entscheidungsblock 458 (d. h. „Sind Instanzen nicht abgedeckt?") fortgesetzt.
  • DARSTELLUNG DES MODELLIERTEN SYSTEMS
  • Wenn ein System auf der Basis der gestellten Anforderungen konfiguriert wurde, werden verschiedene Berichts-Tools angewendet, um Informationen über das konfigurierte System zu erhalten. In der bevorzugten Ausführungsform umfassen diese Tools eine grafische Darstellung der allgemeinen Systemanordnung, eine Materialliste, eine Ersatzteilliste sowie eine Liste von Komponentenanforderungen, die nicht erfüllt werden konnten.
  • Die vorliegende Erfindung bietet die Möglichkeit, ein Modell in Strukturbegriffen auszudrücken. Das heißt, dass Komponenten durch ihre strukturell übergeordneten Elemente (Parents, z. B. Container), Verbindungen und Zusammensetzungen definiert werden. Daher ist die vorliegende Erfindung in der Lage, das konfigurierte System gemeinsam mit seinen Strukturmerkmalen grafisch anzuzeigen.
  • Die grafische Darstellung des konfigurierten Systems und seiner Strukturmerkmale wird als Systemfenster bezeichnet und bietet eine Abbildung der allgemeinen Anordnung des konfigurierten Systems. In der bevorzugten Ausführungsform zeigt das Systemfenster für ein Modell zur Konfigurierung von Computersystemen das Innere und die Frontseite aller im System verwendeten Schränke sowie die Anordnung der Karten, Stromversorgungen und Speichergeräte an. 11 stellt ein Systemfenster für eine Konfiguration eines Desktop-Computersystems dar. Das Systemfenster 540 zeigt die Komponenten des konfigurierten Systems und deren relative Anordnung im System an. Der Gestellrahmen 550 enthält die Systemplatine 552, den Laufwerkkäfig 554 und die Stromversorgung 556. Die Hauptplatine 552A ist eine Detaildarstellung der Systemplatine 552.
  • Die Hauptplatine 552A veranschaulicht die physische Anordnung anderer Komponenten auf der Systemplatine und deren relative Position. Zum Beispiel befindet sich die EVGA-Grafikkarte 558 unter der CPU-Platine 560. Weiterhin ist die Anordnung der Netzwerkkarte 562 und FAST-SCSI 564 in Einbauplätzen relativ zur CPU-Platine 560 im Systemfenster 540 ersichtlich. Freie Einbauplätze 566 werden offen dargestellt und liegen am nächsten zur CPU-Platine 560. Die Speichererweiterungsplatine 568A ist eine Detaildarstellung der Speichererweiterungskarte 568. 1 M Simm-Chips 570 sind auf der Speichererweiterungsplatine 568A angeordnet. Acht Speicherbänke 572 bleiben ungenutzt. Der Laufwerkkäfig (Seitenansicht) 554A ist eine Detaildarstellung des Laufwerkkäfigs 554. Ein Festplattenlaufwerk 535 MB (SCSI) 574, ein Diskettenlaufwerk 3,5'' 1,44 MB 576 und ein Bandlaufwerk zur Datensicherung 525 MB (SCSI) 578 befinden sich im Laufwerkkäfig 554. Die Frontplatte 580 zeigt die Lage der Frontseite des Laufwerkkäfigs (Seitenansicht) 554A. Das Diskettenlaufwerk 3,5'' 1,44 MB 576 und das Bandlaufwerk zur Datensicherung 525 MB 578 wurden als frontseitig zugängliche Komponenten konfiguriert. Der Einbaurahmen 582 ist ein frontseitig zugänglicher Einbaurahmen, der kein Gerät enthält. Der Einbaurahmen 584 ist ein freier Einbaurahmen im hinteren Bereich des Laufwerkkäfigs 554.
  • Das Systemfenster bietet auch die Möglichkeit, die grafisch dargestellten Strukturen interaktiv zu bearbeiten. Die vorliegende Erfindung bietet die Möglichkeit, strukturelle Aspekte des konfigurierten Systems durch Hinzufügen, Löschen oder Ersetzen von Komponenten in der konfigurierten Struktur zu modifizieren. Die vorliegende Erfindung bietet außerdem die Fähigkeit, die konfigurierte Struktur durch Änderung der strukturellen Verbindungen und Zusammensetzungen zu modifizieren.
  • Diese Fähigkeit zur grafischen Anzeige und Bearbeitung kann für neu konfigurierte Systeme und für vorhandene Konfigurationen oder Systeme genutzt werden. Das heißt, dass sämtliche Upgrades bei einem vorhandenen konfigurierten System grafisch ausführbar sind. Eine Fähigkeit zum „Einfrieren und Füllen" (Freeze and Fill) gestattet dem Benutzer, einen Teil des vorhandenen Systems einzufrieren und den nicht eingefrorenen Teil zu füllen bzw. zu modifizieren. Diese „Freeze and Fill"-Fähigkeit bietet außerdem die Möglichkeit, ein Angebot für die neue Konfiguration zu erstellen, das lediglich die zur Originalkonfiguration hinzugefügten Komponenten enthält und eventuelle Gutschriften für gelöschte oder entnommene Komponenten berücksichtigt.
  • In der bevorzugten Ausführungsform stellt die Materialliste (BOM) eine Liste aller konfigurierten Komponenten und Ersatzteile dar, die seit der letzten Konfigurationsanforderung im System verwendet werden. Für jede Komponente und jedes Ersatzteil wird Teilenummer und Bezeichnung angegeben.
  • In der bevorzugten Ausführungsform bietet die Teileliste Angaben zu Zusatzkomponenten (d. h. Ersatzteilen), Gesamtressourcen, erfolglosen Anforderungen und fehlgeschlagenen optionalen Anforderungen. Gesamtressourcen bietet die Summe aller direkt vom Benutzer angeforderten Komponenten und Ressourcen an. Bei erfolglosen Anforderungen und fehlgeschlagenen optionalen Anforderungen handelt es sich um Komponentenanforderungen, die wegen Platzmangel, fehlender Verbinderverfügbarkeit usw. nicht erfüllt werden konnten.
  • ANGEBOTSERSTELLUNG
  • Die Angebotserstellung berechnet die Kosten der einzelnen Produktpakete und ermittelt die Kosten aller zur Komplettierung des Systems erforderlichen Produktpakete. Die Angebotserstellung bietet die Möglichkeit, Angebote auf verschiedene Weise anzuzeigen. Zum Beispiel kann das Angebot nach Produkt mit der Fähigkeit zur Erweiterung oder Reduzierung der Produktinformationen und Preisangaben für einzelne Produktteile bzw. das ganze Paket versehen sein. Die Art der Präsentation von Produkten oder Berechnung von Preisen lässt sich kundenspezifisch anpassen.

Claims (20)

  1. Verfahren zum Konfigurieren eines Systems unter Benutzung eines Computersystems, welches die folgenden Schritte umfaßt: Zugreifen auf ein Modell in dem Computersystem, welches Elemente, die zum Konfigurieren des Systems verwendet werden, und strukturelle Beziehungen zwischen den Elementen in dem Modell umfaßt, wobei das Modell eine strukturelle Modellhierarchie besitzt, wobei es in dieser strukturellen Modellhierarchie Elemente, die als in einem anderen Element enthalten definiert sind, und/oder Elemente, die als Teil eines anderen Elements definiert sind, gibt, Einrichten von mehreren Ressourcen, die von einem oder mehreren Elementen in der strukturellen Hierarchie angeboten werden, Instantiieren einer Systemkonfiguration auf der Grundlage des Modells und auf der Grundlage von Konfigurationsanforderungen, welche Ressourcenanforderungen umfassen, wobei das Instantiieren einer Systemkonfiguration das Erzeugen von Instanzen von einem oder mehreren Modellelementen auf der Grundlage der Anforderungen umfaßt.
  2. Verfahren nach Anspruch 1, wobei das Elementmodell eine strukturelle Modellhierarchie definiert, welches Komposit- und Containerhierarchien und Anschlußbeziehungs-Unterstrukturen umfaßt.
  3. Verfahren nach Anspruch 1 oder 2, wobei die Instanzen überprüft werden, um festzustellen, ob eine Randbedingung des Modells existiert und die Randbedingung erfüllt ist, wenn die Randbedingung existiert.
  4. Verfahren nach einem der Ansprüche 1 bis 3, welches die weiteren Schritte umfaßt: (a) Instantiieren einer Konfigurationsinstanz in dem Computersystem, (b) Modifizieren der Konfigurationsinstanz in Reaktion auf eine Anforderung, indem in der Konfigurationsinstanz Instanzen von einem oder mehreren Modellelementen auf der Grundlage der Anforderungen erzeugt werden, (c) Speichern der Modifikationen in einer Modifikationsliste, (d) Überprüfen der Instanzen, um zu bestimmen, ob eine Randbedingung existiert, (e) Erfüllen der Randbedingung in dem Computersystem, wenn die Randbedingung existiert, (f) Übergeben der Modifikationen an die Konfigurationsinstanz und Entfernen der Modifikationen aus der Modifikationsliste, wenn keine Randbedingung existiert und wenn die Randbedingung erfüllt ist, und (g) Entfernen der Modifikation aus der Konfigurationsinstanz und der Modifikationsliste, wenn die Randbedingung nicht erfüllt ist.
  5. Verfahren nach Anspruch 4, wobei die Konfigurationsinstanz leer ist, wenn eine neue Konfiguration definiert wird und die Konfigurationsinstanz eine existierende Konfiguration enthält, wenn ein existierendes System aktualisiert wird.
  6. Verfahren nach Anspruch 4 oder 5, wobei die Instanzen in der Konfiguration aufgrund einer oder mehrerer der Komposit- und Containerhierarchien und Anschlußbeziehungen einer Randbedingung unterliegen.
  7. Verfahren nach einem der Ansprüche 2 bis 4, welches weiterhin den folgenden Schritt enthält: Erfüllen von Komponentenrandbedingungen der Komponentenhierarchie in dem Computersystem, wenn die Instanzen durch die Komponentenrandbedingungen eingeschränkt sind, Erfüllen von Containerrandbedingungen der Containerhierarchie in dem Computersystem, wenn die Instanzen durch die Containerrandbedingungen eingeschränkt sind, und Erfüllen von Verbindungsrandbedingungen der Anschlußbeziehung in dem Computersystem, wenn die Instanzen durch die Verbindungsrandbedingungen eingeschränkt sind.
  8. Verfahren nach Anspruch 4, welches die folgenden Schritte enthält: Identifizieren einer Alternative zum Erfüllen der Anforderung, wenn die Instanzen von einem oder mehreren Modellelementen die Anforderung nicht erfüllen und wenn die Instanzen von einem oder mehreren Modellelementen die Randbedingungen nicht erfüllen und Wiederholen der Schritte (b) bis (g) für diese Alternative.
  9. Verfahren nach Anspruch 4, welches weiterhin den Schritt des Anzeigens umfaßt, daß die Anforderung nicht erfolgreich war, wenn die Instanzen von einem oder mehreren Modellelementen die Anforderung nicht erfüllen und wenn die Instanzen von einem oder mehreren Modellelementen die Randbedingungen nicht erfüllen und keine Alternative identifiziert werden kann, um die Anforderung zu erfüllen.
  10. Verfahren nach einem der Ansprüche 1 bis 9, wobei eine Ressourcenanforderung zum Konfigurieren des Systems in dem Computersystem unter Verwendung der folgenden Schritte erfüllt wird: (a) Einrichten einer Konfigurationsinstanz in dem Computersystem, (b) Überprüfung der Konfigurationsinstanz auf ein eine Ressource anbietendes Element in Reaktion auf eine Anforderung für diese Ressource, (c) Wählen der Ressource von diesem Element, wenn die Ressource nicht bereits vorher verbraucht worden ist, (d) Auswählen einer neu erzeugten Elementinstanz, welche diese Ressource anbietet, wenn keine vorhandenen Elemente die Ressourcenanforderung erfüllen, und (e) Wiederholen der Schritte (b) bis (d), wenn die Elementauswahl nicht Anfrage und Testbedingungen erfüllt.
  11. Verfahren nach einem der Ansprüche 1 bis 10, wobei eine Containerrandbedingung in einem Computersystem zum Konfigurieren von Systemen unter Verwendung der folgenden Schritte erfüllt wird: Einrichten einer Konfigurationsinstanz in dem Computersystem, Erfüllen der Containerrandbedingung in dem Computer, wenn die Containerrandbedingung existiert, durch: (a) Überprüfen der Konfigurationsinstanz, um zu bestimmen, ob eine Containerinstanz zur Verfügung steht, um die Containerrandbedingung zu erfüllen, (b) Modifizieren der Konfigurationsinstanz durch Erzeugen einer neuen Containerinstanz, wenn die Containerrandbedingung nicht durch eine Containerinstanz in der Konfigurationsinstanz erfüllt werden kann, (c) Speichern der Modifikation in einer Liste von Modifikationen, wenn die Containerrandbedingung nicht durch eine Containerinstanz in der Konfigurationsinstanz erfüllt werden kann, (e) Überprüfen der neuen Containerinstanz, um zu bestimmen, ob eine Randbedingung vorhanden ist, (f) Erfüllen der Randbedingung in dem Computersystem, wenn die Randbedingung für die neue Containerinstanz existiert, (g) Übergeben der Modifikationen an die Konfigurationsinstanz und Entfernen der Modifikationen aus der Modifikationsliste, wenn keine Randbedingung existiert und wenn die Randbedingung erfüllt ist, und (h) Entfernen der Modifikationen aus der Konfigurationsinstanz und aus der Modifikationsliste, wenn die Randbedingung nicht erfüllt ist.
  12. Verfahren nach einem der Ansprüche 1 bis 11, wobei eine Komponentenrandbedingung in einem Computersystem zum Konfigurieren von Systemen unter Verwendung der folgenden Schritte erfüllt wird: Einrichten einer Konfigurationsinstanz in dem Computersystem, Erfüllen der Komponentenrandbedingung in dem Computersystem, wenn die Komponentenrandbedingung existiert, durch (a) Prüfen der Konfigurationsinstanz, um zu bestimmen, ob eine Komponenteninstanz zur Verfügung steht, um die Komponentenrandbedingung zu erfüllen, (b) Modifizieren der Konfigurationsinstanz durch Erzeugen einer neuen Komponenteninstanz, wenn die Komponentenrandbedingung nicht durch eine Komponenteninstanz in der Konfigurationsinstanz erfüllt werden kann, (c) Speichern der Modifikationen in einer Modifikationsliste, wenn die Komponentenrandbedingung nicht durch eine Komponenteninstanz in der Konfigurationsinstanz erfüllt werden kann, (e) Überprüfen der neuen Komponenteninstanz, um festzustellen, ob eine Randbedingung existiert, (f) Erfüllen der Randbedingung für die neue Komponenteninstanz in dem Computersystem, wenn die Randbedingung existiert, (g) Übergeben der Modifikationen an die Konfigurationsinstanz und Entfernen der Modifikationen aus der Modifikationsliste, wenn keine Randbedingung für die neue Komponenteninstanz existiert und wenn die Randbedingung erfüllt ist, und (h) Entfernen der Modifikationen aus der Konfigurationsinstanz und der Modifikationsliste, wenn die Randbedingung für die neue Komponenteninstanz nicht erfüllt ist.
  13. Verfahren nach einem der Ansprüche 1 bis 12, wobei eine Verbindungsrandbedingung in einem Computersystem mit Hilfe der folgenden Schritte erfüllt wird: Einrichten einer Konfigurationsinstanz in dem Computersystem, Erzeugen einer Verbindungsrandbedingung derart, daß ein Targetelement in der Konfigurationsinstanz eine Verbindung zu einem Zielelement der Konfigurationsinstanz erfordert, (a) Erzeugen einer Liste von Zielelementen, (b) Auswählen eines Zielelements aus der Liste von Zielelementen, (c) Identifizieren von nicht verbundenen Anschlüssen des Zielelements, welche von dem Targetelement aus zugänglich sind, (d) Identifizieren von verfügbaren Anschlüssen des Targetelements, (e) Auswählen eines ersten Anschlusses aus den nicht verbundenen Anschlüssen des Zielelements, (f) Auswählen eines zweiten Anschlusses aus einem der verfügbaren Anschlüsse des Targetelements, (g) Vergleichen des physikalischen Typs und des logischen Datentyps des ersten Anschlusses mit dem physikalischen Typ und dem logischen Datentyp des zweiten Anschlusses, (h) Überprüfen des Übertragungspfads zwischen dem ersten Anschluß und dem zweiten Anschluß, (i) Verbinden des ersten Anschlusses mit dem zweiten Anschluß, wenn der physikalische Typ und der logische Datentyp kompatibel sind und wenn der Übertragungspfad zwischen dem ersten Anschluß und dem zweiten Anschluß existiert und (j) Wiederholen der Schritte (b) bis (j), wenn der physikalische Typ und der logische Datentyp nicht kompatibel sind und wenn der Transferpfad zwischen dem ersten Anschluß und dem zweiten Anschluß nicht existiert.
  14. Verfahren nach einem der Ansprüche 1 bis 13, welches den Schritt des Anzeigen einer graphischen Darstellung der Systemkonfiguration und der strukturellen Beziehungen zwischen den Elementen der Systemkonfiguration durch das Computersystem umfaßt.
  15. Verfahren nach einem der Ansprüche 1 bis 14, wobei die Konfigurationsanforderungen Elementanforderungen, Ressourcenanforderungen und Identifizierungen von Erfordernissen sind.
  16. Verfahren nach einem der Ansprüche 1 bis 15, welches den Schritt des Erzeugens eines Berichts einer Liste von Materialien durch das Computersystem umfaßt, welcher eine Teilnummer und eine Beschreibung für jede Komponente und jedes Ersatzteil der Systemkonfiguration, die Gesamtheit der Ressourcen, die fehlgeschlagenen Anforderungen und die fehlgeschlagenen optionalen Anforderungen enthält.
  17. Verfahren nach einem der Ansprüche 1 bis 16, welches weiterhin die folgenden Schritte umfaßt: Bündeln der Instanzen in der Systemkonfiguration in Produktgruppierungen durch das Computersystem und Erzeugen einer Preisangabe für die Systemkonfiguration.
  18. Computersystem zum Konfigurieren eines Systems, welches umfaßt: eine Einrichtung, die dafür eingerichtet ist, in dem Computersystem auf ein Modell zuzugreifen, welches Elemente, die zum Konfigurieren des Systems verwendet werden, und strukturelle Beziehungen zwischen den Elementen in dem Modell umfaßt, wobei das Modell eine strukturelle Modellhierarchie aufweist, wobei in der strukturellen Modellhierarchie Elemente, die als in einem anderen Element enthalten definiert sind, und/oder Elemente, die als Teil eines anderen Elements definiert sind, vorhanden sind, wobei mehrere Ressourcen durch ein oder mehrere Elemente in der strukturellen Hierarchie angeboten werden, eine Einrichtung, welche dafür eingerichtet ist, eine Systemkonfiguration auf der Grundlage des Modells und auf der Grundlage von Konfigurationsanforderungen, welche Ressourcenanforderungen umfassen, zu instantiieren, wobei die Einrichtung, die dafür eingerichtet ist, eine Systemkonfiguration zu instantiieren, eine Einrichtung umfaßt, die dafür eingerichtet ist, Instanzen von einem oder mehreren Modellelementen auf der Grundlage der Anforderungen zu erzeugen.
  19. Computerprogramm zum Konfigurieren eines Systems, wobei das Programm einen Computer veranlaßt, ein Verfahren nach einem der Ansprüche 1 bis 17 auszuführen, wenn es auf dem Computersystem ausgeführt wird.
  20. Computerlesbares Speichermedium, welches einen computerlesbaren Programmcode enthält, wobei der Programmcode ein Computersystem veranlaßt, ein Verfahren nach einem der Ansprüche 1 bis 17 auszuführen, wenn er auf dem Computersystem ausgeführt wird.
DE69434975T 1993-03-29 1994-03-21 Verfahren und vorrichtung zum konfigurieren von systemen Expired - Lifetime DE69434975T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/039,949 US5515524A (en) 1993-03-29 1993-03-29 Method and apparatus for configuring systems
US39949 1993-03-29
PCT/US1994/003445 WO1994023372A1 (en) 1993-03-29 1994-03-21 Method and apparatus for configuring systems

Publications (2)

Publication Number Publication Date
DE69434975D1 DE69434975D1 (de) 2007-07-05
DE69434975T2 true DE69434975T2 (de) 2008-01-24

Family

ID=21908252

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69434975T Expired - Lifetime DE69434975T2 (de) 1993-03-29 1994-03-21 Verfahren und vorrichtung zum konfigurieren von systemen

Country Status (10)

Country Link
US (2) US5515524A (de)
EP (1) EP0719432B1 (de)
JP (1) JPH08509309A (de)
KR (1) KR100291012B1 (de)
AT (1) ATE363100T1 (de)
AU (1) AU685451B2 (de)
BR (1) BR9406179A (de)
CA (1) CA2158153C (de)
DE (1) DE69434975T2 (de)
WO (1) WO1994023372A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112022001057B4 (de) 2021-03-26 2024-05-08 International Business Machines Corporation Selektives bereinigen eines systemkonfigurationsmodells für system-neukonfigurationen

Families Citing this family (285)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6115547A (en) 1993-03-29 2000-09-05 Trilogy Development Group, Inc. Flash configuration cache
US7043407B2 (en) * 1997-03-10 2006-05-09 Trilogy Development Group, Inc. Method and apparatus for configuring systems
US5668995A (en) * 1994-04-22 1997-09-16 Ncr Corporation Method and apparatus for capacity planning for multiprocessor computer systems in client/server environments
US5500802A (en) * 1994-05-31 1996-03-19 Morris; James M. System and method for creating configurators using templates
JP3434038B2 (ja) * 1994-09-22 2003-08-04 株式会社日立製作所 ネットワ−ク構築支援システム
US5758351A (en) * 1995-03-01 1998-05-26 Sterling Software, Inc. System and method for the creation and use of surrogate information system objects
GB2301206A (en) * 1995-05-23 1996-11-27 Compaq Computer Corp A system for facilitating creation of a computer
EP0747847A3 (de) * 1995-06-07 1998-10-14 International Business Machines Corporation Verfahren und Gerät zur Darstellung von Wissen über Einheiten
US5713009A (en) * 1995-09-08 1998-01-27 Digital Equipment Corporation Method and apparatus for configuring a computer system
US5748943A (en) * 1995-10-04 1998-05-05 Ford Global Technologies, Inc. Intelligent CAD process
US5745765A (en) * 1995-10-23 1998-04-28 Calico Technology, Inc. Method and apparatus for automatic and interactive configuration of custom products
US6067525A (en) 1995-10-30 2000-05-23 Clear With Computers Integrated computerized sales force automation system
US5819042A (en) * 1996-02-20 1998-10-06 Compaq Computer Corporation Method and apparatus for guided configuration of unconfigured network and internetwork devices
DE19614789C1 (de) * 1996-04-06 1997-09-25 Daimler Benz Ag Verfahren zur automatischen Konfigurierung eines technischen Systems unter Berücksichtigung unterschiedlicher Qualitäten von Komponenten-Außenwirkungen
US6427063B1 (en) 1997-05-22 2002-07-30 Finali Corporation Agent based instruction system and method
US5878400A (en) * 1996-06-17 1999-03-02 Trilogy Development Group, Inc. Method and apparatus for pricing products in multi-level product and organizational groups
US20030217252A1 (en) 1998-10-03 2003-11-20 Neeraj Gupta Method and apparatus for maintaining and configuring systems
US5825651A (en) 1996-09-03 1998-10-20 Trilogy Development Group, Inc. Method and apparatus for maintaining and configuring systems
US5999180A (en) * 1996-09-04 1999-12-07 Ncr Corporation Method and system for generating a configuration file using an X-windows server configuration tool
US5844554A (en) * 1996-09-17 1998-12-01 Bt Squared Technologies, Inc. Methods and systems for user interfaces and constraint handling configurations software
US6098050A (en) * 1997-03-25 2000-08-01 Mciworldcom, Inc. System and method for recording, maintaining and viewing configuration and placement of equipment in field sites
US6169987B1 (en) 1997-03-25 2001-01-02 Mci Communications Corporation System and method to automate equipment placement at remote sites
US5991759A (en) * 1997-03-25 1999-11-23 Mci Communications Corporation Method and system for defining equipment in a telecommunication network down to the rackface level
US6952705B2 (en) 1997-03-25 2005-10-04 Mci, Inc. Method, system and program product that utilize a hierarchical conceptual framework to model an environment containing a collection of items
US6023699A (en) * 1997-03-25 2000-02-08 Mci Communications Corporation Method for organizing a relational database used for storing data related to the configuration and placement of equipment in field sites
US6529877B1 (en) * 1997-03-27 2003-03-04 British Telecommunications Public Limited Company Equipment allocation system
US6223343B1 (en) * 1997-04-04 2001-04-24 State Farm Mutual Automobile Insurance Co. Computer system and method to track and control element changes throughout application development
US6442584B1 (en) 1997-05-16 2002-08-27 Sybase, Inc. Methods for resource consolidation in a computing environment
US6052669A (en) * 1997-06-06 2000-04-18 Haworth, Inc. Graphical user interface supporting method and system for remote order generation of furniture products
US7519549B1 (en) * 1997-06-19 2009-04-14 Presentation Specialist Technologies, Llc Inventory sales system and method
US5899995A (en) * 1997-06-30 1999-05-04 Intel Corporation Method and apparatus for automatically organizing information
US6223170B1 (en) * 1997-09-09 2001-04-24 Baan Development B.V. Method and apparatus for inference of partial knowledge in interactive configuration
US6272390B1 (en) 1997-09-09 2001-08-07 Beologic A/S Method for interactive configuration and computer readable medium encoded with a program for performing said method
US6192355B1 (en) 1997-09-09 2001-02-20 Baan Development B.V. Method of configuring a set of objects in a computer
US5987473A (en) * 1997-09-09 1999-11-16 Beologic A/S Interactive configuration via network
US6141658A (en) * 1997-09-10 2000-10-31 Clear With Computers, Inc. Computer system and method for managing sales information
US6009466A (en) * 1997-10-31 1999-12-28 International Business Machines Corporation Network management system for enabling a user to configure a network of storage devices via a graphical user interface
US6212650B1 (en) * 1997-11-24 2001-04-03 Xilinx, Inc. Interactive dubug tool for programmable circuits
FR2775806B1 (fr) * 1998-03-04 2001-11-23 Valeo Electronique Outil informatique pour l'etude d'architectures electriques destinees a etre disposees a l'interieur d'un vehicule automobile
NZ507462A (en) 1998-03-16 2002-11-26 Array Technology Aps A database useful for configuring and/or optimizing a system and a method for generating the database
FR2776404B1 (fr) * 1998-03-18 2001-10-26 Spot Inf Procede de fabrication d'un ordinateur et moyens pour la mise en oeuvre du procede
US5963953A (en) * 1998-03-30 1999-10-05 Siebel Systems, Inc. Method, and system for product configuration
US6226627B1 (en) * 1998-04-17 2001-05-01 Fuji Xerox Co., Ltd. Method and system for constructing adaptive and resilient software
US6847384B1 (en) * 1998-05-14 2005-01-25 Autodesk, Inc. Translating objects between software applications which employ different data formats
US6219659B1 (en) * 1998-07-08 2001-04-17 Electronics For Imaging, Inc. Configuration description language system
US6353884B1 (en) * 1998-07-29 2002-03-05 Compaq Computer Corporation System for describing and storing descriptions of hierachical structures using hardware definition files to specify performance, characteristics, part number and name of hardware components
US6192470B1 (en) * 1998-07-29 2001-02-20 Compaq Computer Corporation Configuration sizer for selecting system of computer components based on price/performance normalization
US6253318B1 (en) 1998-07-29 2001-06-26 Compaq Computer Corporation Method of developing physical requirements for computer configuration
US6263382B1 (en) 1998-07-29 2001-07-17 Compaq Computer Corporation Sizer for interactive computer system configuration
US6223094B1 (en) * 1998-08-21 2001-04-24 Sap Aktiengesellschaft Multi-tiered structure for storing and displaying product and process variants
WO2000014667A1 (en) * 1998-09-08 2000-03-16 Isogon Corporation Hardware/software management, purchasing and optimization system
US7225137B1 (en) 1998-09-08 2007-05-29 Isogon Corporation Hardware/software management, purchasing and optimization system
GB9819851D0 (en) * 1998-09-12 1998-11-04 Rolls Royce Plc Data processing method and system
US6167383A (en) * 1998-09-22 2000-12-26 Dell Usa, Lp Method and apparatus for providing customer configured machines at an internet site
US6518975B1 (en) * 1998-10-02 2003-02-11 Canon Kabushiki Kaisha Modularized architecture for color and image management system
US7236983B1 (en) * 1998-11-09 2007-06-26 Chrome Data Corporation Hierarchical data structure for vehicle identification and configuration data including protected customer data
JP2000148839A (ja) * 1998-11-13 2000-05-30 Nippon Steel Corp 分析設計支援システム、分析設計方法および記録媒体
US6549908B1 (en) 1998-11-18 2003-04-15 Siebel Systems, Inc. Methods and apparatus for interpreting user selections in the context of a relation distributed as a set of orthogonalized sub-relations
US6728960B1 (en) 1998-11-18 2004-04-27 Siebel Systems, Inc. Techniques for managing multiple threads in a browser environment
DE19854754A1 (de) * 1998-11-27 2000-06-08 Alcatel Sa Verfahren, Editor, Rechner, Steuermodul und Speichermittel zum Editieren von Konfigurationsdaten für Telekommunikationssysteme
WO2000052559A1 (en) * 1999-03-05 2000-09-08 Isogon Corporation Method and process for displaying software product inventory and usage information correlated with license agreement information
US7006985B1 (en) * 1999-03-31 2006-02-28 International Business Machines Corporation Configuration of computer systems based upon purchasers component needs as determined from purchaser data entries correlated with a set of seller business rules to optimize quantities of each component sold
US7016864B1 (en) * 1999-04-09 2006-03-21 Dell Usa, L.P. Interactive upsell advisor method and apparatus for internet applications
WO2000072174A2 (de) * 1999-05-20 2000-11-30 Siemens Aktiengesellschaft Verfahren und anordnung zur modellierung eines technischen systems durch einen rechner
WO2001009778A1 (fr) * 1999-08-03 2001-02-08 Kenichi Ninomiya Aide a la conception: systeme, procede et programme de stockage de donnees
EP1216439A1 (de) * 1999-09-02 2002-06-26 Isogon Corporation Verfahren und gerät zur verbindung von lizenzabkommensinformationen mit hardware- und software-konfigurationen
US6938027B1 (en) 1999-09-02 2005-08-30 Isogon Corporation Hardware/software management, purchasing and optimization system
US7949691B1 (en) 1999-09-02 2011-05-24 Cbs Interactive Inc. Methods of catalog data maintenance, storage, and distribution
IT1314048B1 (it) * 1999-10-15 2002-12-03 Abb Ricerca Spa Metodo per eseguire la progettazione di base,la preventivazione e laprogettazione esecutiva di una rete elettrica e/o fluidodinamica
US6560699B1 (en) * 1999-10-20 2003-05-06 Cisco Technology, Inc. Constraint-based language configuration files for updating and verifying system constraints
US6230199B1 (en) * 1999-10-29 2001-05-08 Mcafee.Com, Inc. Active marketing based on client computer configurations
US7072728B2 (en) * 1999-11-19 2006-07-04 Dell Products L.P. Method for assembling hardware components in a computer system
US6725257B1 (en) 1999-11-30 2004-04-20 Chrome Data Corporation Computationally efficient process and apparatus for configuring a product over a computer network
US20020010598A1 (en) * 1999-12-18 2002-01-24 Johnson Jerome Dale System and method for providing configuration and sales information to assist in the development of insurance plans
US7424444B1 (en) 1999-12-20 2008-09-09 Dell Usa, L.P. Apparatus and method for configuring computers
US6981207B1 (en) 2000-01-11 2005-12-27 Ecora Software Corporation Automatic documentation of configurable systems by outputting explanatory information of configuration parameters in a narrative format and configuration parameters differences
US9959115B2 (en) * 2000-01-11 2018-05-01 Ecora.Com Corp. Method and system for automatic documentation of configurable systems
US7130821B1 (en) * 2000-01-14 2006-10-31 Trilogy Development Group, Inc. Method and apparatus for product comparison
US10055772B1 (en) 2000-01-14 2018-08-21 Versata Development Group, Inc. Method and apparatus for product comparison
US7206756B1 (en) 2000-01-14 2007-04-17 Trilogy Development Group, Inc. System and method for facilitating commercial transactions over a data network
US7426481B1 (en) 2000-01-14 2008-09-16 Versata Development Group, Inc. Method and apparatus for sorting products by features
US7113919B1 (en) * 2000-02-29 2006-09-26 Chemdomain, Inc. System and method for configuring products over a communications network
US7069235B1 (en) 2000-03-03 2006-06-27 Pcorder.Com, Inc. System and method for multi-source transaction processing
US7505921B1 (en) 2000-03-03 2009-03-17 Finali Corporation System and method for optimizing a product configuration
US20010034726A1 (en) * 2000-03-31 2001-10-25 Mcmahon Terry L. Method and system for automating quote generation
US20010039518A1 (en) * 2000-04-07 2001-11-08 Hiroshi Ishizuka Commodity retrieval method
US8412547B1 (en) 2000-04-24 2013-04-02 Trilogy Development Group, Inc. Commerce server architecture and method for using same
US7908200B2 (en) * 2000-05-16 2011-03-15 Versata Development Group, Inc. Method and apparatus for efficiently generating electronic requests for quote
JP3491684B2 (ja) * 2000-06-01 2004-01-26 株式会社ジェイ・エム・エス 医療用血液回路の構成決定方法及び構成決定システム
US20010051904A1 (en) * 2000-06-09 2001-12-13 Tomoki Nishimura Method and system for displaying custom-made product specification information, server and terminal for the system, and method of selecting custom-made product specifications
SE520367C2 (sv) * 2000-06-21 2003-07-01 Safelogic Ab Metod och anordning för interaktiv konfigurering
US7043457B1 (en) 2000-06-28 2006-05-09 Probuild, Inc. System and method for managing and evaluating network commodities purchasing
US7082521B1 (en) 2000-08-24 2006-07-25 Veritas Operating Corporation User interface for dynamic computing environment using allocateable resources
US7278142B2 (en) 2000-08-24 2007-10-02 Veritas Operating Corporation Dynamic computing environment using remotely allocable resources
US7065637B1 (en) 2000-08-24 2006-06-20 Veritas Operating Corporating System for configuration of dynamic computing environments using a visual interface
US6829703B1 (en) * 2000-08-31 2004-12-07 International Business Machines Corporation Method for validating system configuration in a mass customized environment
US6915253B1 (en) 2000-09-13 2005-07-05 Fujitsu Limited Method for facilitating product configuration using components from a set
US7043724B2 (en) * 2000-09-14 2006-05-09 Veritas Operating Corporation System and services for handling computing environments as documents
US6907604B1 (en) * 2000-09-22 2005-06-14 Dell Products L.P. Instant integration model
US7716567B1 (en) 2000-09-28 2010-05-11 Rockwell Automation Technologies, Inc. Multilinguistic industrial control and monitoring system
US7359870B1 (en) * 2000-09-28 2008-04-15 Rockwell Automation Technologies, Inc. System design, proposal and programming method and apparatus
US6816817B1 (en) 2000-09-28 2004-11-09 Rockwell Automation Technologies, Inc. Networked control system with real time monitoring
US6901316B1 (en) 2000-09-28 2005-05-31 Rockwell Automation Technologies, Inc. Electrical control system configuration method and apparatus
US6832118B1 (en) 2000-09-29 2004-12-14 Rockwell Automation Technologies, Inc. Programmable network control component and system of components
US7190382B1 (en) 2000-09-29 2007-03-13 Rockwell Automation Technologies, Inc. Real time system view method and apparatus
US6825860B1 (en) 2000-09-29 2004-11-30 Rockwell Automation Technologies, Inc. Autoscaling/autosizing user interface window
US8463682B1 (en) 2000-10-02 2013-06-11 Versata Development Group, Inc. Finance and configuration method and apparatus
US8149048B1 (en) 2000-10-26 2012-04-03 Cypress Semiconductor Corporation Apparatus and method for programmable power management in a programmable analog circuit block
US8103496B1 (en) 2000-10-26 2012-01-24 Cypress Semicondutor Corporation Breakpoint control in an in-circuit emulation system
US6724220B1 (en) 2000-10-26 2004-04-20 Cyress Semiconductor Corporation Programmable microcontroller architecture (mixed analog/digital)
US7765095B1 (en) 2000-10-26 2010-07-27 Cypress Semiconductor Corporation Conditional branching in an in-circuit emulation system
US8160864B1 (en) 2000-10-26 2012-04-17 Cypress Semiconductor Corporation In-circuit emulator and pod synchronized boot
US8176296B2 (en) 2000-10-26 2012-05-08 Cypress Semiconductor Corporation Programmable microcontroller architecture
US7337179B1 (en) * 2000-11-01 2008-02-26 Versata Development Group, Inc. Context subsystems for system configurations
US8631103B1 (en) 2000-11-10 2014-01-14 Symantec Operating Corporation Web-based administration of remote computing environments via signals sent via the internet
US7027412B2 (en) * 2000-11-10 2006-04-11 Veritas Operating Corporation System for dynamic provisioning of secure, scalable, and extensible networked computer environments
US20020059377A1 (en) * 2000-11-14 2002-05-16 Jagadish Bandhole Collaborative computing systems using dynamic computing environments
EP1211594A3 (de) * 2000-11-30 2006-05-24 Canon Kabushiki Kaisha Gerät und Verfahren um Gebraucherschnittstelle zu überwachen
CA2431209A1 (en) * 2000-12-08 2002-06-13 Configit Software A/S A method of configuring a product using a directed acyclic graph
JP2002189900A (ja) * 2000-12-22 2002-07-05 Myotoku Ltd 構成品選定方法、構成品選定装置及び記録媒体
US20020087423A1 (en) * 2001-01-02 2002-07-04 Carbrey Palango Joan L. System builder for building electronics systems
US7093113B2 (en) * 2001-01-09 2006-08-15 Veritas Operating Corporation Application model for dynamic computing environments in software sales cycle
US7213231B1 (en) 2001-01-11 2007-05-01 Cisco Technology, Inc. Cross-spectrum application model for dynamic computing environments in software lifecycle
US20020107749A1 (en) * 2001-02-05 2002-08-08 David Leslie Networked based paralleling switchgear equipment configuration process
WO2002065661A1 (en) * 2001-02-12 2002-08-22 Maple Optical Systems, Inc. System and method for fast-rerouting of data in a data communication network
WO2002067151A1 (de) * 2001-02-16 2002-08-29 Va Tech Elin Ebg Elektronik Gmbh & Co Konfigurator
US7958024B2 (en) * 2001-03-15 2011-06-07 Versata Development Group, Inc. Method and apparatus for processing sales transaction data
US7925513B2 (en) * 2001-03-15 2011-04-12 Versata Development Group, Inc. Framework for processing sales transaction data
US8239312B2 (en) * 2001-03-15 2012-08-07 Versata Development Group, Inc. Method and apparatus for net-pay and debt consolidation
US7908304B2 (en) * 2001-03-15 2011-03-15 Versata Development Group, Inc. Method and system for managing distributor information
US20030018481A1 (en) * 2001-03-15 2003-01-23 Cheng Zhou Method and apparatus for generating configurable documents
US20020177981A1 (en) * 2001-03-27 2002-11-28 Fleming Mark Joseph System and method for switchboard feeder design
US6980967B1 (en) * 2001-03-28 2005-12-27 Oracle International Corporation Bounceback detection in online product configuration
US7614014B2 (en) * 2001-04-05 2009-11-03 Daniel Keele Burgin System and method for automated end-user support
US20020147848A1 (en) * 2001-04-05 2002-10-10 Burgin Daniel Keele System and method for enabling communication between browser frames
US8096809B2 (en) 2001-04-05 2012-01-17 Convergys Cmg Utah, Inc. System and method for automated end-user support
JP2002312648A (ja) * 2001-04-17 2002-10-25 Nec Corp 注文生産システム及び方法並びに注文生産用プログラム
US7480860B2 (en) 2001-04-23 2009-01-20 Versata Computer Industry Solutions, Inc. Data document generator to generate multiple documents from a common document using multiple transforms
US7218976B2 (en) * 2001-04-27 2007-05-15 Canon Kabushiki Kaisha User interface control apparatus and method
US7036006B2 (en) 2001-05-17 2006-04-25 Veritas Operating Corporation System to provide computing as a product using dynamic computing environments
US7269788B2 (en) * 2001-06-29 2007-09-11 Versata Development Group, Inc. Extensibility and usability of document and data representation languages
US7904326B2 (en) * 2001-06-29 2011-03-08 Versata Development Group, Inc. Method and apparatus for performing collective validation of credential information
US7200609B2 (en) * 2001-07-19 2007-04-03 Emc Corporation Attribute based resource allocation
GB2380004A (en) * 2001-07-27 2003-03-26 Virtual Access Ireland Ltd A configuration and management development system for a netwok of devices
US8306795B2 (en) * 2001-09-25 2012-11-06 Numatics, Incorporated Product configuration method and system
US7873503B2 (en) * 2001-09-28 2011-01-18 Siebel Systems, Inc. Method, system, and product for performing sub-configuration of entities
US7343584B1 (en) * 2001-10-16 2008-03-11 Versata Development Group, Inc. Automated configuration of systems comprising product components of heterogeneous contexts
US7406674B1 (en) 2001-10-24 2008-07-29 Cypress Semiconductor Corporation Method and apparatus for generating microcontroller configuration information
US8078970B1 (en) 2001-11-09 2011-12-13 Cypress Semiconductor Corporation Graphical user interface with user-selectable list-box
US8042093B1 (en) 2001-11-15 2011-10-18 Cypress Semiconductor Corporation System providing automatic source code generation for personalization and parameterization of user modules
US6785881B1 (en) * 2001-11-19 2004-08-31 Cypress Semiconductor Corporation Data driven method and system for monitoring hardware resource usage for programming an electronic device
US7844437B1 (en) 2001-11-19 2010-11-30 Cypress Semiconductor Corporation System and method for performing next placements and pruning of disallowed placements for programming an integrated circuit
US7770113B1 (en) 2001-11-19 2010-08-03 Cypress Semiconductor Corporation System and method for dynamically generating a configuration datasheet
US8069405B1 (en) 2001-11-19 2011-11-29 Cypress Semiconductor Corporation User interface for efficiently browsing an electronic document using data-driven tabs
US6971004B1 (en) 2001-11-19 2005-11-29 Cypress Semiconductor Corp. System and method of dynamically reconfiguring a programmable integrated circuit
US7774190B1 (en) 2001-11-19 2010-08-10 Cypress Semiconductor Corporation Sleep and stall in an in-circuit emulation system
IL162627A0 (en) * 2001-12-21 2005-11-20 3Dfacto Aps A method, a computer system, and a computer program product for configuring a virtual representationof an assembly of a plurality
US7188335B1 (en) * 2001-12-28 2007-03-06 Trilogy Development Group, Inc. Product configuration using configuration patterns
US7584155B1 (en) * 2002-02-01 2009-09-01 Trilogy Development Group, Inc. Method and apparatus for efficient delta pricing
US20050144175A1 (en) * 2002-02-18 2005-06-30 Siemens Aktiengesellschaft Method and system for administrating use of a service
US20030172003A1 (en) * 2002-03-06 2003-09-11 Holbrook Richard M. Method and system for designing configurable furniture product
US8103497B1 (en) 2002-03-28 2012-01-24 Cypress Semiconductor Corporation External interface for event architecture
US20050188351A1 (en) * 2002-04-02 2005-08-25 Siemens Aktiengesellschaft Device and method for automatically generating automation software
US7308608B1 (en) 2002-05-01 2007-12-11 Cypress Semiconductor Corporation Reconfigurable testing system and method
US20030208361A1 (en) * 2002-05-02 2003-11-06 Belinne Daryl Jarvis Configuration of systems with services
US20030212769A1 (en) * 2002-05-09 2003-11-13 International Business Machines Corporation Technical solution architect power distribution tool
US7756759B1 (en) 2002-05-15 2010-07-13 Versata Development Group, Inc. Method and apparatus for inventory searching
US20030225631A1 (en) * 2002-05-30 2003-12-04 Howell James A. System and method for pre-configuration using after point of sale information
US7003360B1 (en) 2002-06-12 2006-02-21 Trilogy Development Group, Inc. System and method for product configuration using numerical clauses and inference procedures
US7761845B1 (en) 2002-09-09 2010-07-20 Cypress Semiconductor Corporation Method for parameterizing a user module
US7069428B2 (en) * 2002-09-10 2006-06-27 Veritas Operating Corporation System for managing boot-up of target computers
US7953779B1 (en) 2002-10-08 2011-05-31 Trilogy Development Group, Inc. Configuration representation and modeling using configuration spaces
DE10247748A1 (de) * 2002-10-12 2004-04-22 Metzger, Uwe Werteberechnung mittels hierarchischer Netze
US8798964B2 (en) * 2002-11-06 2014-08-05 Hewlett-Packard Development Company, L. P. Methods and apparatus for designing the racking and wiring configurations for pieces of hardware
US7647254B2 (en) * 2002-11-20 2010-01-12 Acer Incorporated Method and system for providing customized computer solutions
US8683016B1 (en) 2002-12-20 2014-03-25 Versata Development Group, Inc. Data recording components and processes for acquiring selected web site data
US7596473B2 (en) * 2003-05-20 2009-09-29 Interlego Ag Method of constructing a virtual construction model
US20050015312A1 (en) * 2003-06-24 2005-01-20 Hoffman Ramona K. Method of selecting and purchasing office furniture
EP1652043B1 (de) * 2003-07-11 2017-01-25 CA, Inc. System und verfahren für ein gemeinsame-speicherung-objektmodell
US20050049932A1 (en) * 2003-09-03 2005-03-03 Howell James A. Process for managing subscription service purchases
US20050071270A1 (en) * 2003-09-26 2005-03-31 Ramirez Christopher W. Process for remote recovery and creation of machine specific authentication keys for systems
US7533173B2 (en) * 2003-09-30 2009-05-12 International Business Machines Corporation Policy driven automation - specifying equivalent resources
US7451201B2 (en) * 2003-09-30 2008-11-11 International Business Machines Corporation Policy driven autonomic computing-specifying relationships
US8892702B2 (en) 2003-09-30 2014-11-18 International Business Machines Corporation Policy driven autonomic computing-programmatic policy definitions
US20050079508A1 (en) * 2003-10-10 2005-04-14 Judy Dering Constraints-based analysis of gene expression data
US9652584B2 (en) * 2003-10-31 2017-05-16 The Boeing Company Aircraft design systems and methods
US20050096952A1 (en) * 2003-10-31 2005-05-05 Hansen Allan M. Methods and systems for option-based product definition
US7761794B1 (en) 2004-01-22 2010-07-20 Cisco Technology, Inc. Integrated audit and configuration techniques
US7471989B2 (en) * 2004-02-26 2008-12-30 The Boeing Company Identification of engineering intent requirements in an electronic environment
US7725299B2 (en) * 2004-03-01 2010-05-25 Purdue Research Foundation Multi-tier and multi-domain distributed rapid product configuration and design system
US7313552B2 (en) * 2004-03-19 2007-12-25 Sybase, Inc. Boolean network rule engine
US7295049B1 (en) 2004-03-25 2007-11-13 Cypress Semiconductor Corporation Method and circuit for rapid alignment of signals
US20050216109A1 (en) * 2004-03-29 2005-09-29 Radigan Thomas J Integrated precision machine design system and method
US7995735B2 (en) 2004-04-15 2011-08-09 Chad Vos Method and apparatus for managing customer data
US7739080B1 (en) 2004-04-19 2010-06-15 Versata Development Group, Inc. Consolidation of product data models
US7110842B2 (en) * 2004-05-18 2006-09-19 Paccar Inc. Modular design method
US7636795B2 (en) 2004-06-30 2009-12-22 Intel Corporation Configurable feature selection mechanism
US8260893B1 (en) 2004-07-06 2012-09-04 Symantec Operating Corporation Method and system for automated management of information technology
US7567922B1 (en) 2004-08-12 2009-07-28 Versata Development Group, Inc. Method and system for generating a normalized configuration model
US8069436B2 (en) 2004-08-13 2011-11-29 Cypress Semiconductor Corporation Providing hardware independence to automate code generation of processing device firmware
US8286125B2 (en) * 2004-08-13 2012-10-09 Cypress Semiconductor Corporation Model for a hardware device-independent method of defining embedded firmware for programmable systems
US7882057B1 (en) 2004-10-04 2011-02-01 Trilogy Development Group, Inc. Complex configuration processing using configuration sub-models
US7242995B1 (en) * 2004-10-25 2007-07-10 Rockwell Automation Technologies, Inc. E-manufacturing in semiconductor and microelectronics processes
DE102004053230B4 (de) * 2004-11-04 2006-07-20 Daimlerchrysler Ag Vorrichtung und Verfahren zum Konfigurieren eines Produkts
JPWO2006051606A1 (ja) * 2004-11-12 2008-05-29 富士通株式会社 システム構成管理装置
US20060122894A1 (en) * 2004-12-03 2006-06-08 Mcgary Jon User configured order status updates
US8805825B1 (en) 2005-01-12 2014-08-12 Versata Development Group, Inc. Attribute prioritized configuration using a combined configuration-attribute data model
US7332976B1 (en) 2005-02-04 2008-02-19 Cypress Semiconductor Corporation Poly-phase frequency synthesis oscillator
US8590011B1 (en) * 2005-02-24 2013-11-19 Versata Development Group, Inc. Variable domain resource data security for data processing systems
US20060193462A1 (en) * 2005-02-28 2006-08-31 Gregg Hansen System for optimizing configurable information handling systems
US20090039407A1 (en) * 2005-03-17 2009-02-12 Vora Madhukar B Vertically integrated flash EPROM for greater density and lower cost
US20060246788A1 (en) * 2005-04-28 2006-11-02 International Business Machines Corporation Method for representing connections for validation during an automated configuration of a product
US7360071B2 (en) * 2005-04-28 2008-04-15 International Business Machines Corporation Method to establish contexts for use during automated product configuration
US7400183B1 (en) 2005-05-05 2008-07-15 Cypress Semiconductor Corporation Voltage controlled oscillator delay cell and method
US9824183B1 (en) 2005-05-12 2017-11-21 Versata Development Group, Inc. Augmentation and processing of digital information sets using proxy data
US20060291645A1 (en) * 2005-06-08 2006-12-28 Vasu Mekala Needs based offer
US8089461B2 (en) * 2005-06-23 2012-01-03 Cypress Semiconductor Corporation Touch wake for electronic devices
US7623684B2 (en) * 2005-07-19 2009-11-24 Dell Products, L.P. System and method for information handling system software registration code management
US7457789B2 (en) * 2005-08-17 2008-11-25 Tacton Systems Ab Configuration assistance for complex products
US7966227B2 (en) * 2005-11-21 2011-06-21 Ge Healthcare Bio-Sciences Ab System for configuring a chemical separation system
US8085067B1 (en) 2005-12-21 2011-12-27 Cypress Semiconductor Corporation Differential-to-single ended signal converter circuit and method
WO2007072310A1 (en) 2005-12-22 2007-06-28 Shapiro Alan J System and method for software delivery
US8321859B2 (en) * 2005-12-22 2012-11-27 Alan Joshua Shapiro Method and apparatus for dispensing on a data-storage medium customized content comprising selected assets
US20070174781A1 (en) * 2006-01-25 2007-07-26 Catalog Data Solutions Parameter visualization
WO2007098866A2 (en) * 2006-03-01 2007-09-07 Pilepro Llc Method for planning sheet pile wall sections
DE202006021152U1 (de) * 2006-03-01 2013-04-22 Pilepro Llc Computersystem
US7987149B2 (en) 2006-03-10 2011-07-26 Trilogy Intellectual Property Holdings, Inc. Configuration mapping using a multi-dimensional rule space and rule consolidation
US8067948B2 (en) 2006-03-27 2011-11-29 Cypress Semiconductor Corporation Input/output multiplexer bus
US20080097800A1 (en) * 2006-10-23 2008-04-24 Kutlev Krassimir G System and method for marketing and developing a custom substation
US8762214B1 (en) * 2006-11-14 2014-06-24 Nvidia Corporation Configuration based hierarchical product selection and product e-commerce agent management
US8595171B2 (en) * 2007-03-23 2013-11-26 Siemens Product Lifecycle Management Software Inc. System and method for rule set validation
US7805635B2 (en) * 2007-04-09 2010-09-28 International Business Machines Corporation Constraint programming for reduction of system test-configuration-matrix complexity
US8040266B2 (en) 2007-04-17 2011-10-18 Cypress Semiconductor Corporation Programmable sigma-delta analog-to-digital converter
US7737724B2 (en) 2007-04-17 2010-06-15 Cypress Semiconductor Corporation Universal digital block interconnection and channel routing
US9564902B2 (en) 2007-04-17 2017-02-07 Cypress Semiconductor Corporation Dynamically configurable and re-configurable data path
US8130025B2 (en) * 2007-04-17 2012-03-06 Cypress Semiconductor Corporation Numerical band gap
US8092083B2 (en) 2007-04-17 2012-01-10 Cypress Semiconductor Corporation Temperature sensor with digital bandgap
US8516025B2 (en) 2007-04-17 2013-08-20 Cypress Semiconductor Corporation Clock driven dynamic datapath chaining
US8026739B2 (en) 2007-04-17 2011-09-27 Cypress Semiconductor Corporation System level interconnect with programmable switching
US8065653B1 (en) 2007-04-25 2011-11-22 Cypress Semiconductor Corporation Configuration of programmable IC design elements
US8266575B1 (en) 2007-04-25 2012-09-11 Cypress Semiconductor Corporation Systems and methods for dynamically reconfiguring a programmable system on a chip
US9720805B1 (en) 2007-04-25 2017-08-01 Cypress Semiconductor Corporation System and method for controlling a target device
US8224628B2 (en) * 2007-05-01 2012-07-17 M.E.P. Cad, Inc. Methods and apparatuses for placing a flexible drop in a CAD drawing
US8441502B2 (en) * 2007-05-01 2013-05-14 M.E.P. Cad, Inc. Methods and apparatuses for resolving a CAD drawing conflict with an arm around
US20090273598A1 (en) * 2008-05-01 2009-11-05 M.E.P. Cad, Inc. Methods and apparatuses for automatically converting objects in CAD drawing from two-dimensions to three-dimensions
US8600706B2 (en) * 2007-05-01 2013-12-03 Auto Prep, Llc Systems and methods for identifying crash sources in a CAD environment
US8554520B2 (en) 2007-05-01 2013-10-08 Auto Prep, Llc Systems and methods for differentiating and associating multiple drawings in a CAD environment
US8773425B2 (en) * 2007-05-01 2014-07-08 M.E.P. CAD Inc. Methods and apparatuses for proposing resolutions to conflicts in a CAD drawing with reflections
AU2008248197B2 (en) * 2007-05-01 2011-12-01 M.E.P. Cad, Inc. Methods and apparatuses for handling a conflict in a CAD drawing
US8150660B2 (en) * 2007-05-01 2012-04-03 M.E.P. Cad, Inc. Methods and apparatuses for automatically selecting a pipe in a CAD drawing
US20100121614A1 (en) * 2007-05-01 2010-05-13 M.E.P. Cad, Inc. Methods and Apparatuses for Preprocessing a CAD Drawing
US7660539B2 (en) * 2007-07-11 2010-02-09 Dell Products, L.P. Printer consumable ordering direct from printer
US9043233B2 (en) * 2007-08-03 2015-05-26 International Business Machines Corporation Component configuration utilizing vague specifications
US8049569B1 (en) 2007-09-05 2011-11-01 Cypress Semiconductor Corporation Circuit and method for improving the accuracy of a crystal-less oscillator having dual-frequency modes
US8938666B2 (en) * 2007-11-14 2015-01-20 International Business Machines Corporation Support selective graphical display of system configurations using view filters
US9087164B2 (en) * 2008-01-26 2015-07-21 National Semiconductor Corporation Visualization of tradeoffs between circuit designs
US7966588B1 (en) 2008-01-26 2011-06-21 National Semiconductor Corporation Optimization of electrical circuits
US8280696B1 (en) * 2008-02-20 2012-10-02 Ultra Deep, LLC Method for computer aided design of conduit
US20110190914A1 (en) * 2008-03-12 2011-08-04 Iklax Media Method for managing digital audio flows
US8135664B2 (en) * 2008-05-30 2012-03-13 International Business Machines Corporation Change management using collective data
US7984200B1 (en) 2008-09-23 2011-07-19 Western Digital Technologies, Inc. Configuring a data storage device with a configuration data record set in response to a configuration code
US9009358B1 (en) * 2008-09-23 2015-04-14 Western Digital Technologies, Inc. Configuring a data storage device with a parameter file interlocked with configuration code
US8078562B2 (en) * 2008-11-19 2011-12-13 Tacton Systems Ab Decomposing configuration problems
US9448964B2 (en) 2009-05-04 2016-09-20 Cypress Semiconductor Corporation Autonomous control in a programmable system
DE102009021255A1 (de) * 2009-05-14 2010-11-18 Fresenius Medical Care Deutschland Gmbh Verfahren und Vorrichtung zur Optimierung einer extrakorporalen Blutbehandlung
US8489841B1 (en) 2009-12-10 2013-07-16 Western Digital Technologies, Inc. Manufacturing station dynamically configuring a data storage device with a validated configuration data record
US8712741B2 (en) 2010-06-28 2014-04-29 National Semiconductor Corporation Power supply architecture system designer
US9141936B2 (en) * 2010-08-04 2015-09-22 Sas Institute Inc. Systems and methods for simulating a resource constrained process
US9358411B2 (en) 2011-05-27 2016-06-07 Victaulic Company Flexible dry sprinkler
US8812375B2 (en) 2011-10-07 2014-08-19 Ford Global Technologies, Llc Method and system for product configuration validation
US11676090B2 (en) 2011-11-29 2023-06-13 Model N, Inc. Enhanced multi-component object-based design, computation, and evaluation
US20140122160A1 (en) * 2012-10-26 2014-05-01 International Business Machines Corporation Optimized License Procurement
US9466026B2 (en) 2012-12-21 2016-10-11 Model N, Inc. Rule assignments and templating
US10373066B2 (en) 2012-12-21 2019-08-06 Model N. Inc. Simplified product configuration using table-based rules, rule conflict resolution through voting, and efficient model compilation
US11074643B1 (en) 2012-12-21 2021-07-27 Model N, Inc. Method and systems for efficient product navigation and product configuration
EP2759964A1 (de) * 2013-01-29 2014-07-30 dSPACE digital signal processing and control engineering GmbH Computerimplementiertes Verfahren zur Datenverwaltung von Produktvarianten in der Steuergeräteentwicklung
US9852429B2 (en) 2013-03-15 2017-12-26 Ford Global Technologies, Llc Method and system for generating a global representation of a product definition
US20140372083A1 (en) * 2013-06-13 2014-12-18 International Business Machines Corporation Derived restrictions in a combinatorial model
US20150026077A1 (en) * 2013-07-18 2015-01-22 Netapp, Inc. Centralized Method for Customer Assistance and System Verification
US20150026076A1 (en) * 2013-07-18 2015-01-22 Netapp, Inc. System and Method for Providing Customer Guidance in Deploying a Computing System
US10318703B2 (en) 2016-01-19 2019-06-11 Ford Motor Company Maximally standard automatic completion using a multi-valued decision diagram
WO2018086761A1 (en) 2016-11-10 2018-05-17 Rowanalytics Ltd Control apparatus and method for processing data inputs in computing devices therefore
EP3355205B1 (de) * 2017-01-26 2019-01-23 Sap Se Verfahren und system zur anpassung von computersystemen
US10812338B2 (en) 2017-01-26 2020-10-20 Sap Se Method and system for customization of computer systems
US10757169B2 (en) 2018-05-25 2020-08-25 Model N, Inc. Selective master data transport

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4589063A (en) * 1983-08-04 1986-05-13 Fortune Systems Corporation Data processing system having automatic configuration
US4591983A (en) * 1984-07-09 1986-05-27 Teknowledge, Inc. Hierarchical knowledge system
US4649479A (en) * 1985-02-28 1987-03-10 International Business Machines Corp. Device driver and adapter binding technique
US4870591A (en) * 1987-08-24 1989-09-26 International Business Machines Corp. System for ensuring device compatibility
US5257387A (en) * 1988-09-09 1993-10-26 Compaq Computer Corporation Computer implemented method and apparatus for dynamic and automatic configuration of a computer system and circuit boards including computer resource allocation conflict resolution
US5283857A (en) * 1988-11-14 1994-02-01 Digital Equipment Corporation Expert system including arrangement for acquiring redesign knowledge
US5226160A (en) * 1989-07-18 1993-07-06 Visage Method of and system for interactive video-audio-computer open architecture operation
US5265238A (en) * 1991-01-25 1993-11-23 International Business Machines Corporation Automatic device configuration for dockable portable computers
US5220654A (en) * 1991-03-28 1993-06-15 International Business Machines Corp. Method and system for managing an operating system definition of a dynamically modifiable i/o configuration
US5293479A (en) * 1991-07-08 1994-03-08 Quintero Smith Incorporated Design tool and method for preparing parametric assemblies

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112022001057B4 (de) 2021-03-26 2024-05-08 International Business Machines Corporation Selektives bereinigen eines systemkonfigurationsmodells für system-neukonfigurationen

Also Published As

Publication number Publication date
BR9406179A (pt) 1996-02-06
WO1994023372A1 (en) 1994-10-13
ATE363100T1 (de) 2007-06-15
CA2158153A1 (en) 1994-10-13
AU685451B2 (en) 1998-01-22
DE69434975D1 (de) 2007-07-05
KR100291012B1 (ko) 2001-09-17
JPH08509309A (ja) 1996-10-01
AU6494794A (en) 1994-10-24
CA2158153C (en) 2001-07-24
US5708798A (en) 1998-01-13
KR960701406A (ko) 1996-02-24
EP0719432A1 (de) 1996-07-03
US5515524A (en) 1996-05-07
EP0719432B1 (de) 2007-05-23
EP0719432A4 (de) 1996-05-08

Similar Documents

Publication Publication Date Title
DE69434975T2 (de) Verfahren und vorrichtung zum konfigurieren von systemen
US7043407B2 (en) Method and apparatus for configuring systems
US6002854A (en) Method and apparatus for configuring systems
Antkiewicz et al. FeaturePlugin: Feature modeling plug-in for Eclipse
US6115547A (en) Flash configuration cache
DE60311805T2 (de) Erfassung, Zusammenstellung und/oder Visualisierung von strukturellen Merkmalen von Architekturen
US6957206B2 (en) Computer system and method with adaptive N-level structures for automated generation of program solutions based on rules input by subject matter experts
DE19900500B4 (de) Verfahren und System zum Spezifizieren eines Computersystems für seine Herstellung
DE69931004T2 (de) Verfahren und Vorrichtung zur Datenverarbeitung
US8402007B2 (en) Methods and apparatus for creating and utilizing templates in connection with information modeling
DE10243595A1 (de) System und Verfahren zum Konfigurieren eines Speicherbereichsnetzwerks (Storage Area Network, SAN)
DE102006023974B4 (de) System und Verfahren für maßgeschneiderte Anwendungsbestellung und Installation für Informationsverarbeitungssysteme
US8275799B2 (en) Methods and apparatus for information modeling
DE10244685A1 (de) Produktkonfigurationsverfahren und -system
Männistö et al. Modeling configurable products and software product families
DE60032563T2 (de) System zur Verwendung eines elektronischen Katalogs für die Erstellung und Wiederherstellung eines Teilsatzes des elektronischen Katalogs und für die freie Unterteilung des elektronischen Katalogs
Clerici et al. Semantic constructions in the specification language Glider
EP1490762B1 (de) Verfahren, software-produkt und system zur universellen computergestuetzten informationsverarbeitung
AU715256B2 (en) Method and apparatus for configuring systems
DE102004053230B4 (de) Vorrichtung und Verfahren zum Konfigurieren eines Produkts
DE102022126133A1 (de) Gestellbasierte Designverifizierung und -verwaltung
DE102010001765A1 (de) Verfahren und System zum Überprüfen einer Regeltreue einer Implementierung einer Software-Architektur
DE20220657U1 (de) Vorrichtung zur Erzeugung eines Abarbeitungs-Werkzeugs
AU2891300A (en) Method and apparatus for configuring system
Prasad Best Practices in KBE

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
R082 Change of representative

Ref document number: 719432

Country of ref document: EP

Representative=s name: BOEHMERT & BOEHMERT, DE