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