Bài giảng Công nghệ phần mềm - Chương 5: Đặc tả Z - Nguyễn Thanh Bình

ðꢀc tꢁ Z (5)  
Nguyꢀn Thanh Bình  
Khoa Công nghꢁꢂThôngꢂtin  
Trưꢃng ðꢄi hꢅc Bách khoa  
ðꢄi hꢅc ðà Nꢆng  
Giꢂi thiꢃu  
ꢀ
ñưꢄc ñꢅ xuꢆt bꢇi Jean René Abrial ꢇꢈðꢉi hꢊc  
Oxford  
ꢀ
ngôn ngꢋꢈñꢀc tꢁ hình thꢌc ñưꢄc sꢍ dꢎng rꢏng rãi  
nhꢆt  
ꢀ
ꢀ
ꢀ
dꢐa trên lý thuyꢑt tꢒp hꢄp  
ký hiꢃu toán hꢊc  
sꢍ dꢎng các sơ ñꢓ (schema)  
ꢁ
dꢔ hiꢕu  
2
1
Giꢂi thiꢃu  
ꢀ
Gꢓm bꢖn thành phꢗn cơ bꢁn  
ꢁ
ꢁ
ꢁ
ꢁ
các kiꢕu dꢋ liꢃu (types)  
• dꢐa trên khái niꢃm tꢒp hꢄp  
các sơ ñꢓ trꢉng thái (state schemas)  
• mô tꢁ các biꢑn và ràng buꢏc trên các biꢑn  
các sơ ñꢓ thao tác (operation schemas)  
• mô tꢁ các thao tác (thay ñꢘi trꢉng thái)  
các toán tꢍꢈsơꢈñꢓ (schema operations)  
• ñꢙnh nghĩa các sơ ñꢓ mꢂi tꢚ các sơ ñꢓꢈñãꢈcó  
3
Kiꢕu dꢋ liꢃu  
ꢀ
mꢛi kiꢕu dꢋ liꢃu là mꢏt tꢇp hꢈp các phꢗn tꢍ  
ꢀ
Ví dꢎ  
ꢁ
ꢁ
ꢁ
ꢁ
ꢁ
{true, false} : kiꢕu lô-gíc  
N: kiꢕu sꢖ tꢐ nhiên  
Z: kiꢕu sꢖ nguyên  
R: kiꢕu sꢖ thꢐc  
{red, blue, green}  
4
2
Kiꢕu dꢋ liꢃu  
ꢀ
Các phép toán trên tꢒp hꢄp  
ꢁ
ꢁ
ꢁ
ꢁ
ꢁ
Hꢏi:  
A
B
Giao:  
Hiꢃu:  
A ∩ B  
A ⁄ B  
Tꢒp con:  
A B  
Tꢒp các tꢒp con: P A  
• ví dꢎ: P {a, b} = {{}, {a}, {b}, {a, b}}  
5
Kiꢕu dꢋ liꢃu  
ꢀ
mꢏt sꢖ kiꢕu dꢋ liꢃu cơ bꢁn ñã ñưꢄc ñꢙnh  
nghĩa trưꢂc  
ꢁ
ꢁ
ꢁ
ꢁ
kiꢕu sꢖ nguyên Z  
kiꢕu sꢖ tꢐ nhiên N  
kiꢕu sꢖ thꢐc R  
...  
ꢀ
có thꢕꢈñꢙnh nghĩa các kiꢕu dꢋ liꢃu mꢂi  
ꢁ
ANSWER == yes | no  
ꢁ
[PERSON]  
• sꢍ dꢎng cꢀp ký hiꢃu [ vàꢈ]ꢈñꢕꢈñꢙnh nghĩa kiꢕu cơ  
bꢁn mꢂi  
6
3
Kiꢕu dꢋ liꢃu  
ꢀ
Khai báo kiꢕu  
ꢁ
x : T  
• x là phꢗn tꢍ cꢜa tꢒp T  
ꢁ
Ví dꢎ  
• x : R  
• n : N  
• 3 : N  
• red : {red, blue, green}  
7
Vꢙ tꢚ  
ꢀ
Mꢏt vꢙ tꢚꢈ(predicate)ꢈñưꢄc sꢍ dꢎng ñꢕꢈñꢙnh  
nghĩa các tính chꢆt cꢜa biꢑn/giá trꢙ  
ꢀ
Ví dꢎ  
ꢁ
ꢁ
x > 0  
π
R
8
4
Vꢙ tꢚ  
ꢀ
Có thꢕ sꢍ dꢎng các toán tꢍ lô-gíc ñꢕꢈñꢙnh nghĩa các vꢙ  
tꢚ phꢌc tꢉp  
ꢁ
ꢁ
ꢁ
ꢁ
Và:  
Hoꢀc:  
Phꢜꢈñꢙnh:  
Kéo theo:  
A
A
¬
B
B
A
A
⇒ B  
ꢀ
Ví dꢎ  
ꢁ
ꢁ
ꢁ
ꢁ
(x > y) (y > 0)  
(x > 10) (x = 1)  
(x > 0) ) x/x = 1  
(x S)) (x T)  
⇒
(
¬
9
Vꢙ tꢚ  
ꢀ
Các toán tꢍ khác  
ꢁ
ꢁ
ꢁ
( x : T • A)  
• A ñúng vꢂi mꢅi x thuꢏc T  
• Ví dꢎ: ( x : N • x - x =0)  
( x : T • A)  
• A ñúng vꢂi mꢉt sꢊ giá trꢙ x thuꢏc T  
• Ví dꢎ: ( x : R • x + x = 4)  
{x : T | A}  
• biꢕu diꢔn các phꢗn tꢍ x cꢜa T thꢝa mãn A  
• Ví dꢎ: N = {x : Z | x ≥ 0}  
10  
5
Sơ ñꢓ trꢉng thái  
ꢀ
Cꢆu trúc sơ ñꢓ trꢉng thái gꢓm  
ꢁ
ꢁ
ꢁ
tên sơ ñꢓ  
khai báo biꢑn  
ñꢙnh nghĩa vꢙ tꢚ  
11  
Sơ ñꢓ trꢉng thái  
ꢀ
ðꢀc tꢁ Z chꢌa  
ꢁ
ꢁ
ꢁ
các biꢑn trꢉng thái  
khꢇi gán biꢑn  
các thao tác trên các biꢑn  
ꢁ
biꢑn trꢉng thái có thꢕ có các bꢆt biꢑn  
• ñiꢅu kiꢃn màꢈluônꢈñúng, biꢕu diꢔn bꢇi các vꢙ tꢚ  
12  
6
Sơ ñꢓ thao tác  
ꢀ
Khꢇi gán biꢑn  
ꢀ
Khai báo thao tác trên biꢑn  
ꢁ
kí hiꢃu ∆ biꢕu diꢔn biꢑn trꢉng thái bꢙꢈthayꢈñꢘi bꢇi thao  
tác  
ꢁ
kí hiꢃu ‘ (dꢆu nháy ñơn) biꢕu diꢔn giá trꢙ mꢂi cꢜa biꢑn  
13  
Sơ ñꢓ thao tác  
ꢀ
Thao tác có thꢕ có các tham sꢖ vào và ra  
ꢁ
ꢁ
tên tham sꢖ vào kꢑt thúc bꢇi kí tꢐ “?”  
tên tham sꢖ ra kꢑt thúc bꢇi kí tꢐ “!”  
14  
7
Sơ ñꢓ thao tác  
ꢀ
Kí hiꢃu Ξ mô tꢁ thao tác không thꢕꢈthayꢈñꢘi  
biꢑn trꢉng thái  
15  
Ví dꢎ 1  
ꢀ
ðꢀc tꢁ hꢃ thꢖng ghi nhꢒn các nhân viên vào/ra tòa  
nhà làm viꢃc  
ꢁ
Kiꢕu dꢋ liꢃu [Staff] là kiꢕu cơ bꢁn mꢂi cꢜa hꢃ thꢖng  
ꢁ
Trꢉng thái cꢜa hꢃ thꢖng bao gꢓm  
• tꢒp hꢄp các ngưꢞi sꢍ dꢎng hꢃ thꢖng user  
• tꢒp hꢄp các nhân viên ñang vào in  
• tꢒp hꢄp các nhân viên ñang ra out  
bꢆt biꢑn cꢜa hꢃ thꢖng  
16  
8
Ví dꢎ 1  
ꢀ
ðꢀc tꢁ thao tác ghi nhꢒn mꢏt nhân viên vào  
17  
Ví dꢎ 1  
ꢀ
ðꢀc tꢁ thao tác ghi nhꢒn mꢏt nhân viên ra  
18  
9
Ví dꢎ 1  
ꢀ
ðꢀc tꢁ thao tác kiꢕm tra mꢏt nhân viên vào hay ra  
ꢁ
Thao tác này cho kꢑt quꢁ là phꢗn tꢍ cꢜa kiꢕu  
QueryReply == is_in | is_out  
ðꢀc tꢁ thao tác  
ꢁ
19  
Ví dꢎ 1  
ꢀ
Khꢇi tꢉo hꢃ thꢖng  
20  
10  
Ví dꢎ 1  
ꢀ
Tóm lꢉi  
ꢁ
Sơ ñꢋ trꢄng thái: các thành phꢗn/ñꢖi tưꢄng  
cꢜa hꢃ thꢖng  
ꢁ
ꢁ
Bꢌt biꢍn: ràng buꢏc giꢋa các ñꢖi tưꢄng  
Các sơ ñꢋ thao tác  
• ðiꢅu kiꢃn trên các tham sꢖ vào  
• Quan hꢃ giꢋa trꢉng thái trưꢂc và sau  
• Tham sꢖ kꢑt quꢁ  
ꢁ
Khꢎi gán  
21  
Ví dꢎ 1  
ꢀ
Hãy ñꢀc tꢁ các thao tác  
ꢁ
Register: thêm vào mꢏt nhân viên mꢂi  
ꢁ
QueryIn: cho biꢑt nhꢋng nhân viên ñang  
vào/làm viꢃc  
22  
11  
Toán tꢍꢈsơꢈñꢓ  
ꢀ
Các sơ ñꢓ có thꢕꢈñưꢄc kꢑt hꢄp ñꢕ tꢉo ra  
các sơ ñꢓ mꢂi  
ꢀ
Các toán tꢍꢈsơꢈñꢓ  
ꢁ
Và:  
ꢁ
Hoꢀc:  
23  
Toán tꢍꢈsơꢈñꢓ  
ꢀ
Các sơ ñꢓꢈñãꢈcó  
ꢀ
Tꢉo các sơ ñꢓ mꢂi  
ꢁ
Schema3 == Schema1 Schema2  
Schema4 == Schema1 Schema2  
ꢁ
24  
12  
Ví dꢎ 1 (tiꢑp)  
ꢀ
Cꢁi tiꢑn thao tác StaffQuery  
ꢁ
Thao tác StaffQueryꢈchưaꢈñꢀc tꢁꢈtrưꢞng hꢄp  
lꢛi  
• name? users  
25  
Ví dꢎ 1 (tiꢑp)  
ꢀ
Cꢁi tiꢑn thao tác StaffQuery  
ꢁ
ðꢀc tꢁ lꢉi kiꢕu QueryReply  
QueryReply == is_in | is_out | not_registered  
ꢀ
Khi ñó  
RobustStaffQuery == StaffQuery BadStaffQuery  
26  
13  
Ví dꢎ 1 (tiꢑp)  
ꢀ
Cꢁi tiꢑn thao tác CheckIn  
ꢀ
Mꢇ rꢏng thao tác cho trưꢞng hꢄp ghi nhꢒn thành công  
27  
Ví dꢎ 1 (tiꢑp)  
ꢀ
Cꢁi tiꢑn thao tác CheckIn  
ꢁ
Mꢇ rꢏng thao tác cho trưꢞng hꢄp ghi nhꢒn thành  
công  
ꢀ
Khi ñó  
GoodCheckIn == CheckIn Success  
28  
14  
Ví dꢎ 1 (tiꢑp)  
ꢀ
Cꢁi tiꢑn thao tác CheckIn  
ꢁ
Xꢍꢈlýꢈthêmꢈhaiꢈtrưꢞng hꢄp lꢛi  
1. name?ꢈñãꢈñưꢄc ghi nhꢒn  
2. name? chưa ñưꢄc ñăng ký  
29  
Ví dꢎ 1 (tiꢑp)  
ꢀ
Cꢁi tiꢑn thao tác CheckIn  
Xꢍꢈlýꢈthêmꢈhaiꢈtrưꢞng hꢄp lꢛi  
ꢁ
30  
15  
Ví dꢎ 1 (tiꢑp)  
ꢀ
Cꢁi tiꢑn thao tác CheckIn  
ꢁ
Khi ñó  
CheckInReply == ok | already_in | not_registered  
RobustCheckIn == GoodCheckIn  
BadCheckIn1  
BadCheckIn2  
31  
Quan hꢃ  
ꢀ
Cꢏp phꢐn tꢑ có thꢒ tꢓꢈñưꢄc biꢕu  
diꢔn  
ꢁ
(x, y)  
ꢀ
Tích ðꢔ-các cꢜa hai kiꢕu T1 và T2  
ꢁ
ꢁ
T1 x T2  
(x, y) : T1 x T2  
32  
16  
Quan hꢃ  
ꢀ
Quan hꢁ (relation) là tꢒp các cꢀp  
phꢗn tꢍ có thꢌ tꢐ  
ꢁ
Ví dꢎ:  
33  
Quan hꢃ  
ꢀ
Có thꢕ ký hiꢃu quan hꢃ  
ꢁ
T
↔
S == P (T x S)  
ꢁ
directory : Person  
↔
Number  
ꢀ
Ánh xꢉ  
cꢀp phꢗn tꢍ có thꢌ tꢐ (x, y) có thꢕ viꢑt  
ꢁ
•
Ví dꢎ  
ꢀ
Lưu ý  
ꢁ
kí hiꢃu  
kí hiꢃu  
↔
dành cho kiꢕu  
dành cho giá trꢙ  
ꢁ
34  
17  
Quan hꢃ  
ꢀ
Domain và Range  
ꢁ
tꢒp hꢄp các thành phꢗn thꢌ nhꢆt trong mꢏt quan hꢃꢈ  
ñưꢄc gꢊi là domain (miꢅn)  
• kí hiꢃu: dom  
• ví dꢎ:  
dom(directory) = {mary, john, jim, jane}  
ꢁ
tꢒp hꢄp các thành phꢗn thꢌ hai trong mꢏt quan hꢃꢈ  
ñưꢄc gꢊi là range  
• kí hiꢃu: ran  
• ví dꢎ:  
ran(directory) = {287373, 398620, 829483, 493028}  
35  
Quan hꢃ  
ꢀ
Phép trꢚ miꢅn (domain subtraction)  
ꢁ
ký hiꢃu:  
ꢁ
biꢕu diꢔn quan hꢃ R vꢂi các phꢗn tꢍ  
trong miꢅn S ñã bꢙ loꢉi bꢝ  
Nghĩa là:  
ꢁ
36  
18  
Quan hꢃ  
ꢀ
Phép trꢚ miꢅn (domain subtraction)  
ꢁ
Ví dꢎ:  
ꢁ
Khi ñó:  
37  
Ví dꢎ 2  
ꢀ
ðꢀc tꢁ danh bꢉꢈñiꢃn thoꢉi gꢓm tên ngưꢞi và  
sꢖꢈñiꢃn thoꢉi  
ꢁ
Sꢍ dꢎng kiꢕu cơ bꢁn  
[Person, Phone]  
ꢁ
ðꢀc tꢁ trꢉng thái hꢃ thꢖng  
38  
19  
Ví dꢎ 2  
ꢀ
Khꢇi tꢉo hꢃ thꢖng  
ꢀ
Thêm mꢏt sꢖꢈñiꢃn thoꢉi  
39  
Ví dꢎ 2  
có thꢕ cꢁi tiꢑn ?  
ꢀ
Tìm sꢖꢈñiꢃn thoꢉi cꢜa mꢏt ngưꢞi  
ꢀ
Tìm tên theo sꢖꢈñiꢃn thoꢉi  
40  
20  
Tải về để xem bản đầy đủ
pdf 28 trang baolam 22720 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Công nghệ phần mềm - Chương 5: Đặc tả Z - Nguyễn Thanh Bình", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_cong_nghe_phan_mem_chuong_5_dac_ta_z_nguyen_thanh.pdf