Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 41 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
41
Dung lượng
1,42 MB
Nội dung
1 MỤC LỤC MỤC LỤC .1 LỜI CẢM ƠN GIỚI THIỆU ĐặT VấN Đề CấU TRÚC KHÓA LUậN CHƢƠNG 1:KIỂM CHỨNG MƠ HÌNH 1 KIểM CHứNG MƠ HÌNH .7 CÁCH TIếN HÀNH Các bước thực kiểm chứng mơ hình 10 Ưu nhược điểm kiểm chứng mơ hình 10 Bên cạnh kiểm chứng mơ hình có nhược điểm: 11 CHƢƠNG 2:NGƠN NGỮ PROMELA .12 NGÔN NGữ PROMELA 12 1 Cấu trúc chương trình Promela 12 2 Kiểu liệu .13 Toàn tử 14 Tên, Tên số Biểu thức 15 Tiến trình .15 2 Xử LÝ KÊNH TRONG PROMELA 16 2 Cú pháp .16 2 Kênh gửi nhận 16 CÁC CÚ PHÁP .17 Lệnh printf( ) .17 Lệnh lựa chọn if 17 3 Lệnh lặp 17 Lệnh nhảy goto 18 Lệnh define 18 RUN VÀ ATOMIC 18 run tiến trình init() 18 atomic 19 .Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án CHƢƠNG BỘ KIỂM CHỨNG MƠ HÌNH 21 Bộ KIểM CHứNG MƠ HÌNH SPIN 21 1 Giới thiệu SPIN 21 Công cụ jSPIN 21 3 Công cụ ISPIN 23 DÙNG SPIN Đễ KIểM CHứNG .25 Giả lập ngẫu nhiên 25 2 Verify 25 3 GIớI THIệU Về LTL(LINEAR TEMPORAL LOGIC) 27 3 Cú pháp .28 3 Ngữ nghĩa 29 CHƢƠNG THỰC NGHIỆM 31 MƠ HÌNH MÁY TRạNG THÁI HƢU HạN 31 THựC NGHIệM VớI Hệ THốNG ĐÈN .31 MƠ Tả BÀI TỐN 31 2 Kiểm chứng mơ hình hệ thống đèn bắng SPIN 34 Bảng chuyển Atomata 39 KẾT LUẬN 40 KếT QUả CủA KHÓA LUậN 40 HƢớNG NGHIÊN CứU TIếP THEO .40 TÀI LIỆU THAM KHẢO 41 DANH SÁCH HÌNH ẢNH: Hình1.1 Sơ đồ việc kiểm chứng hệ thống Hình1.2 Sơ đồ hoạt động phương pháp kiểm chứng mơ hình 10 Hình3.1 Giao diện JPIN 22 Hình3.2 Giao diện ISPIN .23 Hình4.3 Cửa sổ Verification 24 Hình3.4 Của sổ chạy chức View SPIN Atomaton 24 Hình4.1 Mơ hình cơng tắc đèn .32 Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Hình4.2 Kết chạy giả lập mơ hình hệ thống đèn .34 Hình4.3 JSPIN dịch từ LTL sang Promela 35 Hình4.4 Kết kiểm tra mơ hình hệ thống đèn 36 Hình4.5 Mơ hình cơng tắc đèn khơng 37 Hình4.6 Kết kiểm chứng mơ hình hệ thống đèn khơng thỏa mãn 39 Hình4.7 Kết bảng chuyển Atomata 39 Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án LỜI CẢM ƠN Trước tiên, em xin gửi lời cảm ơn chân thành đến trường Đại học Dân Lập Hải Phòng tạo điều kiện thuận lợi cho em suốt trình học vừa qua,em xin gửi lời cảm ơn chân thành đến qúy thầy cô khoa Cơng nghệ Thơng tin nhiệt tình giảng dạy em thời gian qua, qua em có kiến thức bổ ích đểlàm đề tài Đặc biệt em gửi lời cảm ơn chân thành đến thầy Đỗ Văn Chiểu trực tiếp hướng dẫn tạo điều kiện cho em hoàn thành đề tài Cuối em xin gửi lời cảm ơn đến gia đình, bạn bè, người thân giúp đỡ động viên em nhiều trình học tập làm đồ án tốt nghiệp Do thời gian thực có hạn, kiến thức nhiều hạn chế nên đồ án thực chắn khơng tránh khỏi thiếu sót định Em mong nhận ý kiến đóng góp thầy giáo bạn để em có thêm kinh nghiệm tiếp tục hoàn thiện đồ án Em xin chân thành cảm ơn! Hải Phịng, ngàythángnăm 2012 Sinh viên Vũ Đức Hậu Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án GIỚI THIỆU ĐẶT VẤN ĐỀ Đặc tả kiểm chứng phần mềm phương pháp kiểm tra hệ thống liệu có thỏa thiết kế hay không? Việc kiểm tra hệ thống thực nhiều pha quy trình sản xuất phần mềm,từ thiết kế,đặc tả,viết mã,kiểm thử,kiểm chứng,kiểm tra có thỏa yêu cầu người dùng (validation) Trong lập trình muốn có chương trình người lập trình khơng thể thành cơng lần chạy chưa thể tốt lần biên dịch đầu tiên.Một chương trình ban đầu trơng hồn hảo ln đưa vào chạy thật chứa lỗi đâu đó,khi gây thiệt hại thời gian tiền bạc chùng ta nhiều Trong trình thiết kế sản xuất phần cứng phần mềm,chúng ta tốn nhiều thời gian công sức việc thiết kế,đôi nhiều việc xây dựng chúng Có nhiều ứng dụng mà có lỗi dù nhỏ đưa vào sử dụng dẫn đến thiệt hại người, tài sản tốn thật nặng nề đến môi trường.Việc thiết kế phần mềm dành cho hệ thống vơ khó khăn Việc lập trình viên phải làm để có sản phẩm phần mềm ln phân tích,lập trình,kiểmtra lại,kiểm thử.Để việc kiểm chứng nhẹ nhàng nhanh chóng, tăngsự xác ln tìm kiếm cơng nghệ để giúp cho việc SPIN cơng cụ SPINlà cơng cụ chung để kiểm chứng tính đắn mơ hình phần mềm cách chặt chẽ hầu hết tự động.Ban đầu viết Gerard J.Holzmann cộng nhóm Unix ngành khoa học máy tính Trung tâm nghiên cứu Bell Labs vào năm 80 kỷ trước.SPIN miễn phí tiếp tục phát triển để bắt kịp với phát triển lĩnh vực Các hệ thống cần kiểm chứng đặc tả Promela (Process Meta Language)sau dùng (SPIN-Simple Promela Interpreter) để kiểm chứng.Các tính chất cần kiểm chứng biểu diễn cơng thức LTL,lấy phủ định chuyển sang Büchi Automata.Ngoài việc kiểm chứng mơ hình,SPIN hoạt động mô phỏng,sau thi hành dãy thực thi hệ thống hiển thị vết thi hành cho người dùng .Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Nội dung khóa luận: Khóa luận tìm hiểu kiểm chứng mơ hình SPIN,các mơ hình hệ thống viết ngơn ngữ promela mà SPIN hiểu kiểm chứng mơ hình SPIN 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 1: Trình bày sở lý thuyết kiểm thử mơ hình, bao gồm khái niệm bản, bước thực hiện, lợi ích kiểm thử mơ hình cách thức xây dựng mơ hình Chương 2: Trình bày khái niệm ngơn ngữ mơ hình Promela, bao gồm định nghĩa khai báo biến kiểu, định danh, số, biểu thức, tiến trình Chương 3: Trình bày kiểm chứng, bao gồm giới thiệu công cụ ISPIN JSPIN, dùng SPIN để kiểm chứng, giới thiệu LTL Chương 4: Trình bày kết thực nghiệm q trình mơ tả hệ thống đèn, thiết kế mơ hình hệ thống đènbằng Promela Kết luân: Kết khóa luận đạt hướng nghiên cứu .Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án CHƢƠNG 1:KIỂM CHỨNG MƠ HÌNH 1 KIỂM CHỨNG MƠ HÌNH Việc kiểm tra chương trình có thỏa mãn với thiết kế hay không lĩnh vực nghiên cứu ngành Cơng nghệ Phần mềm.Đã có nhiều hướng tiếp cận nhằm mục đích đưa phương pháp tốt để giải toán này.Kiểm thử phẩn mềm phương pháp phổ biến tìm lỗi chương trình khơng chứng minh chương trình khơng cịn lỗi.Một hướng tiếp cận thay kiểm tra mức mã nguồn người ta kiểm tra từ mức thiết kế viết mã cho chương trình khơng đảm bảo chương trình khơng cịn lỗi.Trong thời gian qua có nhiều thành tựu lĩnh vực này, có nhiều ngơn ngữ cơng cụ dùng để đặc tả kiểm chứng chương trình.Các ngơn ngữ dùng đặc tả thuộc tính hệ thống LTL,CTL,CTL*,Promela,Alloy với cơng cụtương ứng thìSPINđã trợ giúp tốt để giải toán Các phương pháp kiểm chứng phần mềm bổ trợ cho số hạn chế kiểm thử.Trong kiểm chứng phần mềm truyền thống chương trình mơ hình hóa đặc tả S thể ngôn ngữ L(S).Bản thiết kế hệ thống đặc tả ngôn ngữ L(A).Mã nguồn chương trình Pđược thể ngơn ngữ lập trìnhL(P) đó.Khi kiểm chứng, mã nguồn chương trình chuyển sang mơ hìnhM thể ngơn ngữ L(M) vậy: L(M) L(A) Để kiểm tra mã nguồn chương trình có với thiết kế hay khơng? Người ta kiểm tra xem L(M) có thỏa mãn L(A) hay khơng? Điều khó chứng minh.Do người ta tìm L(M) kiểm tra: L(A) Nếu L(A) L(M) L(M) khẳng định mã nguồn chương trình khơng có lỗi trường hợp ngược lại khẳng định có lỗi lập đoạn mã có lỗi để khắc phục Nhưng điều quan trọng là:L(M) L(P)?Làmcách để khẳng định L(P) L(M)?Điều khó q trình có tham gia người (quy trình có người tham gia có lỗi) .Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Như đề cập trên,bản thiết kế chương trình thể ngơn ngữ L(A) thực tế người ta dùng logic để biểu diễn LTL chọn để biểu diễn thiết kế này.Để kiểm chứng chương trình người ta chuyển L(A) L(P) ngơn ngữ mà ơtơmát Büchi đốn nhận đượcbằng thuật toán Kỹ thuật xác minh hệ thống áp dụng cho việc thiết kế hệ thống công nghệ thông tin cách đáng tin cậy Kiểm chứng mơ hình xem sét phần mếm sản xuất có yêu cầu,hợp lý trường hợp mà phần mềm phải đáp ứng không Để thực hiên điều phần mềm chạy số hữu hạn đầu vào thiết kế sẵn,phần mềm có lỗi hay khơng đem so sanh với liệu đầu mong muốn Trong giai đoạn kiểm thử việc chạy hết trường hợp cócủa liệu đầu vào khó thường khơng thực dẫn đến chứa lỗi.Không giai đoạn kiểm thử lỗi phát thường muộn dẫn đến khó khắc phục,tiêu tốn thời gian,tiền Hình1.1 Sơ đồ việc kiểm chứng hệ thống Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Q trình kiểm chứng quan trọng,nó giúp biết thiết kế hay sản phẩm phần mềm có đúng,đảm bảo tính chất yểu cầu mà q trình đặc tả hệ thống đưa khơng Mọi cơng việc q trình kiểm thử dựa việc đặc tả hệ thống Một lỗi phát khihệ thống khơng thỏa mãn tính chất đặc tả hệ thống ngược lại hệ thống khinhững tính chất thỏa mãn.Vì việc kiểm chứng giúp phát lỗi sớm Việc kiểm chứng mơ hình dựa sở viêc mơ tả xác hành vi hệ thống cách không nhập nhằng,điều giúp phát điều nhập nhằng, khơng chưa hồn thiện hệ thống Kĩ thuật giúp kiểm chứng q trình thiết kế sản phẩm, công cụ việc kiểm tra sản phẩm phần mềm bắt buộc chạy khơng có sai sót CÁCH TIẾN HÀNH Việc kiểm chứng mơ hình thực việc xác định yêu cầu hệ thống sau ta xây dựng mơ hình hệ thống, từ giúp hiểu chức hành vi hệ thống.Ta xây dựng mơ hình hệ thống ngơn ngữ lập trình C, Promela hay java… Sau cơng cụ kiểm chứng sinh tất trạng thái có hệ thống Kết đầu so sánh với kết đầu vào hệ thống kiểm tra chúng có thỏa mãn hay khơng,nếu khơng thỏa mãn kiểm chứng tìm trạng thái khơng thỏa mãn .Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án 10 Hình1.2 Sơ đồ hoạt động phƣơng pháp kiểm chứng mơ hình Các bƣớc thực kiểm chứng mơ hình Từ đặc tả chức năng,yêu cầu hệ thống ta xây dựng mơ hình Tạo đầu từ kiện toán So sánh kết đầu kết thực tế mong muốn Sửa đổi mơ hình,tạo thêm ca kiểm thử,dừng kiểm thử,đánh giá chất lượng phần mềm (Nếu cần) Kiểm chứng mơ hình khả đánh gia phần mềm hiểu Ƣu nhƣợc điểm kiểm chứng mơ hình Trong sản xuất phát triển phân phần mềm công việc kiểm thử thiếu được,nhưng kiểm thử phương pháp truyền thống nhiều thời gian,tiền của… làm cho phần mềm không đáp ứng đủ yêu cầu mà người dùng đưa ra.Chính kiểm chứng mơ hình khác phục số nhược điểm đó: Do trình sinh ca kiểm thử tự động nên trình kiểm thử rút ngắn,đồng thời chất lượng phần mềm tốt Tuy chi phí việc xây dựng mơ hình lớn chi phí để bảo trì phần mềm tốn hệ thống đưa vào hoạt động Trong kiểm chứng mơ hình ca kiểm thử tự động sinh nên lỗi phát nhiều Lỗi phát sớm tăng thời gian giải vàkhác phục Do kiểm chứng mơ hình phương pháp kiểm chứng tổng quát áp Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án 27 Trong ví dụ ta tìm nghịch đảo số biễn value gán giá trị value =(value % 10)*100 + (value / 10)%10 + 10 +1000(value / 100)do in giá tri vulue reversed khơng thỏa mãn Ví dụ Chương trình nghịch đảo số có chứa lỗi: active proctype P() { intvalue = 123; int reversed; value = (value % 10)*100 + (value / 10)%10 + 10 +1000 (value / 100); printf("value reversed) = %d,reversed = %d\n",value, } Khi chạy Verify, ISPIN đưa thông báo lỗi vi phạm verification result: SPIN -athu SPIN:thu:7,Error:syntax errorsaw ''(' = 40' SPIN:thu:10,Error:no runable process gcc-4 -DMEMLIM=1024 -O2 -DXUSAFE -DSAFETY -DNOCLAIM -w -o pan pan c pan c:435:17:error:expected expression before ‘, ’ token 3 GIỚI THIỆU VỀ LTL(Linear Temporal Logic) Linear Temporal Logic (viết tắt LTL) đề xuất Amir Pnueli (19412009),một nhà khoa học người Israel,là loại logic áp dụng cho thời gian,người ta xây dựng cơng thức tương lai.Ví dụ:một điều kiện cuối Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án 28 điều kiện điều kiện khác đúng, … LTL phần CTL* (một loại logic có thêm lượng từ nhánh thời gian).LTL đề xuất dùng kiểm chứng hình thức Amir Pnueli năm 1977 3 CÚ PHÁP LTL xây dựng từ biến mệnh đề AP (Atomic Proposition),các toán tử logic toán tử thời gian X,U Một cách hình thức,các cơng thức LTL định nghĩa sau: Nếu p mệnh đề nguyên tử p (p AP) công thức LTL Nếu ψ φ công thức LTL ¬ψ,φ ∨ ψ,X ψ φ U ψcũng công thức LTL ::= true | a | 1∧ |¬ |X | U | X đọc NEXT U đọc UNTIL Trình tự tốn tử sau:Tốn tử ngơi có độ ưu tiên cao nhất,tốn tử ¬ tốn tử Xcó độ ưu tiên tương đương nhau.Tốn tử U có độ ưu tiên toán tử ∧,∨,và →.Dấu ngoặc đơn “( )” loại bỏ khơng gây nhầm lẫn.Tốn tử U có độ ưu tiên bên phải,tức cơng thức U( U 3) có thểviết thành U U Dùng toán tử , đủ để biểu diễn công thức logic mệnh đề Ngồi ra,có số tốn tử bổ sung F, G.Tốn tử F cịn ký hiệu ,toán tử G ký hiệu ,toán tử X ký hiệu O Tồn tử U biểu diễn toán tử F, G sau: G đọc làGlobally (luôn xảy ra) Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án 29 F đọc Future (cuối xảy ra) 3 NGỮ NGHĨA Cơng thức LTL biểu diễn tính chất chuỗi hành động (path,có thể gọi vết - trace) Điều có nghĩa chuỗi hành động thoả cơng thức LTL khơng.Để lập cơng thức xác chuỗi hành động thoả mãn công thức LTL tiến hành sau: Đầu tiên,ngữ nghĩacủa công thức LTL định nghĩa ngôn ngữWords( ) chứa tất từ vô hạn bảng chữ 2APthoả mãn ,sau ngữ nghĩa mở rộng để diễn giải toàn trạng thái chuỗi hành động hệ thống dịch chuyển Định nghĩa(Ngữ nghĩa LTL):Cho cơng thức LTL AP.Tính chất logic thời gian sinh Ở đây,quan hệ thoả ⊨là tập với thuộc tính bảng 1.Ký hiệu quan hệ nhỏ Ngữ nghĩa LTL (quan hệ thỏa ╞ ) cho từ vô hạn trên2AP Giả sử a,b hai mệnh đề nguyên tử,bảng minh họa ngữ nghĩa phép toán mệnh đề .Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án 30 Minh hoạ ngữ nghĩa LTL Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án 31 CHƢƠNG THỰC NGHIỆM MƠ HÌNH MÁY TRẠNG THÁI HƢU HẠN Máytrạngtháihữuhạn(Finite State Machine-FSM) hay gọi làmáy tựđộng trạng thái hữu hạn(FiniteStateAutomaton-FSA) sử dụng để mô tả hoạt động nhiều hệ thống thực tế,là dạng mơ hình đa trạng thái,gồm thành phần chính: Các trạng thái Các cung chuyển trạng thái Các hành động (Actions) Cách thức để chuyển FSM sang mơ hình promela sau: Các bước chuyển trạng thái khai báo kiểu mtype Tất thông tin chuyển trạng thái chuyển dến biến message kiểu kênh nhận thông điệp thuộc loại mtype trên, sau message gửi thơng điệp tiến trình coltrol() tiến trình điều khiển máy hữu hạn trạng thái Trạng thái máy thể bởibiếnstatecó giá trị thay đổi tiến trìnhaction(),kênhmessagesẽ nhận thơng điệp tiến trình action() Mỗi tiến trình điều khiển coltrol()gửi thơng điệp chuyển trạng thái,dựavào thông điệp nhận giá trị củastate,state gán giá trị tương ứng với trạng thái Vềmặtứng dụng,máy trạng thái hữu hạnđóng vai trị quan trọng nhiều lĩnh vực cơng nghệ điện tử,ngơn ngữ học,khoa học máy tính,triết học,sinh học,tốn học,logic học… Trong khoa học máy tính,máy trạng thái hữu hạnđược sửdụng rộng rãi việc mơ hình hóa hoạt động phần mềm,thiết kếhệthống phần cứng,trình biên dịch,cơng nghệ mạng,xử lý ngôn ngữ tự nhiên … THỰC NGHIỆM VỚI HỆ THỐNG ĐÈN MÔ TẢ BÀI TOÁN Áp dụng phương pháp đề xuất tìm hiểu khóa luận cho tốn hệ thống cơng tác đèn dùng gia đình.Đầu vào thiết bị thơng qua nút bấmup down.Đầu thông quađèn báo hiệu với mức sáng:tắt (off),sáng yếu (low),sáng mạnh (high).Hoạt động đèn thể hiệnbởi mơ hình máy hữu hạn trạng thái sau: Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án 32 Hình4.1 Mơ hình cơng tắc đèn Mơ hình promela mơ tả hoạt động đèn xây dựng sau:mơ hình promela gồm tiến trình:lamp()vàswitch()(lần lượt tương ứng vớiactive()và control().Để thểhiệntương tácgiữacơng tắcvà bóng đènhaitiến trình trao đổi thơng tin qua kênh updown nhận gửi thông điệp thuộc kiểu mtype = { up,down } Mơ hình promela đèn (file lamp pml): byte state=0; mtype={up,down}; chan updown=[0] of {mtype}; proctype lamp(){ ::atomic {updown?up->if ::state=0 -> state=1 ::state=1->state=2 ::state=2->state=2 10 ::else -> skip fi 11 } 12 ::atomic {updown?down->if 13 ::state=0-> state=0 14 ::state=1->state=0 15 ::state=2->state=1 16 ::else -> skip fi Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án 33 17 } 18 od 19 } 20 proctype switch(){ 21 22 ::updown!up; 23 ::updown!down; 24 od 25 } 26 init{ 27 atomic{ 28 run lamp(); 29 run switch();} 30 } Trong mơ hình giá trị biếnstatelà 0,1,2 mô tả ba trạng thái đèn off,low,high.Với mơ hình này,trong SPINta chạy chế độrandom,để kiểm tra lỗi thân chương trình Promela Trong chế độ này,khi tiến trình init thực thi,SPIN giả lập hoạt động đèn,chuỗi tín hiệuupvàdownđược sinh cách tùy ý(nhờ thực thi tiến trình switch())và từ trạng thái đènthay đổi (nhờ thực thi tiến trìnhlamp()).Chương trình khơng có lỗi cú pháp SPIN dừng sau đạt tới giới hạn 250 bước .Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án 34 Hình 4.2Kết chạy giả lập mơ hình hệ thống đèn 2 KIỂM CHỨNG MƠ HÌNH HỆ THỐNG ĐÈN BẮNG SPIN 2 A KIỂM CHỨNG MÔ HÌNH HỆ THỐNG CƠNG TẮC ĐÈN ĐÁP ỨNG THUỘC TÍNH Chạy giả lập chế độ dandom để kiểm tra chương trinh: Mô tả trạng thái đèn: off:up:low low:up:high low:down:off high:up:high high:down:low Sau chạy giả lập chế độ random phần ta cần kiểm tra tính chất mà hệ thống cần thỏa mãn việc chạyverify.Tính chất cần kiểm chứng trường hợp là:khi đèn trạng tháihigh,cần phải qua trạng tháilowrồi trạng thái off Biểu thức LTL mơ tả tính chất là: [] !((state == 2) && (state != 1) U (state ==0)) Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án 35 (Không xảy trường hợp biến state và,nó ln khác 0) Ta thêm vào mơ hình promela định nghĩa kí hiệu #define a0 (state = = 0) #define a1 (state != 1) #define a2 (state = = 2) Biểu thức LTL đưa vào SPIN là: [] !(a2 && (a1 U a0)) Khi trongJSPIN ta sử dụng chức Translate để dịch tử ngơn ngữLTL sang Promela Hình4.3 JSPIN dịch từ LTL sang Promela Code sau JSPIN dịch từ LTL sang ngôn ngữ Promela: never{/* !([] !(a2 && (a1 U a0))) */ T0_init: If :: ((a0) && (a2)) -> goto accept_all :: ((a1) && (a2)) -> goto T0_S4 :: (1) -> goto T0_init fi; Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án 36 T0_S4: if :: ((a0)) -> goto accept_all :: ((a1)) -> goto T0_S4 fi; accept_all: skip } Sau ta Translate để dịch tử ngôn ngử LTL sang Promela ta chạy verify, kết cho thấy khơng có lỗi vi phạm hệ thống thỏa mãn tính chất cần kiểm tra Hình4.4 Kết kiểm tra mơ hình hệ thống đèn 2 B KIỂM CHỨNG MƠ HÌNH KHƠNG ĐÁP ỨNG THUỘC TÍNH .Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Tà i liệu Há»— trợ ôn táºp com Lºn văn Lºn án 37 Hình4.5 Mơ hình cơng tắc đèn khơng Mơ tả trạng thái đèn không thỏa mãn nêu phần 5.2.2.a Trong mơ hình từ trạng thái high,cái đèn chuyển sang trạng thái off mà không qua trạng thái low.Tệp mô tả trạng thái đèn lamp txt off:up:low low:up:high low:down:off high:up:high high:down:off Sau chạy giả lập chế độ random phần ta cần kiểm tra tính chất mà hệ thống cần thỏa mãn việc chạyverify.Tính chất cần kiểm chứng trường hợp là:khi đèn trạng tháihigh,cần phải qua trạng tháilowrồi trạng thái off Tệp lamp1 txt hệ thống đèn không đáp ứng thuộc tính: proctype lamp(){ ::atomic {updown?up->if ::state=0 -> state=1 ::state=1->state=2 ::state=2->state=2 ::else -> skip fi } atomic {updown?down->if ::state=0-> state=0 ::state=1->state=0 ::state=2->state=0 else -> skip fi Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án 38 } od } proctype switch(){ ::updown!up; ::updown!down; od } init{ atomic{ run lamp(); run switch();} } Biểu thức LTLđưa vào SPIN: [] !(a2 && (a1 U a0)) Khi JSPIN ta sử dụng chức Translate để dịch tử ngơn ngử LTL sang Promela.Sau ta chạy verity chương trình chạy chương trình promle hệ thống đèn đồng thời so sánhbiểu thức LTL,kết cho thấy SPIN báo lỗi vi phạm,suy mơ hình đưa vào khơng thảo mãn tính chất cần kiểm tra .Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Tà i liệu Há»— trợ ôn táºp com Luáºn văn Lºn án 39 Hình4.6 Kết kiểm chứng mơ hình hệ thống đèn khơng thỏa mãn BẢNG CHUYỂN ATOMATA Hình4.7 Kết bảng chuyển Atomata Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án 40 KẾT LUẬN Kết khóa luận Đồ án tìm hiểu kiểm chứng mơ hình SPIN, khái niệm kiểm chứng mơ hình, kĩ thuật kiểm chứng Đồ án sâu vào tìm hiểu hệ tương tranh mơ hình hóa hệ thốngbằng Promela đồng thời em tìm hiểu cách kiểm chứng công cụ JSPIN ISPIN Để thực nghiệm kết nghiên cứu đồ án em xây dựng thực nghiệm công tắc đèn Hƣớng nghiên cứu Hướng nghiên cứu đồ án tiếp tục tìm hiểu xây dựng SPIN để đặc tả hệ thống thời gian thực .Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án .Tà i liệu Há»— trợ ôn táºp com Luáºn văn Luáºn án