Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 50 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
50
Dung lượng
1 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Phạm Ngọc Thắng ĐẶC TẢ VÀ KIỂM CHỨNG PHẦN MỀM SỬ DỤNG CafeOBJ KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Cơng nghệ thơng tin HÀ NỘI - 2010 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Phạm Ngọc Thắng ĐẶC TẢ VÀ KIỂM CHỨNG PHẦN MỀM SỬ DỤNG CafeOBJ KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Cơng nghệ thơng tin Cán hướng dẫn: TS Nguyễn Việt Hà Cán đồng hướng dẫn: ThS Đặng Việt Dũng HÀ NỘI - 2010 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đặc tả kiểm chứng phần mềm sử dụng CafeOBJ Phạm Ngọc Thắng Lời cảm ơn Em xin bày tỏ lòng cảm ơn sâu sắc tới TS Nguyễn Việt Hà ThS Đặng Việt Dũng hướng dẫn, bảo tận tình, với lời khuyên quý giá thầy q trình em học tập thực khóa luận Em xin gửi lời cảm ơn tới thầy cô giảng dạy Đại học Công nghệ - Đại học Quốc Gia Hà Nội trang bị cho em kiến thức quý báu thời gian em học trường Đó tiền đề sở để em thực tốt khóa luận Em xin gửi lời cảm ơn tới thầy cô môn Công nghệ phần mềm tạo điều kiện cho em làm việc môn với đầy đủ trang thiết bị cho em học tập làm việc Cảm ơn bạn bè, người thân động viên, giúp đỡ mặt tinh thần mặt vật chất thời gian em thực khóa luận Hà nội, tháng năm 2010 Sinh viên thực Phạm Ngọc Thắng i LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đặc tả kiểm chứng phần mềm sử dụng CafeOBJ Phạm Ngọc Thắng Tóm tắt Cơng nghệ thơng tin ngành phát triển mạnh mẽ nói chung, với cơng nghệ phần mềm nói riêng Nhằm tạo sản phẩm phần mềm đảm bảo chất lượng tính xác cao Nên việc đặc tả kiểm chứng phần mềm quan trọng nhiều lĩnh vực sử dụng phần mềm, đặc biệt ngành cơng nghệ cao địi hỏi xác cao phần mềm Trong khuôn khổ luận văn tốt nghiệp em sâu vào phương pháp đặc tả kiểm chứng phần mềm sử dụng ngôn ngữ CafeOBJ đặc biệt áp dụng phương pháp cho hệ thống lị vi sóng Cùng với việc học tập nghiên cứu làm khóa luận tốt nghiệp để tiếp cận với thực tế em thu số kết định Thông qua đó, với kiến thức sở ngồi ghế nhà trường, em tìm hiểu thêm tiến việc phát triển phần mềm giới nói chung Việt Nam nói riêng ii LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đặc tả kiểm chứng phần mềm sử dụng CafeOBJ Phạm Ngọc Thắng Mục lục Chương Giới thiệu 1.1 Đặt vấn đề .1 1.2 Nội dung nghiên cứu khóa luận .1 1.3 Cấu trúc khóa luận Chương Phương pháp hình thức 2.1 Phân loại 2.2 Sử dụng 2.2.1 Đặc tả hình thức 2.2.2 Phát triển 2.2.3 Kiểm chứng 2.2.3.1 Chứng minh người .5 2.2.3.1 Chứng minh tự động Chương Ngôn ngữ CafeOBJ 3.1 Giới thiệu 3.2 Đặc tả kiểm chứng CafeOBJ 3.2.1 Ví dụ .9 3.2.2 Đặc tả số tự nhiên 10 3.2.3 Đặc tả thuộc tính 10 3.2.4 Kiểm chứng thuộc tính 10 Chương Khái quát OTS toán QLOCK 13 4.1 Giới thiệu OTS 13 4.2 OTS (Observation transition system) 14 4.3 Mô tả toán QLOCK 17 iii LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đặc tả kiểm chứng phần mềm sử dụng CafeOBJ Phạm Ngọc Thắng 4.4 Đặc tả QLOCK với OTS .17 4.5 Đặc tả thuộc tính kiểm chứng đặc tả 21 Chương Đặc tả kiểm chứng hệ thống lị vi sóng .24 5.1 Hệ thống lị vi sóng .24 5.1.1 Mô tả hệ thống 24 5.1.2 Mô tả thuộc tính 26 5.2 Mơ hình hóa hệ thống OTS/CafeObj 26 5.2.1 Mơ hình hóa mơ tả hệ thống OTS 26 5.2.2 Đặc tả hình thức hệ thống CafeObj 28 5.2.3 Không gian trạng thái hệ thống đặc tả hình thức .29 5.2.4 Các thuộc tính mơ tả 29 5.3 Kiểm chứng phương pháp quy nạp 33 5.3.1 Các bước quy nạp 33 5.3.2 Kiểm chứng phương pháp quy nạp CafeOBJ .33 5.4 Kiểm chứng phương pháp tìm kiếm trạng thái .33 Chương Kết luận .36 iv LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đặc tả kiểm chứng phần mềm sử dụng CafeOBJ Phạm Ngọc Thắng Danh mục hình vẽ Hình 3.1: Mơ đun EXAMPLE CafeOBJ .8 Hình 3.2: Đặc tả module PNAT cho ví dụ .9 Hình 3.3: Đặc tả thuộc tính cho điều kiện (*) 10 Hình 3.4: Kiểm chứng quy nạp với module ISTEP 11 Hình 3.5: Kiểm chứng quy nạp cho đặc tả .11 Hình 4.1: Thuật tốn toán QLOCK 17 Hình 4.2: Kiểu biến tổng quát cho hàng đợi QUEUE 18 Hình 4.3: Hàng đợi QUEUE cho tốn QLOCK 19 Hình 4.4: Đặc tả cho hệ thống QLOCK .20 Hình 4.5: Hành động try hệ thống QLOCK 20 Hình 4.6: Mơ đun INV ISTEP dùng để kiểm chứng 21 Hình 4.7: Kiểm chứng với trường hợp (1) .22 Hình 4.8: Kiểm chứng với trường hợp (2) .22 Hình 4.9: Kiểm chứng với bổ đề 23 Hình 5.1: Cấu trúc Kripke Lị vi sóng [1] 25 Hình 5.2: Mơ hình lị vi sóng .27 Hình 5.3: Đặc tả lị vi sóng CafeOBJ .28 Hình 5.4: Mơ đun LABEL CafeOBJ 29 Hình 5.5: Hình thức hóa khơng gian trạng thái hệ thống 29 Hình 5.6: Hình thức hóa thuộc tính 30 Hình 5.7: Đặc tả thuộc tính CafeOBJ .31 Hình 5.8: Mơ đun ISTEP CafeOBJ 32 v LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Chương 1: Giới thiệu Phạm Ngọc Thắng Chương Giới thiệu 1.1 Đặt vấn đề Đặc tả kiểm chứng hình thức pha quan trọng nhằm nâng cao độ tin cậy chất lượng phần mềm sử dụng phương pháp hình thức Đối với hệ thống yêu cầu độ tin cậy cao hệ thống điều khiển lò phản ứng hạt nhân hay điều khiển tên lửa, … Các phương pháp đặc tả kiểm chứng hình thức áp dụng cho hệ thống trước triển khai chúng Trong việc kiểm thử phần mềm (software testing) lỗi phát khơng thể phần mềm hồn tồn khơng có lỗi, phương pháp kiểm chứng đảm bảo hệ thống khơng có lỗi sau kiểm chứng đắn Hiện nay, có nhiều phương pháp công cụ hỗ trợ cho việc đặc tả kiểm chứng phần mềm OBJ [14], Maude [14], CafeOBJ [13], SPIN [15], SMV [17], NuSMV [16], … Mỗi phương pháp có ưu nhược điểm riêng bị hạn chế số hệ thống định Mục đích khóa luận tìm hiểu phương pháp hình thức (formal method) phương pháp đặc tả kiểm chứng hình thức phần mềm CafeOBJ Từ mô tả hệ thống cần kiểm chứng, cần đặc tả hệ thống cách hình thức ngơn ngữ CafeOBJ Các thuộc tính cần kiểm chứng hệ thống đặc tả cách tương tự Sử dụng ngữ nghĩa cú pháp ngôn ngữ CafeOBJ để thể đặc tả hệ thống đặc tả thuộc tính hệ thống cần kiểm chứng dạng hình thức từ phát biểu ngôn ngữ tự nhiên 1.2 Nội dung nghiên cứu khóa luận Bài tốn thực khóa luận tốn đặc tả kiểm chứng hệ thống lị vi sóng sử dụng ngơn ngữ CafeOBJ Đây hệ thống điển hình trình bày q trình mơ hình hóa hệ thống giúp cho công việc viết đặc tả kiểm chứng thuộc tính chúng đơn giản Nhằm kiểm chứng hệ thống phương pháp quan tâm viết đặc tả kiểm chứng CafeOBJ LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Chương 1: Giới thiệu Phạm Ngọc Thắng theo tư tưởng quy nạp toán học, với phương pháp đặc tả kiểm chứng hệ thống vơ hạn trạng thái cách xác (trong với kiểm chứng mơ hình (model checking) kiểm chứng hữu hạn trạng thái hệ thống) Ngoài CafeOBJ hộ trợ kiểm chứng phương pháp tìm kiếm (searching) khơng gian trạng thái dành cho hệ thống hữu hạn trạng thái Đặc tả cho kiểm chứng với đặc tả hệ thống đặc tả thuộc tính sử dụng để kiểm chứng hệ thống Kết trình kiểm chứng cho biết đặc tả thỏa mãn thuộc tính cần kiểm chứng hay khơng 1.3 Cấu trúc khóa luận Các phần cịn lại khóa luận có cấu trúc sau: Chương trình bày lý thuyết phương pháp hình thức, bao gồm khái niệm bản, kỹ thuật sử dụng đặc tả kiểm chứng phần mềm Chương trình bày ngơn ngữ CafeOBJ, kỹ thuật đặc tả kiểm chứng phần mềm phương pháp hình thức sử dụng CafeOBJ Chương trình bày phương pháp chuyển dịch hệ thống trực quan (Observation transition system), phương pháp quan trọng nhằm đơn giản hóa việc đặc tả kiểm chứng phần mềm, kèm theo ví dụ hệ thống QLOCK sử dung OTS/CafeOBJ Chương trình bày “hệ thống Lị Vi Sóng” đặc tả kiểm chứng sử dụng OTS/CafeOBJ, với hai phương pháp kiểm chứng khác gồm quy nạp tìm kiếm (searching) trạng thái Chương tóm tắt kết đạt được, kết luận, hạn chế hướng nghiên cứu phát triển tương lai LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Chương 2: Phương pháp hình thức Phạm Ngọc Thắng Chương Phương pháp hình thức Trong ngành khoa học máy tính, phương pháp hình thức kỹ thuật toán học cho việc đặc tả, phát triển kiểm chứng hệ thống phần mềm phần cứng Cách tiếp cận đặc biệt quan trọng hệ thống cần có tính tồn vẹn cao, chẳng hạn hệ thống điều khiển lò phản ứng hạt nhân hay điều khiển tên lửa, an tồn hay an ninh có vai trị quan trọng, để góp phần đảm bảo q trình phát triển hệ thống khơng có lỗi Các phương pháp hình thức đặc biệt hiệu giai đoạn đầu trình phát triển (tại mức yêu cầu đặc tả hệ thống), sử dụng cho q trình phát triển hồn chỉnh hệ thống 2.1 Phân loại Các phương pháp hình thức sử dụng nhiều mức: Mức 0: Đặc tả hình thức thực chương trình phát triển từ đặc tả cách khơng hình thức Trong nhiều trường hợp, cách lựa chọn hiệu mặt chi phí Mức 1: Sử dụng phát triển kiểm chứng hình thức để tạo chương trình theo quy trình hình thức Ví dụ, thực chứng minh tính chất trình tinh chỉnh từ đặc tả hình thức tới chương trình Đây lựa chọn phù hợp hệ thống yêu cầu tính tồn vẹn cao với tiêu chí vè an toàn an ninh Mức 2: Sử dụng chứng minh định lý (theorem prover) để thực chứng minh hình thức hồn tồn kiểm chứng bằn máy móc Việc địi hỏi chi phí cao đáng lựa chọn thực tiễn phí tổn cho lỗi sai cao Cùng với ngữ nghĩa hình thức ngơn ngữ lập trình, phương pháp hình thức phân loại tương đối sau: Ngữ nghĩa ký hiệu (Denotational semantics), ý nghĩa hệ thống biểu diễn lý thuyết toán học miền xác định Lợi điểm phương pháp phụ thuộc vào chất hiểu rõ miền xác định để từ đem lại LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Chương 5: Đặc tả kiểm chứng hệ thống lị vi sóng Phạm Ngọc Thắng mod! LABEL { [LabelConst < Label] Khai báo thuộc Kiểu LabelConst ops st cl he err : -> LabelConst sư dụng phương thức _=_ nhằm định nghĩa quan hệ nhãn st, cl, he, err pr(EQL) vars Lc1 Lc2 : LabelConst eq (Lc1 = Lc2) = (Lc1 == Lc2) } Hình 5.4: Mơ đun LABEL CafeOBJ Từ đặc tả hệ thống CafeOBJ mô đun MO với kế thừa số thuộc tính phương thức mơ đun LABEL hành động hệ thống mơ tả chương trình 5.2.3 Khơng gian trạng thái hệ thống đặc tả hình thức Với hệ thống Lị vi sống mơ tả cấu trúc Kripke Hình 5.1, thấy dịch chuyển hệ thống từ trạng thái sang trạng thái khác tác động hành động {warm, cook, done, open, close, reset, start, } Tập hợp tất trạng thái khơng gian trạng thái hệ thống Lị vi sóng Chúng hình thức hóa với RMO khơng gian trạng thái hệ thống MO đặc tả hình thức CafeObj RMO định nghĩa quy nạp sau: RMO = { init } { warm(s) | s RMO } { cook(s) | s RMO } { done(s) | s RMO } { open(s) | s RMO } { close(s) | s RMO } { reset(s) | s RMO } Hình 5.5: Hình thức hóa khơng gian trạng thái hệ thống 29 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Chương 5: Đặc tả kiểm chứng hệ thống lị vi sóng Phạm Ngọc Thắng 5.2.4 Các thuộc tính mơ tả Từ thuộc tính mơ tả ngơn ngữ tự nhiên phần 5.1.2 Chúng ta đặc tả hình thức chúng ngôn ngữ CafeObj mô đun INV, với thừa kế thuộc tính phương thức mơ đun MO đặc tả thuộc tính biểu diễn hàm CafeOBJ Trong đó, inv1 đặc tả thuộc tính hệ thống, inv2 đặc tả thuộc tính hệ thống, inv3 đặc tả thuộc tính hệ thống, inv4 đặc tả thuộc tính hệ thống inv5 đặc tả thuộc tính hệ thống, với đầu vào trạng thái không gian trạng thái Các hàm kiểm tra tính đắn đặc tả hệ thống chương trình có thỏa mãn thuộc tính mơ tả hay khơng Việc triển khai CafeOBJ mô tả chi tiết Hình 5.7 Hình thức hóa việc chứng minh cho thuộc tính đặc tả mơ tả cơng thức tốn học sau: INV1 |= sRMO inv1(s) INV2 |= sRMO inv2(s) INV3 |= sRMO inv3(s) INV4 |= sRMO inv4(s) INV5 |= sRMO inv5(s) Hình 5.6: Hình thức hóa thuộc tính 30 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Chương 5: Đặc tả kiểm chứng hệ thống lị vi sóng Phạm Ngọc Thắng mod INV { pr(MO) op s : -> Sys trạng thái không gian trạng thái Tên thuộc tính biểu diễn CafeOBJ pred inv1 : Sys tương dương với khai báo : inv1 : Sys -> bool pred inv2 : Sys tương dương với khai báo : inv2 : Sys -> bool pred inv3 : Sys tương dương với khai báo : inv3 : Sys -> bool pred inv4 : Sys tương dương với khai báo : inv4 : Sys -> bool pred inv5 : Sys tương dương với khai báo : inv5 : Sys -> bool biến CafeOBJ vars S : Sys định nghĩa thuộc tính inv1 cho thuộc tính eq inv1(S) = (((lb(S,st) == false) and (lb(S,cl) == true) and (lb(S,he) == false)) implies (c-done(cook(warm(start(S)))) and S = done(cook(warm(start(S)))))) inv2 cho thuộc tính eq inv2(S) = (((lb(S,st) == true) and (lb(S,cl) == true) and (lb(S,he) == false) and (lb(S,err) == false)) implies (c-done(cook(warm(S))))) inv3 cho thuộc tính eq inv3(S) = (((lb(S,st) == true) and (lb(S,cl) == true) and (lb(S,err) == true)) implies ((not c-start1(S)) and (S = start(S)))) inv4 cho thuộc tính eq inv4(S) = (((lb(S,st) == true) and (lb(S,cl) == true) and (lb(S,he) == false) and (lb(S,err) == true)) implies (c-done(cook(warm(start(reset(S))))) and reset(S) = done(cook(warm(start(reset(S))))))) inv5 cho thuộc tính eq inv5(S) = ((lb(S,cl) == false) implies ((not c-start1(S)) and (lb(start(S),err) == true))) } kết thúc module INV Hình 5.7: Đặc tả thuộc tính CafeOBJ Để chứng minh cho thuộc tính bất biến phương pháp quy nạp không gian trạng thái RMO, khai báo theo mô đun gọi ISTEP CafeOBJ sau: 31 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Chương 5: Đặc tả kiểm chứng hệ thống lò vi sóng Phạm Ngọc Thắng mod ISTEP { pr(INV) trạng thái sau trạng thái s op s' : -> Sys khai báo công thức để chứng minh pred istep1 : for inv1 pred istep2 : for inv2 pred istep3 : for inv3 pred istep4 : for inv4 pred istep5 : for inv5 công thức để chứng minh trường hợp quy nạp eq istep1 = inv1(s) implies inv1(s') eq istep2 = inv2(s) implies inv2(s') eq istep3 = inv3(s) implies inv3(s') eq istep4 = inv4(s) implies inv4(s') eq istep5 = inv5(s) implies inv5(s') } kết thúc module ISTEP Hình 5.8: Mơ đun ISTEP CafeOBJ 32 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Chương 5: Đặc tả kiểm chứng hệ thống lị vi sóng Phạm Ngọc Thắng 5.3 Kiểm chứng phương pháp quy nạp 5.3.1 Các bước quy nạp Các bước chứng minh phương pháp quy nạp sử dụng để kiểm chứng thuộc tính bất biến cho hệ thống lị vi sóng với thuộc tính invI (I = 1, 2, 3, 4,5) sau: Phần sở Kiểm tra thuộc tính invI thỏa mãn với trạng thái khởi tạo init Phần quy nạp s mộ trạng thái hệ thống, Chúng ta cho thuộc tính invI thỏa mãn trạng thái s, phải kiểm tra thuộc tính có thỏa mãn với trạng thái trạng thái s với hành động hệ thống sau: open, close, start, reset, warm, cook, and done Nếu tất việc kiểm tra trả giá trị (true) việc kiểm chứng thuộc tính bất biến hệ thống hồn thành 5.3.2 Kiểm chứng phương pháp quy nạp CafeOBJ Chúng ta triển khai bước quy nạp cho việc kiểm chứng đặc tả mô tả theo bước kiểm chứng CafeOBJ Khi chạy tất chúng CafeOBJ, tất trả giá trị (true) Điều có nghĩa tât thuộc tính thỏa mãn hệ thống Từ hồn thành việc kiểm chứng thuộc tính bất biến hệ thống dựa đặc tả hình thức CafeOBJ mô tả chi tiết phần phụ lục A 5.4 Kiểm chứng phương pháp tìm kiếm trạng thái Kiểm chứng CafeOBJ việc tìm kiếm (searching) [2], cho thuộc tính mơ tả, kỹ thuật cố gắng để áp dụng dịch chuyển trạng thái quy tắc dịch chuyển trạng thái hệ thống để tới trạng thái Từ trạng thái khởi tạo init, tât trạng thái đạt thỏa mãn thuộc tính xem thuộc tính chứng minh Tuy nhiên, có vài tuần hồn khơng gian trạng thái Các tuần hồn làm cho việc kiểm chứng phương pháp tìm kiếm dẫn đến 33 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Chương 5: Đặc tả kiểm chứng hệ thống lị vi sóng Phạm Ngọc Thắng vơ hạn Để giải vấn đề này, định nghĩa phương thức sử dụng cho để kiểm tra hai trạng thái hệ thống “_=ob=_” Phương thức sử dụng để xác định trạng thái tìm kiếm có sẵn cho việc tìm kiếm Bằng cách bỏ qua vòng tuần hồn khơng gian trạng thái việc tìm kiếm nằm tiến trình Quy tắc dịch chuyển trạng thái hệ thống phương thức đặc tả CafeOBJ với mô đun MOTrans sau: Đặc tả module MOTrans mod! MOTrans { pr(MO) [ Config ] op : Sys -> Config var S : Sys chuyển đổi quy tắc chuyển đổi ctrans [warm] : < S > => < warm(S) > if c-warm(S) ctrans [cook] : < S > => < cook(S) > if c-cook(S) ctrans [done] : < S > => < done(S) > if c-done(S) ctrans [open] : < S > => < open(S) > if c-open(S) ctrans [close] : < S > => < close(S) > if c-close(S) ctrans [start1] : < S > => < start(S) > if c-start1(S) ctrans [start2] : < S > => < start(S) > if c-start2(S) ctrans [reset] : < S > => < reset(S) > if c-reset(S) vị từ dụng để xác định trạngt thái tìm kiếm pred _=ob=_ : Config Config {memo} vars S1 S2 : Sys eq (< S1 > =ob= < S2 >) = (S1 = S2) } Kết thúc mô đun Hình 5.9: Mơ đun MOTrans CafeOBJ 34 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Chương 5: Đặc tả kiểm chứng hệ thống lị vi sóng Phạm Ngọc Thắng Để kiểm chứng thuộc tính mơ tả phương pháp tìm kiếm CafeOBJ, thuộc tính đặc tả riêng mơ đun Như có mơ đun tương ứng với thuộc tính mơ tả hình 5.7 Với thuộc tính, từ trạng thái đầu init, tất trạng thái đạt thỏa mãn thuộc tính xem thuộc tính chứng minh Chúng ta chứng minh khơng có trạng thái không gian trạng thái không thỏa mãn với thuộc tính Khi chạy tất chúng CafeOBJ, tất kết trả CafeOBJ “false” Nghĩa tất thuộc tính thỏa mãn hệ thống Chúng ta triển khai tiến trình kiểm chứng phương pháp tìm kiếm để chứng minh cho thuộc tính mơ tả phần phụ lục B 35 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phục lục Phạm Ngọc Thắng Chương Kết luận Chúng ta đặc tả kiểm chứng hệ thống Lị vi sóng với năm thuộc tính nêu Cả hai kỹ thuật kiểm chứng quy nạp tìm kiếm (searching) CafeOBJ áp dụng để chứng minh thuộc tính hệ thống thỏa mãn hệ thống mơ tả Bởi mơ hình hóa hệ thống tốn trạng thái hữu hạn, việc xử lý kiểm chứng cách tìm kiếm hiểu việc kiểm chứng phương pháp quy nạp Tuy nhiên, kỹ thuật quy nạp hiệu kỹ thuật tìm kiếm mơ hình hệ thống vơ hạn Việc viết chứng minh cho việc kiểm chứng phương pháp quy nạp mô trả phần 5.3 đơn giản Sau chạy chứng minh cho tất thuộc tính mơ đun CafeOBJ, tất chúng trả giá trị “true” mà không cần bổ đề (lemma) Đây khơng có nghĩa việc kiểm chứng hệ thống phương pháp quy nạp CafeOBJ đơn giản Chúng ta may toán mơ hình hệ thống hữu hạn trạng thái Cho mơ hình hệ thống vơ hạn trạng thái, có nhiều trường hợp cho kết với giá trị “true” Những trường hợp trả giá trị “true” với vài bổ đề (lemmas) Việc tìm kiếm bổ đề chứng minh chúng khó việc thú vị Trong trình này, ảnh hưởng việc kiểm chứng quy nạp sử dụng Và khơng giải kỹ thuật kiểm chứng mơ hình (model checking) Viết chứng minh cho việc kiểm chứng phương pháp tìm kiếm trạng thái mô tả phần 5.4 hiệu cho mơ hình trạng thái hữu hạn Trong việc sử dụng phương pháp tìm kiếm việc kiểm chứng cho mơ hình trạng thái vơ hạn, khơng tìm kiếm hết trạng thái thỏa mãn với thuộc tính hệ thống nêu 36 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phục lục Phạm Ngọc Thắng Phục lục A: kiểm chứng quy nạp Đối với inv1 > I sở open INV red inv1(init) > init close > II quy nạp > open(s) open ISTEP trạng thái eq s' = open(s) kiểm chứng red istep1 close > close(s) open ISTEP trạng thái eq s' = close(s) kiểm chứng red istep1 close > start(s) open ISTEP trạng thái eq s' = start(s) kiểm tra red istep1 close > reset(s) open ISTEP trạng thái eq s' = reset(s) kiểm tra red istep1 close > warm(s) open ISTEP trạng thái eq s' = warm(s) red istep1 kiểm tra close > cook(s) open ISTEP trạng thái eq s' = cook(s) kiểm tra red istep1 close > done(s) open ISTEP trạng thái eq s' = done(s) kiểm tra red istep1 close Khi chạy CafeOBJ, tất trả “true” 37 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phục lục Phạm Ngọc Thắng Đối với inv2 > I bước cở sở > init open INV red inv2(init) close > II bước quy nạp > open(s) open ISTEP trạng thái eq s' = open(s) kiểm tra red istep2 close > close(s) open ISTEP trạng thái eq s' = close(s) kiểm tra red istep2 close > start(s) open ISTEP trạng thái eq s' = start(s) kiểm tra red istep2 close > reset(s) open ISTEP trạng thái eq s' = reset(s) kiểm tra red istep2 close > warm(s) open ISTEP trạng thái eq s' = warm(s) kiểm tra red istep2 close > cook(s) open ISTEP trạng thái eq s' = cook(s) kiểm tra red istep2 close > done(s) open ISTEP trạng thái eq s' = done(s) kiểm tra red istep2 close Đối với inv3 > I bước sở > init open INV red inv3(init) close > II bước quy nạp > open(s) open ISTEP trạng thái eq s' = open(s) kiểm tra red istep3 close > close(s) open ISTEP trạng thái eq s' = close(s) kiểm tra red istep3 close > start(s) open ISTEP trạng thái eq s' = start(s) kiểm tra red istep3 close > reset(s) open ISTEP trạng thái eq s' = reset(s) kiểm tra red istep3 close > warm(s) open ISTEP trạng thái eq s' = warm(s) kiểm tra red istep3 close > cook(s) open ISTEP trạng thái eq s' = cook(s) kiểm tra red istep3 close > done(s) open ISTEP trạng thái eq s' = done(s) kiểm tra red istep3 close Khi chạy CafeOBJ, tất trả “true” Khi chạy CafeOBJ, tất trả “true” 38 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phục lục Phạm Ngọc Thắng Đối với inv4 > I bước sở > init open INV red inv4(init) close > II bước quy nạp > open(s) open ISTEP trạng thái eq s' = open(s) kiểm tra red istep4 close > close(s) open ISTEP trạng thái tiêp theo eq s' = close(s) kiểm tra red istep4 close > start(s) open ISTEP trạng thái eq s' = start(s) kiểm tra red istep4 close > reset(s) open ISTEP trạng thái eq s' = reset(s) kiểm tra red istep4 close > warm(s) open ISTEP trạng thái eq s' = warm(s) kiểm tra red istep4 close > cook(s) open ISTEP trạng thái eq s' = cook(s) kiểm tra red istep4 close > done(s) open ISTEP trạng thái eq s' = done(s) kiểm tra red istep4 close Đối với inv5 > I bước sở > init open INV red inv5(init) close > II bước quy nạp > open(s) open ISTEP trạng thái eq s' = open(s) kiểm tra red istep5 close > close(s) open ISTEP trạng thái eq s' = close(s) kiểm tra red istep5 close > start(s) open ISTEP trạng thái eq s' = start(s) kiểm tra red istep5 close > reset(s) open ISTEP trạng thái eq s' = reset(s) kiểm tra red istep5 close > warm(s) open ISTEP trạng thái eq s' = warm(s) kiểm tra red istep5 close > cook(s) open ISTEP trạng thái eq s' = cook(s) kiểm tra red istep5 close > done(s) open ISTEP trạng thái eq s' = done(s) kiểm tra red istep5 close Khi chạy CafeOBJ, tất trả “true” Khi chạy CafeOBJ, tất trả “true” 39 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phục lục Phạm Ngọc Thắng Phục lục B: Kiểm chứng searching open (MOTrans + INV1) Kiểm tra tính đắn thuộc tính inv1 red < init > =(*,*)=>* < S:Sys > suchThat (not inv1(S)) withStateEq (C1:Config =ob= C2:Config) close CafeOBJ> open (MOTrans + INV1) opening module MOTrans + INV1 done %MOTrans + INV1> this is a proof that there is no counter examples for the property inv1 %MOTrans + INV1> red < init > =(*,*)=>* < S:Sys > suchThat (not inv1(S)) withStateEq (C1:Config =ob= C2:Config) reduce in %MOTrans + INV1 : ((< init >) = ( * , * ) =>* (< S >) suchThat (not inv1(S)) withStateEq (C1 =ob= C2)):Bool ** No more possible transitions (false):Bool (0.016 sec for parse, 2760 rewrites(0.187 sec), 4636 matches, 1855 memo hits) 40 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phục lục Phạm Ngọc Thắng open (MOTrans + INV2) Kiểm tra tính đắn thuộc tính inv2 red < init > =(*,*)=>* < S:Sys > suchThat (not inv2(S)) withStateEq (C1:Config =ob= C2:Config) close CafeOBJ> open (MOTrans + INV2) opening module MOTrans + INV2 done %MOTrans + INV2> this is a proof that there is no counter examples for the property inv2 %MOTrans + INV2> red < init > =(*,*)=>* < S:Sys > suchThat (not inv2(S)) withStateEq (C1:Config =ob= C2:Config) reduce in %MOTrans + INV2 : ((< init >) = ( * , * ) =>* (< S >) suchThat (not inv2(S)) withStateEq (C1 =ob= C2)):Bool ** No more possible transitions (false):Bool (0.000 sec for parse, 2111 rewrites(0.125 sec), 3507 matches, 1544 memo hits) open (MOTrans + INV3) Kiểm tra tính đắn thuộc tính inv3 red < init > =(*,*)=>* < S:Sys > suchThat (not inv3(S)) withStateEq (C1:Config =ob= C2:Config) close CafeOBJ> open (MOTrans + INV3) opening module MOTrans + INV3 done %MOTrans + INV3> this is a proof that there is no counter examples for the property inv3 %MOTrans + INV3> red < init > =(*,*)=>* < S:Sys > suchThat (not inv3(S)) withStateEq (C1:Config =ob= C2:Config) reduce in %MOTrans + INV3 : ((< init >) = ( * , * ) =>* (< S >) suchThat (not inv3(S)) withStateEq (C1 =ob= C2)):Bool ** No more possible transitions (false):Bool (0.000 sec for parse, 2084 rewrites(0.140 sec), 3504 matches, 1560 memo hits) 41 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phục lục Phạm Ngọc Thắng open (MOTrans + INV4) Kiểm tra tính đắn thuộc tính inv4 red < init > =(*,*)=>* < S:Sys > suchThat (not inv4(S)) withStateEq (C1:Config =ob= C2:Config) close CafeOBJ> open (MOTrans + INV4) opening module MOTrans + INV4 done %MOTrans + INV4> this is a proof that there is no counter examples for the property inv4 %MOTrans + INV4> red < init > =(*,*)=>* < S:Sys > suchThat (not inv4(S)) withStateEq (C1:Config =ob= C2:Config) reduce in %MOTrans + INV4 : ((< init >) = ( * , * ) =>* (< S >) suchThat (not inv4(S)) withStateEq (C1 =ob= C2)):Bool ** No more possible transitions (false):Bool (0.000 sec for parse, 3349 rewrites(0.140 sec), 5833 matches, 2064 memo hits) open (MOTrans + INV5) Kiểm tra tính đắn thuộc tính inv5 red < init > =(*,*)=>* < S:Sys > suchThat (not inv5(S)) withStateEq (C1:Config =ob= C2:Config) close CafeOBJ’s output CafeOBJ> open (MOTrans + INV5) opening module MOTrans + INV5 done %MOTrans + INV5> this is a proof that there is no counter examples for the property inv5 %MOTrans + INV5> red < init > =(*,*)=>* < S:Sys > suchThat (not inv5(S)) withStateEq (C1:Config =ob= C2:Config) reduce in %MOTrans + INV5 : ((< init >) = ( * , * ) =>* (< S >) suchThat (not inv5(S)) withStateEq (C1 =ob= C2)):Bool ** No more possible transitions (false):Bool (0.000 sec for parse, 1972 rewrites(0.109 sec), 3350 matches, 1452 memo hits) 42 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Tài liệu tham khảo Phạm Ngọc Thắng Tài liệu tham khảo [1] Edmund M Clarke, Jr Orna Grumberg, Doron A Peled, Model Checking MIT Press, (1999) [2] Kokichi FUTATSUGI , Formal Method’s Lectures, http://www.jaist.ac.jp/~kokichi/class/i613-0712/ [3] Kokichi FUTATSUGI, Specification and Verification of Highly Reliable Systems’s Lectures, http://www.jaist.ac.jp/~kokichi/class/i636-0612/ [4] Kokichi FUTATSUGI, Verifying Specifications with Proof Scores in CafeOBJ, The 21st IEEE International Conference on Automated Software Engineering (ASE'06), 2006 [5] A.T Nakagawa – T Sawada – K Futatsugi “CafeOBJ User’s Manual”, 1999 [6] K Ogata and K Futatsugi “Rewriting-Based Verification of Authentication Protocols” , 2003 [7] K L McMillan “The SMV system*” [8] Kazuhiro Ogata and Kokichi Futatsugi Proof scores in the OTS/CafeOBJ method In Proc Of The 6th IFIP WG6.1 International Conference on Formal Methods for Open Object-Based Distributed Systems (FMOODS 2003) Springer, 2003 [9] K Ogata and K Futatsugi Modeling and verification of distributed real-time systems based on CafeOBJ, in: ASE ’01 (2001) [10] K Ogata and K Futatsugi Formal analysis of Suzuki Kasami distributed mutual exclusion algorithm In: FMOODS 02 (2002) [11] K Futatsugi and K Ogata Rewriting can verify distributed real-time system, in: Int’l Symposium on Rewriting, Proof, and Computation, 2001 [12] Diaconescu, R and K Futatsugi, Behavioural coherence in object-oriented algebraic specification, J.UCS (2006) [13] CafeOBJ official homepage, http://www.ldl.jaist.ac.jp/cafeobj/ [14] http://cseweb.ucsd.edu/users/goguen/sys/obj.html [15] http://spinroot.com/spin/whatispin.html [16] http://nusmv.irst.itc.it/ [17] http://www.cs.cmu.edu/~modelcheck/smv.html 43 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ... luanvanchat@agmail.com Đặc tả kiểm chứng phần mềm sử dụng CafeOBJ Phạm Ngọc Thắng 4.4 Đặc tả QLOCK với OTS .17 4.5 Đặc tả thuộc tính kiểm chứng đặc tả 21 Chương Đặc tả kiểm chứng hệ thống... hữu hạn trạng thái Đặc tả cho kiểm chứng với đặc tả hệ thống đặc tả thuộc tính sử dụng để kiểm chứng hệ thống Kết trình kiểm chứng cho biết đặc tả thỏa mãn thuộc tính cần kiểm chứng hay khơng 1.3... phương pháp đặc tả kiểm chứng hình thức phần mềm CafeOBJ Từ mô tả hệ thống cần kiểm chứng, cần đặc tả hệ thống cách hình thức ngơn ngữ CafeOBJ Các thuộc tính cần kiểm chứng hệ thống đặc tả cách tương