Xây dựng công cụ kiểm chứng mô hình phần mềm kiểm tra các chương trình hữu hạn, dựa trên hệ thống java path finder

74 3 0
Xây dựng công cụ kiểm chứng mô hình phần mềm kiểm tra các chương trình hữu hạn, dựa trên hệ thống java path finder

Đ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 BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ──────── * ──────── ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC NGÀNH CÔNG NGHỆ THÔNG TIN Xây dựng cơng cụ kiểm chứng mơ hình phần mềm kiểm tra chương trình hữu hạn, dựa hệ thống Java Path-Finder Sinh viên thực hiện: Lê Anh Tùng Lớp CNPM-K51 Giáo viên hướng dẫn: PGS.TS Huỳnh Quyết Thắng Hà Nội 05-2011 PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Thông tin sinh viên  Họ tên sinh viên: Lê Anh Tùng  Điện thoại liên lạc: 0985170188  Lớp: Công nghệ phần mềm – K51  Đồ án tốt nghiệp thực tại: Bộ môn Công nghệ phần mềm, Viện CNTT & Truyền thông – Đại học Bách Khoa Hà Nội  Thời gian làm ĐATN: Từ ngày 15/ 01/2011 đến 25 /05/2011 Email: atungbk@gmail.com Hệ đào tạo: Đại học quy Mục đích nội dung ĐATN  Tìm hiểu Kiểm tra mơ hình, thực thi tượng trưng  Làm quen với hệ thống Java Path-Finder áp dụng kiểm tra mơ hình  Đưa cách tiếp cận để giải số vấn đề tồn kiểm tra mơ hình việc thực thi chương trình hữu hạn Các nhiệm vụ cụ thể ĐATN  Nghiên cứu lý thuyết Kiểm tra mơ hình thực thi tượng trưng cách áp dụng chúng vào tốn kiểm tra chương trình hữu hạn  Đưa vấn đề tồn phương pháp đề xuất hướng tiếp cận để giải tồn  Xây dựng công cụ từ hướng tiếp cận đề xuất dựa hệ thống Java PathFinder kết hợp với thực thi tượng trưng để giải toán Lời cam đoan sinh viên Tôi – Lê Anh Tùng – cam đoan ĐATN cơng trình nghiên cứu thân tôi, hướng dẫn PGS.TS Huỳnh Quyết Thắng Các kết nêu ĐATN trung thực, khơng phải chép tồn văn cơng trình khác Sinh viên thực [Lê Anh Tùng – 20063601] Khóa 51 Lớp CNPM B ii Hà Nội, ngày tháng…… năm Tác giả ĐATN Lê Anh Tùng Xác nhận giáo viên hướng dẫn mức độ hoàn thành ĐATN cho phép bảo vệ Hà Nội, ngày tháng…… năm Giáo viên hướng dẫn PGS.TS Huỳnh Quyết Thắng Sinh viên thực [Lê Anh Tùng – 20063601] Khóa 51 Lớp CNPM B iii TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP Đồ án giới thiệu phương pháp tiếp cận cho việc kết hợp thực thi tượng trưng (Symbolic execution) điều khiển thực thi (Program Monitoring) để kiểm thử chương trình Java hữu hạn có thỏa mãn cơng đặc tả logic thời gian tuyến tính (Linear Temporal Logic -LTL) hay khơng LTL logic hình thức sử dụng rộng rãi để biểu diễn tính chất thời gian hệ thống phần cứng phần mềm Để giải tốn đặt ra, nhiều phương pháp hình thức khác thường yêu cầu nhiều công sức thủ công thường không phù hợp cho việc kiểm chứng hệ thống thật; đặc biệt phương pháp kiểm tra mơ hình thơng thường hay sử dụng Buchi automat Tuy nhiên Buchi automat lại không thiết kế cho việc kiểm tra dãy thực thi hữu hạn Chính vậy, phương pháp tiếp cận bao gồm việc thay đổi thuật tốn chuyển đổi từ cơng thức LTL sang automat hữu hạn trạng thái Sau dựa vào automata này, hệ thống kết hợp điều khiển thực thi thực thi tượng trưng để tự động kiểm chứng chương trình Java hữu hạn tất đường chương trình Hướng tiếp cận sau cài đặt thành phần mở rộng hệ thống Java Pathfinder cho việc phân tích kiểm chứng chương trình Java Sinh viên thực [Lê Anh Tùng – 20063601] Khóa 51 Lớp CNPM B iv ABSTRACT OF THESIS This thesis represents an approach to combining symbolic execution with program monitoring for the verification of finite Java programs against Linear Temporal Logic (LTL) specifications LTL has been widely used for expressing temporal properties of programs viewed as transition systems Many formal methods require significant manual effort and not scalable for real sized system; typical model checking environments use Buchi automata which are not designed to deal with finite execution traces Hence, the approach presented here consists of modifying the standard LTL to Buchi automata conversion technique to generate finite-automata, which are used to check finite program traces Besides, the verification can combine with symbolic execution to allow automatically detect counter-examples in all feasible paths of the program The approach has been then implemented in a tool, which is an extension of the Java Pathfinder framework for runtime analysis of Java programs Sinh viên thực [Lê Anh Tùng – 20063601] Khóa 51 Lớp CNPM B v LỜI CẢM ƠN Trước tiên, muốn gửi lời cảm ơn đến bố mẹ u Nếu khơng có ni nấng, chăm lo bố mẹ, có ngày hơm Con khơng qn cơng ơn lớn lao bố mẹ, cố gắng phấn đấu sống làm việc thật tốt, để nguồn vui bố mẹ Em xin gửi lời cảm ơn sâu sắc đến thầy PGS.TS Huỳnh Quyết Thắng, thầy tận tình giúp đỡ, trực tiếp bảo, hướng dẫn em trong suốt trình làm đồ án tốt nghiệp Trong thời gian làm việc với thầy thầy hướng dẫn đồ án, em không tiếp thu thêm nhiều kiến thức bổ ích mà cịn học tập tinh thần làm việc, thái độ nghiên cứu khoa học nghiêm túc, hiệu quả, điều cần thiết cho em trong q trình học tập và cơng tác sau Bên cạnh đó, em xin gửi lời cảm ơn chân thành đến thầy cô giáo trường đại học Bách Khoa Hà nội nói chung thầy cô giáo Viện Công nghệ Thông tin Truyền thơng, mơn Cơng nghệ phần mềm nói riêng tận tình giảng dạy, truyền đạt cho em những kiến thức, kinh nghiệm quý báu suốt thời gian qua Ngoài ra, xin gửi lời cảm ơn sâu sắc đến Dinh Nguyen, Ewgenij Starostin, viện Khoa học máy tính, Đại học Berlin, Cộng hòa liên bang Đức; Franco Raimondi, Đại học Middlesex, Luân Đôn, Anh quan quản lý hàng không vũ trụ Mỹ NASA hỗ trợ tơi nhiều q trình nghiên cứu, tìm hiểu phát triển công cụ Cuối cùng, anh xin cám ơn em, người bạn gái mà anh yêu thương Cám ơn em bên anh, giúp anh có thêm sức mạnh để vượt qua khó khăn Hà Nội ngày 15/05/2011 Lê Anh Tùng Sinh viên thực [Lê Anh Tùng – 20063601] Khóa 51 Lớp CNPM B vi MỤC LỤC PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP ii TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP iv ABSTRACT OF THESIS v LỜI CẢM ƠN .vi MỤC LỤC DANH MỤC CÁC HÌNH MINH HỌA DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ PHẦN MỞ ĐẦU PHẦN 1:ĐẶT VẤN ĐỀ VÀ ĐỊNH HƯỚNG GIẢI PHÁP .7 CHƯƠNG I BÀI TỐN KIỂM TRA CÁC CHƯƠNG TRÌNH JAVA HỮU HẠN 1.1 Sơ qua kiểm tra mơ hình bối cảnh 1.2 Bài toán kết hợp thực thi tượng trưng điều khiển thực thi để kiểm chứng tính chất LTL chương trình Java hữu hạn .10 1.2.1 Lý đưa toán 10 1.2.2 Mô tả toán hướng giải 12 1.3 Tổng kết chương I 13 CHƯƠNG II CÁC KIẾN THỨC NỀN TẢNG 14 2.1 Các tính chất thời gian 14 2.2 Logic thời gian tuyến tính 15 2.2.1 Ngữ nghĩa chuẩn logic thời gian tuyến tính .15 2.2.2 Ngữ nghĩa LTL dãy thực thi hữu hạn 16 2.3 Buchi automat cho từ vô hạn .17 2.4 Automat cho từ hữu hạn 18 2.5 Thực thi tượng trưng 18 2.6 Tổng kết chương II 20 CHƯƠNG III BÀI TỐN KIỂM TRA MƠ HÌNH TRUYỀN THỐNG VÀ CÁC THỰC TRẠNG CỦA NÓ 21 3.1 Định nghĩa tốn kiểm tra mơ hình .21 3.2 Giải toán kiểm tra mơ hình sau quy vấn đề kiểm tra tính rỗng Buchi 22 3.3 Những vấn đề áp dụng toán kiểm tra mơ hình vào dãy thực thi hữu hạn 25 3.4 Tổng kết chương III 26 PHẦN 2: CÁC KẾT QUẢ ĐÃ ĐẠT ĐƯỢC 27 CHƯƠNG IV KIẾN TRÚC CỦA HỆ THỐNG .28 4.1 Cấu trúc tổng quan hệ thống xây dựng 28 4.2 Java PathFinder (JPF) 29 4.2.1 Cấu trúc JPF .29 4.2.2 Choice Generator 31 4.2.3 Property .33 4.2.4 Listener .34 4.3 Symbolic PathFinder .36 Sinh viên thực [Lê Anh Tùng – 20063601] Khóa 51 Lớp CNPM B vii 4.4 Tổng kết chương IV 37 CHƯƠNG V XÂY DỰNG MỘT BỘ CHUYỂN ĐỔI CÁC CÔNG THỨC LTL SANG AUTOMAT HỮU HẠN TRẠNG THÁI 38 5.1 Tạo phân tích cú pháp cho công thức LTL 38 5.1.1 Các toán tử LTL hỗ trợ 39 5.1.2 Các mệnh đề nguyên tử hỗ trợ 39 5.1.3 Ngữ pháp LTL 41 5.2 Cài đặt thuật tốn để chuyển từ cơng thức LTL sang automat hữu hạn trạng thái 43 5.3 Tổng kết chương V 48 CHƯƠNG VI KẾT HỢP THỰC THI TƯỢNG TRƯNG VÀ ĐIỀU KHIỂN THỰC THI ĐỂ KIỂM CHỨNG CÁC CHƯƠNG TRÌNH JAVA HỮU HẠN 49 6.1 Cài đặt listener cho JPF để kiểm chứng dãy thực thi hữu hạn 49 6.2 Kết hợp thực thi tượng trưng điều khiển thực thi việc kiểm tra điều kiện chuyển trạng thái 51 6.2.1 Mệnh đề nguyên tử lời gọi phương thức 52 6.2.2 Mệnh đề nguyên tử biến logic .52 6.2.3 Mệnh đề nguyên tử biểu thức logic .52 6.3 Mở rộng lớp PCChoiceGenerator Symbolic Pathfinder để rẽ nhánh chương trình thực thi tượng trưng 54 6.4 Tổng kết chương VI 55 CHƯƠNG VII ỨNG DỤNG CƠNG CỤ LTL VÀO CÁC BÀI TỐN CỤ THỂ 56 7.1 Bài toán ếch .56 7.2 Kiểm chứng lỗi Race Condition chương trình đa luồng 58 7.3 Ví dụ kiểm chứng kết hợp với thực thi tượng trưng 60 7.4 Tổng kết chương VII .62 KẾT LUẬN 63 TÀI LIỆU THAM KHẢO 65 Sinh viên thực [Lê Anh Tùng – 20063601] Khóa 51 Lớp CNPM B viii DANH MỤC CÁC HÌNH MINH HỌA Hình II-1: Buchi tương đương với cơng thức o ¬( (p⊃ ◊q) 18 Hình II-2: Cây thực thi tượng trưng với ví dụ tính trị tuyệt đối hiệu hai số .20 Hình III-1: Thuật tốn Nested Depth-First Search 24 Hình IV-1: Sơ đồ tổng quan hệ thống 28 Hình IV-2: Thiết kế JPF 31 Hình IV-3: Trình tự ChoiceGenerator thực thi thị get_field 33 Hình IV-4: JPF Listeners 34 Hình IV-5: Các loại Listener 36 Hình V-1: Ngữ pháp cho công thức LTL 41 Hình V-2: Ngữ pháp cho mệnh đề nguyên tử 42 Hình V-4: Automat sinh cho cơng thức (a ∨ b) viết theo cú pháp PROMELA 48 Hình V-5: Automat sinh với thuật tốn bên cho cơng thức (a\/ b) 48 Hình VI-1: Thuật toán cho việc điều khiển thực thi 50 Hình VII-1: Bài tốn ếch 57 Hình VII-2: Ví dụ Race condition 59 Hình VII-3: Kết kiểm chứng cho ví dụ Race condition 60 Hình VII-4: Ví dụ thực thi tượng trưng 61 Hình VII-5: Máy hữu hạn trạng thái theo cú pháp PROMELA 61 Hình VII-6: Kết kiểm chứng cho ví dụ thực thi tượng trưng .62 Sinh viên thực [Lê Anh Tùng – 20063601] Khóa 51 Lớp CNPM B ix DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ ST Từ viết T tắt Dạng đầy đủ Giải nghĩa MC Model Checking Kiểm chứng mơ hình JPF Java Path-Finder Cơng cụ MC NASA SE Symbolic Execution Thực thi tượng trưng SPIN Simple Promela Interpreter Công cụ kiểm chứn LTL Linear Temporal Logic Logic thời gian tuyến tính SPF Symbolic Path-Finder JPF thực thi tượng trưng PC Path Condition Điều kiện rẽ nhánh FA Finite-state Automata Automat trạng thái hữu hạn DFS Depth First Search Tìm kiếm theo chiều sâu 10 JVM Java Vitual Machine Máy ảo Java 11 ANTLR ANother Tool for Language Recognition Bộ phân tích cú pháp 12 SLAM Social Location Annotation Mobile Công cụ MC Microsoft Sinh viên thực [Lê Anh Tùng – 20063601] Khóa 51 Lớp CNPM B x

Ngày đăng: 27/06/2023, 21:34