Back -
Formal Specification | Previous - Petrol Filling StationCase Study 4 - Therapy Machine
Models the Graphical User Interface, based upon the control console of a real medical device, though the same technique can be applied to any event driven system
The Z text is illustrated with a statechart. The system design is split into largely independent subsystems which can include both data and operations on that data, (as with C++ classes).
The Console state incorporates different displays and is concerned with the dialogue from the user who enters a setting via a text input and an accept button in a dialogue box on screen.
An event occurs through a mouse click or a keystroke to change the console state.
Selecting a Display
Changing a Setting Value
Finishing the Dialogue
The GUI is to be used in conjunction with the Machine
[DISPLAY,SETTING,VALUE,CHAR]
TEXT == seq CHAR
MODE ::= idle | dialog
BUTTON ::= accept | cancel
ÚÄConsoleÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ display : DISPLAY
³ mode : MODE
³ buffer : TEXT
³ setting : SETTING
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
[EVENT]
ÚÄEventÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ œConsole
³ e? : EVENT
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Many events are simply ignored (they do not change the Console state).
Ignore ¡ Event ™ �Console
³ disp : EVENT �‹Ž DISPLAY
ÚÄSelectDisplayÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Event
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
³ mode = idle
³ e? î dom disp
³ display' = disp e?
³ mode' = mode
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ÚÄIgnoreDisplayÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Ignore
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
³ e? î dom disp
³ mode = dialog
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
We use schema disjunction to combine the two cases.
DisplayEvent ¡ SelectDisplay ˜ IgnoreDisplay
³ stg : EVENT �‹Ž SETTING
ÚÄSelectSettingÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Event
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
³ mode = idle
³ e? î dom stg
³ setting' = stg e?
³ mode' = dialog
³ buffer' = í
³ display' = display
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If a dialog is already underway, this operation is disabled.
ÚÄIgnoreSettingÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Ignore
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
³ e? î dom stg
³ mode = dialog
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
SettingEvent ¡ SelectSetting ˜ IgnoreSetting
³ char : EVENT �‹Ž CHAR
³ edit : (TEXT
ÚÄGetCharÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Event
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
³ mode = dialog
³ e? î dom char
³ buffer' = edit (buffer,char e?)
³ mode' = mode
³ setting' = setting
³ display' = display
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ÚÄIgnoreCharÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Ignore
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
³ e? î dom char
³ mode = idle
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
CharEvent ¡ GetChar ˜ IgnoreChar
³ button : EVENT �‹Ž BUTTON
³ value : TEXT �ŠŽ VALUE
³ vaild_ : SETTING ‘ŠŽ VALUE
ÚÄAcceptÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Event
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
³ mode = dialog
³ e? î dom button
³ button e? = accept
³ valid(setting, value buffer)
³ mode' = idle
³ display' = display
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ÚÄRepromptÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Event
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
³ mode = dialog
³ e? î dom button
³ button e? = accept
³ ‰ valid(setting, value buffer)
³ buffer' = buffer
³ mode' = mode
³ display' = display
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ÚÄCancelÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Event
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
³ mode = dialog
³ e? î dom button
³ button e? = cancel
³ mode' = idle
³ display' = display
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ButtonEvent ¡ Accept ˜ Cancel ˜ Reprompt
ÚÄMachineÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ measured,prescribed : SETTING �ŠŽ VALUE
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
The NewSetting operation describes what happens in the Machine when a new value v? is assigned to prescribed setting s?.
ÚÄNewSettingÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ œMachine
³ s? : SETTING
³ v? : VALUE
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
³ prescribed' = prescribed
ÚÄSysÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Console
³ Machine
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ÚÄChangeSettingÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ œSys
³ Accept
³ NewSetting
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
³ s? = setting
³ v? = value buffer
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
SysDisplayEvent ¡ DisplayEvent ™ �Machine
SysSettingEvent ¡ SettingEvent ™ �Machine
SysCharEvent ¡ CharEvent ™ �Machine
SysButtonEvent ¡ ChangeSetting ˜ (Reprompt ™ �Machine) ˜ (Cancel ™ �Machine)