1. Trang chủ
  2. » Kinh Doanh - Tiếp Thị

Kiểm chứng mô hình ứng dụng cho hệ thống thang máy

65 680 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 65
Dung lượng 1,08 MB

Nội dung

TRƢỜNG ĐẠI HỌC SƢ PHẠM HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN TRƢƠNG THỊ NGỌC BÍCH KIỂM CHỨNG MÔ HÌNH ỨNG DỤNG CHO HỆ THỐNG THANG MÁY KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC Chuyên ngành: Sƣ phạm Tin học Ngƣời hƣớng dẫn khoa học ThS NGUYỄN THỊ LOAN HÀ NỘI – 2017 LỜI CẢM ƠN Lời em xin bày tỏ lòng biết ơn sâu sắc tới ThS Nguyễn Thị Loan, ngƣời tận tình giúp đỡ, bảo em suốt trình học tập làm khóa luận Em xin bày tỏ lòng biết ơn tới thầy, cô giáo Khoa Công nghệ Thông tin – Trƣờng Đại học Sƣ phạm Hà Nội Các thầy cô dạy bảo, dẫn chúng em tạo điều kiện tốt cho chúng em học tập suốt trình học đại học Tôi xin cảm ơn bạn sinh viên lớp K39 Sƣ phạm Tin học giúp đỡ, động viên suốt năm học trƣờng Cuối xin gửi lời cảm ơn tới gia đình, ngƣời thân yêu động viên, sát bên suốt quãng thời gian qua Hà Nội, ngày 20 tháng năm 2017 Sinh viên Trƣơng Thị Ngọc Bích LỜI CAM ĐOAN Tôi xin cam đoan kết nghiên cứu riêng Nội dung nghiên cứu kết khóa luận hoàn toàn trung thực, không chép đâu, chƣa đƣợc công bố công trình nghiên cứu trƣớc Các tài liệu tham khảo có nguồn gốc, xuất xứ rõ ràng Ngƣời cam đoan Trƣơng Thị Ngọc Bích MỤC LỤC MỞ ĐẦU CHƢƠNG TỔNG QUAN VỀ KIỂM CHỨNG MÔ HÌNH 1.1 Tổng quan kiểm chứng mô hình [2] 1.2 Hoạt động kiểm chứng mô hình 1.3 Ƣu điểm nhƣợc điểm kiểm chứng mô hình [2] 1.3.1 Ƣu điểm 1.3.2 Nhƣợc điểm 1.4 Ý nghĩa kiểm chứng mô hình 1.5 Sự khác kiểm chứng mô hình phần mềm kiểm thử phần mềm 1.6 Máy hữu hạn trạng thái 1.6.1 Định nghĩa FSM 1.6.2 Biểu diễn FSM CHƢƠNG CÔNG CỤ KIỂM CHỨNG SPIN VÀ NGÔN NGỮ MÔ HÌNH HÓA PROMELA 12 2.1 Ngôn ngữ PROMELA [2] 12 2.1.1 Kiểu liệu toán tử 14 2.1.2 Dữ liệu kiểu kênh PROMELA 15 2.1.3 Các cú pháp 16 2.1.4 Run atomic 19 2.2 Công cụ SPIN 21 2.2.1 Đặc trƣng SPIN [3] 21 2.2.2 Mô hình hệ thống SPIN [3] 22 2.2.3 Kiểm chứng chƣơng trình SPIN [2] 22 2.2.4 Logic thời gian tuyến tính (LTL – Linear Temporal Logic) 28 2.3 Giao diện ngƣời dùng ISPIN 29 CHƢƠNG ỨNG DỤNG 34 3.1 Xây dựng biến tiến trình đồng hồ [7] 34 3.2 Hệ thống thang máy mức 38 3.2.1 Mô tả hệ thống mức 38 3.2.2 Mô hình PROMELA cho hệ thống thang máy mức kiểm chứng thuộc tính đơn giản 40 3.3 Hệ thống thang máy mức 41 3.3.1 Mô tả hệ thống mức 41 3.3.2 Mô hình PROMELA cho hệ thống thang máy mức kiểm chứng thuộc tính đơn giản 42 KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN 45 TÀI LIỆU THAM KHẢO 46 DANH MỤC HÌNH VẼ Hình 2.2 Màn hình cửa sổ ISPIN 30 Hình 2.3 Các chức menu Edit/View 31 Hình 2.4 Các chức menu Simulate/Replay 32 Hình 2.5 Các chức menu Verification 33 Hình 3.1 Kiến trúc mức hệ thống thang máy 39 Hình 3.2 Kết mô mô hình hệ thống thang máy mức 40 Hình 3.3 Kết kiểm chứng mô hình hệ thống thang máy 41 Hình 3.4 Kiến trúc mức hệ thống thang máy 42 Hình 3.5 Kết mô mô hình hệ thống thang máy mức 43 Hình 3.6 Kết kiểm chứng mô hình hệ thống thang máy 44 DANH MỤC BẢNG BIỂU Bảng 2.1 Các kiểu liệu PROMELA 14 Bảng 2.2 Các toán tử PROMELA xếp theo thứ tự độ ƣu tiên giảm dần từ xuống dƣới 14 Bảng 2.3 Mô tả toán tử LTL 28 Bảng 2.4 Các toán tử thời gian LTL 28 MỞ ĐẦU Lý chọn đề tài Ngày nay, Công nghệ Thông tin ngày phát triển đƣợc ứng dụng vào lĩnh vực khác đời sống xã hội Nó tạo diện mạo cho xã hội mà nhờ văn minh nhân loại đƣợc nâng lên tầm cao Công nghệ phần mềm phận tách rời Công nghệ Thông tin Hiện nay, công nghệ phần mềm giới phát triển mạnh mẽ nhƣ vũ bão Những tiến khoa học kỹ thuật phần cứng tạo điều kiện thuận lợi cho ngành công nghệ phần mềm phát triển không ngừng Phần mềm đƣợc coi sản phẩm công nghệ phần mềm Quá trình phát triển phần mềm gồm nhiều giai đoạn: Thu thập, yêu cầu, phân tích, thiết kế, xây dựng, kiểm chứng, triển khai bảo trì Trong kiểm chứng phần mềm quan trọng để đảm bảo chất lƣợng phần mềm Kiểm chứng mô hình đóng góp phần quan trọng vào kiểm chứng phần mềm Nhờ kiểm chứng mô hình mà kiểm tra hệ thống phần mềm trƣớc đƣa vào xây dựng triển khai có đặc tả không, có thiết kế không, từ phát đƣợc lỗi trình phân tích trƣờng hợp, khả xảy hệ thống phần mềm nhằm khắc phục lỗi giúp hệ thống làm việc hƣớng, tránh rủi ro, sai sót Trong thực tế có nhiều công cụ khác hỗ trợ việc kiểm chứng mô hình nhƣ NuSMV, SPIN, KRONOS,… nhƣng phạm vi khóa luận em lựa chọn công cụ SPIN SPIN công cụ kiểm chứng mạnh mẽ, thân thiện, dễ sử dụng đồng thời có tầm ảnh hƣởng phát triển phần mềm dành cho hệ thống phức tạp nhƣ hệ thống nhúng, hệ thống tƣơng tác, hệ điều hành Ý thức đƣợc tầm quan trọng kiểm chứng mô hình với mà công cụ SPIN mang lại em lựa chọn đề tài “Kiểm chứng mô hình ứng dụng cho hệ thống thang máy”, đề tài không nhƣng nói vấn đề cần đƣợc quan tâm mà ngày hệ thống đƣợc xây dựng lên ngày nhiều việc kiểm chứng mô hình lại cần phải đƣợc lƣu tâm nhiều Bởi giải đƣợc vấn đề liên quan đến phát lỗi, giảm thiểu sai sót trình lắp đặt nhƣ vận hành hệ thống Mục đích nghiên cứu Nhƣ biết, Khoa học Công nghệ có nhiều ứng dụng thực tiễn quan trọng đời sống Một số phải kể đến hệ thống thang máy Ngày nay, nhu cầu nơi ngƣời dân tăng cao khu vực trung tâm đô thị lớn việc xây nhà Cấp không đƣợc khả thi Thay vào ngƣời ta xây dựng nhà nhiều tầng Những nhà nhiều tầng có chiều cao lớn việc trang bị thang máy tất yếu để phục vụ việc lại tòa nhà Nếu vấn đề vận chuyển ngƣời tòa nhà không đƣợc giải dự án xây dựng tòa nhà cao tầng khó thành thực Thang máy thiết bị vận chuyển đòi hỏi tính an toàn nghiêm ngặt, liên quan trực tiếp đến tài sản tính mạng ngƣời Vì yêu cầu chung thang máy thiết kế, chế tạo, lắp đặt, vận hành, sử dụng sửa chữa phải tuân thủ cách nghiêm ngặt yêu cầu kỹ thuật an toàn đƣợc quy định tiêu chuẩn, quy trình, quy phạm… Trong đó, việc kiểm thử mô hình hệ thống thang máy trƣớc vào chế tạo vận hành mang ý nghĩa quan trọng, giúp phát lỗi thiết kế nhờ giảm thiểu khả sai sót chế tạo, tránh xảy rủi ro không đáng có Là sinh viên Công nghệ Thông tin hiểu đƣợc tầm quan trọng việc kiểm thử mô hình sau nghiên cứu tài liệu liên quan em bắt tay vào mô mô hình hệ thống thang máy ngôn ngữ PROMELA sử dụng công cụ SPIN để hỗ trợ trình kiểm chứng mô hình Các vấn đề nhƣ: Thang máy di chuyển lên (xuống) tất cửa thang máy đƣợc đóng, cabin di chuyển không cửa đƣợc mở,… đƣợc mô kiểm chứng phần ứng dụng đề tài Nhiệm vụ nghiên cứu Đề tài “Kiểm chứng mô hình ứng dụng cho hệ thống thang máy” vào nghiên cứu kiểm chứng, kiểm chứng mô hình, đặc điểm kiểm chứng mô hình, giai đoạn trình kiểm chứng mô hình, công cụ SPIN, ngôn ngữ mô hình hóa PROMELA ứng dụng vào kiểm chứng mô hình hệ thống thang máy Đối tƣợng phạm vi nghiên cứu Đối tƣợng nghiên cứu đề tài Kiểm chứng mô hình, SPIN – công cụ hỗ trợ kiểm chứng mô hình, ngôn ngữ mô hình hóa PROMELA, mô hình hệ thống thang máy Phạm vi nghiên cứu đề tài kiểm chứng mô hình hệ thống thang máy đƣợc mô hình hóa ngôn ngữ PROMELA, sử dụng công cụ SPIN Ý nghĩa khoa học thực tiễn Đề tài “Kiểm chứng mô hình ứng dụng cho hệ thống thang máy” giúp tiếp cận gần với kiểm chứng mô hình thông qua công cụ cụ thể SPIN Từ đó, công việc chế tạo, xây dựng hệ thống trở nên dễ dàng, đầy đủ chức nhƣ thao tác mà hệ thống cần phải thực hiện, sửa đƣợc lỗi logic, tránh đƣợc sai sót nhƣ rủi ro Phƣơng pháp nghiên cứu  Phương pháp nghiên cứu lý luận Nghiên cứu qua việc đọc sách báo tài liệu liên quan nhằm xây dựng sở lý thuyết khóa luận biện pháp cần thiết để giải vấn đề khóa luận  Phương pháp chuyên gia Tham khảo ý kiến chuyên gia để kiểm thử mô hình phù hợp với yêu cầu thực tiễn, nhận biết sai sót giúp kịp thời bổ sung, sửa chữa nhằm đáp ứng nhu cầu ngày cao ngƣời sử dụng Hình 3.6 Kết kiểm chứng mô hình hệ thống thang máy Phân tích kết thấy errors: nên mô hình đƣa thỏa mãn thuộc tính, ràng buộc nêu 44 KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN Trong trình tìm hiểu hoàn thành khóa luận tốt nghiệp với đề tài “Kiểm chứng mô hình ứng dụng cho hệ thống thang máy“, dù đạt đƣợc kiến thức định nhƣng em nhận thấy kiểm chứng mô hình nói chung Kiểm chứng mô hình ứng dụng cho hệ thống thang máy nói riêng lĩnh vực nghiên cứu rộng lớn, có triển vọng Trong luận văn em tìm hiểu đạt đƣợc số kết sau: - Tìm hiểu kỹ thuật kiểm chứng mô hình - Tìm hiểu công cụ kiểm chứng SPIN, giao diện ISPIN ngôn ngữ mô hình hoá PROMELA - Xây dựng tiến trình đồng hồ để đo thời gian cần thiết - Sử dụng kỹ thuật kiểm duyệt mô hình kết hợp với tiến trình đồng hồ để kiểm chứng số tính chất hệ thống thang máy Về khoá luận đạt đƣợc mục tiêu ban đầu đặt Tuy nhiên, thời gian tập trung làm khoá luận không đƣợc dài nên khoá luận số hạn chế Trong thời gian tới em phát triển, mô tả kiểm chứng hệ thống thang máy mức chi tiết, gần với thực tế 45 TÀI LIỆU THAM KHẢO [1] Christel Baier Joost – pieter Katoen (2008), Principles of Model Checking, MIT Press Cambridge, Massachusetts London, England [2] Trần Thị Vân Dung – Nghiên cứu kiểm chứng phần mềm sử dụng công cụ SPIN [3] Dƣơng Công Quy – Kiểm chứng mô hình với chương trình kiểm chứng SPIN [4] Kim Yong Chun and Dang Van Hung (2004), Verifying Real – Time Systems Using Untimed Model Checking Tools, The United Nations University, International Institute for Software Technology [5] Mordechai Ben – Ari – Principles of the SPIN Model Checker [6] Holzmann G.J – SPIN Model Checker (2003) [7] Nguyễn Thị Loan – Kiểm chứng tính đắn hệ thống tính toán chương trình kiểm duyệt mô hình [8] http://spinroot.com 46 PHỤ LỤC Phụ lục A: Mã nguồn mô hình hệ thống mức chạy Verification SPIN bit doorisopen[8]; show byte floor = 0; show byte onfloor = 0; bit doorstate; mtype = { up, down, up2, down2, up3, down3, up4, down4, up5, down5, up6, down6, up7, down7, close, open }; chan openclosedoor = [0] of { byte,mtype }; chan updowncabin = [0] of { mtype }; proctype door(byte i) 9{ 10 11 ::atomic{openclosedoor?eval(i),open –> doorisopen[i] = 1} 12 ::atomic{openclosedoor?eval(i),close –> doorisopen[i]=0} 13 od 14 } 15 proctype cabin() 16 { 17 18 ::atomic{updowncabin?up –> if 19 ::floor < –> floor++ 20 ::else –> skip 21 fi} 22 ::atomic{updowncabin?down –> if 23 ::floor > –> floor–– 24 ::else –> skip 25 fi} 26 ::atomic{updowncabin?up2 –> if 27 ::(floor + 2) < –> floor= floor + 28 ::else –> skip 29 fi} 30 ::atomic{updowncabin?down2 –> if 31 ::(floor – 2) >= –> floor=floor–2 32 ::else –> skip 33 fi} 34 ::atomic{updowncabin?up3 –> if 35 36 37 ::(floor + 3) floor=floor+3 ::else –> skip fi} 38 ::atomic{updowncabin?down3 –> if 39 40 41 ::(floor – 3)>=0 –> floor=floor–3 ::else –> skip fi} 42 ::atomic{updowncabin?up4 –> if 43 44 45 ::(floor + 4) floor=floor+4 ::else –> skip fi} 46 ::atomic{updowncabin?down4 –> if 47 ::(floor – 4)>=0 –> floor=floor–4 48 ::else –> skip 49 fi} 50 ::atomic{updowncabin?up5 –> if 51 52 53 ::(floor + 5) floor=floor+5 ::else –> skip fi} 54 ::atomic{updowncabin?down5 –> if 55 ::(floor – 5)>=0 –> floor=floor–5 56 ::else –> skip 57 fi} 58 ::atomic{updowncabin?up6 –> if 59 60 61 ::(floor + 6) floor=floor+6 :: else –> skip fi} 62 ::atomic{updowncabin?down6 –> if 63 ::(floor – 6)>=0 –> floor=floor–6 64 :: else –> skip 65 fi} 66 ::atomic{updowncabin?up7 –> if 67 ::(floor + 7) floor=floor+7 68 :: else –> skip 69 fi} 70 ::atomic{updowncabin?down7 –> if 71 ::(floor – 7)>=0 –> floor=floor–7 72 :: else –> skip 73 fi} 74 od 75 } 76 proctype controller() 77 { 78 79 ::openclosedoor!onfloor,close –>doorstate=0 80 ::openclosedoor!onfloor,open –> doorstate=1 81 ::doorstate==0 && onfloor < –> updowncabin!up; onfloor++ 82 ::doorstate==0 && onfloor > –> updowncabin!down; onfloor–– 83 ::doorstate==0 && (onfloor+2) < –>updowncabin!up2; onfloor=onfloor+2 84 ::doorstate==0 && (onfloor–2) >= –>updowncabin!down2; onfloor=onfloor–2 85 ::doorstate==0 && (onfloor+3) < –>updowncabin!up3; && (onfloor–3) >= –>updowncabin!up3; onfloor=onfloor+3 86 ::doorstate==0 onfloor=onfloor–3 87 ::doorstate==0 && (onfloor + 4) < –>updowncabin!up4; onfloor = onfloor + 88 ::doorstate==0 && (onfloor – 4) >= –>updowncabin!down4; onfloor = onfloor – 89 ::doorstate==0 && (onfloor + 5) < –>updowncabin!up5; onfloor = onfloor + 90 ::doorstate==0 && (onfloor – 5) >= –>updowncabin!down5; onfloor = onfloor – 91 ::doorstate==0 && (onfloor + 6) < –>updowncabin!up6; onfloor = onfloor + 92 ::doorstate==0 && (onfloor – 6) >= –>updowncabin!down6; onfloor = onfloor – 93 ::doorstate==0 && (onfloor + 7) < –>updowncabin!up7; onfloor = onfloor + 94 ::doorstate==0 && (onfloor – 7) >= –>updowncabin!down7; onfloor = onfloor – 95 od 96 } 97 init { 98 atomic { 99 run door(0); run door(1); run door(2); run door(3); run door(4); run door(5); run door(6); run door(7); 100 run cabin(); run controller() } 101 } 102 # define closedother \ 103 (!doorisopen[(floor+1)%8] && !doorisopen[(floor+2)%8] && !doorisopen[(floor+3)%8] && !doorisopen[(floor+5)%8]&& !doorisopen[(floor+4)%8]&& !doorisopen[(floor+6)%8]&& !doorisopen[(floor+7)%8]) 104 #define opencurrent doorisopen[floor] 105 never { 106 T0_init: 107 if 108 ::(! ((closedother)) && (opencurrent)) –> goto accept_all 109 ::(1) –> goto T0_init 110 fi; 111 accept_all: 112 skip 113 } Phụ lục B: Mã nguồn mô hình hệ thống mức chạy Verification SPIN bit doorisopen[8]; show byte floor = 0; show byte onfloor = 0; bit doorstate=0; bit cabinstate=0; bit move=0; chan set_time=[0] of {int}; int time; chan inc=[0] of {int}; 10 mtype={ up, down, up2, down2,up3, down3, up4, down4, up5, down5, up6, down6, up7, down7, close, open, done, press}; 11 12 chan openclosedoor = [0] of { byte,mtype }; 13 chan updowncabin = [0] of { mtype }; 14 chan control_alarm=[0] of {mtype}; 15 proctype clock(){ 16 int c; 17 time=-1; 18 end: 19 ::set_time?1->if 20 ::time=-1->time=0; 21 ::else->skip; 22 fi; 23 ::set_time?-1->time=-1; 24 ::inc?c->if 25 ::time!=-1->time=time+c; 26 ::else -> skip; 27 fi; 28 od 29 } 30 proctype door(byte i) 31 { 32 end: 33 ::atomic{openclosedoor?eval(i),open -> doorisopen[i]=1;set_time!1;} 34 ::atomic{openclosedoor?eval(i),close -> doorisopen[i]=0;set_time!1;} 35 od 36 } 37 proctype cabin() 38 { 39 end: 40 ::updowncabin?up -> if 41 ::floor < ->move=1; floor++ 42 ::else -> skip; 43 fi; move = 0; updowncabin!done 44 ::updowncabin?down -> if 45 ::floor > -> move=1; floor 46 ::else -> skip 47 fi; move=0; updowncabin!done 48 ::updowncabin?down2 -> if 49 ::(floor - 2)>=0 ->move=1; floor= floor -2 50 ::else -> skip 51 fi; move=0; updowncabin!done 52 ::updowncabin?up2 -> if 53 ::(floor + 2) < ->move=1; floor= floor + 54 ::else -> skip 55 fi; move=0; updowncabin!done 56 ::updowncabin?up3 -> if 57 ::(floor + 3) < ->move=1; floor = floor + 58 ::else -> skip 59 fi; move = 0; updowncabin!done 60 ::updowncabin?down3 -> if 61 ::(floor - 3) >=0 ->move=1; floor = floor -3 62 ::else -> skip 63 fi; move=0; updowncabin!done 64 ::updowncabin?up4 -> if 65 ::(floor + 4) < ->move=1; floor = floor + 66 ::else -> skip 67 fi; move = 0; updowncabin!done 68 ::updowncabin?down4 -> if 69 ::(floor - 4) >= ->move=1; floor = floor - 70 ::else -> skip 71 fi; move=0; updowncabin!done 72 ::updowncabin?up5 -> if 73 ::(floor + 5) < ->move=1; floor = floor + 74 ::else -> skip 75 fi; move = 0; updowncabin!done 76 ::updowncabin?down5 -> if 77 ::(floor - 5) >= ->move=1; floor = floor - 78 ::else -> skip 79 fi; move=0; updowncabin!done 80 ::updowncabin?up6 -> if 81 ::(floor + 6) < ->move=1; floor = floor + 82 ::else -> skip 83 fi; move = 0; updowncabin!done 84 ::updowncabin?down6 -> if 85 ::(floor - 6) >= ->move=1; floor = floor - 86 ::else -> skip 87 fi; move=0; updowncabin!done 88 ::updowncabin?up7 -> if 89 ::(floor + 7) < ->move=1; floor = floor + 90 ::else -> skip 91 fi; move = 0; updowncabin!done 92 ::updowncabin?down7 -> if 93 ::(floor - 7) >= ->move=1; floor = floor - 94 ::else -> skip 95 fi; move=0; updowncabin!done 96 od 97 } 98 proctype alarm() { 99 end: 100 ::atomic{control_alarm?press-> 101 assert(time if 109 ::openclosedoor!onfloor,close ->doorstate=0; 110 ::openclosedoor!onfloor,open -> doorstate=1; 111 fi} 112 ::cabinstate==0 && doorstate==0 && onfloor < ->cabinstate=1; updowncabin!up; onfloor++ 113 ::cabinstate==0 && doorstate==0 && onfloor > ->cabinstate=1; updowncabin!down; onfloor-114 ::cabinstate==0 && doorstate==0 && (onfloor + 2) < ->cabinstate=1; updowncabin!up2; onfloor=onfloor+2 115 ::cabinstate==0 && doorstate==0 && (onfloor - 2) >= >cabinstate=1; updowncabin!down2; onfloor=onfloor-2 116 ::cabinstate==0 && doorstate==0 && (onfloor + 3)< ->cabinstate=1; updowncabin!up3; onfloor = onfloor + 117 ::cabinstate==0 && doorstate==0 && (onfloor - 3)>=0 ->cabinstate=1; updowncabin!down3; onfloor = onfloor - 118 ::cabinstate==0 && doorstate==0 && (onfloor + 4)< ->cabinstate=1; updowncabin!up4; onfloor = onfloor + 119 ::cabinstate==0 && doorstate==0 && (onfloor - 4)>=0 ->cabinstate=1; updowncabin!down4; onfloor = onfloor - 120 ::cabinstate==0 && doorstate==0 && (onfloor + 5)< ->cabinstate=1; updowncabin!up5; onfloor = onfloor + 121 ::cabinstate==0 && doorstate==0 && (onfloor - 5)>=0 ->cabinstate=1; updowncabin!down5; onfloor = onfloor - 122 ::cabinstate==0 && doorstate==0 && (onfloor + 6)< ->cabinstate=1; updowncabin!up6; onfloor = onfloor + 123 ::cabinstate==0 && doorstate==0 && (onfloor - 6)>=0 ->cabinstate=1; updowncabin!down6; onfloor = onfloor - 124 ::cabinstate==0 && doorstate==0 && (onfloor + 7)< ->cabinstate=1; updowncabin!up7; onfloor = onfloor + 125 :: cabinstate==0 && doorstate==0 && (onfloor - 7)>=0 ->cabinstate=1; updowncabin!down7; onfloor = onfloor - 126 ::updowncabin?done -> cabinstate=0 127 od 128 } 129 130 init { 131 atomic { 132 run door(0); run door(1); run door(2);run door(3); run door(4); run door(5); run door(6); run door(7); 133 run cabin(); run alarm(); run clock(); run controller(); } 134 } 135 #define closedother \ 136 (!doorisopen[(floor+1)%8] !doorisopen[(floor+3)%8] && && !doorisopen[(floor+2)%8] && !doorisopen[(floor+4)%8]&& !doorisopen[(floor+5)%8]&& !doorisopen[(floor+6)%8]&& !doorisopen[(floor+7)%8]) 137 #define opencurrent doorisopen[floor] 138 #define closedall (!doorisopen[0] && !doorisopen[1] && !doorisopen[2] && !doorisopen[3] && !doorisopen[4]&& !doorisopen[5]&& !doorisopen[6]&& !doorisopen[7]) 139 #define movement move==1 140 never { 141 T0_init: 142 if 143 :: (((! ((closedall)) && (movement) && ((! ((closedall)) && (movement)) || (! ((closedother)) && (opencurrent)))) || (! ((closedother)) && (opencurrent) && ((! ((closedall)) && (movement)) || (! ((closedother)) && (opencurrent)))))) -> goto accept_all 144 :: (1) -> goto T0_init 145 fi; 146 accept_all: 147 148 } skip ... Tổng quan kiểm chứng mô hình Tổng quan kiểm chứng mô hình Hoạt động kiểm chứng mô hình Ƣu điểm nhƣợc điểm kiểm chứng mô hình Ý nghĩa kiểm chứng mô hình Sự khác kiểm chứng mô hình phần mềm kiểm thử... cho hệ thống thang máy vào nghiên cứu kiểm chứng, kiểm chứng mô hình, đặc điểm kiểm chứng mô hình, giai đoạn trình kiểm chứng mô hình, công cụ SPIN, ngôn ngữ mô hình hóa PROMELA ứng dụng vào kiểm. .. trúc mức hệ thống thang máy 39 Hình 3.2 Kết mô mô hình hệ thống thang máy mức 40 Hình 3.3 Kết kiểm chứng mô hình hệ thống thang máy 41 Hình 3.4 Kiến trúc mức hệ thống thang máy

Ngày đăng: 27/06/2017, 16:11

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w