Bài giảng Đặc tả hình thức: Chương 8 giúp người học hiểu về Mô hình minh họa: Hotel Room Locking. Nội dung trình bày cụ thể gồm có: Mô tả vấn đề, signatures và fields, biểu đồ mô hình cho hệ thống, bàng buộc và thao tác, phát sinh khóa mới, trạng thái khởi tạo,...
LOGO Đặc tả hình thức Mơ hình minh họa: Hotel Room Locking Nguyễn Thị Minh Tuyền Nguyễn Thị Minh Tuyền Hotel Room Locking Nguyễn Thị Minh Tuyền Đặc tả hình thức Vấn đề đặt v Mơ hình hóa Alloy hệ thống khóa cửa sử dụng thẻ từ để đóng mở cửa phịng khách sạn § Khi tạo thẻ cho phịng khách trước khơng thể vào phịng thẻ cũ v Mơ hình hóa khía cạnh tĩnh động hệ thống Nguyễn Thị Minh Tuyền Đặc tả hình thức Mơ tả vấn đề v Khách sạn sử dụng mã số khóa cho khách hàng § Thiết lập lại mã khóa để đảm bảo mã số khóa lưu thẻ trước khơng hoạt động § Bộ khóa đơn vị độc lập, đơn giản (sử dụng pin) với nhớ lưu giữ mã số v Thiết bị phần cứng phát sinh chuỗi số ngẫu nhiên v Bộ khóa mở mã số khóa mã số khóa § Nếu mã số khóa thiết lập, • mã số khóa trở thành mã số khóa • mã số khóa trước khơng chấp nhận Nguyễn Thị Minh Tuyền Đặc tả hình thức v Khơng u cầu giao tiếp lễ tân khóa cửa v Bằng cách § đồng hóa lễ tân khóa cửa khởi tạo lần đầu, § sử dụng phát sinh mã số ngẫu nhiên, § => lễ tân lưu giữ thơng tin mã khóa với cửa Nguyễn Thị Minh Tuyền Đặc tả hình thức Signatures Fields v Các signature: Time, Key, Room, Guest, FrontDesk v Key mã số khóa lưu thẻ từ v FrontDesk lưu ánh xạ phòng mã số khóa gần (nếu có) khách hàng v Mỗi phịng (khóa) có tập mã số khóa liên quan có xác mã số khóa tại thời điểm v Mỗi mã số khóa thuộc nhiều phịng Nguyễn Thị Minh Tuyền Đặc tả hình thức Signatures Fields module hotel open util/ordering [Time] as TO open util/ordering [Key] as KO sig Key {} sig Time {} Mỗi phịng có tập mã số khóa, mã số khóa sig Room { keys: set Key, currentKey: keys one -> Time } Nguyễn Thị Minh Tuyền Đặc tả hình thức Signatures Fields Khách giữ tập mã số khóa thời điểm sig Guest { keys: Key -> Time } FrontDesk gồm hai quan hệ: -lastKey: ánh xạ phòng tới mã số khóa gần -occupant: ánh xạ phịng tới khách -được gán vào phịng one sig FrontDesk { lastKey: (Room -> lone Key) -> Time, occupant: Room -> Guest -> Time } Nguyễn Thị Minh Tuyền Đặc tả hình thức Biểu đồ mơ hình cho hệ thống currentKey.! ? keys Room Key .lastKey.? keys. .occupant. Nguyễn Thị Minh Tuyền Guest Đặc tả hình thức Ràng buộc thao tác v Ràng buộc Room v Phát sinh khóa v Khách đến nhận phịng v Khách trả phịng v Trạng thái khởi tạo v Phát sinh trace Nguyễn Thị Minh Tuyền 10 Đặc tả hình thức Check-out one sig FrontDesk { lastKey: (Room -> lone Key) -> Time, occupant: (Room -> Guest) -> Time } pred checkout [ g: Guest, t,t': Time ]{ let occ = FrontDesk.occupant | { khách nhiều phòng some occ.t.g phịng khách tình trạng trống occ.t' = occ.t – (Room -> g) } frame condition FrontDesk.lastKey.t = FrontDesk.lastKey.t' noRoomChangeExcept [none, t, t’] noGuestChangeExcept [none, t, t’] } Nguyễn Thị Minh Tuyền 19 Đặc tả hình thức Thao tác check-in pred checkin [g: Guest, r: Room, k: Key, t, t': Time] v Điều kiện trước: § phịng tình trạng trống § Mã số khóa mã số mã số khóa trước chuỗi mã số v Điều kiện sau: § Khách hàng giữ mã số khóa trở thành người phịng § Mã số khóa trở thành mã số khóa phịng v Frame condition: § Khơng có thay đổi trừ quan hệ occupant quan hệ khách Nguyễn Thị Minh Tuyền 20 Đặc tả hình thức Check-in pred checkin [ g: Guest, r: Room, k: Key, t,t': Time ] { khách giữ mã số cửa g.keys.t' = g.keys.t + k let occ = FrontDesk.occupant | { phịng tình trạng trống no r.occ.t khách trở thành người phịng occ.t' = occ.t + r->g } let lk = FrontDesk.lastKey | { mã số cửa trở thành mã số khóa phịng lk.t' = lk.t ++ r->k mã số cửa mã số khóa khóa gần chuỗi mã số khố phịng k = nextKey [r.lk.t, r.keys] } noRoomChangeExcept [none, t, t’] noGuestChangeExcept [g, t, t’] } Nguyễn Thị Minh Tuyền 21 Đặc tả hình thức Phát sinh trace v Bước thỏa mãn điều kiện khởi tạo v Bất cặp thời gian có mối liên hệ với § thao tác entry § thao tác check-in § thao tác check-out Nguyễn Thị Minh Tuyền 22 Đặc tả hình thức Phát sinh trace fact Traces { init [TO/first] all t: Time - TO/last | let t' = TO/next [t] | some g: Guest, r: Room, k: Key | entry [g, r, k, t, t’] or checkin [g, r, k, t, t’] or checkout [g, t, t’] } Nguyễn Thị Minh Tuyền 23 Đặc tả hình thức Phân tích v Các trường hợp khơng có quyền vào phịng: § Nếu khách g vào phòng r thời điểm t thông tin lưu lễ tân r tình trạng trống thời điểm đó, sau g phải lưu lại với tình trạng người phịng r assert noBadEntry { all t: Time, r: Room, g: Guest, k: Key | let t' = TO/next [t], o = r.FrontDesk.occupant.t | (entry [g, r, k, t, t’] and some o) implies g in o } Nguyễn Thị Minh Tuyền 24 Đặc tả hình thức Phân tích check noBadEntry for but Room, Guest, Time v Đủ để kiểm tra vấn đề với guest room v Thời gian có bước thời gian cần thiết để chạy toán tử lần v Có phản ví dụ (file hotel1.als) Nguyễn Thị Minh Tuyền 25 Đặc tả hình thức T0: Trạng thái đầu v Ban đầu, mã số khóa Room Key0, mã số lưu FontDesk Nguyễn Thị Minh Tuyền 26 Đặc tả hình thức T1: Thao tác check-in v Guest1 thực check in phòng Room nhận mã số khóa Key1 v Thơng tin người phịng cập nhật FrontDesk v Key1 lưu lại mã khóa gần gán cho Room Nguyễn Thị Minh Tuyền 27 Đặc tả hình thức T2: Thao tác check-out v Guest1 thực check out, người phịng bị xóa Nguyễn Thị Minh Tuyền 28 Đặc tả hình thức T3: Thao tác check-in v Guest0 thực check in vào Room, nhận chìa khóa Key2; người phịng Room cập nhật v Key2 lưu mã số khóa gần gán cho Room Nguyễn Thị Minh Tuyền 29 Đặc tả hình thức T4: Thao tác enter v Guest1 đưa khóa Key1 vào mở phịng Room chấp nhận Nguyễn Thị Minh Tuyền 30 Đặc tả hình thức Ràng buộc cần thiết v Khơng có ràng buộc người khách check in việc vào phòng fact noIntervening { all t: Time - TO/last | let t’ = TO/next [t], t’’ = TO/next [t’] | all g: Guest, r: Room, k: Key | checkin [g, r, k, t, t’] implies ( entry [g, r, k, t’, t’’] or no t" ) } Nguyễn Thị Minh Tuyền 31 Đặc tả hình thức Phân tích v Kiểm tra lại lần nữa: check noBadEntry for but Room, Guest, Time v Khơng có phản ví dụ (file hotel2.als) v Để chắn hơn, ta tăng scope lên: check noBadEntry for but Room, Guest, Time v Khơng có phản ví dụ Nguyễn Thị Minh Tuyền 32 Đặc tả hình thức LOGO ... gán cho Room Nguyễn Thị Minh Tuyền 27 Đặc tả hình thức T2: Thao tác check-out v Guest1 thực check out, người phịng bị xóa Nguyễn Thị Minh Tuyền 28 Đặc tả hình thức T3: Thao tác check-in v Guest0... hotel1.als) Nguyễn Thị Minh Tuyền 25 Đặc tả hình thức T0: Trạng thái đầu v Ban đầu, mã số khóa Room Key0, mã số lưu FontDesk Nguyễn Thị Minh Tuyền 26 Đặc tả hình thức T1: Thao tác check-in v ... v Phát sinh trace Nguyễn Thị Minh Tuyền 10 Đặc tả hình thức Ràng buộc Room v Mỗi mã số khóa thuộc nhiều phịng fact { all k: Key | lone keys.k } Nguyễn Thị Minh Tuyền 11 Đặc tả hình thức Phát sinh