Stepan Potiyenko Verification of Specifications in Modeling Languages using Basic Protocols
Technology overview Basic Protocols (Hoare triples) Specialized verification tools (static checking, model checking, …) manual formalization Requirements Specifications English text Formal Model MSC, SDL, UML,... automatic translation
Agents and Environment Environment with attributes a b x Agent states local attributes behavior
Basic Protocols Basic Protocol is a triple where: x is a list of parameters, – is a precondition, u – process (action), – post condition Forall ms;
MSC usage
MSC diagram alt loop i=0,i<N opt Basic protocols
alt loop i=0,i<N opt MSC diagram Basic protocols
alt loop i=0,i<N opt MSC diagram Basic protocols
alt loop i=0,i<N opt MSC diagram Basic protocols
Basic Protocols for the MSC diagram MSC usage
SDL usage
SDL in terms of BP System specification – ENVIRONMENT Process, functional system component - AGENT Signals, timers – EVENTS SDL usage
system block 1 envenv I I ronmen ronmen t tenvenv I I ronmen ronmen t t I t block 2 block 3 process 2 process 3 process 1 process 4 process 5 Example of structure description of SDL model Structure linearization system process 1 (block 1) process 2 (block 1,2) process 4 (block 3) process 3 (block 1,2) process 5 (block 3) e n v i r o n m e n t Linearized structure 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 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 SDL usage Control flow labeling
task x:=x+y; p_1_s_2: task call prc(x); p_1_s_3: nextstate s2; States processing 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) ProcP#p p_1: state s1; input i; p_1_s_1: p_1: state s2; ProcP(p, p_1); (ProcP p.state = s2) &... SDL usage
SDL usage Input and save processing state s1; save k; input i;... input j;... s1 ij k ProcP(p, p_1 ); (ProcP p.state = s1) & get_head(p.queue) = k ProcP(p, p_1 ); add_tail(p.saved, k); remove_head(p.queue) ProcP#p ProcP(p, p_1 ); (ProcP p.state = s1) & ~(get_head(p.queue) = i) & ~( … = j) & ~( … = k) ProcP(p, p_1_s_1 ); remove_head(p.queue) 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); copy_head(p.queue, p.saved); ProcP#p
decision x; (1): task t1:=1; (<0): output sig; enddecision;... Decision processing (labeling) t1 := 1; x sig 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:... SDL usage
Decision processing (BP) 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, p_1_d_2 ); t1 := 1 ProcP(p, p_1_d_1 ); (x = 1) ProcP#p ProcP(p, p_1_d_2 ); add_tail(T1 P1.queue, sig) ProcP(p, p_1_d_1 ); (x < 0) ProcP#p SDL usage
PROCEDURE fun_name FPAR loc_v; Local variables declaration start: desicion (loc_v) (1): task u:=1; (<0): task u:=0; enddecision; return; ENDPROCEDURE; task t1:=1; p_7: task call fun_name(t1); p_8: Procedure calls processing SDL usage ProcP(p, fun_name ); add_head(return_seq, p_8); loc_v := t1 ProcP(p, p_7 ) ProcP#p ProcP(p, head(return_seq)) ProcP(p, return ) ProcP#p ProcP(p, return ); [ret values]; [flush loc vars] return_seq: (ret_control_flow, …, Nil) return_val: (values_set, …, Nil) stack
UML usage
Diagram types and perspectives 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). UML usage
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.