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

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

Đ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

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 q 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 hồn tồn trung thực, khơng chép đâu, chưa 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 .7 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 14 Bảng 2.3 Mơ tả tố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 ứ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 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ẽ 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 coi sản phẩm cơng nghệ phần mềm Q 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 lỗi q 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ơ NuSMV, SPIN, KRONOS,… 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 hệ thống nhúng, hệ thống tương tác, hệ điều hành Ý thứ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 q nói vấn đề cần quan tâm mà ngày hệ thống 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 lưu tâm nhiều Bởi giải vấn đề liên quan đến phát lỗi, giảm thiểu sai sót q trình lắp đặt 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 ngơi nhà Cấp khơng cịn 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 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 tồn nghiêm ngặt, liên quan trực tiếp đến tài sản tính mạng người Vì 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 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 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ợ q 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 đóng, cabin di chuyển khơng cửa mở,… 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 q 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 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 thao tác mà hệ thống cần phải thực hiện, sửa lỗi logic, tránh sai sót 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 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 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Trong trình tìm hiểu hồ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 kiến thức định 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 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 hố 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 mục tiêu ban đầu đặt Tuy nhiên, thời gian tập trung làm khoá luận khơng dài nên khố luận cị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ế 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 tốn chương trình kiểm duyệt mơ hình [8] http://spinroot.com 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 ... 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. .. 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ử... 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 q 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

Ngày đăng: 13/08/2020, 16:10

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan