Bài giảng Đặc tả hình thức - Chương 3: Mô hình hóa dữ liệu kiểu tập hợp cung cấp cho người học các kiến thức: Kiểu dữ liệu trong VDM, mô hình hóa dữ liệu, kiểu tập hợp, đặc tả operation,... Mời các bạn cùng tham khảo nội dung chi tiết.
Trang 1Chương 3 Mô hình hóa dữ liệu
Kiểu tập hợp
Giảng viên: PGS.TS Vũ Thanh Nguyên
Trường Đại học Công Nghệ Thông Tin, ĐHQG-HCM
Khoa Công Nghệ Phần Mềm
Trang 2Kiểu dữ liệu trong VDM
Trang 3Tập boolean B = {true, false}
Tập ký tự (gồm chữ cái hoa/thường, số, phép toán, dấu câu)
Char = {‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’, ‘i’, ‘j’, ‘k’, ‘l’, ‘m’,
‘n’, ‘o’, ‘p’, ‘q’, ‘r’, ‘s’, ‘t’, ‘u’, ‘v’, ‘w’, ‘x’, ‘y’, ‘z’,
‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’, ‘I’, ‘J’, ‘K’, ‘L’, ‘M’,
‘N’, ‘O’, ‘P’, ‘Q’, ‘R’, ‘S’, ‘T’, ‘U’, ‘V’, ‘W’, ‘X’, ‘Y’, ‘Z’,
‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ‘+’, ‘-’, ‘=‘, ‘<‘, ‘>’,
‘*’, ‘/’, ‘(‘, ‘)’, ‘[‘, ‘]’, ‘{‘, ‘}’, ‘.’, ‘,’, ‘?’, ‘!’, …}
Trang 4Các tập hợp được định nghĩa sẵn
Trang 6Mô hình hóa dữ liệu
Trang 7Kiểu tập hợp
Cho trước kiểu dữ liệu T
Cần định nghĩa kiểu dữ liệu, trong đó, mỗi thể hiện là 1 tập hợp các phần tử thuộc kiểu dữ liệu T
Ký hiệu: T-set
Ví dụ 1:
Mode = { READ , WRITE , EXECUTE }
{ READ , WRITE }, { READ , EXECUTE },
{ EXECUTE , WRITE }, { READ , WRITE , EXECUTE } }
Ví dụ 2:
Intset = ℤ- set
Trang 9Kiểu tập hợp
Câu hỏi: Có thể sử dụng kiểu tập hợp cho các trường hợp nào sau đây:
Hành khách trên 1 chuyến xe buýt
Bệnh nhân trong phòng chờ khám bệnh trong 1 buổi
Thí sinh được nhận giải thưởng trong 1 kỳ thi
Trang 10Mô hình hóa các operation
Một operation có thể có hai tác dụng
Thay đổi nội dung biến bên ngoài
Trả về giá trị thông qua tham số kết quả
Đối với các biến bên ngoài:
Biến được truy xuất dạng read-only (rd)
Biến được truy xuất dạng read-write (wr)
Không có dạng truy xuất write-only trong VDM
Ví dụ:
ext rd size: ℕ
ext wr a, b: ℕ, rd x: ℤ
Trang 11Đặc tả operation
Tên_Operation (thamsố1: Kiểu1 , thamsố2: Kiểu2 …) kq: Kiểukq
ext wr BiếnRead_Write: Kiểu,
rd BiếnRead_Only: Kiểu
pre Vị từ pre-condition
post Vị từ post-condition
Trang 12ADD-TO-TRIP (new-on-trip: School-trip)
ext wr trip: School-trip
pre new-on-trip trip
post trip = trip new-on-trip
⃐
↼
Trang 13Đặc tả operation
Ví dụ
dấu có nghĩa là post (post condition - điều kiện sau) chỉ đến giá trị của toán hạng (biến) có dấu móc ưu tiên thực hiện
Đối với trường hợp khi biến được truy xuất chỉ xác định
dạng read (rd), dấu móc có thể bỏ qua
↼
Trang 18Đặc tả operation
Trang 20Đặc tả operation
Bức tranh của đặc tả operation
Trang 22Đặc tả operation
Người thiết kế chương trình có thể chia đặc tả chương
trình FACT ra làm 2 phần là INIT và LOOP
Trang 23Đặc tả operation
Ở bước tiếp theo, người thiết kế chương trình có thể chia
đặc tả chương trình LOOP thành các phần nhỏ hơn như phần bổ sung
While n ≠0 do BODY
BODY
ext wr n:N,
wr fn:Npre n>0
post fn*n! = fn*n! n<n↼↼ ↼