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.

Kapitel 4<br />

Systematische Entwicklung zuverlässiger<br />

Software<br />

In <strong>der</strong> bisherigen Auseinan<strong>der</strong>setzung mit dem Thema <strong>“Programmierung”</strong> haben wir uns vor allem auf die<br />

spezifischen Denkweisen <strong>der</strong> objektorientierten Programmierung und die zugehörigen Konstrukte <strong>der</strong> Programmiersprache<br />

Eiffel konzentriert. Sie sollten nun verstanden haben, welche Mittel Ihnen zur Strukturierung<br />

von Softwaresystemen zur Verfügung stehen – insbeson<strong>der</strong>e, wie man Daten und Dienstleistungen in<br />

Klassen zusammenfaßt, fertige Programmteile aktiviert, Wie<strong>der</strong>verwendbarkeit durch den Einsatz generischer<br />

Klassen steigert, ihre Eigenschaften in <strong>der</strong> Form von Verträgen (Zusicherungen) beschreibt, und die logischen<br />

Beziehungen zwischen Klassen durch Vererbung ausdrückt.<br />

Wir haben bisher aber nur wenig dazu gesagt, wie man diese Strukturierungskonzepte einsetzen kann, um<br />

gute Softwaresysteme systematisch zu entwerfen, und mit welchen Mitteln man vertraglich vereinbarte Dienstleistungen<br />

in einer Programmiersprache implementiert und dabei sicherstellt, daß diese Implementierung<br />

tatsächlich auch die versprochenen Eigenschaften besitzt.<br />

Diese Methoden <strong>der</strong> systematischen Entwicklung zuverlässiger Software sollen nun in diesem Kapitel besprochen<br />

werden. Wir werden zunächst kurz einige Methoden des objektorientierten Entwurfs – also Methoden<br />

<strong>der</strong> Strukturierung von Softwaresystem in Klassen, Features, Zusicherungen und Vererbungsbeziehungen –<br />

ansprechen und an unserem Leitbeispiel illustrieren. Anschließend werden wir unser Augenmerk auf die eher<br />

“konventionellen Programmierkonzepte” von Eiffel richten, die es uns erlauben, in Eiffel so zu rechnen wie in je<strong>der</strong><br />

an<strong>der</strong>en Programmiersprache auch. Dabei wird beson<strong>der</strong>s das Qualitätskriterium Zuverlässigkeit (partielle<br />

und totale Korrektheit und Robustheit) im Vor<strong>der</strong>grund stehen. Aus diesem Grunde werden wir zunächst über<br />

Verifikation (Korrektheitheitsbeweise) reden und die hierzu existierenden Formalismen vorstellen, bevor wir<br />

konkret auf Programmstrukturen wie Anweisungen, Fallunterscheidungen und Schleifen zu sprechen kommen,<br />

mit denen man den Anweisungsteil von Routinen verfeinern kann. Auf die Grundbausteine jeglicher Berechnung<br />

– die elementaren Ausdrücke <strong>der</strong> Sprache Eiffel – werden wir nur kurz eingehen, da sie konzeptionell<br />

von geringer Bedeutung sind: es muß nur geklärt werden, welche Ausdrücke und Funktionen in Eiffel vordefiniert<br />

sind und was ihre Syntax ist. Mit <strong>der</strong> Besprechung von Methoden <strong>der</strong> systematischen Implementierung<br />

korrekter Software werden wir dieses Kapitel (und das erste Semester) abschließen.<br />

4.1 Systematischer Entwurf von Softwaresystemen<br />

Bei <strong>der</strong> Besprechung <strong>der</strong> Strukturierungskonzepte im vorhergehenden Kapitel und insbeson<strong>der</strong>e durch die<br />

Diskussion <strong>der</strong> Modularisierungskriterien im Abschnitt 3.10 haben wir bereits einige Techniken angedeutet, wie<br />

man Konzepte objektorientierter Programmiersprachen einsetzen kann, um Softwaresysteme zu strukturieren<br />

bevor man sich an die eigentliche Implementierungsarbeit begibt. Wir wollen diese nun zusammenfassen und<br />

etwas ausführlicher erläutern.<br />

127

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!