Übungen zur Vorlesung Formale Methoden im Systementwurf UNIVERSITÄT POTSDAM Institut für Informatik WS 06/07 Prof. Dr. T. Margaria C. Winkler, C. Renner M. Bakera, W. Jansen, et.al. [email protected] Übung 11: Zusatzaufgaben (Theorie, Praxis) 29.01.2007 Abgabe: Bitte senden Sie Ihre Abgabe bis zum 16.02.2007, 08:00 Uhr (morgens) per E-Mail an die o.a. Adresse. Vermerken Sie immer alle Gruppenmitglieder auf den Abgaben. Einzelabgaben werden nicht gewertet. Jede Abgabe muss genau zwei oder drei Teilnehmern zugeordnet werden. Die Abgabe besteht aus einem Projekt in einer ZIP-Datei1 , das für den Übungszettel angelegt wird und die erstellten Modelle bzw. schriftlichen Lösungen der Aufgaben beinhaltet. Schriftliche Lösungen geben Sie bitte im PDF-Format (oder zumindest einem gängigen Grafikformat) ab. Benennen Sie diese ZIP-Datei bitte nach dem Schema Nachname1 Nachname2 Nachname3.zip mit den Nachnamen der Gruppenmitglieder. Lösen Sie Umlaute bitte in zwei Buchstaben auf. Bei den Aufgaben auf diesem Zettel handelt es sich um Zusatzaufgaben, mit denen Sie Ihre Note verbessern können, die Sie aber nicht bearbeiten müssen. Aufgabe 11.1. [Modellsynthese] (10 Zusatzpunkte) Aktivität Mediator startService obtCustomerID Eingabetyp Ausgabetyp None PurOrderReq PurOrderReq SearchString createOrderUCID buildTuple sendLineItem CustomerObject Order Tuple CustomerID Tuple LineItem closeOrderMed confirmLIOperation Moon searchCustomer SubmConfObj Order Order PurOrderCon SearchString CustomerObject createOrder addLineItem closeOrderMoon confRefLineItem CustomerID LineItem Order Timeout Order SubmConfObj TimeoutOut Order Beschreibung Maps Googol Corp. messages to the backend Receives a purchase order request message Obtains a customer search string from the req. message Gets the customer id out of the customer object Builds a tuple out of an order and the POR Gets a LineItem incl. orderID, articleID and quantity Closes an order on the mediator side Receives an order and sends a conf. The backend system Gets a customer object out of the backend database Creates an order Submits a line item to the backend database Closes an order on the backend side Sends a conf. or ref. of a prev. subm. LineItem Abbildung 1: Mediation Aktivitäten Ihre Firma Redundant Technologies Inc. hat einen großen Auftrag an Land gezogen, für den es sich anbietet, ein in die Jahre gekommenes, altes, aber funktionierendes System Moon wiederzuverwenden. Unglücklicherweise akzeptiert Moon nur Anfragen in einem veralteten Standard PIP3A4. Aktuelle Clients von Googol Corp. arbeiten jedoch mit einem dazu nicht kompatiblen neuartigen Standard CVC3N4. Nun kommt ihre Firma ins Spiel und soll eine Mediationsschicht zwischen den neuartigen Clients und dem alten System zur Verfügung stellen. Einer Ihrer Mitarbeiter hat die Idee, diese Mediationsschicht per Hand zu modellieren. Diese Lösung wäre ihrer Meinung nach jedoch nicht genügend flexibel, um auf Änderungen bzw. Anpassungen im alten System reagieren zu können. Also schlagen Sie einen alternativen Ansatz vor, der diese Mediationsschicht nicht explizit in einer Modellierung beschreibt, sondern nur temporal-logisch spezifiziert. Die eigentliche Mediationsschicht soll aus dieser Spezifikation und der Spezifikation der verschiendenen Dienste (Aktivitäten) mit ihren zugehörigen Ein- und Ausgabetypen, die in Abbildung 1 gegeben ist, automatisch synthetisiert werden. 1 Bitte verwenden Sie kein BZIP, RAR, GZ oder ähnliche Formate. Übung 11 Übungen zu FMiS Seite 2 1. Bilden Sie das Configuration Universe, das der Spezifikation der Aktionen aus Tabelle 1 zugrundeliegt und geben Sie eine graphische Repräsentation davon an. (2 Punkte) 2. Verwenden Sie den in der Vorlesung vorgestellten Algorithmus und stellen Sie für die Spezifikation φ = hstartServicei true < PurOrderCon einen zugehörigen Beweisbaum auf, der die synthetisierte Mediationsschicht enthält. φ < ψ ist hierbei eine verkürzende Schreibweise für F (φ ∧ F (ψ)). (7 Punkte) Hinweis: Gehen Sie bei Ihrem Beweisbaum von der Wurzel (N one, φ) aus. Das Verständnis der genauen Funktionsweise der einzelnen Aktivitäten ist zum Lösen dieser Aufgabe nicht notwendig2 . Wichtig ist nur, welche Aktivitäten sich bzgl. ihres Eingabe-Ausgabe-Verhaltens miteinander kombinieren lassen. 3. Geben Sie den synthetisierten Ablauf als Transitionssystem an. Aufgabe 11.2. [jMosel, Zweierkomplement] (1 Punkt) (10 Zusatzpunkte) Die jMosel-Syntax bietet mit dem Prädikat X<Y die Möglichkeit, zwei Bitvektoren als Binärzahlen zu interpretieren und diese bezüglich ihrer Größe zu vergleichen. Allerdings liegt diesem Vergleich stets die Interpretation der Vektoren als vorzeichenlose bzw. positive Zahlen zu Grunde. Eine Variante zur Darstellung vorzeichenbehafteter, ganzer Zahlen stellt das Zweierkomplement dar. Hierbei werden positive Zahlen wie gewohnt“ in das Binärsystem übertragen. Zur Darstellung einer negativen ” Zahl −X hingegen wird zunächst der entsprechende positive Wert X als Binärzahl dargestellt, in welcher daraufhin alle Bits invertiert werden. Abschließend wird zu der resultierenden Binärzahl noch der Wert 1 addiert. Eine ausführliche Beschreibung des Zweierkomplementes finden Sie im Informatikgrundlagenbuch Ihres Vertrauens (z.B. im Informatik-Handbuch von Rechenberg und Pomberger). 1. Definieren Sie ein Prädikat less2nd(X,Y), welches X und Y als vorzeichenbehaftete Binärzahlen im Zweierkomplement interpretiert und überprüft, ob der Wert von X kleiner ist als der Wert von Y. Setzen Sie Ihre Definition in folgende Formel an der mit ...“ markierten Stelle ein: ” let less2nd(X,Y) = ... in less2nd(A,B). Ihre Abgabe besteht aus einer Textdatei mit der Lösungsformel. (8 Punkte) 2. Übersetzen Sie die Formel aus der voherigen Aufgabe mit dem jMosel-Plugin und ordnen Sie den Automaten auf der Zeichenfläche möglichst übersichtlich an. Ihre Abgabe besteht aus einer Grafikdatei mit einem Screenshot des berechneten Automaten. (2 Punkte) Tipps • Versuchen Sie, das Prädikat less2nd(X,Y) auf das Prädikat X<Y zurückzuführen. • In der Definition des Prädikates less2nd(X,Y) müssen Sie eine Fallunterscheidung bezüglich der Vorzeichen von X und Y treffen. • Zwar enthält die Definition des Zweierkomplementes keinen Hinweis auf ein ausgezeichnetes Bit, welches das Vorzeichen kodiert; dennoch kann das Vorzeichen einer Binärzahl im Zweierkomplement allein durch Betrachtung des höchstwertigen Bits bestimmt werden. 2 Mehr Informationen über das Projekt finden Sie unter http://sws-challenge.org/wiki/index.php/Scenario:_Purchase_ Order_Mediation