VU 5
DI Dr. Bernhard K. Aichernig
Institut f¨ur Softwaretechnologie (IST) TU Graz
Sommersemester 2012
Ubersicht der Vorlesung ¨
1
Modellbasierte Spezifikationen
Beispiel: Alarmsystem (Wiederholung) Beispiel: Explosives Store Controller Beispiele aus der JML-Modellbibliothek
2
Spezifikationsstile in JML
DI Dr. Bernhard K. Aichernig Qualit¨atssicherung in der Softwareentwicklung
Alarmsystem (Wiederholung)
siehe slides03.pdf
Demonstriert Modellierung mit Relationen und Hilfsfunktionen.
Explosives Store Controller
siehe auch Dateien:
StoreInterface.java, Item.java, Point.java
Demonstriert Modellierung mit Mengen und Hilfsfunktionen.
DI Dr. Bernhard K. Aichernig Qualit¨atssicherung in der Softwareentwicklung
Anforderungen: Dom¨ ane
Die zu modellierende Komponente ist Teil einer Steuerung f¨ ur einen Roboter, welcher Sprengstoff und Z¨ under in einem Lager positioniert.
Das Lager ist ein rechteckiges Geb¨ aude. Positionen im Geb¨ aude werden durch (kartesische) Koordinaten definiert, wobei der Nullpunkt als linke untere Ecke des Geb¨ audes definiert wird. Die Dimensionen des Lagers werden durch maximale x- bzw y-Koordinaten repr¨ asentiert.
Objekte im Lager sind rechteckige Pakete, ausgerichtet nach
den W¨ anden des Lagers. Jedes Objekt hat Dimensionen in x-
und y-Richtung. Die Position eines Objekts wird durch die
Koordinaten seiner linken unteren Ecke repr¨ asentiert.
Anforderungen: Sicherheit
Alle (zugeordneten) Objekte m¨ ussen in das Lager passen.
Objekte d¨ urfen sich nicht ¨ uberlappen.
DI Dr. Bernhard K. Aichernig Qualit¨atssicherung in der Softwareentwicklung
Anforderungen: Funktionalit¨ at
Die Roboter muss folgende Funktionalit¨ at zur Verf¨ ugung stellen:
Gib die Anzahl der Objekte im Lager aus.
Empfehle eine Position, wo ein Objekt untergebracht werden kann.
Aktualisiere das Lager um aufzuzeichnen, dass ein Objekt an eine bestimmte Stelle platziert wurde.
Aktualisiere das Lager um aufzuzeichnen, dass alle Objekte in
einer Menge von Positionen entfernt wurden.
M¨ ogliche Klassen und Methoden
Interfaces, Klassen Methoden StoreInterface numItems
Item suggestPosition
Point place
remove (als ¨ Ubung)
DI Dr. Bernhard K. Aichernig Qualit¨atssicherung in der Softwareentwicklung
Beispiele aus der JML-Modellbibiliothek
IntHeap
package org.jmlspecs.samples.jmlrefmanSet
package org.jmlspecs.samples.setsBoundedStack
org.jmlspecs.samples.stacksSpezifikationsstile in JML
siehe Kapitel 9 im JML Reference Manual Heavyweight: wenn Stichw¨ orter behavior, normal behavior, or exceptional behavior Lightweight: keines dieser Stichw¨ orter
Lightweight kann als syntaktische Abk¨ urzung von Heavyweight verstanden werden.
DI Dr. Bernhard K. Aichernig Qualit¨atssicherung in der Softwareentwicklung
Heavyweight: Behavior Specification Case
allgemeinste Form: andere Formen k¨ onnen darauf reduziert werden flat
nested mit Klammern {|...|}
Lightweight kann als syntaktische Abk¨ urzung von Heavyweight
verstanden werden.
Lightweight as Heavyweight
public abstract class Heavyweight { protected boolean P, Q, R;
protected int X;
/*@ protected behavior
@ requires P;
@ diverges false;
@ assignable X;
@ when \not_specified;
@ working_space \not_specified;
@ duration \not_specified;
@ ensures Q;
@ signals_only Exception;
@ signals (Exception) R;
@*/
protected abstract int m() throws Exception;
DI Dr. Bernhard K. Aichernig Qualit¨atssicherung in der Softwareentwicklung