Tham khảo tài liệu ''giáo trình công nghệ phần mềm part 3'', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
ðặ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 Jean René Abrial ðại học Oxford ngơn ngữ đặc tả hình thức ñược sử dụng rộng rãi dựa lý thuyết tập hợp ký hiệu toán học sử dụng sơ ñồ (schema) dễ hiểu Giới thiệu Gồm bốn thành phần kiểu liệu (types) • dựa khái niệm tập hợp sơ ñồ trạng thái (state schemas) • mơ tả biến ràng buộc biến sơ ñồ thao tác (operation schemas) • mơ tả thao tác (thay đổi trạng thái) tốn tử sơ đồ (schema operations) • định nghĩa sơ ñồ từ sơ ñồ ñã có Kiểu liệu kiểu liệu tập hợp 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} Kiểu liệu Các phép toán tập hợp Hội: A∪B Giao: A∩B Hiệu: A⁄B Tập con: A⊆B Tập tập con: P A • ví dụ: P {a, b} = {{}, {a}, {b}, {a, b}} Kiểu liệu số kiểu liệu ñã ñượ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 định nghĩa kiểu liệu ANSWER == yes | no [PERSON] • sử dụng cặp ký hiệu [ ] ñể ñịnh nghĩa kiểu Kiểu liệu Khai báo kiểu x:T • x phần tử tập T Ví dụ • • • • x:R n:N 3:N red : {red, blue, green} Vị từ Một vị từ (predicate) ñược sử dụng ñể ñịnh nghĩa tính chất biến/giá trị Ví dụ x>0 π∈R Vị từ Có thể sử dụng tốn tử lơ-gíc để định nghĩa 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 = (¬ (x ∈ S)) ∨ (x ∈ T) Vị từ Các toán tử khác (∀x : T • A) • A với x thuộc T • Ví dụ: (∀x : N • x - x =0) (∃x : T • A) • A ñúng với số giá trị x thuộc T • Ví dụ: (∃x : R • x + x = 4) {x : T | A} • biểu diễn phần tử x T thỏa mãn A • Ví dụ: N = {x : Z | x ≥ 0} 10 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 biến trạng thái khởi gán biến thao tác biến biến trạng thái có bất biến • điều kiện mà ln đúng, biểu diễn vị từ 12 Sơ ñồ thao tác Khởi gán biến Khai báo thao tác biến kí hiệu ∆ biểu diễn biến trạng thái bị thay đổi thao tác kí hiệu ‘ (dấu nháy ñơn) biểu diễn giá trị biến 13 Sơ đồ thao tác Thao tác có tham số vào tên tham số vào kết thúc kí tự “?” tên tham số kết thúc kí tự “!” 14 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ụ ðặc tả hệ thống ghi nhận nhân viên vào/ra tòa nhà làm việc Kiểu liệu [Staff] kiểu hệ thống Trạng thái hệ thống bao gồm • tập hợp người sử dụng hệ thống user • tập hợp nhân viên vào in • tập hợp nhân viên out bất biến hệ thống 16 Ví dụ ðặc tả thao tác ghi nhận nhân viên vào 17 Ví dụ ðặc tả thao tác ghi nhận nhân viên 18 Ví dụ ðặc tả thao tác kiểm tra nhân viên vào hay Thao tác cho kết phần tử kiểu QueryReply == is_in | is_out ðặc tả thao tác 19 Ví dụ Khởi tạo hệ thống 20 10 Ví dụ (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ụ (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ụ (tiếp) Cải tiến thao tác CheckIn Xử lý thêm hai trường hợp lỗi name? ñã ñược ghi nhận name? chưa ñược ñăng ký 29 Ví dụ (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ụ (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ự biểu diễn (x, y) Tích ðề-các hai kiểu T1 T2 T1 x T2 (x, y) : T1 x T2 32 16 Quan hệ Quan hệ (relation) tập 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) viết • Ví dụ Lưu ý kí hiệu ↔ dành cho kiểu kí hiệu dành cho giá trị 34 17 Quan hệ Domain Range tập hợp thành phần thứ quan hệ gọi domain (miền) • kí hiệu: dom • ví dụ: dom(directory) = {mary, john, jim, jane} tập hợp thành phần thứ hai quan hệ gọi 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 phần tử 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ụ ðặc tả danh bạ điện thoại gồm tên người số ñiện thoại Sử dụng kiểu [Person, Phone] ðặc tả trạng thái hệ thống 38 19 Ví dụ Khởi tạo hệ thống Thêm số điện thoại 39 Ví dụ cải tiến ? Tìm số điện thoại người Tìm tên theo số điện thoại 40 20 Ví dụ Xóa số điện thoại người 41 Ví dụ Xóa mục danh bạ ứng với tên Xóa mục danh bạ ứng với tập tên 42 21 Partial Function quan hệ mà phần tử domain cho giá trị range ký hiệu nghĩa 43 Partial Function Ví dụ Có thể áp dụng tốn tử hàm 44 22 Partial Function Toán tử tải hàm (Function Overriding) thay mục vào mục ký hiệu ví dụ lưu ý 45 Ví dụ ðặc tả hệ thống quản lý ngày sinh sử dụng kiểu [Person, Date] người có ngày sinh khởi tạo hệ thống 46 23 Ví dụ Thêm người vào hệ thống 47 Ví dụ ðiều xảy name? ∉ dom(bb) Chỉnh sửa ngày sinh Xóa người 48 24 Ví dụ Tìm ngày sinh người 49 Ví dụ Tìm ngày sinh người trường hợp tìm khơng thấy 50 25 Ví dụ Tìm ngày sinh người thơng báo tìm thấy 51 Ví dụ Tìm người ngày sinh 52 26 Total Function ñịnh nghĩa ánh xạ từ tất giá trị domain ñến range ký hiệu nghĩa 53 Total Function Ví dụ 54 27 Total Function Sử dụng ñể ñịnh nghĩa số Ví dụ 55 Các ký hiệu Tốn tử lơ-gíc Tập hợp Quan hệ Hàm 56 28 ... dụ: ran(directory) = {28 737 3, 39 8620, 8294 83, 4 930 28} 35 Quan hệ Phép trừ miền (domain subtraction) ký hiệu: biểu diễn quan hệ R với phần tử miền S ñã bị loại bỏ Nghĩa là: 36 18 Quan hệ Phép trừ... (x, y) : T1 x T2 32 16 Quan hệ Quan hệ (relation) tập 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ự... danh bạ ứng với tập tên 42 21 Partial Function quan hệ mà phần tử domain cho giá trị range ký hiệu nghĩa 43 Partial Function Ví dụ Có thể áp dụng toán tử hàm 44 22 Partial Function Toán tử tải