220 likes | 351 Vues
This document provides an overview of the verification of specifications in various modeling languages, including MSC, SDL, and UML, utilizing basic protocols like Hoare triples. It discusses the formalization of models, the automatic translation techniques, and specialized verification tools such as static and model checking. The focus is on the structure and behavior of agents and environments, emphasizing their attributes, states, and control flows. The usage of SDL and UML for system specification is explored, along with examples of control flow labeling and decision processing.
E N D
Verification of Specifications in Modeling Languages using Basic Protocols Stepan Potiyenko 27.08.2007
Technology overview Requirements Specifications English text Formal Model MSC, SDL, UML, ... manual formalization automatic translation Basic Protocols (Hoare triples) Specialized verification tools (static checking, model checking, …)
Agent • states • local attributes • behavior Agents and Environment Environment with attributes b a x
Basic Protocols Basic Protocol is a triple where: • x is a list of parameters, • – is a precondition, • u – process (action), • b– post condition Forall ms;
MSC usage 27.08.2007
Basic protocols alt loop i=0,i<N opt MSC diagram
Basic protocols alt loop i=0,i<N opt MSC diagram
MSC diagram Basic protocols alt loop i=0,i<N opt
Basic protocols alt loop i=0,i<N opt MSC diagram
Basic Protocols for the MSC diagram MSC usage
SDL usage 27.08.2007
SDL in terms of BP SDL usage System specification – ENVIRONMENT Process, functional system component - AGENT Signals, timers – EVENTS
e n v I r o n m e n t system block 1 block 3 block 2 process 2 process 4 process 1 process 3 process 5 e n v i r o n m e n t system process 1 (block 1) process 2 (block 1,2) process 3 (block 1,2) process 4 (block 3) process 5 (block 3) Linearized structure Example of structure description of SDL model Structure linearization SDL usage
state s1; • input i; • task x:=x+y; • task • call prc(x); • nextstate s2; • state s2 ... s1 i x := x+y; call prc(x); s2 Control flow labeling SDL usage p_1: state s1; input i; p_1_s_1: task x:=x+y; p_1_s_2: task call prc(x); p_1_s_3: nextstate s2; p_1: state s2 ... Control flow label is agent state expression
ProcP#p ProcP(p, p_1 ); (ProcP p.state = s1) & get_head(p.queue) = i ProcP(p, p_1_s_1 ); last_signal := i; SENDER := sender(i); remove_head(p.queue) States processing SDL usage task x:=x+y; p_1_s_2: task call prc(x); p_1_s_3: nextstate s2; p_1: state s1; input i; p_1_s_1: p_1: state s2; ProcP(p, p_1); (ProcP p.state = s2) & ...
ProcP#p ProcP(p, p_1 ); (ProcP p.state = s1) & get_head(p.queue) = i • state s1; • save k; • input i; • ... • input j; • ... s1 ProcP#p ProcP#p ProcP(p, p_1 ); (ProcP p.state = s1) & get_head(p.queue) = k ProcP(p, p_1 ); (ProcP p.state = s1) & ~(get_head(p.queue) = i) & ~( … = j) & ~( … = k) k ProcP(p, p_1_s_1 ); last_signal := i; SENDER := sender(i); remove_head(p.queue); copy_head(p.queue, p.saved); i j ProcP(p, p_1 ); add_tail(p.saved, k); remove_head(p.queue) ProcP(p, p_1_s_1 ); remove_head(p.queue) Input and save processing SDL usage
x 1 <0 p_1_d_1: decision x; (x=1):(task t1:=1; join p_1_d_2); (x<0): (output sig; join p_1_d_2); enddecision; p_1_d_2: ... t1 := 1; sig Decision processing (labeling) SDL usage decision x; (1): task t1:=1; (<0): output sig; enddecision; ...
ProcP#p ProcP(p, p_1_d_1 ); (x = 1) ProcP(p, p_1_d_2 ); t1 := 1 ProcP#p ProcP(p, p_1_d_1 ); (x < 0) ProcP(p, p_1_d_2 ); add_tail(T1 P1.queue, sig) Decision processing (BP) SDL usage p_1_d_1: decision x; (x=1):(task t1:=1; join p_1_d_2 ); (x<0): (output sig; join p_1_d_2 ); enddecision; p_1_d_2: ...
ProcP#p ProcP(p, p_7 ) ProcP#p ProcP(p, return ); [ret values]; [flush loc vars] ProcP(p, return ) ProcP(p, fun_name ); add_head(return_seq, p_8); loc_v := t1 ProcP(p, head(return_seq)) Procedure calls processing SDL usage task t1:=1; p_7: task call fun_name(t1); p_8: PROCEDURE fun_name FPAR loc_v; Local variables declaration start: desicion (loc_v) (1): task u:=1; (<0): task u:=0; enddecision; return; ENDPROCEDURE; stack return_seq: (ret_control_flow, …, Nil)return_val: (values_set, …, Nil)
UML usage 27.08.2007
Diagram types and perspectives UML usage • Sequence diagrams – analogously to MSC. • Architecture diagrams, state chart diagrams – analogously to SDL system with blocks, processes and state transitions. • Packages and classes structure is linearized (multiplicity, generalization).
Plans • It would be great completely to specify subset of UML notations that are translated to BPSL. • The problem of N instances should be resolved.