Abstract:
Das Dokument beschreibt das Pflichtenheft für das Java-Fortgeschrittenenpraktikum im Sommersemester 2001. Es liegt auch in Postscriptform oder als Pdf vor. Das Pflichtenheft wird während des Semesters dem Projektfortschritt und entsprechend den getroffenen Entscheidungen angepaßt und verfeinert.
Was genau gecheckt wird, bleibt zu diskutieren!
MODULE main
VAR
request : boolean;
state : {ready,busy};
ASSIGN
init(state) := ready;
next(state) := case
state = ready & request : busy;
1 : {ready,busy};
esac;
Es werden zunächst zwei Variablen deklariert, eine boolesche
request sowie eine enumerative state. Letztere kann die
Werte ready und busy annehmen. Im ASSIGN-Part
wird das Verhalten des Systems spezifiziert. Initial wird die Variable
state mit ready belegt. Im next(state)-Teil
wird beschrieben, wie sich der Wert von state abhängig vom
aktuellen Zustand verändert. Wie man sieht ist nichts über
request ausgesagt; folglich kann diese Variable in jedem Schritt
einen beliebigen Wert annehmen. SFC ::= istep : step
steps : step list
transs : transition list
actions : action list
declist : declaration list
step ::= name : string
actions : stepaction list
stepaction ::= qualifier : action_qualifier
a_name : string
action ::= a_name : string
sap : stmt list (* simple assignment program *)
stmt ::= skip
| assign
assign ::= var : variable
val : expr
variable ::= name : string
type : type
action_qualifier ::= Nqual (* may be extended *)
transition ::= source : step list
guard : expr
target : step list
declaration ::= var : variable
type : type
val : constval
expr ::= b_expr
| u_expr
| constval
| variable
b_expr ::= left_expr : expr
right_expr : expr
op : operand
type : type
u_expr ::= sub_expr : expr
op : operand
type : type
operand ::= PLUS | MINUS | TIMES | DIV (* Operand als *)
| AND | OR | NEG (* Konstanten in expr *)
| LESS | GREATER | LEQ | GEQ | EQ | NEQ
constval ::= ...| -2 | -1 | 0 | 1 | ... | true | false
type ::= inttype
| booltype
Die SFC's bestehen aus Knoten, genannt Steps, zu denen Aktionen assoziiert sind, sowie aus Transitionen zwischen Steps, die mit booleschen Guards versehen sind. Es sind immer einer oder mehrere der Steps aktiv; die mit diesen aktiven Steps assoziierten Aktionen werden in einem Arbeitszyklus ausgeführt. Die Transition von s1 zu s2 und s3 (mit doppelter horizontaler Linie) ist eine parallele Verzweigung, wird diese Transition genommen, so wird s1 deaktiviert und s2 sowie s3 aktiviert.
This document was translated from LATEX by HEVEA.