220 likes | 345 Views
Verification of Specifications in Modeling Languages using Basic Protocols. Stepan Potiyenko. Technology overview. Requirements Specifications English text. Formal Model MSC, SDL, UML,. manual formalization. automatic translation. Basic Protocols (Hoare triples).
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.