Nghiên cứu khả năng chuyển đổi giữa các đặc tả hình thức và ứng dụng trong kiểm chứng phần mềm

59 704 0
Nghiên cứu khả năng chuyển đổi giữa các đặc tả hình thức và ứng dụng trong kiểm chứng phần mềm

Đ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

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Đậu Quốc Toản NGHIÊN CỨU KHẢ NĂNG CHUYỂN ĐỔI GIỮA CÁC ĐẶC TẢ HÌNH THỨC VÀ ỨNG DỤNG TRONG KIỂM CHỨNG PHẦN MỀM LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN HÀ NỘI-2015 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Đậu Quốc Toản NGHIÊN CỨU KHẢ NĂNG CHUYỂN ĐỔI GIỮA CÁC ĐẶC TẢ HÌNH THỨC VÀ ỨNG DỤNG TRONG KIỂM CHỨNG PHẦN MỀM Ngành: Công nghệ thông tin Chuyên ngành: Kỹ thuật Phần mềm Mã số: 60480103 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC: TIẾN SĨ PHẠM NGỌC HÙNG HÀ NỘI-2015 Lời cảm ơn Trước tiên, muốn gửi lời cảm ơn sâu sắc đến thầy giáo, TS Phạm Ngọc Hùng, người tận tình bảo hướng dẫn suốt trình học tập, nghiên cứu thực luận văn tốt nghiệp Tôi xin bày tỏ lời cảm ơn sâu sắc đến thầy cô giáo giảng dạy hai năm qua, tạo cho điều kiện thuận lợi để học tập nghiên cứu trường Đại Học Công Nghệ Tôi xin chân thành cảm ơn GS Jeff Magee - Trưởng khoa Kỹ Thuật, trường đại học Hoàng Gia London, tác giả sách "Concurrency - state models and Java programs (2 ed.)" Giáo sư nhiệt tình giải đáp vấn đề mà gặp phải trình thực luận văn Xin gửi lời cảm ơn tới bạn Nguyễn Bảo Ngọc, người giúp đỡ vấn đề kỹ thuật liên quan tới luận văn vấn đề khác sống Tôi muốn gửi lời cảm ơn sâu sắc đến gia đình tất bạn bè, người kịp thời động viên giúp đỡ vượt qua khó khăn sống Cuối cùng, xin gửi lời cảm ơn chân thành tới phòng thí nghiệm công nghệ phần mềm Toshiba Phòng thí nghiệm tạo điều kiện cho có không gian để nghiên cứu trao đổi với bạn bè Tôi xin chân thành cảm ơn ! Hà Nội, 28 tháng 05 năm 2015 Học viên Đậu Quốc Toản iii Lời cam đoan Tôi xin cam đoan luận văn công trình nghiên cứu riêng Các số liệu, kết trình bày luận văn hoàn toàn trung thực chưa công bố công trình khác Tôi trích dẫn đầy đủ tài liệu tham khảo, công trình nghiên cứu liên quan nước quốc tế Ngoại trừ tài liệu tham khảo này, luận văn hoàn toàn công việc riêng Hà Nội, 28 tháng năm 2015 Học viên Đậu Quốc Toản iv Tóm tắt Assume-Guarantee Tool (AGTool) công cụ sinh giả định, có ý nghĩa quan trọng việc giải toán "bùng nổ không gian trạng thái" phương pháp kiểm chứng mô hình Hiện tại, AGTool công cụ tiềm việc hỗ trợ kiểm chứng phần mềm hướng thành phần Thay kiểm chứng toàn hệ thống, công cụ chia toán kiểm chứng thành toán nhỏ ứng với thành phần phần mềm kiểm chứng thành phần cách riêng biệt Tuy nhiên, công cụ AGTool tồn nhiều hạn chế để ứng dụng vào thực tế tương tác với công cụ kiểm chứng phần mềm khác LTSA AGTool sử dụng kiểu liệu liệt kê (LF), kiểu biểu diễn hệ thống dịch chuyển gán nhãn (LTS) Với mục đích tăng khả tương tác với công cụ kiểm chứng phần mềm khác, luận văn nghiên cứu sử dụng tiến trình hữu hạn trạng thái (FSP) thay cho kiểu liệu LF AGTool Mục tiêu luận văn đưa phương pháp chuyển đổi qua lại kiểu liệu LF-FSP ứng dụng vào công cụ kiểm chứng AGTool Luận văn đề xuất thuật toán để chuyển từ LF sang FSP Dựa công cụ LTSA tác giả Jeff Magee, luận văn tiến hành tích hợp AGTool LTSA để chuyển đổi từ FSP sang LF Những cải tiến giúp AGTool trở thành công cụ hiệu tốt thực tế v Bảng từ viết tắt Từ viết tắt AGTool Từ đầy đủ Assume-Guarantee Tool Ý nghĩa Công cụ hỗ trợ kiểm chứng đảm bảo giả định GUI-AGTool Graphical User Interface for Công cụ đồ họa hỗ trợ kiểm AGTool chứng đảm bảo giả định LTS Labeled Transition System Hệ thống dịch chuyển gán nhãn FSP Finite State Process Tiến trình hữu hạn trạng thái MC Model Checking Kiểm chứng mô hình AGV Assume Guarantee Verifica- Kiểm chứng đảm bảo giả tion định LTSA Labeled Transition System Công cụ kiểm chứng hệ thống Analyzer tương tranh Ocaml Objective Caml Ngôn ngữ lập trình hàm OCaml ML Meta-Language Siêu ngôn ngữ LF Listing Form Dạng biểu diễn liệt kê LTS vi Mục lục Giới thiệu Kiến thức 2.1 Labeled Transition System (LTS) 2.2 Các phương pháp biểu diễn LTS 2.2.1 Phương pháp liệt kê 2.2.2 FSP 2.3 Dẫn xuất 2.4 Ghép nối song song 2.5 LTS an toàn thuộc tính an toàn 2.6 Tính thỏa mãn 2.7 Đặc tả ngôn ngữ FSP 2.7.1 Định nghĩa FSP 10 2.7.2 Các định danh 10 2.7.3 Nhãn hành động 11 2.7.4 Const, Range, Set 12 2.7.5 Định nghĩa tiến trình 12 2.7.6 Tiến trình kết hợp 13 2.7.7 Tham số 14 2.7.8 Phép gán lại nhãn phép ẩn 15 2.7.9 Property, Progress Menu 16 2.7.10 Biểu thức 16 vii MỤC LỤC 2.8 2.9 17 2.8.1 Đặc trưng OCaml 17 2.8.2 Cú pháp ngữ nghĩa 18 OCamllex OCamlyacc 23 2.9.1 OCamllex 23 2.9.2 OCamlyacc 23 AGTool 25 3.1 Giới thiệu AGTool 25 3.2 Hạn chế AGTool 27 Chuyển đổi dạng biểu diễn LTS 28 4.1 Chuyển đổi FSP sang LF 29 4.1.1 Ý tưởng 29 4.1.2 Thiết kế 32 4.1.3 Phân tích đánh giá 32 Chuyển đổi LF sang FSP 33 4.2.1 Ý tưởng 33 4.2.2 Phân tích đánh giá 36 4.2 Ngôn ngữ lập trình hàm OCaml Thực nghiệm 37 5.1 Cài đặt chương trình 37 5.2 Giới thiệu chương trình 37 5.3 Thực nghiệm 39 5.4 Đánh giá thực nghiệm 43 Kết luận 44 Tài liệu tham khảo 46 viii Danh sách hình vẽ 2.1 Ví dụ LTS 2.2 Phương pháp biểu diễn liệt kê LTS 2.3 Ví dụ LF 2.4 Ví dụ FSP 2.5 Ghép nối song song INPUT OUTPUT 2.6 Biểu diễn LTS thuộc tính an toàn Safety Property 2.7 Ví dụ định nghĩa số 2.8 Ví dụ định nghĩa danh sách đối số 10 2.9 Định nghĩa FSP 10 2.10 Định nghĩa định danh 11 2.11 Định nghĩa chữ hoa, thường 11 2.12 Định nghĩa nhãn hành động 11 2.13 Định nghĩa tập nhãn hành động 12 2.14 Định nghĩa Const, Range, Set 12 2.15 Định nghĩa tiến trình 13 2.16 Định nghĩa tiến trình địa phương 14 2.17 Định nghĩa thành phần 15 2.18 Định nghĩa thành phần 15 2.19 Định nghĩa tham số 16 2.20 Định nghĩa phép gán lại nhãn 16 2.21 Định nghĩa phép ẩn 17 2.22 Định nghĩa Property 17 2.23 Định nghĩa Progress 18 ix DANH SÁCH HÌNH VẼ 2.24 Định nghĩa Menu 18 2.25 Định nghĩa biểu thức 19 2.26 Định nghĩa biểu thức (tiếp) 20 2.27 Định nghĩa biểu thức (tiếp) 21 2.28 Ví dụ khai báo hàm 21 2.29 Ví dụ gọi hàm 21 2.30 Ví dụ hàm mức cao 22 2.31 Ví dụ hàm nặc danh 22 2.32 Ví dụ hàm đệ quy 22 2.33 Cấu trúc lệnh so sánh mẫu 22 2.34 Ví dụ so sánh mẫu 22 2.35 Cấu trúc tập tin đặc tả từ vựng 23 2.36 Ví dụ tập tin đặc tả từ vựng 24 2.37 Cấu trúc tập tin đặc tả cú pháp 24 3.1 Mô hình công cụ kiểm chứng AGTool 25 3.2 Thành phần đầu vào AGTool 26 3.3 Kết sinh AGTool 26 4.1 Kiến trúc GUI-AGTool 28 4.2 Cấu trúc thành phần chuyển đổi từ FSP sang LF 29 4.3 FSP M 29 4.4 Mô hình FSP Compiler 32 4.5 Cấu trúc thành phần chuyển đổi từ LF sang FSP 33 5.1 Giao diện GUI-AGTool 38 5.2 Giao diện thể giả định sinh GUI-AGTool 39 5.3 Ví dụ FSP đầu vào AGTool 40 5.4 LTS thành phần M1 41 5.5 LTS thành phần M2 41 5.6 LTS thành phần P 41 x Chương Chuyển đổi dạng biểu diễn LTS 4.2 4.2.1 Chuyển đổi LF sang FSP Ý tưởng Hệ thống cài đặt thành phần gọi LF2FSP Thành phần có chức chuyển đổi liệu từ LF sang FSP Bài toán chuyển đổi từ LF sang FSP mô tả Hình 4.5 Hình 4.5: Cấu trúc thành phần chuyển đổi từ LF sang FSP AGTool sinh giả định dạng LF thành phần LF2FSP xử lý Kết đầu thành phần LF2FSP liệu FSP Thành phần LF2FSP cài đặt sử dụng Thuật toán 4.2 33 Chương Chuyển đổi dạng biểu diễn LTS Thuật toán 4.2 Thuật toán chuyển đổi LF sang FSP Đầu vào : list_transitions danh sách hàm chuyển trạng thái, list_states danh sách trạng thái Đầu : fsp_str chuỗi kí tự biểu diễn FSP 1: Khởi tạo fsp_str = null, count = 0, i = 0, tmp = empty 2: {khởi tạo xâu fsp_str rỗng, khởi tạo biến đếm count i 0, khởi tạo xâu tmp rỗng} 3: for all state in list_states 4: count := 5: tmp := null 6: for all (start_state, transition_label, stop_state) in list_transitions 7: {Phương thức ReplaceCharInString dùng để thay kí tự xâu kí tự khác} 8: {Phương thức GetStopState dùng để kiểm tra xem trạng thái có phải trạng thái kết thúc hay không?} 9: if start_state = state then 10: if count = then 11: tmp := tmp + (String.Uppercase start_state) + " = ({" + ReplaceCharInString transition_label ’=’ ’_’) + "} -> " + (GetStopState list_transitions stop_state) 12: else 13: tmp := tmp + "\n | {" + ReplaceCharInString transition_label ’=’ ’_’) + "} -> " + (GetStopState list_transitions stop_state) 14: end if 15: count++ 16: end if 17: end for 18: if count > then 19: i++ 20: if i > then 21: fsp_str := fsp_str + ",\n" + tmp + ")" 22: else 23: fsp_str := fsp_str + tmp + ")" 24: end if 25: end if 26: end for 27: fsp_str fsp_str + ".\n"; 28: return fsp_str 34 Chương Chuyển đổi dạng biểu diễn LTS Danh sách list_transitions bao gồm phần tử có định dạng (start_state, transition_label, stop_state) Tại dòng 11 Thuật toán 4.2 tìm hàm chuyển có trạng thái bắt đầu starts tates Nếu biến đếm count = tạo tiến trình cho FSP Ngược lại, tiến trình thêm vào FSP trước Tại dòng từ 20 đến 27, Thuật toán 4.2 xác định tiến trình có phải tiến trình bắt đầu FSP hay không? Và FSP thêm kí hiệu kết thúc vào cuối dòng 29 Đầu vào : Danh sách list_transitions : [(S0, "in", S1), (S1, "send", S2), (S2, "ack", S0)] Danh sách list_states : [S0, S1, S2] Các bước thực : 1: Bước : 2: Khởi tạo biến: 3: fsp_str = null : xâu rỗng 4: tmp = empty : xâu rỗng 5: count = 0, i = : biến đếm 6: Bước : 7: Duyệt danh sách list_states 8: Gán count = 0, tmp = null 9: Phần tử S0: 10: Duyệt danh sách list_transitions 11: Phần tử (S0, in, S1): 12: count = 13: tmp = "S0 = (in -> S1" 14: count = 15: Phần tử (S1, send, S2): 16: S0 != S1 -> bỏ qua 17: Phần tử (S2, ack, S0): 18: S0 != S1 -> bỏ qua 19: (count = 1) > -> i = 35 Chương Chuyển đổi dạng biểu diễn LTS 20: fsp_tmp = "S0 = ({in} -> S1)" 21: Tương tự phần tử S1 S2, ta : 22: fsp_tmp = "S0 = ({in} -> S1), S1 = ({send} -> S2),S2 = ({ack} -> S0)" 23: Bước : 24: Trả chuỗi fsp_tmp biểu diễn FSP 4.2.2 Phân tích đánh giá Thuật toán 4.2 có tính dừng Điều có nghĩa thuật toán kết thúc sau khoảng hữu hạn thời gian thực thi Tham số đầu vào Thuật toán 4.2 hai danh sách list_transitions list_states Trong Thuật toán 4.2, chương trình dừng duyệt hết toàn list_transitions list_states Các danh sách danh sách hữu hạn phần tử Luận văn trình bày phương pháp chuyển từ LF sang FSP Tuy nhiên, kết thu chưa tối ưu hóa phương pháp sinh FSP dạng đơn giản Để giải toán này, cần phải dựa vào đặc tả cú pháp FSP Sau cải tiến Thuật toán 4.2 để thu xâu biểu diễn FSP tối ưu hóa tốt 36 Chương Thực nghiệm 5.1 Cài đặt chương trình Chương trình cài đặt dựa phần nhân AGTool Dựa vào đó, luận văn cài đặt thành phần có chức chuyển đổi phương pháp biểu diễn LTS Trong trình nghiên cứu phát triển chương trình, thành phần kết hợp với công trình khóa luận tốt nghiệp sinh viên Vũ Hồng Long [9] để cài đặt chương trình GUI-AGTool có giao diện người dùng Ubuntu Luận văn tích hợp với LTSA thông qua cầu nối để hỗ trợ chuyển đổi từ FSP sang LF GUI-AGTool cài đặt ngôn ngữ OCaml thành phần sử dụng công cụ ocamllex ocamlyacc để đọc, phân tích tập tin liệu đầu vào Ocamllex sinh dùng để sinh chương trình phân tích đoán nhận mẫu từ vựng tập tin đầu vào Các biểu thức quy luật đặc tả tập tin từ vựng Ocamllex sinh tập tin mã nguồn OCaml dựa vào tập tin đặc tả Tập tin mã nguồn sinh định nghĩa hàm xử lý từ vựng [15] Ocamlyacc sinh dùng để sinh chương trình phân tích cú pháp tập tin đầu vào [16] Chương trình OCaml có chức phân tích cú pháp cho tập tin liệu đầu vào 5.2 Giới thiệu chương trình Chương trình GUI-AGTool cài đặt cung cấp miễn phí địa Chương trình yêu cầu cài đặt gói thư viện sau: • OCaml 3.12 cung cấp địa http://uet.vnu.edu.vn/~hungpn/GUI-AGTool/ http://caml.inria.fr/download.en.html 37 Chương Thực nghiệm • LablGTK dành cho môi trường OCaml cung cấp địa • Cairo-Ocaml cung cấp địa Chương trình có chức hỗ trợ người dùng nhập/xuất liệu hiển thị dạng biểu đồ trực quan Hình 5.1 giao diện chương trình GUI-AGTool Hình 5.1: Giao diện GUI-AGTool Các chức cài đặt công cụ GUI-AGTool sau: • OpenFSP có chức mở tập tin đặc tả ngôn ngữ FSP OpenListing cho phép mở tập tin đặc tả dạng liệt kê Sau mở tập tin thành công, GUI-AGTool tự động vẽ thành phần đặc tả tập tin dạng biểu đồ trực quan • SaveWorking có chức lưu lại công việc thực Thông tin thành phần đặc tả ngôn ngữ FSP lưu lại vào tập tin để sử dụng lâu dài http://www.math.nagoya-u.ac.jp/~garrigue/soft/olabl/lablgtk.html http://www.cairographics.org/cairo-ocaml/ 38 Chương Thực nghiệm • GenerateAssumption có chức sinh giả định hệ thống đặc tả Phần xử lý bên cài đặt [7] Chức hiển thị kết dạng biểu đồ trực quan Giả định sinh GUI-AGTool hiển thị biểu đồ trực quan đặt thẻ Assumption Hình 5.2 ví dụ cho giả định sinh GUI-AGTool Hình 5.2: Giao diện thể giả định sinh GUI-AGTool • Chức Save thẻ Assumption cho phép lưu giả định dạng tập tin đặc tả ngôn ngữ FSP 5.3 Thực nghiệm Luận văn tiến hành thực nghiệm với chín mẫu đầu vào đặc trưng Kết thu thõa mãn yêu cầu so sánh với công cụ LTSA Các ví dụ đầu vào kết tải địa Thông tin chín mẫu thử nghiệm mô tả Bảng 5.1 M1 , M2 thành phần hệ thống P thuộc tính hệ thống http://uet.vnu.edu.vn/~hungpn/GUI-AGTool/ 39 Chương Thực nghiệm Luận văn trình bày ví dụ minh họa khả sử dụng ngôn ngữ FSP làm liệu đầu vào GUI-AGTool mà luận văn tiến hành thực nghiệm Ví dụ có chứa phép toán if then, when FSP Các thành phần đầu vào biểu diễn FSP Hình 5.3 Chương trình GUI-AGTool xử lý liệu FSP biểu diễn thành phần M1 , M2 , P dạng biểu đồ trực quan Hình 5.4 tương ứng với thành phần M1 Hình 5.5 tương ứng với thành phần M2 Hình 5.6 tương ứng với thành phần thuộc tính P Luận văn sử dụng công cụ LTSA để kiểm chứng lại kết GUI-AGTool thu kết tương ứng Kết công cụ GUI-AGTool LTSA hoàn toàn khớp với đáp ứng yêu cầu luận văn Hình 5.7 tương ứng với thành phần M1 sinh LTSA Hình 5.8 tương ứng với thành phần M2 sinh LTSA Hình 5.9 tương ứng với thành phần thuộc tính P sinh LTSA Bảng 5.1: Bảng kích cỡ số trạng thái mẫu đầu vào Tên tập tin đầu vào M1 M2 P AP1_INPUT_P 3 AP2_INPUT_P 3 AP3_INPUT_P 3 AP4_INPUT_P 5 INPUT_OUTPUT_P 3 Mod_1_two_channel/A_INPUT_P 3 Mod_1_two_channel/Input_Output_p Mod_2_two_channel/A_INPUT_P 5 complex_test M1 = (a[i:1 3] -> if i==1 then STOP else M1) M2 = M2[0], M2[i:0 2] = (when i M2[i+1]), M2[3] = STOP P = (a[i:0 3] -> ( when i==0 x -> STOP | when i!=0 y -> P)) ||CS = (M1 || M2 || P) Hình 5.3: Ví dụ FSP đầu vào AGTool 40 Chương Thực nghiệm Hình 5.4: LTS thành phần M1 Hình 5.5: LTS thành phần M2 Hình 5.6: LTS thành phần P 41 Chương Thực nghiệm Hình 5.7: LTS thành phần M1 sinh LTSA Hình 5.8: LTS thành phần M2 sinh LTSA Hình 5.9: LTS thành phần P sinh LTSA 42 Chương Thực nghiệm 5.4 Đánh giá thực nghiệm Luận văn sử dụng công cụ AGTool, LTSA để kiểm tra so sánh kết GUI-AGTool tiến hành thực nghiệm với mẫu liệu Bảng 5.1 Thực nghiệm thu kết mong đợi Xét mặt ngữ nghĩa LTS, FSP sinh khớp với liệu dạng liệt kê tương ứng Giả định thu dạng FSP tương ứng với kết thu công cụ AGTool Kết có ý nghĩa việc chứng minh phương pháp mà luận văn đưa đắn FSP sinh GUI-AGTool sử dụng lại LTSA có ý nghĩa quan trọng Đặc tả hệ thống giả định sinh GUI-AGTool kiểm chứng công cụ LTSA thông qua việc sử dụng lại đặc tả 43 Chương Kết luận Luận văn tập trung nghiên cứu công cụ AGTool hỗ trợ kiểm chứng dựa thành phần Bằng phương pháp kiểm chứng dựa thành phần, thay kiểm chứng toàn hệ thống thành phần hệ thống kiểm chứng riêng biệt Để thực phương pháp này, công cụ AGTool có nhiệm vụ hỗ trợ sinh giả định hệ thống Dựa hiểu biết công cụ này, luận văn nhận AGTool có nhiều hạn chế cần cải tiến Nhằm giải vấn đề này, luận văn đề xuất hai phương pháp chuyển đổi dạng biểu diễn LTS Hai phương mở tiểm ứng dụng rộng rãi AGTool công nghệ phần mềm đưa AGTool trở thành công cụ có khả tương tác với công cụ kiểm chứng phần mềm khác có sử dụng ngôn ngữ FSP LTSA Phương pháp thứ có chức chuyển đổi từ FSP thành dạng LF Phương pháp sinh kết sử dụng liệu đầu vào AGTool Giả định sinh AGTool chuyển sang FSP phương pháp thứ hai Kết sử dụng lại công cụ kiểm chứng khác LTSA Với hỗ trợ ocamllex ocamlyacc, luận văn cài đặt thành công hai phương pháp vào công cụ GUI-ATool GUI-ATool kế thừa phát triển AGTool Công cụ phần nghiên cứu khóa luận sinh viên Vũ Hồng Long [9] GUI-AGTool cài đặt giao diện người dùng, nên mang lại hiệu cao công việc Luận văn tiến hành thực nghiệm với mẫu thử nghiệm thu kết với mong đợi Tuy nhiên, hai phương pháp mà luận văn đưa chưa kiểm thử cách triệt để Phương pháp chuyển đổi từ FSP sang dạng LF đặc tả cách đầy đủ ngôn ngữ FSP nhiên với trường hợp xử lý đặc biệt chưa kiểm tra tính đắn Phương pháp chuyển đổi từ dạng liệt kê sang cho kết thuộc tập ngôn ngữ FSP chưa tối ưu hóa 44 Chương Kết luận Trong tương lai tiếp tục nghiên cứu phát triển để khắc phục vấn để tồn nêu Với ý tưởng luận văn, cải tiến liệu đầu vào để kiểm thử rộng ngôn ngữ FSP liệu đầu tối ưu hóa tốt Chúng áp dụng hệ thống có kích thước lớn để chứng minh tính hiệu công cụ xây dựng 45 Tài liệu tham khảo [1] Paul C Jorgensen Software Testing: A Craftsman’s Approach, Fourth Edition CRC Press, Inc., Boca Raton, FL, USA, 4th edition, 2013 ISBN 084937345X [2] N G Leveson and C S Turner An investigation of the therac-25 accidents Computer, 26:18–41, July 1993 ISSN 0018-9162 doi: 10.1109/MC.1993 274940 URL http://portal.acm.org/citation.cfm?id=161477.161479 [3] Jeff Magee and Jeff Kramer Concurrency: State Models &Amp; Java Programs, 2nd Edition John Wiley & Sons, Inc., New York, NY, USA, 2006 ISBN 9780-470-06462-7 [4] Edmund M Clarke and Bernd-Holger Schlingloff Model checking, pages 1635–1790 Elsevier Science Publishers B V., Amsterdam, The Netherlands, The Netherlands, 2001 ISBN 0-444-50812-0 URL http://portal.acm.org/ citation.cfm?id=778522.778533 [5] Dimitra Giannakopoulou, Corina S Pasareanu, and Jamieson M Cobleigh Assume-guarantee verification of source code with design-level assumptions In Proceedings of the 26th International Conference on Software Engineering, ICSE ’04, pages 211–220, Washington, DC, USA, 2004 IEEE Computer Society ISBN 0-7695-2163-0 URL http://portal.acm.org/citation.cfm? id=998675.999426 [6] Dimitra Giannakopoulou and Corina S Pasareanu Learning-Based AssumeGuarantee Verification (Tool Paper) Cambridge University Press, 2005 [7] Pham Ngoc Hung, Viet-Ha Nguyen, Toshiaki Aoki, and Takuya Katayama Assume-guarantee tools for component-based software verification In Proceedings of the 2010 Second International Conference on Knowledge and Systems Engineering, KSE ’10, pages 172–177, Washington, DC, USA, 2010 IEEE Computer Society ISBN 978-0-7695-4213-3 doi: http://dx.doi.org/10 1109/KSE.2010.18 URL http://dx.doi.org/10.1109/KSE.2010.18 [8] Jeff Magee and Jeff Kramer, 11 2013 ltsa/ 46 URL http://www.doc.ic.ac.uk/ Chương Kết luận [9] Vũ Hồng Long Xây dựng giao diện cho công cụ agtool Khoá luận tốt nghiệp đại học, Trường Đại học Công nghệ, ĐHQGHN, 2011 [10] Đậu Quốc Toản Chuyển đổi phương pháp biểu diễn lts ứng dụng cho công cụ kiểm chứng phần mềm Khoá luận tốt nghiệp đại học, Trường Đại học Công nghệ, ĐHQGHN, 2011 [11] Robert M Keller Formal verification of parallel programs Commun ACM, 19:371–384, July 1976 ISSN 0001-0782 doi: http://doi.acm.org/10.1145/ 360248.360251 URL http://doi.acm.org/10.1145/360248.360251 [12] Jamieson M Cobleigh, Dimitra Giannakopoulou, and Corina S Păsăreanu Learning assumptions for compositional verification In Proceedings of the 9th international conference on Tools and algorithms for the construction and analysis of systems, TACAS’03, pages 331–346, Berlin, Heidelberg, 2003 SpringerVerlag ISBN 3-540-00898-5 URL http://portal.acm.org/citation.cfm? id=1765871.1765903 [13] Colin Blundell, Dimitra Giannakopoulou, and Corina S Pˇasˇareanu Assume-guarantee testing SIGSOFT Softw Eng Notes, 31, September 2005 ISSN 0163-5948 doi: http://doi.acm.org/10.1145/1108768.1123060 URL http://doi.acm.org/10.1145/1108768.1123060 [14] Joshua B Smith Practical OCaml (Practical) Apress, Berkely, CA, USA, 2006 ISBN 159059620X [15] SooHyoung Oh Ocamllex, 2004 URL http://plus.kaist.ac.kr/~shoh/ ocaml/ocamllex-ocamlyacc/ocamllex-tutorial/index.html [16] SooHyoung Oh Ocamlyacc, 2004 URL http://plus.kaist.ac.kr/~shoh/ ocaml/ocamllex-ocamlyacc/ocamlyacc-tutorial/ocamlyacc-tutorial html 47 [...]... v.v Một trong những phương pháp nhằm chứng minh tính đúng đắn của chương trình đang được quan tâm nghiên cứu và áp dụng vào thực tế là kiểm chứng mô 1 Chương 1 Giới thiệu hình (model checking) [4] Ý tưởng của phương pháp này là xây dựng mô hình của hệ thống và các thuộc tính cần kiểm tra bằng các công cụ toán học và chứng minh tự động tính đúng đắn của nó dựa trên mô hình này Tuy nhiên, một trong những... OCaml tương ứng Tập tin mã nguồn đặc tả từ vựng có đuôi mở rộng là mll Để biên dịch tập tin này sử dụng dòng lệnh: ocamllex ∗ mll Tập tin đặc tả từ vựng gồm có bốn thành phần : header, các định nghĩa, các luật và trailer Trong đó, các thành phần header và rules là cần thiết còn hai thành phần còn lại là rules và trailer là tùy chọn Cấu trúc tập tin đặc tả từ vựng được mô tả như Hình 2.35 Hình 2.36 là... kiểm chứng phần mềm, công cụ hỗ trợ và bài toán cần giải quyết trong luận văn này Tiếp theo, chương 2 trình bày các khái niệm cơ bản nhằm phục vụ luận văn Chương này bao gồm các khái niệm về máy hữu hạn trạng thái, dẫn xuất, ghép nối song song, thuộc tính an toàn, đặc tả của ngôn ngữ FSP, ngôn ngữ lập trình hàm OCaml, Ocamllex và Ocamlyacc Công cụ kiểm chứng phần mềm dựa thành phần AGTool được mô tả. .. AssertDef Hình 2.9: Định nghĩa FSP Bên cạnh các định nghĩa dành cho tiến trình và kết hợp các tiến trình, một mô tả FSP còn bao gồm các định nghĩa của các hằng số, dãy số nguyên, tập các nhãn hành động, thuộc tính an toàn, thuộc tính progress, các menu, fluent và assert Các luật sinh mô tả FSP được định nghĩa trong Hình 2.9 2.7.2 Các định danh Các định nghĩa FSP và các tham số tiến trình là các định... trình Vì vậy, kiểu của giá trị và kiểu trả về của hàm trong ngôn ngữ OCaml không cần đặc tả rõ, điều này sẽ làm cho dung lượng mã nguồn giảm xuống Mã nguồn OCaml cũng có thể kiểm chứng được Công cụ kiểm chứng tự động có thể kiểm tra mã nguồn OCaml và chứng thực rằng các kiểu được sử dụng hợp lệ Công cụ kiểm tra sẽ đi sâu vào phân tích tĩnh chương trình ở một mức độ nào đó mà các ngôn ngữ lập trình khác... kê (LF)) Cách biểu diễn này yêu cầu phải chuẩn bị các thành phần đầu vào một cách chi tiết, tốn nhiều thời gian và dễ gây ra lỗi Bên cạnh đó, dạng biểu diễn liệt kê không được ứng dụng rộng rãi như một số ngôn ngữ mô hình hóa khác, ví dụ như FSP Vì vậy, AGTool gặp khó khăn trong việc tương tác và sử dụng lại đặc tả của các chương trình kiểm chứng phần mềm khác như LTSA 2 [8] Để giải quyết những vấn đề... dụng vào các hệ thống có kích thước lớn [4] Phương pháp kiểm chứng giả định-đảm bảo (Assume-Guarantee Verification) [5] được xem là giải pháp tiềm năng để giải quyết vấn đề trên cho các hệ thống dựa trên thành phần Phương pháp này được xây dựng dựa trên phương pháp kiểm chứng mô hình kết hợp với kỹ thuật chia để trị nhằm mục đích chia nhỏ công việc kiểm chứng cả hệ thống thành các bài toán con để kiểm. .. định danh bắt đầu bởi chữ hoa Nhãn hành động và các biến là các định danh được bắt đầu bằng chữ thường [3] Các luật sinh mô tả định danh được định nghĩa trong Hình 2.10 Hình 2.11 đặc tả các định danh hoa, thường U pperCaseLetter đặc tả một chữ cái hoa LowerCaseLetter đặc tả một chữ cái thường hoặc gạch dưới ’_’ Digit đặc tả chữ số thập phân 10 Chương 2 Kiến thức cơ bản ConstantIdent: RangeIdent: SetIdent:... một biểu thức Toán tử kết hợp song song có ý nghĩa logic khi sử dụng trong biểu thức Toán tử lựa chọn | có nghĩa là bit-wise or trong biểu thức Và toán tử gán lại nhãn / có nghĩa là phép chia trong biểu thức [3] Hình 2.25, 2.26, 2.27 biểu diễn đặc tả biểu thức Biểu thức @(A, e) trả về giá trị nhãn của phần tử thứ e của tập A Biểu thức #A trả về số lượng phần tử của tập A 16 Chương 2 Kiến thức cơ bản... bởi nhóm nghiên cứu [7] AGTool cho phép người dùng sinh ra một giả thiết kiểm chứng để kiểm tra một thành phần và cả hệ thống có thỏa mãn một thuộc tính hay không Các thành phần đầu vào của AGTool được biểu diễn dưới dạng một loại máy hữu hạn trạng thái (LTS) và được truyền vào AGTool bằng cách liệt kê các hàm chuyển trạng thái (trong luận văn này được gọi là dạng biểu diễn liệt kê (LF)) Cách biểu ... CÔNG NGHỆ Đậu Quốc Toản NGHIÊN CỨU KHẢ NĂNG CHUYỂN ĐỔI GIỮA CÁC ĐẶC TẢ HÌNH THỨC VÀ ỨNG DỤNG TRONG KIỂM CHỨNG PHẦN MỀM Ngành: Công nghệ thông tin Chuyên ngành: Kỹ thuật Phần mềm Mã số: 60480103 LUẬN... pháp kiểm chứng mô hình Hiện tại, AGTool công cụ tiềm việc hỗ trợ kiểm chứng phần mềm hướng thành phần Thay kiểm chứng toàn hệ thống, công cụ chia toán kiểm chứng thành toán nhỏ ứng với thành phần. .. thành phần phần mềm kiểm chứng thành phần cách riêng biệt Tuy nhiên, công cụ AGTool tồn nhiều hạn chế để ứng dụng vào thực tế tương tác với công cụ kiểm chứng phần mềm khác LTSA AGTool sử dụng kiểu

Ngày đăng: 11/11/2015, 19:10

Từ khóa liên quan

Mục lục

  • Lời cảm ơn

  • Lời cam đoan

  • Tóm tắt nội dung

  • Bảng từ viết tắt

  • 1 Giới thiệu

  • 2 Kiến thức cơ bản

    • 2.1 Labeled Transition System (LTS)

    • 2.2 Các phương pháp biểu diễn LTS

      • 2.2.1 Phương pháp liệt kê

      • 2.2.2 FSP

      • 2.3 Dẫn xuất

      • 2.4 Ghép nối song song

      • 2.5 LTS an toàn và thuộc tính an toàn

      • 2.6 Tính thỏa mãn

      • 2.7 Đặc tả ngôn ngữ FSP

        • 2.7.1 Định nghĩa FSP

        • 2.7.2 Các định danh

        • 2.7.3 Nhãn hành động

        • 2.7.4 Const, Range, Set

        • 2.7.5 Định nghĩa tiến trình

        • 2.7.6 Tiến trình kết hợp

        • 2.7.7 Tham số

        • 2.7.8 Phép gán lại nhãn và phép ẩn

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

Tài liệu liên quan