DE69400873T2 - Dynamisches schnellauswertungssystem - Google Patents

Dynamisches schnellauswertungssystem

Info

Publication number
DE69400873T2
DE69400873T2 DE69400873T DE69400873T DE69400873T2 DE 69400873 T2 DE69400873 T2 DE 69400873T2 DE 69400873 T DE69400873 T DE 69400873T DE 69400873 T DE69400873 T DE 69400873T DE 69400873 T2 DE69400873 T2 DE 69400873T2
Authority
DE
Germany
Prior art keywords
component
viewing window
information
components
window portion
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 - Fee Related
Application number
DE69400873T
Other languages
English (en)
Other versions
DE69400873D1 (de
Inventor
Curtis Bianchi
John Dance
Peter Mcinerney
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.)
Object Technology Licensing Corp
Original Assignee
Taligent 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
Application filed by Taligent Inc filed Critical Taligent Inc
Application granted granted Critical
Publication of DE69400873D1 publication Critical patent/DE69400873D1/de
Publication of DE69400873T2 publication Critical patent/DE69400873T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Digital Computer Display Output (AREA)

Description

    Bereich der Erfindung
  • Die vorliegende Erfindung betrifft im allgemeinen computerunterstützte Softwareentwicklung (CASE) und insbesondere ein menschenorientiertes Objektprogrammiersystem (HOOPS), welches eine interaktive und dynamische Umgebung für die computerprogrammerstellung bietet. HOOPS ermöglicht es einem Programmierer, eine feinkörnige Quellcodebearbeitung mit einem optimierenden Inkrementalkompilierer in einem Computerprogramm durchzuführen. Bei der vorliegenden Erfindung handelt es sich um ein Navigationssystem, welches einem Programmierer Zugriff auf jede gespeicherte Information über jeden beliebigen Teil eines Programmes bietet, von wo auch immer diese Information im Programm referenziert wird. Diese Information wird mittels einer einzigartigen grafischen Anwenderschnittstelle (GUI) zur Verfügung gestellt, welche dem Programmierer ein intuitives System bietet, mit dessen Hilfe er durch das Programm navigieren kann. Die Erfindung wird mittels einer bevorzugten Ausführungsform offenbart, welche eine populäre objektorientierte Programmiersprache (QOP), nämlich C++, verwendet, wobei aber die Prinzipien ebenso. für andere Computerprogrammiersprachen gelten, und zwar sowohl für objektorientierte als auch für prozedurale Programmiersprachen, und dazu verwendet werden können, Programme mit Hilfe von konventionellen und OOP-Sprachen zu erstellen.
  • Beschreibung des Standes der Technik
  • Die objektorientierte Programmierung (OOP) ist die bevorzugte Umgebung für die Erstellung anwenderfreundlicher, intelligenter Computersoftware. Schlüsselelemente von OOP sind Dateneinkapselung, Vererbung und Polymorphismus. Diese Elemente können verwendet werden, um eine graphische Anwenderschnittstelle (GUI) zu erzeugen, welche typischerweise gekennzeichnet ist durch eine Fensterumgebung mit Icons, Mauscursor und Menüs. Während diese drei Schlüsselelemente den OOP-Sprachen gemeinsam sind, implementieren die meisten OOP-Sprachen die drei Schlüsselelemente unterschiedlich.
  • Beispiele für OOP-Sprachen sind Smalltalk, Object Pascal und C++. Smalltalk ist eigentlich mehr als eine Sprache: es könnte präziser als eine Programmierumgebung bezeichnet werden. Smalltalk wurde von der Learning Research-Gruppe im Pab Alto-Forschungszentrum (PARC) von Xerox in den frühen 70er-Jahren entwickelt. In Smalltalk wird eine Mitteilung zu einem Objekt gesandt, um das Objekt selbst zu bestimmen. Mitteilungen führen ähnliche Aufgaben aus wie Funktionsaufrufe in herkömmlichen Programmiersprachen. Der Programmierer muß sich nicht mit dem Datentyp beschäftigen; stattdessen muß sich der Programmierer nur um die Erstellung einer richtigen Mitteilungsreihenfolge kümmern und die richtige Mitteilung verwenden. Object Pascal ist jene Sprache, die für Apple Macintosh -Computer verwendet wird. Apple entwickelte Object Pascal in Zusammenarbeit mit Niklaus Wirth, dem Designer von Pascal. C++ wurde von Bjarne Stroustrup in den AT&T Bell-Laboratorien im Jahr 1983 als Erweiterung von C entwickelt. Das Schlüsselkonzept von C++ ist die Klasse, bei der es sich um einen anwenderdefinierten Typ handelt. Klassen bieten objektorientierte Programmierfunktionen. C++-Module sind kompatibel mit C-Modulen und können frei verknüpft werden, so daß bestehende C- Bibliotheken für C++-Programme verwendet werden können. Die am häufigsten verwendeten objektbasierten und objektorientierten Programmiersprachen leiten ihr Erbe von Simula ab, das in den 60er-Jahren dieses Jahrhunderts von O-J. Dahl, B. Myhrhaug und K. Nygard aus Norwegen entwickelt wurde. Weitere Informationen bezüglich OOP können in Object Oriented Design with Applications (Objektorientiertes Design mit Anwendungen) von Grady Booch, The Benjimin/Cummings Publishing Co., Inc., Redwood City, Calif. (1991), erhalten werden.
  • Der vollständige Prozeß des Ausführens eines Computerprogramms umfaßt die Übersetzung des vom Programmierer geschriebenen Quellcodes in maschinenausführbare Form, auch als Objektcode bezeichnet, und die darauffolgende Ausführung des Objektcodes. Der Prozeß der Übersetzung wird von einem Interpreter oder Kompilierer ausgeführt. Im Falle eines Interpreters wird die Übersetzung zu jenem Zeitpunkt durchgeführt, an dem das Programm ausgeführt wird, wohingegen im Falle eines Kompilierers die Übersetzung vor der Ausführung des Programms durchgeführt und als Objektcode gespeichert wird. Das heißt, im herkömmlichen Kompilierungs- und Ausführungssystem laufen die zwei Phasen der Übersetzung und der Ausführung getrennt voneinander ab, wobei die Kompilierung nur einmal erfolgt. In einem interpretierenden System wie dem Smalltalk-Interpreter werden die beiden Phasen hintereinander durchgeführt. Ein Interpreter ist deshalb für Smalltalk erforderlich, weil die Natur der Programmierumgebung nicht die Kennzeichnung spezifischer Register oder Adreßräume erlaubt, solange ein Objekt nicht implementiert ist.
  • Ein Kompilierer umfaßt drei Teile: den lexikalischen Analysator, den Syntaxanalysator und den Codegenerator. Bei der Eingabe in den lexikalischen Analysator handelt es sich um eine Buchstaben- und Zahlenfolge, welche ein Programm einer höheren Sprache darstellt. Der lexikalische Analysator unterteilt diese Folge in eine Folge von Zeichen, die in den Syntaxanalysator eingegeben werden. Der Syntaxanalysator unterteilt die Zeichen in Anweisungen und bestimmt mit Hilfe einer Datenbank mit grammatikalischen Regeln, ob eine Anweisung grammatikalisch korrekt ist oder nicht. Wenn nicht, wird eine Fehlermeldung erzeugt. Wenn sie richtig ist, wird die Anweisung in eine Folge von Basisanweisungen zerlegt, die zum Codegenerator übertragen werden, um eine Sprache niedriger Ebene zu ergeben. Der Codegenerator selbst ist typischerweise in drei Teile unterteilt: Zwischencodeerzeugung, Codeoptimierung und Codegenerierung. Grundsätzlich akzeptiert der Codegenerator die Ausgabe vom Syntaxanalysator und erzeugt den Maschinensprachencode.
  • Um die Entwicklung von Software zu unterstützen, wurden inkrementelle Kompilierer entwickelt, in denen der Kompilierer in einem Stapelverarbeitungsprozeß Code für eine empfangene Anweisung oder eine Gruppe von empfangenen Anweisungen erzeugt, und zwar unabhängig vom Code, der später für andere Anweisungen erzeugt wird. Der Vorteil der inkrementellen Kompilierung besteht darin, daß Code für Teile eines Programms sofort nach der Erstellung kompiliert und getestet werden kann, und daß es nicht notwendig ist, den Fehlersuchvorgang zu verschieben, bis das gesamte Programm fertig geschrieben wurde. Herkömmliche inkrementelle Kompilierer müssen jedoch jedesmal ein komplettes Modul neu bearbeiten.
  • Optimierende Kompilierer erzeugen einen höchst optimierten Objektcode, der in vielen Fällen die Fehlersuche an der Quellebene weit schwieriger macht als bei einem nicht optimierten Kompilierer. Das Problem liegt in der Tatsache begründet, daß, wenngleich eine Routine kompiliert wird, um die richtige Antwort zu geben, der exakte Weg für die Berechnung der Antwort sich wesentlich von jenem unterscheiden kann, der im Quellcode beschrieben ist. Manche Dinge, die der optimierende Kompilierer vielleicht tun kann, umfassen die Eliminierung von Code oder Variablen, von denen bekannt ist, daß sie das Endergebnis beeinflussen, das Verschieben von unveränderlichem Code aus den Schleifen, das Kombinieren von gemeinsamem Code, die Wiederverwendung von Registern, welche Variablen zugewiesen sind, wenn die Variable nicht mehr benötigt wird, usw. Somit kann die Zuordnung vom Quellcode zum Objektcode und umgekehrt bei manchen dieser Optimierungen schwierig sein. Das Überprüfen der Werte von Variablen kann schwierig sein, da der Wert der Variable nicht an allen Stellen innerhalb der Routine verfügbar sein muß. Die Modifizierung der Werte von Variablen in optimiertem Code ist besonders schwierig, wenn nicht überhaupt unmöglich. Wenn sie nicht spezifisch als flüchtig erklärt werden, "erinnert" sich der Kompilierer an Werte, die Variablen zugewiesen sind, und kann vielleicht den "bekannten" Wert später im Code verwenden, ohne die Variable erneut lesen zu müssen. Eine Anderung dieses Wertes könnte daher zu fehlerhaften Programmergebnissen führen.
  • Wenngleich es viele Fortschritte im Bereich der Computerprogrammerstellung, des Testens und der Entwicklung gegeben hat, stellen die bekannten Softwareentwicklungswerkzeuge immer noch eine wesentliche Belastung für den Programmierer dar, da sie oftmals eine intuitive Erkenntnis erfordern. Darüberhinaus führen traditionelle stapelorientierte Programmiersysteme zu sehr langen Bearbeitungs- Kompilierungs-Test-Zyklen, was den kreativen Akt des Programmierens sehr behindert.
  • Beachtliche Fortschritte wurden in der Entwicklung von graphischen Anwenderschnittstellen (GUIs) für Anwendungsprogramme gemacht, zuallererst mit der PARC Learning Research-Gruppe von Xerox und dem Apple Macintosh , und kürzlich mit der Einführung von Microsofts Windows und IBMs OS/2. Dem Programmentwickler wurden jedoch keine ähnlich intuitiven GUIs angeboten, um ihn bei den grundlegenden Aufgaben der Programmentwicklung zu unterstützen, insbesondere wenn es um komplexe Programme wie zum Beispiel Betriebssysteme geht. Ein Beispiel für ein neueres Werkzeug zur Softwarewartung findet sich in Software Practice & Experience, VIFOR: A Tool for Software Maintenance (Ein Werkzeug für Software-Wartung), Vol. 20, Nr. 1, Seiten 67-77 (1990). Der Artikel diskutiert ein Softwarewerkzeug, welches sich für die Wartung von mittleren bis großen Fortran77-Programmen eignet. Mit VIFOR können Programme auf zwei Arten dargestellt und bearbeitet werden: als Code und als graphische Darstellung. VIFOR enthält auch Umwandlungen in beide Richtungen, d.h. vom Code in die graphische Darstellung und von der graphischen Darstellung in Rohentwürfe in Code. Daher eignet es sich für die Nachbearbeitung und Wartung von bestehendem Code. Speziell gestaltete Durchsucher (Browser) implementieren die graphische Schnittstelle. VIFOR enthält eine Datenbank, welche auf einem einfachen, aber sehr wirkungsvollen Datenmodell von Fortran-Programmen basiert. Das Modell enthält nur vier Einheitenklassen und drei Relationen, wodurch das Werkzeug klein und leicht zu implementieren und anzuwenden ist. Eine einfache Abfragesprache ermöglicht das Durchblättern der Datenbank. Figur zeigt ein Fortran-Programm, welches einem Teil einer Fortran-Subroutine entspricht, wobei die Bezeichnung der Subroutine auch in einer hierarchischen Darstellung gezeigt wird, wobei die anderen bezeichneten Routinen dargestellt werden, aus denen sich das Programm "main" zusammensetzt.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Es ist daher eine Aufgabe der vorliegenden Erfindung, einen auf Menschen ausgerichteten, interaktiven und dynamischen Prozeß zur Erstellung von Computerprogrammen zu schaffen, der einen besseren Programmiererfokus und eine bessere Konzentration und daher eine größere Produktivität ermöglicht.
  • Es ist eine weitere Aufgabe der Erfindung, einem Programmierer Zugriff auf alle gespeicherten Informationen hinsichtlich eines beliebigen Programmteiles zu bieten, von wo auch immer sie im Programm referenziert werden.
  • Es ist eine weitere Aufgabe der Erfindung, einem Programmierer eine intuitive graphische Anwenderschnittstelle zu bieten, welche ihn beim interaktiven und dynamischen Prozeß des Erstellens von Computerprogrammen unterstützt.
  • Gemäß der Erfindung, wie sie in den angehängten Patentansprüchen definiert ist, wird ein System zum Navigieren innerhalb eines Computerprogramms geschaffen. Dies wird erreicht durch eine erste Modellierung des Computerprogramms als eine Sammlung von Komponenten und durch eine darauffolgende Speicherung der Komponenten im Speicher. Die Navigationsfunktion wird durchgeführt durch den Zugriff auf die gespeicherten Komponenten, basierend auf dem Computerprogramm. Das System reagiert auf eine Anwenderauswahl eines Abschnittes des Programmes durch Darstellung der mit dem Computerprogramm in Verbindung stehenden Information in einem ersten Fensterabschnitt auf einem Anzeigebildschirm. Ein zweiter Fensterabschnitt wird erzeugt, und eine Standardverknüpfung wird zwischen dem ersten Fensterabschnitt und dem zweiten Fensterabschnitt erstellt. Diese Verknüpfung, welche als ein "Schaltplan" dargestellt werden kann, bietet eine intuitive Durchblätterfunktion, welche dem Anwender hilft, die Beziehungen unterschiedlicher Module im Programm zu verstehen.
  • Die bevorzugte Ausführungsform der Erfindung ist in C++ geschrieben und wird verwendet, um Programme in C++, C und Assembler zu erstellen, welche die derzeit bekanntesten und am meisten verwendeten Sprachen sind. Die unter Verwendung der Erfindung erstellten Programme verwenden typischerweise alle drei dieser Sprachen. Während somit die Erfindung selbst ein objektorientiertes Programm ist, welches in einer objektorientierten Programmiersprache geschrieben ist, ist es nicht darauf beschränkt, Programme in objektorientierten Programmiersprachen zu erstellen, sondern gleichermaßen von Nutzen bei der Erstellung von Programmen, die in prozeduralen Sprachen geschrieben sind. Darüberhinaus ist die Erfindung nicht auf die C++-Sprache beschränkt, sondern kann auch in andere Programmiersprachen implementiert werden, und die Erfindung ist in ihrer Anwendung nicht auf diese drei Sprachen beschränkt; das heißt, die Lehren der Erfindung können in einem auf den Menschen ausgerichteten objektorientierten Programmiersystem in einer allgemeineren Anwendung verwendet werden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die zuvor erwähnten und andere Aufgaben, Aspekte und Vorteile werden besser mit Hilfe der folgenden detaillierten Beschreibung einer bevorzugten Ausführungsform der Erfindung unter Bezugnahme auf die Zeichnungen verstanden werden, in denen:
  • Figur 1 ein bildhaftes Diagramm eines Allzweck- Computersystems ist, welches in der Lage ist, ein hochauflösendes Grafikanzeigegerät und ein Cursorzeigegerät wie zum Beispiel eine Maus zu unterstützen, auf welchem die Erfindung implementiert werden kann;
  • Figur 2 ein Blockdiagramm des in Figur 1 dargestellten Allzweck-Computers ist, welches detaillierter die Hauptelemente des Computersystems darstellt;
  • Figur 3 eine Datenstruktur gemäß einer bevorzugten Ausführungsform ist; und
  • Figur 4-24 bildhafte Darstellungen von Computerbildschirmdarstellungen sind, welche typische Fenster gemäß einer bevorzugten Ausführungsform darstellen.
  • GENAUE BESCHREIBUNG EINER BEVORZUGTEN AUSFÜHRUNGSFORM DER ERFINDUNG
  • Bezugnehmend auf die Zeichnungen und insbesondere auf Figur 1 wird ein Allzweck-Computersystem 10 dargestellt. Der Computer 10 besitzt eine Systemeinheit 12, ein hochauflösendes Anzeigegerät 14, wie zum Beispiel eine Kathodenstrahlröhrenanzeige (CRT), oder alternativ dazu eine Flüssigkristallanzeige (LCD) . Die Art der Anzeige ist nicht wichtig, außer daß es sich dabei um eine Anzeige handeln soll, die in der Lage ist, die für Windowsanwendungen benötigten hohen Auflösungen darzustellen, welche für graphische Anwenderschnittstellen (GUIs) typisch sind. Die Anwendereingabe in den Computer erfolgt durch eine Tastatur 16 und ein Cursorzeigegerät, wie zum Beispiel die Maus 18. Die Maus 18 ist mit der Tastatur 16 verbunden, welche wiederum mit der Systemeinheit 12 verbunden ist. Alternativ dazu kann die Maus 18 an einem dedizierten oder seriellen Port in der Systemeinheit 12 angeschlossen sein. Beispiele für Allzweckcomputer jener Art, wie sie in Figur 1 dargestellt ist, wären der Apple Macintosh (registriertes Warenzeichen von Apple Computer) und der IBM PS/2. Andere Beispiele umfassen verschiedene Workstations, wie zum Beispiel die IBM RISC System/6000 und die Sun Microsystems Computer.
  • Figur 2 zeigt in näheren Einzelheiten die wichtigsten Elemente des in Figur 1 dargestellten Allzweck- Computersystems. Die Systemeinheit 12 umfaßt eine Zentralrecheneinheit (CPU) 21, einen Direktzugriffsspeicher (RAM) 22, und einen Nur-Lese-Speicher (ROM) 23, der direkt am Bus 24 angeschlossen ist. Bei der CPU 21 kann es sich um einen der am Markt erhältlichen Mikroprozessoren handeln, wie zum Beispiel die Prozessoren Motorola 68030 und 68040, welche gemeinhin in Apple Macintosh -Computern verwendet werden, oder den Mikroprozessoren 80386 und 80486, die gemeinhin in den IBM PS/2-Computern verwendet werden. Andere Mikroprozessoren, wie zum Beispiel die RISC-Mikroprozessoren (Abk. für "reduced instruction set computer", d.h. Computer mit reduziertem Befehlsvorrat), die typischerweise in Workstations Verwendung finden, können ebenso verwendet werden. Das ROM 24 speichert den grundlegenden Mikrocode, einschließlich des grundlegenden Eingabe-/Ausgabesystems (BIOS) für die CPU 21. Das Betriebssystem (OS) für das Computersystem 10 kann auch im ROM 24 gespeichert werden, oder alternativ dazu wird das OS im RAM 22 als Teil des Initialprogrammladens (IPL) gespeichert. RAM 22 wird auch zum Speichern von Teilen der Anwendungsprogramme und temporärer Daten verwendet, die bei der Ausführung der Programme erzeugt wurden. Bei dem Bus 24 kann es sich um den Apple NU- Bus , den IBM Microchannel oder um einen der Industriestandards handeln, wie zum Beispiel den ISA-Bus (Industriestandardadapter) oder den EISA-Bus (erweiterter Industriestandardadapter).
  • Ebenfalls angeschlossen am Bus 24 sind verschiedene Eingabe-/Ausgabeadapter (E/A-Adapter), einschließlich eines Anwenderschnittstellenadapters 25 und eines E/A-Adapters 26. Die Tastatur 26 ist mit dem Anwenderschnittstellenadapter 25 verbunden, und der E/A-Adapter ist mit einem Diskettenlaufwerk 27 und einer Festplatte 28 verbunden. Das Diskettenlaufwerk 27 ermöglicht das Lesen und Schreiben von Daten und Programmen auf auswechselbaren Medien, während die Festplatte 28 typischerweise Daten und Programme speichert, die in das RAM 22 eingelagert und aus diesem ausgelagert werden. Das Anzeigegerät 14 ist mit dem Bus 24 über einen Anzeigeadapter 29 verbunden. Ein Kommunikationsadapter 30 bietet eine Schnittstelle zu einem Netzwerk. Andere unterstützende Schaltungen (nicht dargestellt) in Form von integrierten Schaltungs-(IC)-Chips sind am Bus 24 und/oder der CPU 21 angeschlossen. Diese würden zum Beispiel einen Busmasterchip umfassen, der den Verkehr am Bus 24 regelt. Der Bus 24 kann in manchen Computern aus zwei Bussen bestehen: einem Datenbus und einem Anzeigebus, wodurch eine schnellere Anzeigeoperation ermöglicht wird, was in einer graphischen Anwenderschnittstelle wünschenswert ist.
  • Überblick über die Erfindung
  • Das menschenorientierte Objektprogrammiersystem (HOOPS) gemäß der Erfindung kann am Computer gestartet werden, indem entweder ein Projektname oder ein bereits bestehender Projektname eingegeben wird, was davon abhängt, ob ein neues Programm zu erstellen ist oder ein bestehendes Programm bearbeitet werden soll. Das erste Fenster, welches HOOPS öffnet, zeigt das Elementeneigentum der Projektkomponente und deren unmittelbare Elemente. Obwohl es zuerst nur die unmittelbaren Elemente zeigt, wird das selbe Fenster dazu verwendet, um jede Komponente beginnend an der Projektkomponente darzustellen.
  • Das dynamische Schnellauswertungssystem von HOOPS ermöglicht es einem Anwender, auf dynamische Weise Programmdarstellungen zu erstellen. Das System ist auf eine rasche, dynamische Anderung oder Erstellung von Darstellungen ausgerichtet, und diese Darstellungen können für die spätere Wiederverwendung gespeichert werden. Auf diese Art können Anwender ein System maßschneidern.
  • Das System basiert auf vier Hauptkomponenten: Betrachter, Fensterabschnitte, Fenster und Drähte. Das System bietet eine erweiterbare Gruppe von Betrachtern für die Darstellung verschiedener Aspekte eines Programms. Um einen Betrachter zu verwenden, muß er in einem Fensterabschnitt angezeigt werden, der in einem Fenster dargestellt wird. Ein Fenster kann einen oder mehrere Fensterabschnitte darstellen (und somit einen oder mehrere Betrachter), und die Fensterabschnitte können über Drähte miteinander verbunden sein, um die Navigationsoperationen zu ermöglichen, so daß eine große Vielfalt an Kombinationen erzeugt werden kann. Da die Gruppe der Betrachter erweiterbar ist, erlegt das System der Vielfalt an Darstellungen, die erzeugt werden können, keine inhärenten Grenzen auf.
  • Das System kann auf jeden Bereich angewandt werden, der eine umfangreiche Gruppe an miteinander in Beziehung stehenden Daten aufweist, die insbesondere von hierarchischer oder miteinander vernetzter Natur sind, wie zum Beispiel die Darstellung eines Computerprogramms. Ein Beispiel für einen anderen Bereich wäre eine Schuldatenbank, wo es Studenten, Instruktoren und Klassen sowie verschiedene Beziehungen zwischen diesen gibt.
  • Definitionen
  • Programm
  • Wie in der Beschreibung der Erfindung verwendet, besteht ein HOOPS-Programm aus einer nichterstellbaren Komponente mit der Bezeichnung Projekt und einer Sammlung von "erstellbaren Komponenten". Es ist auch möglich, nichterstellbare Komponenten zu speichern, aber in dieser Beschreibung wird mit jeder nicht näher bezeichneten Komponente eine "erstellbare Komponente" gemeint. Nichterstellbare Komponenten werden während eines Erstellvorganges nicht kompiliert.
  • Komponente
  • Eine Komponente verfügt über eine einzigartige Identität und trägt einen Namen. Unterschiedliche Komponenten werden durch eine Art einzigartige Kennzeichnung unterschieden, welche als ID bezeichnet wird. Es gibt eine einzigartige ID mit der Bezeichnung NullID, welche zu keiner Komponente gehört. Die ID wird zugeordnet, wenn eine Komponente erstellt wird, und sie wird niemals geändert, solange diese Komponente existiert. Wenn eine Komponente gelöscht wird, wird deren ID niemals wieder verwendet. In der Praxis sind IDs für gewöhnlich numerisch.
  • Eine Komponente verfügt auch über einen Namen, der aus einer Textzeichenfofge besteht, in der kein Leerraum enthalten ist. Es ist nicht erforderlich, daß unterschiedliche Komponenten unterschiedliche Namen haben müssen. Es ist möglich, eine Liste (die möglicherweise leer ist) aller Komponenten zu erhalten, deren Namen mit einer gegebenen Textfolge übereinstimmen. Der Name einer Komponente kann beliebig oft geändert werden, während diese Komponente existiert.
  • Komponenten werden verwendet, um semantische Sprachelemente darzustellen. Die Art und Weise, wie dies geschieht, hängt von der jeweils modellierten Computersprache ab. Zum Beispiel umfaßt in C++ eine teilweise Liste von Sprachelementen, die durch Komponenten dargestellt werden, globale Daten, globale Funktionen, Klassen, Datenelemente, Elementfunktionen, Typedefs (Typendefinitionen), Enums, Aufzählungen, Macros, Einheiten und Strukturen. Typischerweise verfügt jedes semantische Element über eine zugehörige unterscheidende Art.
  • Eigentum
  • Eine Komponente besteht aus einer Sammlung benannter Eigentümer. Ein Eigentum repräsentiert einige Daten, die mit der Komponente in Zusammenhang stehen. Es ist möglich, Daten mit der ID einer Komponente und einem Eigentümernamen zu laden oder zu speichern. In der Praxis werden Eigentümernamen für gewöhnlich intern durch Zahlen dargestellt, welche die Namen identifizieren (derartige Zahlen werden manchmal als Token bezeichnet). Es gibt einen einzigartigen Eigentümernamen mit der Bezeichnung Nullproperty, der keinem Eigentum gehört.
  • Die mit einem gegebenen Eigentum im Zusammenhang stehenden Daten sind bei unterschiedlichen Komponenten anders. Das Ändern der Daten eines gegebenen Eigentums für eine Komponente impliziert nicht das Andern der Daten für dasselbe Eigentum einer anderen Komponente. Es ist jedoch möglich, daß die Änderung in einem Eigentum einer Komponente eine Änderung in einem anderen Eigentum derselben oder einer anderen Komponente verursacht.
  • Alle Komponenten müssen die Eigentümer Name und Container aufweisen. Das Eigentum Name speichert den Namen der Komponente. Das Eigentum Container enthält eine einzelne Referenz, in welcher der Eigentümername NullProperty lautet. Beginnend bei einer beliebigen Komponente führt die aufeinanderfolgende Ersetzung derselben durch die Komponente, auf welche sich ihre Container-ID bezieht, schließlich immer zur Projektkomponente. Die Container-ID des Projekts ist NullID. Somit werden alle Komponenten als im Projekt enthalten beschrieben.
  • Referenz
  • Ein Paar, bestehend aus einer ID und einem Eigentümernamen, wird als eine Referenz bezeichnet. Eine Referenz identifiziert ein bestimmtes Stück Eigentümerdaten auf einzigartige Weise. Oft wird eine Referenz auf eine lose Art und Weise verwendet, so als ob es die Komponente und/oder das Eigentum wäre, auf das sie sich bezieht. In der Praxis enthält eine Referenz typischerweise andere Informationen, welche nicht direkt bei der Programmerstellung verwendet werden und festlegen, auf welche Version der Daten und auf welchen Unterabschnitt der Daten im Eigentum verwiesen wird. Es gibt hierbei eine einzigartige Referenz, nämlich die Nullreferenz, welche keine Komponente und kein Eigentum festlegt.
  • Arten
  • Jede Komponente besitzt eine Art. Eine Art ist eine Textreihe, die verwendet wird, um Komponenten in Gruppen einzuteilen, welche zum Beispiel über dieselben Eigentümer oder dasselbe sprachenspezifische Verhalten verfügen. Die meisten Arten sind für eine bestimmte Computersprache eigentümlich und werden zur Bezeichnung semantisch unterschiedlicher Sprachenelemente verwendet.
  • Es gibt jedoch auch einige Arten, die vom System definiert werden. Dies sind die Arten Projekt, Bibliothek und Container. Diese Arten werden nur bei nichterstellbaren Komponenten verwendet. Die Art Projekt ist die Art der Projekt-Komponente. Die Art Bibliothek wird auf Sammlungen von Komponenten angewandt, die in einen einzigen externen Block von Objektcode zu verknüpfen sind, wie zum Beispiel als eine gemeinsam verwendete Bibliothek oder eine Anwendung. Die Art Container wird für Komponenten verwendet, die zum Gruppieren anderer Komponenten für Organisationszwecke gebraucht werden. In der Praxis werden Komponenten intern für gewöhnlich auf numerische Art bezeichnet.
  • Betrachter
  • Ein Betrachter ist eine graphische Darstellung, welche ein bestimmtes Eigentum einer Komponente darstellen soll. Im Zuge der Darstellung dieses Eigentums kann es jedoch notwendig und wünschenswert für den Betrachter sein, ergänzende Informationen darzustellen, einschließlich Daten von anderen Eigentümern. Ein Betrachter besitzt einen Eingang und einen Ausgang, wobei es sich bei beiden um Referenzen handelt. Der Eingang bezeichnet mindestens eine Komponente und ein Eigentum. Er kann zusätzlich einen Unterbereich der Eigentümerinformationen bezeichnen. Der Ausgang bezeichnet mindestens eine Komponente. Er kann auch ein Eigentum bezeichnen sowie einen Unterbereich der Eigentümerinformationen. Der Ausgang ändert sich typischerweise im Laufe der Zeit als Reaktion auf die Anwendermaßnahmen und Statusänderungen innerhalb des Systems.
  • Fensterabschnitt
  • Ein Betrachter wird innerhalb eines Fensterabschnitts dargestellt. Ein Fensterabschnitt besitzt einen Eingang und einen Ausgang, bei denen es sich um Referenzen handelt. Der Eingang bezeichnet mindestens eine Komponente. Er kann auch ein Eigentum der Komponente und einen Unterabschnitt der Eigentümerinformationen bezeichnen. Der Ausgang bezeichnet mindestens eine Komponente, und möglicherweise ein Eigentum und einen Unterabschnitt der Eigentümerinformationen. Der Ausgang ändert sich typischerweise im Laufe der Zeit als Reaktion auf die Anwendermaßnahmen und die Statusänderungen innerhalb des Systems.
  • Ein Fensterabschnitt bestimmt den Eingang seines Betrachters, und zwar im allgemeinen durch Ableitung desselben vom Fensterabschnittseingang. Die Natur dieser Ableitung kann von Fensterabschnitt zu Fensterabschnitt unterschiedlich sein, und zwar entweder dynamisch basierend auf dem Systemstatus, oder statisch durch unterschiedliche Implementationen von Fensterabschnitten. Die bevorzugte Ausführungsform bietet nur die einfachste Ableitung, in welcher der Eingang eines Betrachters identisch ist mit dem Eingang des Fensterabschnitts. Auf ähnliche Weise wird der Ausgang eines Fensterabschnitts vorn Ausgang des Betrachtes abgeleitet. Die Natur dieser Ableitung kann von Fensterabschnitt zu Fensterabschnitt unterschiedlich sein, und zwar entweder dynamisch basierend auf dem Systemstatus, oder statisch durch unterschiedliche Implementationen von Fensterabschnitten. Die bevorzugte Ausführungsform bietet nur die einfachste Ableitung, in welcher der Ausgang eines Fensterabschnitts identisch ist mit dem Ausgang seines Betrachters.
  • Durchsucher
  • Ein Durchsucher ist ein Fenster, welches einen oder mehrere Fensterabschnitte darstellt. Das Layout und die Anzahl der Fensterabschnitte in einem Fenster können von einem Anwender dynamisch gesteuert werden. Ein Durchsucher besitzt einen Eingang, bei dem es sich um eine Referenz handelt. Der Eingang des Durchsuchers dient als Eingang für den ersten Fensterabschnitt des Durchsuchers, bei dem es sich typischerweise um jenen Fensterabschnitt handelt, die die linke obere Ecke des Durchsuchers einnimmt.
  • Draht
  • Ein Draht ist eine Verbindung zwischen zwei Fensterabschnitten. Der Zweck eines Drahtes besteht darin, den Ausgang eines Fensterabschnittes zu ermöglichen, um den Eingang eines anderen Fensterabschnittes zu steuern. So wie Fensterabschnitte und Betrachter besitzt der Draht einen Eingang und einen Ausgang, bei welchen es sich um Referenzen handelt. Um eine Verbindung zwischen zwei Fensterabschnitten zu erstellen, wird der Ausgang eines Fensterabschnittes mit dem Eingang eines Drahtes verbunden. Der Ausgang desselben Drahtes wird mit dem Eingang des zweiten Fensterabschnittes verbunden, wodurch die Verbindung errichtet wird.
  • Ein Draht leitet seinen Ausgang von seinem Eingang ab. Die Natur dieser Ableitung kann von Draht zu Draht unterschiedlich sein, und zwar entweder dynamisch basierend auf einem Systemstatus, oder statisch durch unterschiedliche Implementationen von Drähten.
  • Ein Draht kann seinen Eingang umwandeln, bevor er ihn als Drahtausgang weiterleitet. Es können unterschiedliche Implementierungen von Drähten zur Errichtung von Verbindungen verwendet werden, und jede Implementierung kann eine unterschiedliche Art der Umwandlung enthalten. Die bevorzugte Ausführungsform bietet nur die einfachste Ableitung, in der der Eingang des Drahtes unverändert durch den Draht zu seinem Ausgang weitergeleitet wird. Der Ausgang eines Fensterabschnittes kann mit jeder beliebigen Anzahl an Drähten verbunden werden. Dies schafft einen Mechanismus, in welchem der Ausgang eines einzelnen Fensterabschnittes den Eingang einer beliebigen Anzahl anderer Fensterabschnitte "steuert". Ein Anwender kann auf dynamische Weise die Verbindungen zwischen Fensterabschnitten steuern.
  • Verknüpfung zwischen Eigentum und Betrachter
  • Um unterschiedliche Darstellungen desselben Eigentums zu ermöglichen und um die Verwendung derselben Betrachterimplementationen für unterschiedliche Eigentümer zu ermöglichen, bietet das System einen Mechanismus zur Zuordnung von Eigentümern mit Hilfe von Betrachtern.
  • In einer bevorzugten Ausführungsform wird diese Verknüpfung durch eine Gruppe von Betrachterlisten erzielt, von denen eine jede einzelne einer beliebigen Anzahl von Eigentümern zugeordnet werden kann. Eine Betrachterliste ist eine benannte Liste von Betrachterspezifikationen, in der jede einzelne Spezifikation einen Betrachternamen und die Implementationsklasse definiert. Figur 3 zeigt eine vereinfachte Version der Betrachterlisten in der bevorzugten Ausführungsform. Die erste Liste trägt die Bezeichnung "MembersViewers" (Elementebetrachter) Sie enthält Spezifikationen für zwei Betrachter. Die erste trägt die Bezeichnung "Outline" (Entwurf) und wird von der TNewOutlineViewer-Klasse in der Betrachterbibliothek implementiert. Die zweite Spezifikation in der Liste trägt die Bezeichnung "Tree" (Baum) und wird von der Tnewtreeviewer-Klasse in der Betrachter-Bibliothek implementiert.
  • Jedes einzelne Eigentum ist einer einzigen Betrachterliste zugeordnet. Zum Beispiel zeigt die untenstehende Tabelle die Eigentümer einer Projektkomponente, und die den einzelnen Eigentümern zugeordneten Betrachterlisten.
  • Eigentum Viewer List (Betrachterliste)
  • Elemente MembersViewers
  • Beschreibung DescriptionViewers
  • Macroänderungen GroupViewers
  • Schnittstellenänderungen GroupViewers
  • Implementationsänderungen GroupViewers
  • Erstellungsfehler ErrorListViewers
  • Komponentenerstellung GroupViewers
  • Kompilierer
  • Klienten DerivedReferencesViewers
  • Referenzen DerivedReferencesViewers
  • In diesem Beispiel kann das Elementeneigentum durch die Betrachter dargestellt werden, die in der MembersViewers-Liste angeführt werden. Bezugnehmend auf Figur 3 enthält die Membersviewers-Liste zwei Betrachter, den Outline- Betrachter und den Tree-Betrachter. Daher kann das Elementeneigentum einer Projektkomponente entweder vom Tree- Betrachter oder vorn Outline-Betrachter dargestellt werden.
  • Die Tabelle zeigt auch, daß manche Eigentümer derselben Betrachterliste zugeordnet sind, wodurch gezeigt wird, daß die selben Betrachter für unterschiedliche Eigentümer verwendet werden können. Dem Kompilierereigentum ist keine Betrachterliste zugeordnet, was darauf hinweist, daß das Kompilierereigentum überhaupt nicht dargestellt werden kann. Das erste Eigentum in der Tabelle wird als das Standardeigentum der Komponente betrachtet, die verwendet wird, um zu bestimmen, welches Eigentum und welcher Betrachter in einem Fensterabschnitt darzustellen sind.
  • Prozeduren
  • Im folgenden findet sich eine Beschreibung der wichtigsten Prozeduren des Durchsuchersystems.
  • Prozedur A: Betrachter eines Fensterabschnitts einstellen Gegeben: ein Betrachtername
  • 1. Suche nach dem Betrachternamen in der Betrachterliste, welche dem dargestellten Eigentum zugeordnet ist.
  • 2. Wenn der Betrachtername gefunden ist, gehe zu Schritt 5.
  • 3. Der Betrachtername wurde nicht gefunden. Leere den Fensterabschnitt.
  • 4. Gehe zu Schritt 5.
  • 5. Erstelle einen Betrachter jener Klasse, welche dem Betrachternamen in der Betrachterliste zugeordnet ist.
  • 6. Stelle den Eingang des Betrachters auf den Eingang des Fensterabschnitts ein.
  • 7. Installiere den Betrachter im Fensterabschnitt und stelle ihn dar.
  • 8. Ende der Prozedur.
  • Prozedur B: Eigentum eines Fensterabschnitts einstellen
  • Gegeben: ein Eigentümername
  • 1. Stelle den Eigentümernamen des Fensterabschnitts auf den angegebenen Eigentümernamen ein.
  • 2. Aktualisiere den Titelbalken des Fensterabschnitts, um den angegebenen Eigentümernamen darzustellen.
  • 3. Erlange das Eigentum des angegebenen Namens von der Eingangskomponente des Fensterabschnitts.
  • 4. Erlange die Betrachterliste des Eigentums.
  • 5. Wenn nur ein einziger Betrachter in der Liste vorhanden ist, gehe zu Schritt 7.
  • 6. Erstelle das Betrachtermenü durch Erstellung eines Menüpunktes für jeden einzelnen Eintrag in der Betrachterliste.
  • 7. Rufe Prozedur A auf, um den Betrachter des Fensterabschnitts einzustellen, und verwende dazu den ersten Betrachternamen aus der Betrachterliste.
  • 8. Ende der Prozedur
  • Prozedur C: Eingang eines Fensterabschnitts einstellen Gegeben: eine Referenz
  • 1. Wenn es sich bei der Referenz nicht um die Nullreferenz handelt, gehe zu Schritt 3.
  • 2. Die Referenz ist Null. Stelle den Fensterabschnitt auf den leeren Zustand ein. Gehe zu Schritt 12.
  • 3. Stelle den Komponentennamen in dem Titelbalken des Fensterabschnitts auf die durch die Referenz bezeichnete Komponente ein.
  • 4. Fülle das Popup-Menü "Eigentümer" mit den Namen der Eigentümer der Komponente aus, welche von der Referenz bezeichnet wird.
  • 5. Wenn der Fensterabschnitt eigentumsverriegelt ist, gehe zu Schritt 9.
  • 6. Wenn die Referenz nicht ein Eigentum festlegt, gehe zu Schritt 8.
  • 7. Die Referenz legt ein Eigentum fest. Rufe Prozedur B auf, um das Eigentum des Fensterabschnitts auf das Eigentum der Referenz einzustellen. Gehe zu Schritt 12.
  • 8. Die Referenz legt kein Eigentum fest. Erlange die von der Referenz zugewiesene Komponente, und rufe Prozedur B auf, um das Eigentum des Fensterabschnitts auf das Standardeigentum der Komponente einzustellen. Gehe zu Schritt 12.
  • 9. Der Fensterabschnitt ist eigentumsverriegelt. Erlange die von der Referenz festgelegte Komponente. Wenn die Komponente nicht über das Eigentum des Fensterabschnitts verfügt, gehe zu Schritt 11.
  • 10. Die Komponente verfügt über das verriegelte Eigentum. Rufe Prozedur B auf, um das Eigentum des Fensterabschnitts auf das verriegelte Eigentum einzustellen. Gehe zu Schritt 12.
  • 11. Die Komponente verfügt nicht über das verriegelte Eigentum. Im Fensterabschnitt ist kein Betrachter installiert.
  • 12. Ende der Prozedur.
  • Prozedur D: Ausgang eines Betrachters einstellen Gegeben: Der Betrachter bestimmt, daß eine Maßnahme, die typischerweise vom Anwender aufgerufen wird, eine Änderung des Ausgangs des Betrachters erfordert.
  • 1. Erstelle eine Referenz, welche den neuen Ausgang des Betrachters darstellt.
  • 2. Rufe Prozedur E auf, um den Ausgang des Fensterabschnitts einzustellen.
  • 3. Ende der Prozedur.
  • Prozedur E: Ausgang eines Fensterabschnitts einstellen Gegeben: eine Referenz, welche den Ausgang des Betrachters des Fensterabschnitts darstellt.
  • 1. Wandle den Ausgang des Betrachters in den Ausgang des Fensterabschnitts um. (Im einfachsten Fall sind beide Ausgänge gleich.)
  • 2. Rufe für jeden Draht, der an dem Ausgang des Fensterabschnitts angeschlossen ist, die Prozedur F auf, um den Eingang des Drahtes auf den Ausgang des Fensterabschnittes einzustellen.
  • 3. Ende der Prozedur
  • Prozedur F: Eingang eines Drahtes einstellen Gegeben: eine Referenz.
  • 1. Wandle die gegebene Referenz in den Ausgang des Drahtes um. (Im einfachsten Fall ist der Ausgang gleich wie die gegebene Referenz.)
  • 2. Rufe Prozedur C auf, um den Eingang des verbundenen Fensterabschnittes auf den Ausgang des Drahtes einzustellen.
  • 3. Ende der Prozedur
  • Prozedur G: Zwei Fensterabschnitte verbinden Gegeben: ein Eingangsfensterabschnitt und ein Ausgangsfensterabschnitt.
  • 1. Erstelle einen neuen Draht.
  • 2. Füge den Draht der Drahtgruppe des Ausgangsfensterabschnitts hinzu.
  • 3. Verbinde den Draht mit dem Eingangsfensterausschnitt.
  • 4. Stelle den Eingang des Drahtes mit Hilfe der Prozedur F ein.
  • 5. Ende der Prozedur.
  • Prozedur H: einen Fensterabschnitt unterteilen Gegeben: Die Abmessungen des neuen Fensterabschnitts
  • 1. Erstelle ein neues Fensterabschnittsobjekt
  • 2. Stelle die Abmessungen des neuen Fensterabschnitts auf die angegebenen Abmessungen ein.
  • 3. Stelle die Abmessungen des vorhandenen Fensterabschnitts ein, um für den neuen Fensterabschnitt Platz zu machen.
  • 4. Verbinde den bestehenden Fensterabschnitt mit Hilfe der Prozedur G mit dem neuen Fensterabschnitt.
  • 5. Ende der Prozedur.
  • Prozedur I: einen Durchsucher erstellen. Gegeben: Eine Referenz, welche als Eingang für den Durchsucher dient.
  • 1. Erstelle das Durchsucherobjekt.
  • 2. Stelle den Eingang des Durchsuchers auf die angegebene Referenz ein.
  • 3. Erstelle ein neues Fensterabschnittsobjekt, dessen Abmessungen den Durchsucher ausfüllen.
  • 4. Stelle den Eingang des Fensterabschnitts mit Hilfe der Prozedur C auf den Eingang des Durchsuchers ein.
  • 5. Ende der Prozedur.
  • Kontrollen für die menschliche Schnittstelle
  • Figur 4 zeigt einen Durchsucher gemäß einer bevorzugten Ausführungsform. Es gibt spezifische Kontrollen für jeden Durchsucher, jeden Fensterabschnitt und jeden Betrachter.
  • Jeder Durchsucher besitzt die folgenden Kontrollen. Das Schließen-Icon 1210 kann dazu verwendet werden, um das Fenster jederzeit zu schließen. Jede Änderung, die am Projekt durchgeführt wurde, während es sich im Durchsucher befand, wird automatisch gespeichert. Die Zoom-Box 1242 des Durchsuchers ermöglicht es dem Anwender, den Durchsucher auf die gesamte Bildschirmgröße zu vergrößern.
  • Jeder Fensterabschnitt verfügt über die folgenden Kontrollen. Die Titelleiste 1240 des Fensterabschnittes zeigt den Namen des Eigentums an, das im Fensterabschnitt 1230 dargestellt ist, und der Name der Komponente wird in 1240 dargestellt. Die Fensterabschnittsteiler 1250 ermöglichen es dem Anwender, einen Fensterabschnitt in zwei Fensterabschnitte zu teilen und die Abmessungen eines Fensterabschnitts zu steuern. Die Zoom-Box 1243 des Fensterabschnitts ermöglicht es einem Anwender, auf dynamische Weise einen Fensterabschnitt zu vergrößern, um ein Fenster vollständig auszufüllen, oder einen vergrößerten Fensterabschnitt zurück auf seine ursprünglichen Abmessungen zu verkleinern. Das Eigentümer-Popupmenü 1220 ermöglicht es einem Anwender, jedes beliebige Eigentum der Eingangskomponente 1240 auszuwählen, und somit das in einem Fensterabschnitt dargestellte Eigentum zu verändern. Die Fensterabschnittseigentumsverriegelung 1211 ermöglicht es dem Anwender, einen Fensterabschnitt auf ein bestimmtes Eigentum zu verriegeln, und zwar unabhängig vorn Eingang in den Fensterabschnitt. Horizontale und vertikale Rollkontrollen 1252 ermöglichen es einem Anwender, den Inhalt eines Betrachters innerhalb eines Fensterabschnitts zu rollen. Die Titelleiste 1251 des Betrachters enthält Menüs, welche für den Betrachter Gültigkeit besitzen, der in einem Fensterabschnitt dargestellt ist. Insbesondere dann, wenn das im Fensterabschnitt dargestellte Eigentum von mehr als einem Betrachter dargestellt werden kann, enthält die Titelleiste des Betrachters ein Betrachter-Menü 1253, welches von einem Anwender dazu verwendet werden kann, um eine Auswahl aus den Betrachtern zu treffen, welche dazu verwendet werden, das Eigentum darzustellen.
  • Es gibt auch Kontrollen zur Errichtung von Verbindungen zwischen Fensterabschnitten. Wenn ein neuer Fensterabschnitt erstellt wird, wird eine Standardverbindung von dem geteilten Fensterabschnitt zum neuen Fensterabschnitt errichtet. Um die Verbindungen zu ändern, legt eine bevorzugte Ausführungsform graphische Drähte über einen Durchsucher, wie dies in Figur 5 dargestellt ist, und ein Anwender kann neue Drähte zeichnen, um die Fensterabschnittsverbindungen zu ändern. In Figur 5 wird der Eingang des Durchsuchers mit dem Eingang des linken Fensterabschnitts verbunden, und der Ausgang des linken Fensterabschnitts wird mit dem Eingang beider Fensterabschnitte auf der rechten Seite verbunden. Die Ausgänge der Fensterabschnitte auf der rechten Seite sind mit keinem anderen Fensterabschnitt verbunden. Um die Verbindungen zu ändern, zum Beispiel durch Verbinden des Ausganges des oberen rechten Fensterabschnitts mit dem Eingang des unteren rechten Abschnitts, würde ein Anwender einfach einen neuen Draht vorn oberen rechten Fensterabschnitt zum unteren rechten Fensterabschnitt ziehen.
  • Szenarien von Durchsuchersystemen
  • Die folgenden Szenarien zeigen, wie das dynamische Durchsuchersystem in der Praxis mit Hilfe eines Programmes verwendet werden kann, welches auf dem bekannten Computerwissenschaftsproblem mit der Bezeichnung "Türme von Hanoi" basiert.
  • Figur 6 zeigt einen Durchsucher, der einen einzigen Fensterabschnitt enthält, wie er nach dem Öffnen des Türme von Hanoi'-Programmierprojekts dargestellt werden könnte. Der Betrachter stellt die Hierarchie der Komponenten im Projekt dar, wobei jede einzelne Komponente von einem Icon und dessen Namen repräsentiert wird. Manche Teile der Hierarchie sind zusammengefaltet, um nur jene Komponenten darzustellen, welche momentan von Interesse sind. Der Durchsucher wurde mit Hilfe der Prozedur I und einer Referenz auf die Projektkomponente als Eingang erzeugt. Prozedur I ruft Prozedur C auf, um den Eingang des Fensterabschnittes auf die Projektkomponente einzustellen. Prozedur C wiederum ruft Prozedur B auf, um das Eigentum des Fensterabschnitts einzustellen. Da die Referenz auf das Projekt kein Eigentum festgelegt hat, wurde das Standardeigentum Members' (Elemente) (eine Baurndatenstruktur) verwendet. Schließlich ruft Prozedur B die Prozedur A auf, um den Betrachter des Fensterabschnitts einzustellen. Die Eigentümerbetrachterliste Members' enthält zwei Betrachter, nämlich Tree und Outline. Daher wurde das Betrachtermenü mit Einträgen für jeden einzelnen Betrachter erstellt, und der erste Betrachter in der Liste (Outline) wurde dargestellt.
  • In Figur 7 wird das Betrachterrnenü geöffnet, welches anzeigt, daß das Member'-Eigentum von zwei Betrachtern dargestellt werden kann, nämlich von Tree und Outline. Durch die Auswahl des Menüpunktes Tree wird die Prozedur A aufgerufen, wodurch der Outline-Betrachter durch den Tree- Betrachter ersetzt wird, und das Ergebnis wird in Figur 8 dargestellt.
  • In Figur 9 wird das Eigentümer-Popupmenü geöffnet, welches die darstellbaren Eigentümer der Projektkomponente anzeigt, die durch die Prozedur C erhalten wurden. Figur 10 zeigt das Ergebnis nach der Auswahl des Punktes Beschreibung im Popup-Menü. Dadurch wird Prozedur B aufgerufen, um das Eigentum Beschreibung' der Projektkomponente anzuzeigen. Es steht nur ein Betrachter für das Eigentum Beschreibung' zur Verfügung, so daß das Betrachter-Menü nicht benötigt wird.
  • Angenommen, der Anwender hat das Eigentum auf das Members'-Eigentum zurückgestellt, was wieder zu Figur 6 führt.
  • Figur 11 zeigt das Ergebnis, nachdem der Anwender den Fensterabschnitt mit Hilfe der vertikalen Fensterabschnittsteilkontrolle in zwei Fensterabschnitte unterteilt hat, was mit Prozedur H durchgeführt wird. Der Eingang des rechten Fensterabschnittes wird mit dem Eingang des linken Fensterabschnittes verbunden, wie dies graphisch durch den Pfeil in Figur 12 dargestellt wird. Weil es sich bei dem Ausgang des linken Fensterabschnitts um eine Nullreferenz handelt, ist der Eingang des neuen Fensterabschnitts ebenfalls eine Nullreferenz, und dies führt gemäß Prozedur C zu einem leeren Fensterabschnitt.
  • Figur 13 zeigt die Ergebnisse, nachdem der Anwender das Icon auswählt, welches die Klassenkomponenten im linken Betrachter darstellt. Dadurch erzeugt der linke Betrachter einen neuen Ausgang, eine Referenz zur Klassenkomponente. Prozedur D wird aufgerufen, um den neuen Ausgang zu verwalten, und sie ruft Prozedur C auf, um den Eingang des rechten Fensterabschnittes auf die Referenz zu den Klassen einzustellen. Da die Referenz kein Eigentum festlegt, wird Prozedur B mit Hilfe des standardmäßigen Elementeeigentums (Members) der Klassen aufgerufen. Das Elementeeigentum besitzt zwei Betrachter, nämlich Outline und Tree, so daß Prozedur B ein Betrachtermenü konstruiert und Prozedur A am ersten Betrachter, dem Outline-Betrachter, aufruft.
  • Figur 14 zeigt die Ergebnisse, nachdem der Anwender das Icon ausgewählt hat, welches die TPicture-Komponente im linken Betrachter repräsentiert. Dies verändert den Ausgang des linken Betrachters in eine Referenz zur TPicture- Komponente. Die Prozedur D wird wiederum aufgerufen, und sie ruft die Prozedur C auf, um den Eingang des rechten Fensterabschnitts auf die Referenz auf TPicture einzustellen. Wiederum legt die Referenz kein Eigentum fest, so daß die Prozedur C die Prozedur B mit Hilfe des Standardeigentums von Tpicture aufruft, welches die Bezeichnung Schnittstelle trägt. Es gibt nur einen Betrachter für dieses Eigentum, so daß kein Betrachtermenü erzeugt wird und der Betrachter mit Hilfe der Prozedur A dargestellt wird.
  • Figur 15 zeigt das Ergebnis, nachdem der Anwender auf die Zoom-Kontrolle des rechten Fensterabschnitts geklickt hat. Der Fensterabschnitt füllt nun den gesamten Durchsucher aus. Durch das Anklicken der Zoom-Kontrolle kehrt die Anzeige wieder zu jener in Figur 14 dargestellten Anzeige zurück.
  • Figur 16 zeigt das Ergebnis, nachdem der Anwender den rechten Fensterabschnitt mit dem horizontalen Fensterabschnittsteiler geteilt hat. Figur 17 zeigt die Fensterabschnittsverbindungen. Der Eingang des Durchsuchers ist verbunden mit dem Eingang des linken Fensterabschnitts. Der Ausgang des linken Fensterabschnitts ist verbunden mit dem Eingang des oberen rechten Fensterabschnitts. Der Ausgang des oberen rechten Fensterabschnitts ist verbunden mit dem Eingang des unteren rechten Fensterabschnitts. Da es sich bei dem Ausgang des oberen rechten Fensterabschnitts um eine Nullreferenz handelt, ist der untere rechte Fensterabschnitt leer.
  • Figur 18 zeigt das Ergebnis, nachdem die Zeichnen- Komponente im oberen rechten Fensterabschnitt ausgewählt wurde. Dies führt zur Erzeugung eines neuen Ausgangs im oberen rechten Betrachter, welcher von der Prozedur D verwaltet wird. Dies erzeugt einen neuen Eingang für den unteren rechten Fensterabschnitt, der von der Prozedur C verwaltet wird. Weil der Eingang kein Eigentum bezeichnet, wird das standardmäßige Eigentum der Zeichnen-Komponente, das Implementationseigentum, im unteren rechten Fensterabschnitt dargestellt.
  • Figur 19 zeigt das Ergebnis nach der Auswahl der Fehlersuchkomponente im oberen rechten Fensterabschnitt, was zur Erstellung eines neuen Ausgangs führt, welcher von der Prozedur D verwaltet wird.
  • Figur 20 zeigt die Verwendung der Verbindungskontrollen zur Verbindung des Ausgangs des linken Fensterabschnittes mit dem Eingang beider rechter Fensterabschnitte. Nun empfangen beide rechten Fensterabschnitte denselben Eingang, in diesem Fall eine Referenz auf die TPicture- Komponente.
  • Figur 21 zeigt das geöffnete Eigentümermenü des unteren rechten Fensterabschnittes. Figur 22 zeigt das Ergebnis, nachdem der Anwender das Beschreibungseigentum aus dem Menü ausgewählt hat. Beide rechten Fensterabschnitte besitzen immer noch denselben Eingang, nämlich eine Referenz auf TPicture. Weil jedoch ein unterschiedliches Eigentum im unteren rechten Fensterabschnitt ausgewählt wurde, stellt jeder Fensterabschnitt ein unterschiedliches Eigentum von TPicture dar.
  • Figur 23 zeigt das Ergebnis, nachdem der Anwender das Icon der TDisk-Komponente im linken Fensterabschnitt ausgewählt hat. Dadurch erzeugt der linke Betrachter einen neuen Ausgang, nämlich eine Referenz auf TDisk, und die Prozedur D wird aufgerufen, wodurch die Referenz auf TDisk zum Eingang für beide Fensterabschnitte auf der rechten Seite wird. Der obere rechte Fensterabschnitt zeigt das Schnittstelleneigentum von TDisk an, und der untere rechte Fensterabschnitt zeigt das Beschreibungseigentum von TDisk an.
  • Figur 24 zeigt das Ergebnis, nachdem der Anwender das Icon der Klassenkomponente im linken Fensterabschnitt ausgewählt hat. Dadurch erzeugt der linke Betrachter einen neuen Ausgang, nämlich eine Referenz zu Klassen, und diese Referenz wird als Eingang in beide Fensterabschnitte auf der rechten Seite zugeführt. Weil die Referenz kein Eigentum festlegt, verwendet der obere rechte Fensterabschnitt das Standardeigentum seines Eingangs im Falle des Elementeeigentums. Der untere rechte Fensterabschnitt stellt das Beschreibungseigentum dar, weil er mit diesem Eigentum verriegelt ist.

Claims (12)

1. Ein Verfahren zum dynamischen Durchblättern eines Computerprogramms zur Anzeige von Programminformation auf einer Anzeigevorrichtung (14), wobei die Programminformation (1200-1260) in einer Anzahl von Fensterabschnitten dargestellt wird, das Verfahren enthält die Schritte:
(a) Modellierung eines Computerprogramms als eine Sammlung von Komponenten (1203), jede Komponente besitzt Eigentumsinformation, die sich auf die Komponente und auf eine Referenz auf eine andere Komponente der Sammlung von Komponenten beziehen (1230);
(b) Speichern der Komponenten, der Eigentumsinformationen und der Referenz in einem Speicher (22, 23, 27);
(c) Erzeugen eines ersten Sichtfensterabschnitts, der einen Eingang zum Empfang einer Referenz auf eine betrachtete Komponente enthält, Anzeigen von Eigentumsinformation der betrachteten Komponente auf der Anzeigevorrichtung, wobei besagter erster Sichtfensterabschnitt einen Ausgang zur Erzeugung einer Referenz auf eine andere Komponente enthält (1220);
(d) Anwenden der Referenz der ersten Komponente auf den ersten Sichtfensterabschnitt zum Zugriff auf gespeicherte Eigentumsinformation, die durch einen zweiten Sichtfensterabschnitt darstellbar ist, und auf die gespeicherte Referenz auf die erste Komponente, und Veranlassen des ersten Sichtfensterabschnitts zur Anzeige von Eigentumsinformation von der ersten Komponente (1203); und
(e) Beantwortung einer Auswahl der angezeigten Eigentumsinformation zur Anwendung der gespeicherten Referenz auf den Ausgang des ersten Sichtfensterabschnitts (1220), und Verbinden des Ausgangs des ersten Sichtfensterabschnitts mit dem Eingang von einem oder mehreren weiteren Sichtfensterabschnitten, wobei auf der Anzeigevorrichtung Eigentumsinformation der durch die Referenz angegebenen Sammlung von Komponenten in dem einen weiteren Sichtfensterabschnitt oder in den mehreren weiteren Sichtfensterabschnitten angezeigt werden.
2. Das Verfahren nach Anspruch 1, enthaltend die Schritte:
(f) Erzeugen eines zweiten Sichtfensterabschnitts, das einen Eingang zum Empfang einer Referenz auf eine betrachtete Komponente aufweist, Mittel zur Anzeige auf der Anzeigevorrichtung von Eigentumsinformation der betrachteten Komponente und ein Ausgang zur Erzeugung einer Referenz auf eine Komponente (1230);
(g) Anwenden der Referenz der Komponente auf den Ausgang des ersten Sichtfensterabschnitts zum Eingang des zweiten Sichtfensterabschnitts für einen Zugriff auf gespeicherte Eigentumsinformation und eine gespeicherte Referenz zu einer zweiten Komponente und Veranlassen des zweiten Sichtfensterabschnitts zur Anzeige von Eigentumsinformation von der zweiten Komponente (1230-1252).
3. Das Verfahren nach Anspruch 2, worin der erste Sichtfensterabschnitt und der zweite Sichtfensterabschnitt in ihrer Größe dynamisch veränderbar sind (1242, 1243, 1250, 1252, 1260).
4. Das Verfahren nach Anspruch 1, worin die Sammlung von Komponenten eine variable Komponente enthält, die eine Programm-Variable darstellt und die Eigentumsinformation für die variable Komponente Definitionsinformation zur Definition der Programm-Variablen aufweist, und worin Schritt (d) den Schritt enthält:
(d1) Anzeige der Definitionsinformation von der ersten Komponente (1230).
5. Das Verfahren nach Anspruch 1, worin die Eigentumsinformation für die erste Komponente beschreibende Information enthält zur Beschreibung der erste Komponente und worin Schritt (d) den Schritt enthält:
(d2) Anzeige der beschreibenden Information von der ersten Komponente (1260).
6. Das Verfahren nach Anspruch 1, worin die Eigentumsinformation für die erste Komponente Information zur Identifizierung anderer Komponenten der Sammlung von Komponenten enthält, die durch die erste Komponente bezeichnet werden, und worin Schritt (d) den Schritt enthält:
(d3) Identifizierung anderer Komponenten der Sammlung von Komponenten, die durch die erste Komponente bezeichnet werden (1202-1260, Figur 8).
7. Ein System mit mehreren Sichtfensterabschnitten zum dynamischen Durchblättern eines Computerprogramms zur Anzeige von Programminformation auf einer Anzeigevorrichtung (14) als Reaktion auf Anzeigekommandos von einem Benutzer, enthaltend:
(a) von einem Benutzer gesteuerte Mittel zur Modellierung eines Computerprogramms als eine Sammlung von Komponenten (1203), jede Komponente besitzt Eigentumsinformation, die sich auf die Komponente und auf eine Referenz auf eine andere Komponente der Sammlung von Komponenten beziehen (1230);
(b) von einem Benutzer gesteuerte Mittel zum Speichern der Komponenten, der Eigentumsinformationen und der Referenz in einem Speicher (22, 23, 27);
(c) Mittel, die auf eines der Benutzerkommandos ansprechen, zum Erzeugen eines ersten Sichtfensterabschnitts, der einen Eingang zum Empfang einer Referenz auf eine betrachtete Komponente enthält, Anzeigen von Eigentumsinformation der betrachteten Komponente auf der Anzeigevorrichtung, wobei besagter erster Sichtfensterabschnitt einen Ausgang zur Erzeugung einer Referenz auf eine andere Komponente enthält (1220);
(d) erste Mittel, die auf ein anderes der Benutzerkommandos ansprechen, zum Anwenden der Referenz der ersten Komponente auf den ersten Sichtfensterabschnitt zum Zugriff auf gespeicherte Eigentumsinformation, die durch einen zweiten Sichtfensterabschnitt darstellbar ist, und auf die gespeicherte Referenz auf die erste Komponente, und Veranlassen des ersten Sichtfensterabschnitts zur Anzeige von Eigentumsinformation von der ersten Komponente (1203); und
(e) zweite Mittel, die auf eine Auswahl von angezeigter Eigentumsinformation ansprechen, zur Anwendung der gespeicherten Referenz auf den Ausgang des ersten Sichtfensterabschnitts (1220), und Verbinden des Ausgangs des ersten Sichtfensterabschnitts mit dem Eingang von einem oder mehreren weiteren Sichtfensterabschnitten, wobei auf der Anzeigevorrichtung Eigentumsinformation der durch die Referenz angegebenen Sammlung von Komponenten in dem einen weiteren Sichtfensterabschnitt oder in den mehreren weiteren Sichtfensterabschnitten angezeigt werden.
8. Das System nach Anspruch 7, enthaltend:
(f) Mittel, die auf eines der Anzeigekommandos ansprechen, zum Erzeugen eines zweiten Sichtfensterabschnitts, das einen Eingang zum Empfang einer Referenz auf eine betrachtete Komponente aufweist, Mittel zur Anzeige auf der Anzeigevorrichtung von Eigentumsinformation der betrachteten Komponente und ein Ausgang zur Erzeugung einer Referenz auf eine Komponente (1230);
(g) Mittel, die auf ein anderes der Benutzerkommandos ansprechen, zum Anwenden der Referenz der Komponente auf den Ausgang des ersten Sichtfensterabschnitts zum Eingang des zweiten Sichtfensterabschnitts für einen Zugriff auf gespeicherte Eigentumsinformation und eine gespeicherte Referenz zu einer zweiten Komponente und Veranlassen des zweiten Sichtfensterabschnitts zur Anzeige von Eigentumsinformation von der zweiten Komponente (1230-1252).
9. Das System nach Anspruch 8, worin der erste Sichtfensterabschnitt und der zweite Sichtfensterabschnitt in ihrer Größe dynamisch veränderbar sind (1242, 1243, 1250, 1252, 1260).
10. Das System nach Anspruch 7, worin die Sammlung von Komponenten eine variable Komponente enthält, die eine Programm-Variable darstellt und die Eigentumsinformation für die variable Komponente Definitionsinformation zur Definition der Programm-Variablen aufweist, und worin die zweiten Anwendungsmittel Mittel enthalten zur Anzeige der Definitionsinformation von der ersten Komponente (1230).
11. Das System nach Anspruch 7, worin die Eigentumsinformation für die erste Komponente beschreibende Information enthält zur Beschreibung der ersten Komponente und worin die zweiten Anwendungsmittel Mittel enthalten zur Anzeige der beschreibenden Information von der ersten Komponente (1260).
12. Das System nach Anspruch 7, worin die Eigentumsinformation für die erste Komponente Information zur Identifizierung anderer Komponenten der Sammlung von Komponenten enthält, die durch die erste Komponente bezeichnet werden, und worin die zweiten Anwendungsmittel Mittel enthalten zur Identifizierung anderer Komponenten der Sammlung von Komponenten, die durch die erste Komponente bezeichnet werden (1202-1260, Figur 8).
DE69400873T 1993-06-28 1994-01-03 Dynamisches schnellauswertungssystem Expired - Fee Related DE69400873T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US8533993A 1993-06-28 1993-06-28
PCT/US1994/000080 WO1995000902A1 (en) 1993-06-28 1994-01-03 Dynamic browser system

Publications (2)

Publication Number Publication Date
DE69400873D1 DE69400873D1 (de) 1996-12-12
DE69400873T2 true DE69400873T2 (de) 1997-05-22

Family

ID=22190944

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69400873T Expired - Fee Related DE69400873T2 (de) 1993-06-28 1994-01-03 Dynamisches schnellauswertungssystem

Country Status (7)

Country Link
EP (1) EP0692112B1 (de)
JP (1) JPH08512153A (de)
CN (1) CN1105508A (de)
AU (1) AU6019494A (de)
CA (1) CA2144878A1 (de)
DE (1) DE69400873T2 (de)
WO (1) WO1995000902A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5854932A (en) * 1995-08-17 1998-12-29 Microsoft Corporation Compiler and method for avoiding unnecessary recompilation
US6021418A (en) * 1997-02-18 2000-02-01 International Business Machines Corporation Apparatus and method for displaying control-objects
AUPP949599A0 (en) * 1999-03-30 1999-04-22 Griffith University Visual architecture software language
DE10032421C2 (de) * 2000-07-04 2002-11-21 Joerg-Ulrich Woelfel Datenverarbeitungs-Werkzeug
DE10140124A1 (de) * 2001-08-16 2003-03-06 Daimler Chrysler Ag Verfahren zur Darstellung der Architektur eines Softwaresystems
US7640584B1 (en) * 2005-06-24 2009-12-29 Rockwell Collins, Inc. System and method for enhancing computer security

Also Published As

Publication number Publication date
JPH08512153A (ja) 1996-12-17
EP0692112A1 (de) 1996-01-17
CA2144878A1 (en) 1995-01-05
AU6019494A (en) 1995-01-17
DE69400873D1 (de) 1996-12-12
EP0692112B1 (de) 1996-11-06
WO1995000902A1 (en) 1995-01-05
CN1105508A (zh) 1995-07-19

Similar Documents

Publication Publication Date Title
DE69404439T2 (de) Programmodellierungssystem.
DE69423158T2 (de) Verfahren und Vorrichtung zur Konfiguration von Rechnerprogrammen mit Hilfe verfügbarer Unterprogramme
DE69600794T2 (de) Graphische entwicklungs- und verwaltungsumgebung für anwendungsprogramme
DE69303289T2 (de) Steuersystem für anzeigemenüzustand
DE69503052T2 (de) Verbessertes objektorientiertes betriebssystem zum filtrieren von datenobjekten in einem fenster
DE69522684T2 (de) Statusanzeiger einer graphischen benutzerschnittstelle
DE69432503T2 (de) Informationsarchivierungssystem mit objektabhängiger Funktionalität
DE69518123T2 (de) Visualisierung von objektorientierter Software
DE60001916T2 (de) Plattformunabhängige speicherabbild analysearchitektur zur programmfehlerbeseitigung
DE69129328T2 (de) Ikonobjektschnittstellesystem und -verfahren
DE69021659T2 (de) Verfahren und Vorrichtung zur reihenweisen Parallelprogrammfehlersuche.
DE69410753T2 (de) Vorrichtung und Verfahren zur Analyse eines Verarbeitungsystems
DE69310202T2 (de) Internationales datenverarbeitungssystem
DE69701623T2 (de) Ein globales registersystem und verfahren basiert auf objektorientierter programmierung
DE69311359T2 (de) Befehlssystem
DE69031758T2 (de) Verfahren zur Organisation von und zum Zugriff auf Produkt beschreibenden Daten in Zusammenhang mit einem technischen Prozess
DE69308293T2 (de) Globales prozesssteuerungsinformationssystem und verfahren
DE69402523T2 (de) Objektorientiertes systembestimmungssystem
DE69310187T2 (de) Objektorientiertes fachwerksystem
DE69310934T2 (de) Ballonhilfssystem.
DE69400204T2 (de) Ladesystem
DE69403664T2 (de) Graphisches editorfachwerksystem
DE69503065T2 (de) Objektorientierte vorrichtung für konfigurationsverlaufsverwaltung
DE19960050A1 (de) Grafische Benutzerschnittstelle zur Entwicklung von Anwendungsbeispielen unter Verwendung einer Testobjektbibliothek
DE69635337T2 (de) Erweiterbares und austauschbares system von netzwerkkomponenten

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: OBJECT TECHNOLOGY LICENSING CORP., CUPERTINO, CALI

8339 Ceased/non-payment of the annual fee