Von der Domäne unabhängige Datenstrukturen im Dibs-Projekt


1. Grundlegende Begriffe

Ein einführendes Beispiel soll die grundlegende Begriffe beim hierarchischen Design eines Systems erklären. Gleichzeitig sind diese Begriffe die Namen der verwendeten Klassen: Hierbei beschreibt ein Netz das Design einer einzelnen hierarchischen Ebene eines Systems. Die Bestandteile eines Netzes sind Komponenten, die über Bruecken miteinander verbunden sind. Komponenten können die Basiseinheiten sein, aus denen das System aufgebaut wird (sogenannte BasisKomponenten), oder komplexere Einheiten, deren Aufbau wiederum durch ein Netz charakterisiert wird (NetzKomponenten). Grundlage eines hierarchischen Designs ist es, daß Netze auch wieder in Netze (als NetzKomponente) eingebaut werden können. Jede NetzKomponente stellt also eine Instanz eines Netzes dar, für das eine Beschreibung (in Form eines Files) hinterlegt wurde. Nehmen wir das Design eines Volladdierers als Beispiel, so wird dieser durch ein Netz beschrieben, das zwei Halbaddierer als NetzKomponenten enthält sowie Oder-Gatter und einige Leitungen als BasisKomponenten. Die Halbaddierer sind also Instanzen eines Netzes Halbaddierer, während das Gatter und die Leitungen BasisKomponenten beim Design von Schaltkreisen darstellen.

Verbindungen zwischen den Komponenten einer Hierarchieebene werden durch Bruecken repräsentiert. Um Verbindungen von Komponenten eines Netzes mit einer übergeordneten Hierarchieebene zu ermöglichen, werden die Komponenten über Bruecken mit sogenannten EinAusgang- Komponenten verbunden. EinAusgang-Komponenten sind neben den schon vorgestellten Netzkomponenten und Basiskomponenten eine weitere Alternative für den Typ einer Komponente. (Sie sind vergleichbar mit Pads im Schaltkreisentwurf.) In der übergeordneten Hierarchieebene stehen äquivalent zum Pin einer BasisKomponente für jede EinAusgang- Komponente ein Punkt zur Verfügung, an dem die NetzKomponente mit einer anderen Komponente über eine Bruecke verbunden werden kann und muß. Das Verbinden von zwei EinAusgang-Komponenten miteinander, konzeptuell möglich, da es sich um zwei Komponenten handelt, wird vom Editor unterbunden, da dies zu Durchläufern führt, die beim Durchsuchen der hierarchischen Struktur Schwierigkeiten bereiten. Eine Einschränkung für den Systementwurf ergibt sich daraus nicht.

Die hierarchische Sicht auf ein System ist nicht immer gewünscht. In solchen Fällen kann man durch eine Expansion der hierarchischen Datenstruktur ein expandiertes oder manchmal auch flach genanntes System erzeugen, beschrieben durch ein ExpansionsNetz. Dessen Komponenten sind einzig BasisKomponenten, nicht aber NetzKomponenten oder EinAusgang-Komponenten. Ursprünglich im System vorhandene NetzKomponenten werden bei der Expansion durch das Netz ihrer Komponenten ersetzt. Bruecken zu solchen NetzKomponenten werden mit der jeweiligen Bruecke von der entsprechenden EinAusgang-Komponente zu einer anderen Komponente in dem Beschreibungsnetz zusammengefaßt. Durch diesen Schritt werden EinAusgang-Komponenten eliminiert. Damit die Information über die hierarchische Struktur des Systems bei der Expansion nicht verloren geht, wird dabei ein StrukturBaum aufgebaut. Eine Instanz eines Strukturbaumes entspricht einer Komponente im Netz. Handelt es sich um eine BasisKomponente wird ein StrukturBaumBlatt erzeugt, ist die Komponente dagegen vom Typ NetzKomponente wird ein StrukturBaumKnoten konstruiert. Beide Klassen sind von StrukturBaum abgeleitet. Die Anzahl der Söhne eines StrukturBaumKnotens entspricht der Anzahl der realen Komponenten (Netz- und BasisKomponenten), die die entsprechende NetzKomponente entält.

Für die Eingabe der Systeme wird der für CADIC entwickelte Editor benutzt. Intern werden die dabei entstehenden CADIC-Datenstrukturen in die oben genannten umgesetzt. Die konkrete Implementierung des hier Beschriebenen findet man in den Files.


2. Beispiel

Zur Veranschaulichung wählen wir ein Beispiel aus der Domäne der Tankbalastsysteme: ein System, das aus drei Tanks besteht, die mit jeweils einen Druckmesser ausgerüstet sind.

Wir wollen von der Geometrie abstrahieren, da eine Krümmung eines Rohres in einer schematischen Zeichnung nicht mit dem wirklichen Verlauf übereinstimmen muß. Da sich in jedem Tank ein Druckmeßgerät befindet, fassen wir einen Tank, sein Drucksensor und das zuführende Rohr zu einem Netz zusammen, von dem wir dann drei Instanzen bilden.

Komponenten: {k1,k2,k3,k4}
NetzKomponenten: {k1,k2,k3}
BasisKomponenten: {k4}
Brücken: {b1,b2,b3}
Komponenten: {k1,k2,k3,k4}
NetzKomponenten: {}
BasisKomponenten: {k1,k2,k3}
EinAusgang: {k4}
Brücken: {b1,b2,b3}
In einem expandierten Netz hätte das vorgestellte System die Form: 
Komponenten: {k1.1,k1.2,k1.3, k2.1,k2.2,k2.3k3.1,k3.2,k3.3,k4}
NetzKomponenten: {}
BasisKomponenten: {k1.1,k1.2,k1.3, k2.1,k2.2,k2.3, k3.1,k3.2,k3.3}
Brücken: {b1,b2,b3, b1.1,b1.2, b2.1,b2.2,b3.1,b3.2}
 
Dabei wurden bei der Expansion die Komponenten EinAusgang k1.4, k2.4, k3.4 entfernt und die Brückenpaare b1.3 und b1, b2.3 und b2, b3.3 und b3 zu den Brücken b1, b2 bzw. b3 zusammengefaßt. Außerdem wurde folgender StrukturBaum aufgebaut:
Überblick Grundlegende Begriffe


3. Die Files


4. Die Klasse Netz

4.1 Basisklasse(n)

4.2 Wichtige Member

4.3 Wichtige Memberfunktionen

4.4  Davon abgeleitete Klasse(n)

Überblick Grundlegende Begriffe


5. Die Klasse Bruecke

5.1 Basisklasse(n)

5.2 Wichtige Member

5.3 Wichtige Memberfunktionen

5.4 Davon abgeleitete Klasse(n)

Überblick Grundlegende Begriffe


6. Die Klasse Komponente

6.1 Basisklasse(n)

6.2 Wichtige Member

6.3 Wichtige Memberfunktionen

6.4 Davon abgeleitete Klasse(n)

Überblick Grundlegende Begriffe


7. Die Klasse BasisKomponente

7.1 Basisklasse(n)

7.2 Wichtige Member

7.3 Wichtige Memberfunktionen

7.4 Davon abgeleitete Klasse(n)

Überblick Grundlegende Begriffe


8. Die Klasse NetzKomponente

8.1 Basisklasse(n)

8.2 Wichtige Member

8.3 Wichtige Memberfunktionen

8.4 Davon abgeleitete Klasse(n)

Überblick Grundlegende Begriffe


9. Die Klasse EinAusgang

9.1 Basisklasse(n)

9.2 Wichtige Member

9.3 Wichtige Memberfunktionen

9.4 Davon abgeleitete Klasse(n)

Überblick Grundlegende Begriffe


10. Die Klasse ExpansionsNetz

10.1 Basisklasse(n)

10.2 Wichtige Member

10.3 Wichtige Memberfunktionen

10.4 Davon abgeleitete Klasse(n)

Überblick Grundlegende Begriffe


11. Die Klasse StrukturBaum

11.1 Basisklasse(n)

11.2 Wichtige Member

11.3 Wichtige Memberfunktionen

11.4 Davon abgeleitete Klasse(n)

Überblick Grundlegende Begriffe


12. Die Klasse StrukturBaumKnoten

12.1 Basisklasse(n)

12.2 Wichtige Member

12.3 Wichtige Memberfunktionen

12.4 Davon abgeleitete Klasse(n)

Überblick Grundlegende Begriffe


13. Die Klasse StrukturBaumBlatt

13.1 Basisklasse(n)

13.2 Wichtige Member

13.3 Wichtige Memberfunktionen

13.4 Davon abgeleitete Klasse(n)

Überblick Grundlegende Begriffe



Author: Thorsten Oelgart        Letzte Änderung: 10.12.1997