22
: B (12) ( ) 2010 B Book 12 B IMPLEMENTATION, B Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 1

B (12) · 2015. 11. 28. · B (12) ( ) 2010 “ ” BBook 12 B • • • IMPLEMENTATION, B Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 1

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

  • ���

    ��� ��� ��� ��� ���:������ B ���������������������������

    (12)

    ������ (���)

    ���

    �������������

    2010���

    ������

    ������������ “��” ������������������������������� �B Book� ��12�

    B ��������������

    • ����������������������������������������

    • ����������������������������������������������

    • ���������� IMPLEMENTATION, �������• ������������������������������������������������������

    • ��������������������������������������������������������� B ������������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 1

  • ���������������������������������

    ������������

    MACHINE LMachineVARIABLES ysINVARIANT ys: FIN(NAT1)INITIALISATION ys := {}OPERATIONS

    enter(nn) =PRE nn : NAT1 THEN ys := ys \/ {nn} END;

    mm

  • ���������������������������������

    ��������������������������������������������� enter

    REFINEMENT LMachineRRREFINES LMachineRABSTRACT_VARIABLES zz1INVARIANT zz1 = zzINITIALISATION zz1 := 0OPERATIONS

    enter ( nn ) =IF nn > zz1 THEN zz1 := nn END ;

    mm

  • ���������������������������������

    IMPLEMENTATION LMachineRIREFINES LMachineRIMPORTS Scalar(0)INVARIANT zz2 = zzOPERATIONS

    enter ( nn ) =VAR vv IN

    vv vv THEN modify(nn) END

    END ;mm

  • ���������������������������

    ���������� “��”����������������

    ������������

    ���� “��” � “��”���������������

    • ����������������������������

    ��������� “����”���������

    • �������������������������������������������������������conx ∈ 1..10����������������

    • � “��” ������������������������ CONCRETE CONSTANTS ���CONSTANTS ������������������������ CONSTANTS ������������������������� PROPERTIES �����

    �������������������������������������������������������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 8

    ������

    ������������

    ���

    ���� “���” � “���”���� VARIABLES ���

    ������ ABSTRACT VARIABLES �����������

    �������������

    ����������������������������������������

    �������������������������������� “���”����� CONCRETE VARIABLES �������� INVARIANT ����������� INITIALISATION �

    ���������������������

    ����

    • ����������������������������������������������

    • ���������������������������������������������������������������������

    • ��������������������������������������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 9

  • ������������

    �����������������������������

    • �����������������������������������������������������

    • ����������

    ��������������������������������

    ����������

    �����������������������������

    �����������������������

    • ������������������������• ������������������������������������������

    �������������������������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 10

    “������” ������

    � B �����������������������B ��� “����” �����������������������

    • �����������������������������������������������

    • �����������������������• �����������������������

    ����������������������

    �������������

    • �� IMPORTS ������������������������• �� VALUES ��������������

    �����������������IMPLEMENTATION������� MACHINE �� REFINEMENT ���

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 11

  • “������” ������

    ���������������������������ABSTRACT CONSTANTS � ABSTRACT VARIABLES�VARIABLES� ���������� CONSTRAINTS, INCLUDES � USES��

    �������� IMPORTS �������������������

    ������������������

    • ����������������������������������������

    • ������������������������������������������������

    • ��� PROPERTIES ���������������������• ������������������������������������������

    IMPORTS ����������������������� IMPORTS ���������������������������

    �������������������������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 12

    “������” ������

    ����������������������������������������������

    ����

    ��������� EXTENDS ��� EXTENDS �������������� IMPORTS ������������������������������ EXTENDS � INCLUDES ������

    ����������������������������

    ���������������� MACHINE ���� REFINEMENT ��

    ��������������� VALUES ��������

    ������ INITIALISATION ��� OPERATIONS �����������������������������������

    IMPORTS M � INCLUDES M ��IMPORTS M ����� M ����������������������� M �����������������������������������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 13

  • IMPORT���������������������������������������

    IMPORTS �������

    � INCLUDES�����������������������������������������

    ������� CONSTRAINTS �����

    ������ Mn �������� M ���������

    • ����������������������– Mn ������

    – � Mn �������������

    – � Mn ���SEES������������

    – �������������� Mn ����� Mn �� Mn ���������������������

    • ��������������������– Mn �����

    – Mn �� Mn �������������������

    – ������������������������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 14

    IMPORT ���������������������

    � B ������������������������B Book��� D ������������ B ������

    ������������������������

    �����������������������

    �������� �� ��� �� ���

    ���������

    �� X X X X���� X X X X���� X X ����������� X X��� X ���������� X

    ������������ INVARIANT ���������������������������������������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 15

  • ������������������

    ���

    ����� IMPORTS �����������������

    • � IMPORTS ���������������• �������������������• ����������������������• �����������

    ������������• ��������������������������������B ���������������������������������������������

    ����������� enter ������ Scalar �������enter(nn) = VAR vv IN

    BEGIN vv := zz2 END;IF nn > vv THEN

    PRE nn ∈ N THEN zz2 := nn END ENDEND;

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 16

    ������������������

    ���

    ������������������

    ys : F(N1) ∧ zz = max(ys ∪ {0}) ∧ zz2 = zz ∧ zz2 ∈ N ∧ nn ∈ N⇒ [enter(nn)]¬[zz := max({zz, nn})]¬(zz2 = zz)

    ��������

    ys : F(N1) ∧ zz = max(ys ∪ {0}) ∧ zz2 = zz ∧ zz2 ∈ N ∧ nn ∈ N⇒ [enter(nn)](zz2 = max({zz, nn}))

    � enter �������� VAR ���

    ys : F(N1) ∧ zz = max(ys ∪ {0}) ∧ zz2 = zz ∧ zz2 ∈ N ∧ nn ∈ N⇒∀vv . ( [BEGIN vv := zz2 END;

    IF nn > vv THENPRE nn ∈ N THEN zz2 := nn END END

    ] (zz2 = max({zz, nn})) )

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 17

  • �� vv ���������������

    ys : F(N1) ∧ zz = max(ys ∪ {0}) ∧ zz2 = zz ∧ zz2 ∈ N ∧ nn ∈ N⇒[ BEGIN vv := zz2 END;

    IF nn > vv THEN PRE nn ∈ N THEN zz2 := nn END END] (zz2 = max({zz, nn}))

    ������������

    ys : F(N1) ∧ zz = max(ys ∪ {0}) ∧ zz2 = zz ∧ zz2 ∈ N ∧ nn ∈ N⇒[vv := zz2]((nn > vv ⇒ (nn ∈ N ∧ nn = max({zz, nn})))(¬(nn > vv) ⇒ zz2 = max({zz, nn})) )

    �������� zz2 = zz ����� zz2���ys : F(N1) ∧ zz = max(ys ∪ {0}) ∧ nn ∈ N⇒((nn > zz ⇒ nn = max({zz, nn}))(nn ≤ zz ⇒ zz = max({zz, nn})) )

    ������

    ������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 18

    VALUES ������

    VALUES ����������������MACHINE � REFINEMENT�����������������������

    ����������������� Mn��

    �� M1 ����� M1, M2, . . . , Mn �� Mn��� Mn ������ M

    � M1, M2, . . . , Mn ������������ Mn � VALUES ������������������������������

    • Mn ������������������• M1, M2, . . . , Mn ������ Mn �������������• ������������������ M ��� Mn ��������������������������

    • �������������

    ����������• �����������������������• ������� Mn ����� M �� Mn ��������• �����������������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 19

  • VALUES ������

    ������M1, M2, . . . , Mn ������������� M1 ����� M1, M2, . . . , Mn ������������������������������� IMPORTS �����������

    �M1, M2, . . . , Mn �������� c��Mn ���M ����������� c��� Mn � VALUES ����� c ���� c �

    ������� M ������������

    M1, M2, . . . , Mn ���������� Mn � VALUES ������

    �������������������������

    • Mn ��� M �������������• ����������������������������������� M1, M2, . . . , Mn ����������� Mn ���������������������������

    �������� M1, M2, . . . , Mn ������� S� Mn ������������� S��� S �����������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 20

    IMPORTS/INCLUDES ��� PROMOTES/EXTENDS

    ������� INCLUDES������ IMPORTS�����

    INCLUDES ����������������������IMPORTS ����������������������������

    ����������������������������

    �������������������������������������������������������������

    ������������������������ OPERATIONS������������������������������OPERATIONS �������������������

    ������� PROMOTES �������������������������������������� OPERATIONS ��������� EXTENDS ��� IMPORTS � PROMOTES ���������PROMOTES/EXTENDS���� PROMOTES/EXTENDS ����������� IMPORTS ����� �����������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 21

  • ���������������

    ���������

    �����IMPLEMENTATION�����������������������������������

    • ���������������• ����������������������B Book��� 12.1.11 �������������������������������� Atelier B ����� 7.25 ��� B ������� B0 ������������ B ����������������� IMPLEMENTATION �����������������

    ������

    ����������������

    �������������

    Statement ::= skip | Assignment Statemant| Call Statement | Sequential Statement| Local Statement | While Statement| If Statement | Case Statement

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 22

    ���������������

    ���������

    �������������������������

    ������� “��” ������

    • �������������������������������������������

    • �����������������������������������������������������

    ������������������������������

    ������������������������������� Assignment Statemant ��������������

    ������������������������������������

    Assignment Statemant ::= Protected Assignment | Unprotected AssignmentCall Statement ::= Protected Call | Unprotected Call

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 23

  • ���������������

    ���������

    ������/����������������������

    �����

    �����������

    ���������

    Unprotected Assignment ::= Identifier List := Term List| Identifier(Term List) := Term| Identifier := bool(Condition)| Identifier(Term List) := bool(Condition)

    � 2 �� 4 ������� 3/4 ������������

    �������Condition����������

    ����������

    Unprotected Call ::= Identifier List ←− Identifier(Term List)| Identifier List ←− Identifier| Identifier(Term List)| Identifier

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 24

    ���������������

    ���������

    ��������� Term��������

    ����Term � B ��� Expression ��������������

    • �������������������• �����������������������

    ����������������������

    Term ����

    Term ::= Simple Term| Function Constant Identifier(Term List)| Function Variable Identifier(Term List)| Term + Term | Term − Term| Term ∗ Term | Term/Term

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 25

  • ���������������

    ���������

    ����� Term ������������������������� Term ������������������������������

    ������������������

    ������� Simple Term ���� Simple Constant ����

    Simple Term ::= Simple Variable Identifier| Operation Input Formal Parameter| Operation Output Formal Parameter| Simple Constant

    Simple Constant ::= Enumerated Set Element Identifier| Scalar Constant Identifier| Numeratic Literal

    ���������������������������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 26

    ���������������

    ���������

    ������������������������������������������� Assignment Statemant �Call Statemant �������protected�����������

    ��������

    Protected Assignment ::= PRE PredicateTHEN Unprotected Assignment END

    Protected Call ::= PRE PredicateTHEN Unprotected Call END

    ��������������������������

    ������������������� Unprotected Assignment ��Unprotected Call ���������� E�� E ∈ INT�������������

    ���INT ����� MININT..MAXINT��������������������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 27

  • ���������������

    ���������

    ����� Unprotected Assignment�

    a := b + c × d��������������b, c, d, c × d, b + c × d������Protected Assignment ��

    PRE

    b ∈ INT ∧c ∈ INT ∧d ∈ INT ∧c × d ∈ INT ∧b + c × d ∈ INT ∧

    THEN

    a := b + c × dEND

    �����������������������������������B ���������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 28

    ���������������

    ���������

    ������������ Condition������

    Condition ::= Simple Term = Simple Term| Simple Term = Simple Term| Simple Term > Simple Term| Simple Term ≥ Simple Term| Simple Term < Simple Term| Simple Term ≤ Simple Term| Condition ∧ Condition| Condition ∨ Condition| ¬Condition

    Condition ���� Term����� Condition �����

    �� Atelier B � B0 �������������� 7.25 �������������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 29

  • Atelier B ��� B0 ������

    Atelier B � B0 ���� B �����B Book��������������

    ������� Atelier B ������������ B0

    �������

    �� B ������������� INT �������������������� T������� INT × T�����������������������������

    B0 �������������������������A1 ∈ 1..10 → INT � A2 ∈ 2..11 → INT ������������������������������������������������ A3 ∈ 1..cc1 → INT A4 ∈ 1..cc2 → INT ����������� cc1 = cc2

    ����Term��

    ��Term�� B ���������� B0 �������������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 30

    Atelier B ��� B0 ������

    ���������������������

    ����������������������

    ���������1) ����������������������� INT �������2) ��������������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 31

  • Atelier B ��� B0 ������

    �������Condition��

    �� IF � WHILE �����

    ������������������������� “���”

    �������� Atelier B ��� Instruction��

    Atelier B � B0 ������� ASSERT ��

    ASSERT Predicate THEN Statement END

    B0 ���������� Predicate ����������������� “��” ��������� Predicate �� Condition

    ������������������������������ assertion ������

    ��������������1) �����������������2) ���������������������������

    CASE �������������Simple Term�

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 32

    Atelier B ��� B0 ������

    ���:=��������������

    • ���������• ���������������������������������������������������������

    ����������

    • ��������������• ������������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 33

  • Atelier B ��� LOCAL OPERATIONS

    Atelier B ����������� LOCAL OPERATIONS �������������������� “��” �

    � LOCAL OPERATIONS ���������� “����”���������������������������������������

    ���� LOCAL OPERATIONS �������������������� OPERATIONS �������������

    ������� OPERATIONS ��������� LOCAL OPERATIONS �����������������������LOCAL OPERATIONS������������������ OPERATIONS �����

    ���� OPERATIONS ������������ REFINES �������������� LOCAL OPERATIONS ����������

    �������� IMPLEMENTATION ��������1) ����������2) ���������3) ���� B0 ������������������������������������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 34

    LOCAL OPERATIONS

    �����������

    • ���������������������• �������������� OPERATIONS ����������� LOCAL OPERATIONS ��������

    ����������������������������������������������������������������

    ����������

    �������������� B �����������

    • �

    ������������������

    �����• ������������������������• ������������������������������������ “����”���������������������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 35

  • LOCAL OPERATIONS

    � B ���������������������1) ���������2) �����������

    ��������������������������

    • ������������ LOCAL OPERATIONS ������������������ B ���������������������

    1. �������������������������OPERATIONS ��������������

    2. �����������������

    �����������������������������

    • ������������ OPERATIONS ��������� B0 ��������������������

    ������������

    �����������������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 36

    LOCAL OPERATIONS

    ��� Atelier B �����������

    ������������

    �������� OPERA-TIONS ���������

    �������������

    ��������Atelier B �� 168 ��������������������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 37

  • B ���������������

    ���� B �����������������������B Book��12.2 � “��” � 12.4 � “������”��� Atelier B ������8 � Architecture������

    �� B �������� Atelier B ����� project���������� components ������������������

    ����������������������safety���������������������

    ��������� B ���������������

    ���B ������������ B ������������������ B �����B �������������������

    �� B ���������������������������������������������������������������������������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 38

    B ������������

    Atelier B �������� B ���� 3 ��1) ���������������������2) �����3) ����������

    ��\�� ����� ���� ���������� � � �

    ���� � � �

    ��� � � �

    ���������������������������

    ��������������

    �������������

    �������������������������������������������������

    ������������

    ���������������������������������������������� B ����������������������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 39

  • B ������������

    �������������

    ����������������������INCLUDES �������������������������

    ����������������

    ��������������������������������B ��������������������������������������������B ����������

    �������������������������������������������������������������������������������������������������������������������

    ������� B ��������������������� B ����� B0 ������������������������������������������������������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 40

    B ������������

    ����� B ����� B ����������������������������������������

    �����������������

    • ���������������������• ���������������������������������������������

    • �����������������������• ��������������������������

    �������������

    • ������������ INCLUDES ����������• ������������������������������������ IMPORTS �������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 41

  • ���������������

    ��������������

    • �������������������• ���������������� “.” ������• ����������������������

    ������������������������������������������������

    ���������������������������������������������������

    �������������������������������������������������

    Formal Methods: Software Development in B Qiu Zongyan (May 25, 2010) 42