StartseiteSitemapDownloadsHilfeImpressum Chat


Startseite

Einführung

Was versteht man unter Spezifikation?

Eine Spezifikation ist eine vollständige, detailierte und unzweideutige Problembeschreibung. [INFO2002]
Die Spezifikation ist mehr oder weniger eine natürlichsprachliche Implementation. Das heißt, das, was Sie spezifizieren, wird im Idealfalle eins zu eins in Programm−Code übertragen (implementiert).
Der Entwurf wird in der Spezifikationsphase genauer definiert. Deshalb nennt man die Spezifikation auch den verfeinerten Entwurf. Dabei entsteht ein Dokument, welches als Vorgabe für den Programmierer dient. Beispielsweise stellt eine spezifizierte Funktion in der Regel eine (kleine) Programmieraufgabe für den Programmierer dar.
/* ======================================
 * Beispiel einer spezifizierten Funktion
 * ======================================
 *
 * Die Fakultätsfunktion n! aus der Stochastik.
 * Im Falle (-1 < n < 16) soll n! zurückgegeben werden,
 * ansonsten -1.
 */

long faculty(int n)
{
  /* ... hier fehlt noch die Implementation ... */
}
Während der Spezifikationsphase beschreibt man die Einzelheiten aller erforderlichen Methoden, wohingegen beim Entwurf die Methoden nebensächlich sind. Die aus dem Entwurf hervorgehenden Module, Klassen und Objekte erhalten in der Spezifikationsphase möglichst exakt beschriebene Methoden. Die Signaturen der Methoden werden mit den erforderlichen Übergabeparametern sowie Rückgabetypen vervollständigt. In den Beschreibungen muss die Bedeutung der jeweiligen Methoden sowie Parameter klar hervorgehen. Dabei muss das gewünschte Verhalten jeder Methode genau dokumentiert werden, sonst weiß nämlich der Programmierer während der Implementation nicht genau, worum es geht.
In der späteren Phase Verifikation wird normalerweise (hoffentlich!) jede Methode gemäß dem spezifizierten Verhalten auf Korrektheit getestet.

Was bedeutet Korrektheit?

Ein Programm funktioniert genau dann korrekt, wenn es sich gemäß der Spezifikation verhält, das heißt, jede einzelne Methode des Systems muss sich gemäß ihrer Spezifikation verhalten.
Umgekehrt ausgedrückt, ist ein Programm nicht korrekt, wenn es nicht das tut (Implementation), was man von ihm erwartet (Spezifikation).



Anmerkungen

Dokumentation

Zur Spezifikation gehört natürlich eine ausführliche und unzweideutige Beschreibung der Methoden, so dass jeder Programmierer sich ohne Umstände ans Werk machen kann. Spezifiziert man mit speziellen Spezifikationstools wie z. B. mit Together, dann kann idealerweise direkt mit javadoc dokumentiert werden (keine Implementation!). So kann man einer doppelten Dokumentation aus dem Wege gehen, was eine erhebliche Erleichterung für die Konsistenzerhaltung der (widerspruchsfreien) Beschreibungen bedeutet. Das Dokument, welches dabei entsteht, ist die vollständige und detailierte Beschreibung aller Klassen insbesondere deren Methoden. Dieses Dokument kann als Auftragsliste für die Programmierer betrachtet werden.
Zudem können die Headerinformationen wie zum Beispiel die Klassengerüste mit den dazugehörigen Methodenköpfen automatisch für die Implementation vorgeneriert werden. Der Programmierer kann sich dabei lästige Tipparbeit sparen. Praktisch gesehen, liefert die Spezifikation alle dokumentierten Headerinformationen des Softwareproduktes.

Plausibilität

In dieser Phase dürfen die Entwickler den Überblick über das gesamte entstehende Softwareprodukt trotz des Entwurfs nicht verlieren. Eine permanente Plausibilitätskontrolle während der Entwicklung ist erforderlich. Der kritische Blick auf den Entwurf kann dabei helfen, den Überblick nicht zu verlieren und gegebenenfalls Fehler im Entwurf aufzudecken.
In der Folgephase Implementation wird nämlich die Nachspezifikation teuer, möglicherweise muss bereits implementierter Programmcode vernichtet werden.

Mangelnder Entwurf

Wenn Sie bei der Spezifikation bemerken, dass Sie ein und dasselbe mehrfach spezifizieren müssen, so ist das ein Indiz für Redundanz, was aller Wahrscheinlichkeit nach eine Verbesserung des Entwurfs nach sich ziehen sollte (mangelhafte Abstraktion).

Vollständigkeit

Erkennt man als Entwickler in einer späteren Phase, dass zentrale Funktionen nicht spezifiziert sind, liegt eine unvollständige Spezifikation vor.



Info

stefan−baur.de / Spezifikation
  • besucht am Donnerstag, den 11. März 2010 um 20:40 Uhr
  • geändert am Sonntag, den 15. März 2009 von Stefan K. Baur

[INFO2002]  Heinz−Peter Gumm,  Manfred Sommer:  Einführung in die Informatik,  Oldenbourg Verlag,  5. Auflage,  2002,  ISBN 3−486−25635−1.







Startseite

Copyright © 2004-2009 Stefan K. Baur − Druck20042005200620072008200920102011