Grundlagen der Informatik I “Programmierung”
Grundlagen der Informatik I “Programmierung”
Grundlagen der Informatik I “Programmierung”
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Verständlichkeit <strong>der</strong> Module: Die Leistungen eines Moduls sollte von außen unabhängig von seinen<br />
Verwendungen verständlich sein (“Grob”-Spezifikation o<strong>der</strong> Kontrakt des Moduls). Die Beschreibung,<br />
wie die Leistungen des Moduls zustande kommen, sollen aus Beschreibung <strong>der</strong> Kooperation (“Fein”-<br />
Spezifikation o<strong>der</strong> Implementierung des Moduls) einiger weniger Module (Supplier) und <strong>der</strong>en Grobspezifikationen<br />
ersichtlich sein.<br />
Nur, wenn ein Modul auch unabhängig von seiner Umgebung verstanden werden kann, sind Wartungen<br />
und Erweiterungen eines Systems leicht durchzuführen.<br />
Auf diese Punkte werden wir im nächsten Kapitel beson<strong>der</strong>s eingehen. Die Grobspezifikation von BUCH<br />
wird einfach sein, da man mit Büchern nur wenig machen kann. Die Implementierung von TRANSAKTION<br />
und BIBLIOTHEK sollte so einfach werden, daß sie auf <strong>der</strong> Basis <strong>der</strong> Grobspezifikationen <strong>der</strong> Klassen<br />
ARRAY, LINKED LIST und BUCH voll verständlich ist.<br />
Stetigkeit <strong>der</strong> Module: Im Gegensatz zu “chaotischen” Systemen haben stetige Systeme die Eigenschaft,<br />
daß kleine Än<strong>der</strong>ungen <strong>der</strong> Ursachen auch nur kleine Än<strong>der</strong>ungen <strong>der</strong> Wirkung nach sich ziehen. Von<br />
einer Beschreibungsmethode sollte man verlangen, daß sie die Entwicklung stetiger Systeme unterstützt.<br />
Speziell sollen lokale Än<strong>der</strong>ungen in einem Modul nicht die Architektur des Systems ruinieren. An<strong>der</strong>s<br />
ausgedrückt, wird ein Fehler in einem Modul repariert, so sollen die Korrekturen auf diesen Modul<br />
beschränkt bleiben.<br />
Das bedeutet zum Beispiel, daß wir innerhalb <strong>der</strong> Klassen PERSON und BUCH tun können, was wir wollen,<br />
solange wir die Schnittstelle nicht än<strong>der</strong>n (eine Erweiterung <strong>der</strong> Schnittstelle unter Beibehaltung aller<br />
alten Verträge ist erlaubt).<br />
Modularer Schutz: Eine Beschreibungsmethode muß es ermöglichen, daß Ausnahmesituationen (Laufzeitfehler,<br />
fehlerhafte Eingaben, Speichermangel etc.), die bei <strong>der</strong> Durchführung eines Moduls auftreten, nur<br />
lokale Effekte haben und sich nicht etwa auf an<strong>der</strong>e Module fortpflanzen.<br />
Im Vergleich zu allen an<strong>der</strong>en Sprachen, die <strong>der</strong>zeit im industriellen Einsatz sind, ist Eiffel <strong>der</strong>zeit die einzige<br />
Sprache, welche diese Prinzipien massiv unterstützt. Sie gibt also einen geeigneten Rahmen um eine adäquate<br />
Modellierung <strong>der</strong> Realität zu erreichen. Damit ist <strong>der</strong> sinnvolle Einsatz jedoch noch lange nicht gewährleistet.<br />
Viele Eiffel-Programme werden noch im Stil herkömmlicher Programmiersprachen geschrieben und verstoßen<br />
gegen die Richtlinien eines objektorientierten Entwurfs.<br />
Welche Prinzipien sind nun zu beachten, wenn ein System methodisch korrekt entworfen werden soll? Auch<br />
hier schlägt [Meyer, 1988] fünf Kriterien vor, die eine geeignete Modularisierung gewährleisten sollen:<br />
Moduln müssen Klassen entsprechen: Die Klassenstruktur <strong>der</strong> Zerlegungseinheiten stellt sicher, daß<br />
das System in klar definierte und voneinan<strong>der</strong> abgegrenzte Einheiten zerlegt ist, die für sich verständlich<br />
sind, später in an<strong>der</strong>en Systemen kombiniert werden können und Schutz gegen Fehlfunktion gewähren.<br />
Minimale Kommunikation zwischen Moduln: Zwischen Modulen kann auf vielfache Weise kommuniziert<br />
werden. Module können einan<strong>der</strong> aufrufen (durch Typvereinbarung von Variablen), gemeinsame<br />
Datenstrukturen benutzen usw. Prinzipiell könnte jedes Modul jedes an<strong>der</strong>e verwenden. Stetigkeit aber<br />
erreicht man nur bei geringer gegenseitiger Verwendung.<br />
Schmale Schnittstellen: Wenn zwei Module kooperieren, so soll sich <strong>der</strong> Informationsaustausch (Parameter)<br />
auf die absolut notwendige Information (need to know) beschränken. Dies unterstützt Stetigkeit<br />
und modularen Schutz.<br />
Vollständige Beschreibung <strong>der</strong> Schnittstellen: Wenn zwei Moduln kooperieren, so muß diese Kooperation<br />
in diesen beiden vollständig beschrieben sein. Dies för<strong>der</strong>t Zerlegbarkeit und Kombinierbarkeit,<br />
Stetigkeit und Verständlichkeit, da keine unvorhersehbaren Effekte auftreten können.