Literaturhinweise
VDM Tutor
Fehlermeldungen des VDM-Compilers
- Abstrakte Syntax
- Die Sammlung aller Domain-Gleichungen eines Programms.
- Abstraktion
- Die Absonderung des Allgemeinen vom Einzelnen, die
Begriffsbildung; auch das Ignorieren von unwichtigen Details, stattdessen
Konzentration auf das Wesentliche.
- ADT
- Eine Klasse von Objekten, die vollständig und ausschließlich durch
die Operationen, die mit den Objekten vorgenommen werden können, definiert
ist.
- ADT-Operation
- Gelegentlich verwendet, zur Verdeutlichung der Tatsache,
daß die Operationen den ADT zugeordnet sind und diese charakterisieren. Meist
finden Sie nur den Begriff ,,Operation``.
- Applikation
- Anwendungsprogramm, Anwendungs-System.
- Argument-Domain
- Argumentmenge einer Map (zugeordnet ist der Co-Domain).
- Argumentwert
- Im Zusammenhang mit einer Map der Teil eines Paares aus
dem Argument-Domain; ihm ist der Map-Wert zugeordnet.
- Attribut
- Allgemein eine Eigenschaft eines Objekts -- die zweiwertigen
Eigenschaften werden allerdings Prädikate genannt.
- Bag
- Ein abstrakter Datentyp: ein Set, in dem jedes Element mehrfach
vorkommen darf.
- Binden
- Das Zusammenfügen einzelner Objekt-Module zu einem
vollständigen, ablauffähigen Programm.
- C-String
- Eine Zeichenkette wird in C üblicherweise als
unbegrenztes Zeichen-Array dargestellt, an dessen Ende das Null-Zeichen steht,
welches kein gültiges Zeichen repräsentiert. Die Länge des String ist nicht
explizit gespeichert -- sie kann durch Auszählen der Zeichen bis zum
Null-Zeichen ermittelt werden.
- Call By Reference
- Eine Funktion kann den Inhalt eines ihrer Argumente
dauerhaft ändern, da ihr die Adresse des Arguments übergeben wurde.
- Call By Value
- Einer Funktion wird nur der Wert eines Arguments
übergeben; die Änderung des Arguments durch die Funktion ist nicht möglich.
- Co-Domain
- Zielmenge einer Map (wird dem Argument-Domain zugeordnet).
- Codier-Phase
- In dieser Phase der Programmentwicklung erfolgt die
Umsetzung der Spezifikation, die in der Design-Phase entstanden ist, in die
gewünschte(n) Programmiersprachen.
- Datenabstraktion
- Abstraktion, bezogen auf die Daten eines Programms
und deren Manipulation: Absonderung der Eigenschaften, der ,,Bedeutung`` der
Daten von ihrer physikalischen Realisierung -- Beschreibung eines Objekts mit
den Operationen, die mit ihm durchgeführt werden können.
- Datenelemente
- Daten, aus denen ein strukturierter Datentyp
zusammengesetzt ist. Sie können wiederum strukturiert oder elementar sein.
- Datentyp-Invariante
- (auch ,,Bedingung für die Wohlgeformtheit``:)
Grenzt die sinnvollen Zustände von Objekten einer Klasse von den sinnlosen,
nach ihrer Syntax aber erlaubten Zuständen ab, ist also eine semantische
Bedingung.
- Design-Phase
- In dieser, auch ,,Detailentwurf`` genannten Phase werden
die Daten, Schnittstellen und Programm-Module genau spezifiziert und Testfälle
definiert. Hier setzt VDM an.
- Deskriptive Sprachen
- Sprachen wie Prolog basieren auf der Definition
des gewünschten Resultats einer Funktion ohne Angaben über den
Algorithmus zur Gewinnung dieses Resultats.
- Domain
- Ein anderer Ausdruck für ,,abstrakter Datentyp``, auch dessen
englischer Name im VDM-System.
- Domain-Gleichung
- Die syntaktische Beschreibung eines ADT, d.h. aus
welchen Datenelementen er sich mit welcher Struktur zusammensetzt. Mit ihrer
Hilfe lassen sich alle tatsächlichen Objekte erzeugen, zudem solche, die
unsinnig sind. Diese müssen über semantische Bedingungen ausgegrenzt werden.
- Elementarer Datentyp
- Unteilbarer (atomarer) Datentyp einer
Programmiersprache. In C sind dies nur die verschiedenen Zahlentypen
und das Zeichen.
- Elementary
- Einige Datentypen sind auch in VDM vordefiniert: das Zeichen
(,,Char``), verschiedene Zahlentypen und der logische Typ ,,Bool``.
- Elementtyp
- Der Datentyp eines Datenelementes in einem strukturierten
Datentyp.
- Enrichment
- Angabe einer benötigten Operation für einen ADT in der
DSL-Spezifikation. Der Begriff wird synonym mit ,,Operation`` verwendet.
- Funktional
- Funktion, deren Resultat eine Funktion ist. Als Argumente
hat es weitere Funktionen, aus denen die resultierende Funktion konstruiert
wird.
- Funktionale Sprachen
- Sprachen wie LISP basieren auf Funktionen und
Rekursion, freie Variablen gibt es nicht.
- Generischer Name
- Name, der in dieser Form noch nicht komplett ist; aus
ihm wird durch ein Suffix (oder Präfix) ein gültiger Name generiert.
- Implizites Löschen
- Bei Operationen, die ein strukturiertes Objekt so
ändern, daß Elemente entfernt werden, ist es manchmal wünschenswert, daß diese
Elemente dabei gleichzeitig gelöscht werden, da sie auch von anderen
strukturierten Objekten nicht mehr referenziert werden; die Operationen sollen
also diese Sub-Strukturen implizit löschen. Nähere Informationen finden Sie im
Abschnitt 5.1.
- Kombinator
- Operation, die aus einzelnen Objekten ein neues Objekt
ableitet.
- Konstruktor
- Operation, die ein neues Objekt eines Datentyps erzeugt und
dabei meist auch eine Initialisierung vornimmt.
- Korrektheitsbeweis
- Formaler oder informaler Beweis der Korrektheit
eines Programms. Ist die abstrakte Spezifikation als korrekt für die Lösung
des Problems bewiesen und jede Konkretisierung als äquivalent zur
vorhergehenden Abstraktion, ist auch die Implementation korrekt. Der
Programmtest ist dann unnötig. In der Praxis ist der vollständige Beweis nicht
möglich.
- Map
- Sie entspricht einer Funktion mit endlicher, variabler
Argumentmenge: jedem Argumentwert ist ein ,,Map-Wert`` aus der Zielmenge, dem
,,Co-Domain``, zugeordnet.
- Map-Wert
- Im Zusammenhang mit einer Map der Teil eines Paares aus dem
Co-Domain (analog zum Funktionswert bei Funktionen).
- META-IV
- ist die formale Sprache von VDM mit einer Kombination aus
funktionalen und prozeduralen Sprachelementen. Der Name ist ein Homonym zum
englischen ,,metaphor``. Eine Spezifikation mit META-IV kann recht
einfach in eine ,,echte`` prozedurale Sprache übersetzt werden.
- Modellorientierter Ansatz
- siehe Abschnitt 2.3
- Modularisierung
- Aufteilung eines komplexen Programms oder
Unterprogramms in eine Menge von einfacheren Unterprogrammen, deren
Zusammenspiel die gleiche Funktion hat.
- Namenserweiterung
- Dies betrifft die C-Funktionen, die die
Operationen der einzelnen VDM-Basistypen realisieren; sie müssen jeweils an
die spezielle ,,Konfigurierung`` des VDM-Basistyps angepaßt werden (für einen
Set von Integer-Werten werden andere Routinen benötigt als für einen Set von
Tuples), woraus sich viele ,,Versionen`` der gleichen Operation ergeben
können, die alle unterschiedliche Namen haben müssen. Daraus entsteht die
Forderung, daß alle von Ihnen definierten Domains einen eigenen Namen
haben müssen -- die Operationsnamen werden dann automatisch mit diesem
Domain-Namen ,,erweitert``, indem ihnen ein Unterstrich und der Domain-Name
angehängt wird. Ausnahmen sind einzelne Tree-, Union- und
Optional-Operationen, die komponentenbezogen sind; dann erfolgt die
Erweiterung mit dem Namen des Komponententyps (eventuell doch gefolgt vom
Domain-Namen) oder mit Teilen der Komponenten-Namen (bei Trees und Unions).
Näheres finden Sie jeweils bei der Beschreibung dieser Typen.
- nil
- ist ein spezieller Zustand eines Objekts und bedeutet ,,kein
gültiger Inhalt``.
- Non-Terminal
- Name für eine Symbolfolge einer Programmiersprache, die
noch weiter in Terminale zerlegbar ist und meist ein Konzept dieser Sprache
bezeichnet (z.B. Anweisung, Ausdruck, Bezeichner usw.)
- Objekt-Modul
- Bereits übersetztes Quellmodul, das aber allein meist
nicht ablauffähig ist, da Funktionen oder Variablen verwendet werden, die in
einem anderen Objekt-Modul definiert sind. Durch ,,Binden`` mehrerer
Objekt-Module kann ein lauffähiges Programm entstehen.
- Operation
- In diesem Zusammenhang meist eine elementare Funktion zur
Manipulation eines ADT und damit ein Charakteristikum dieses ADT.
- Operationale Abstraktion
- Im modellorientierten Ansatz die
Spezifikation der Operationen und Funktionen, die auf Objekte eines ADT
angewendet werden, unabhängig von ihrer Realisierung.
- Optional
- Es enthält entweder ein gültiges Objekt oder einen speziellen
Wert nil, der anzeigt, daß das Optional im Moment keinen Inhalt
hat.
- Post-Kondition (postcondition)
- Im modellorientierten Ansatz die
Bedingung, die nach einem erfolgreichen Aufruf einer Funktion erfüllt ist.
- Prä-Kondition (precondition)
- Im modellorientierten Ansatz die
Bedingung, die erfüllt sein muß, damit die Funktion aufgerufen werden darf.
- Prädikat
- Eigenschaft, die ein Objekt haben oder nicht haben kann -- im
Gegensatz zu Attributen, die mehrwertig sind. Auch die Bezeichnung für eine
Operation, die eine solche Eigenschaft überprüft.
- Programmentwicklung
- Sie wird in mehrere Phasen unterteilt; die
Hauptphasen sind Voruntersuchung, Analyse, Lösungskonzeption, Systementwurf,
Detailentwurf (Design), Codierung, Test und Installation. Darauf folgen
Programmpflege und Wartung in der Einsatzphase.
- Prototyp
- Die Deklaration einer Funktion ohne Definition ihres Rumpfes
ermöglicht die Typprüfung bei ihrem Aufruf in einem anderen Modul; sie besteht
aus Funktionsname, Parametertypen und Resultattyp.
- Prozedurale Sprachen
- Sprachen wie C basieren auf Anweisungen,
veränderbaren Variablen und (bedingten und unbedingten) Verzweigungen zur
Steuerung des Programmablaufes.
- Quellcode-Bibliothek
- Eine Modul-Bibliothek, die nicht aus
vorcompilierten Objekt-Modulen besteht, sondern aus Quellmodulen.
- Repräsentationale Abstraktion
- Im modellorientierten Ansatz die
Spezifikation von Klassen bzw. Objekten abstrakter Datentypen im Hinblick auf
ihre Eigenschaften, aber unabhängig von ihrer Repräsentation.
- Semantik
- ,,Bedeutung`` einer Sache, z.B. einer Funktion, d.h. ,,das,
was die Sache tut`` (im Gegensatz zur Syntax, ihrer formalen Beschreibung).
- Set
- Ein Set entspricht der mathematischen ,,Menge``, ist also durch
dieselben Eigenschaften und Operationen gekennzeichnet; sie ist eine endliche,
ungeordnete Sammlung von unterschiedlichen Objekten des gleichen Typs.
- Schrittweise Verfeinerung
- siehe ,,Modularisierung``.
- Speicherallokationsstrategie
- Die Methode, mit der der dynamisch
verfügbare Speicher verwaltet (angefordert und freigegeben) wird.
- String
- In der Informatik gebräuchlicher Begriff für ,,Zeichenkette``.
- Strukturierter Datentyp
- Eine strukturierte (geordnete, gegliederte)
Sammlung von Datenelementen, z.B. Tabelle von Zahlen, Verbund mit Adreßdaten
usw.
- Switch-Funktion
- Eine Funktion, die abhängig vom aktuellen Datentyp
eines Union-Objekts verschiedene Verarbeitungsfunktionen aufruft.
- Syntax
- Im Gegensatz zur Semantik die formale Struktur einer Sache ohne
inhaltliche Bedeutung.
- Terminal-Symbol
- Symbol (Zeichen oder Zeichenkette), die in einer
Programmiersprache eine feste Bedeutung hat und nicht umdefiniert werden
kann (Beispiele in C: if, switch, void usw.)
- Tree
- Ein Tree ist eine endliche, geordnete Sammlung verschiedenartiger
Objekte und entspricht damit dem struct in der Sprache C.
- Tuple
- Es entspricht einer eindimensionalen Tabelle (in der Sprache
C einem array): eine endliche, geordnete Sammlung gleichartiger
Objekte, die nicht alle verschieden sein müssen.
- Typgenerator
- Jeder strukturierte Datentyp, dessen Elementtypen frei
gewählt werden können, der also eine Klasse von Datentypen beschreibt, ist ein
Typgenerator -- er kann verschiedene Datentypen generieren.
- Union
- Sie enthält genau ein Objekt; zu verschiedenen
Zeitpunkten kann der Datentyp des Objekts allerdings unterschiedlich sein.
- VDM-Basistypen
- Einige grundlegende, mächtige Typgeneratoren, die von
VDM bereitgestellt werden: Set, Tuple, Tree, Map, Union, Optional.
- VDM-Bibliothek
- Die Quellcode-Bibliothek, die alle Funktionen für den
Umgang mit den VDM-Basistypen enthält.
- VDM-String
- Die in fast allen Applikationen benötigte Manipulation von
Strings ist in VDM mit einem ,,eigenen`` Datentyp möglich, der sich von den
üblichen C-Strings unterscheidet und daher in diesem Handbuch zur
Abgrenzung VDM-String genannt wird. Er ist als Tuple von Zeichen modelliert.
- Virtuelle Speicherverwaltung
- Das Betriebssystem ermöglicht den
Austausch von Speicherseiten zwischen Hauptspeicher und Festplatte (Swapping);
unbenutzte Seiten werden ausgelagert. Der Hauptspeicher wirkt dadurch fast
beliebig groß. Ab einer bestimmten Auslastung muß ständig ausgetauscht werden,
das System gerät in den ,,Thrashing``-Bereich, wo fast die gesamte Rechenzeit
vom Betriebssystem beansprucht wird.
- Wohlgeformtheit
- Ein Objekt einer Klasse ist wohlgeformt, wenn es einen
sinnvollen Zustand hat; ein sinnloser Zustand führt in der Regel zu einem
Programmfehler.
Literaturhinweise
VDM Tutor
Fehlermeldungen des VDM-Compilers
VDM Class Library