Công nghệ phần mềm - Đặc tả Z

đượ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

pdf28 trang | Chuyên mục: Công Nghệ Phần Mềm | Chia sẻ: dkS00TYs | Lượt xem: 2401 | Lượt tải: 0download
Tóm tắt nội dung Công nghệ phần mềm - Đặc tả Z, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
1ðặ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
2
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
23
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ó
4
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}
35
Kiểu dữ liệu
 Các phép toán trên tập hợp
 Hội: A ∪ B 
 Giao: A ∩ B
 Hiệu: 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}}
6
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
47
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}
8
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
 pi ∈ R
59
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à: A ∧ B
 Hoặc: A ∨ B
 Phủ ñịnh: ¬ A
 Kéo theo: A ⇒ B
 Ví dụ
 (x > y) ∧ (y > 0)
 (x > 10) ∨ (x = 1)
 (x > 0) ) ⇒ x/x = 1
 (¬ (x ∈ S)) ∨ (x ∈ T)
10
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}
611
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ừ
12
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ừ
713
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
14
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ự “!”
815
Sơ ñồ thao tác
 Kí hiệu Ξ mô tả thao tác không thể thay ñổi 
biến trạng thái
16
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
917
Ví dụ 1
 ðặc tả thao tác ghi nhận một nhân viên vào
18
Ví dụ 1
 ðặc tả thao tác ghi nhận một nhân viên ra
10
19
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
20
Ví dụ 1
 Khởi tạo hệ thống
11
21
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
22
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
12
23
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: ∨
24
Toán tử sơ ñồ
 Các sơ ñồ ñã có
 Tạo các sơ ñồ mới
 Schema3 == Schema1 ∧ Schema2
 Schema4 == Schema1 ∨ Schema2
13
25
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
26
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
14
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
28
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
15
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
1. name? ñã ñược ghi nhận
2. name? chưa ñược ñăng ký
30
Ví dụ 1 (tiếp)
 Cải tiến thao tác CheckIn
 Xử lý thêm hai trường hợp lỗi
16
31
Ví dụ 1 (tiếp)
 Cải tiến thao tác CheckIn
 Khi ñó
CheckInReply == ok | already_in | not_registered
RobustCheckIn == GoodCheckIn 
∨ BadCheckIn1 
∨ BadCheckIn2
32
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
17
33
Quan hệ
 Quan hệ (relation) là tập các cặp 
phần tử có thứ tự
 Ví dụ:
34
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 ↔ dành cho kiểu
 kí hiệu dành cho giá trị
18
35
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}
36
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à:
19
37
Quan hệ
 Phép trừ miền (domain subtraction)
 Ví dụ:
 Khi ñó:
38
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
20
39
Ví dụ 2
 Khởi tạo hệ thống
 Thêm một số ñiện thoại
40
Ví dụ 2
 Tìm số ñiện thoại của một người
 Tìm tên theo số ñiện thoại
có thể cải tiến ?
21
41
Ví dụ 2
 Xóa số ñiện thoại của một người
42
Ví dụ 2
 Xóa các mục trong danh bạ ứng với một tên
 Xóa các mục trong danh bạ ứng với một tập các 
tên
22
43
Partial Function
 là quan hệ mà mỗi phần tử trong domain cho một 
giá trị duy nhất trong range
 ký hiệu
 nghĩa là
44
Partial Function
 Ví dụ
 Có thể áp dụng các toán tử hàm
23
45
Partial Function
 Toán tử quá tải hàm (Function Overriding)
 thay thế một mục vào bởi một mục mới
 ký hiệu
 ví dụ
 lưu ý
46
Ví dụ 3
 ðặc tả hệ thống quản lý ngày sinh
 sử dụng kiểu cơ bản mới
[Person, Date]
 mỗi người chỉ có một ngày sinh duy nhất
 khởi tạo hệ thống
24
47
Ví dụ 3
 Thêm một người vào hệ thống
48
Ví dụ 3
 Chỉnh sửa ngày sinh
 Xóa một người
ðiều gì xảy ra nếu name? ∉ dom(bb)
25
49
Ví dụ 3
 Tìm ngày sinh của một người
50
Ví dụ 3
 Tìm ngày sinh của một người
 trường hợp tìm không thấy
26
51
Ví dụ 3
 Tìm ngày sinh của một người
 thông báo khi tìm thấy
 khi ñó
52
Ví dụ 3
 Tìm những người cùng ngày sinh
27
53
Total Function
 ñịnh nghĩa ánh xạ từ tất cả giá trị của domain ñến 
range
 ký hiệu
 nghĩa là
54
Total Function
 Ví dụ
28
55
Total Function
 Sử dụng ñể ñịnh nghĩa hằng số
 Ví dụ
56
Các ký hiệu
Toán tử lô-gíc Tập hợp Quan hệ và Hàm

File đính kèm:

  • pdf5_DacTa.pdf