22.08.2013 Aufrufe

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

MEHR ANZEIGEN
WENIGER ANZEIGEN

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.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!