1. Trang chủ
  2. » Luận Văn - Báo Cáo

NGHIÊN cứu kỹ THUẬT GIẢI THÍCH TRỪU TƯỢNG

13 257 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

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN - NGUYỄN THANH LIÊM NGHIÊN CỨU KỸ THUẬT GIẢI THÍCH TRỪU TƯỢNG LUẬN VĂN THẠC SĨ KHOA HỌC Hà Nội – Năm 2014 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN - NGUYỄN THANH LIÊM NGHIÊN CỨU KỸ THUẬT GIẢI THÍCH TRỪU TƯỢNG Chuyên ngành: CƠ SỞ TOÁN HỌC CHO TIN HỌC Mã số: 60460110 LUẬN VĂN THẠC SĨ KHOA HỌC NGƯỜI HƯỚNG DẪN KHOA HỌC TS NGUYỄN TRƯỜNG THẮNG Hà Nội – Năm 2014 LỜI CAM ĐOAN Tôi xin cam đoan công trình nghiên cứu có giúp đỡ giáo viên hướng dẫn TS Nguyễn Trường Thắng - Viện Công nghệ thông tin – Viên Hàn lâm Khoa học Công nghệ Việt Nam Các nội dung kết nghiên cứu luận văn hoàn toàn trung thực, tham khảo theo tài liệu tác giả giáo viên hướng dẫn cung cấp liệt kê mục tài liệu tham khảo Học viên Nguyễn Thanh Liêm LỜI CẢM ƠN Lời xin gửi lời cảm ơn chân thành bày tỏ lòng biết ơn sâu sắc tới giáo viên hướng dẫn TS Nguyễn Trường Thắng – Phó Viện trưởng - Viện Công nghệ thông tin - Viện Hàn lâm Khoa học Công nghệ Việt Nam, thầy hướng dẫn tận tình, giúp đỡ truyền đạt cho kiến thức, kinh nghiệm quí báu suốt thời gian vừa qua, thầy cung cấp cho tài liệu hữu ích để hoàn thành luận văn Tôi xin gửi lời cảm ơn chân thành tới tất thầy, cô môn Tin học - Khoa Toán - Cơ - Tin học - Trường Đại học Khoa học Tự nhiên - ĐHQG Hà Nội giúp đỡ kiến thức, tinh thần lời khuyên quí báu suốt trình học tập vừa qua Cảm ơn đến tất bạn bè, đồng nghiệp Viện Công nghệ thông tin - Viện Hàn lâm Khoa học Công nghệ Việt Nam, trường Đại học Hải Dương cung cấp cho tài liệu quí báu, giúp đỡ, động viên tạo điều kiện cho tất mặt suốt năm qua Cuối xin gửi lời cảm ơn tới thành viên gia đình tạo điều kiện tốt cho tôi, động viên, cổ vũ trình học tập nghiên cứu để hoàn thành luận văn Học viên Nguyễn Thanh Liêm MỤC LỤC LỜI CAM ĐOAN LỜI CẢM ƠN MỤC LỤC DANH MỤC CÁC THUẬT NGỮ VÀ CHỮ VIẾT TẮT DANH MỤC CÁC HÌNH VẼ MỞ ĐẦU Chương - TỔNG QUAN 10 1.1 Tổng quan phân tích chương trình 10 1.1.1 Ý tưởng toán phân tích chương trình 11 1.1.2 Phân tích chương trình tĩnh 12 1.2 Tổng quan kỹ thuật giải thích trừu tượng 13 1.3 Tổng quan tình hình nghiên cứu 15 1.4 Kết luận chương 16 Chương - CỞ SỞ LÝ THUYẾT CỦA KỸ THUẬT GIẢI THÍCH TRỪU TƯỢNG 17 2.1 Khái niệm kỹ thuật giải thích trừu tượng 17 2.2 Ứng dụng kỹ thuật giải thích trừu tượng 17 2.3 Một số khái niệm 18 2.3.1 Ngữ nghĩa cụ thể chương trình 18 2.3.2 Thuộc tính an toàn chương trình 19 2.3.3 Miền trừu tượng 20 2.3.4 Độ phủ kỹ thuật giải thích trừu tượng 21 2.3.5 Các phương pháp hình thức 22 2.3.6 Tính chất cần thiết ngữ nghĩa trừu tượng 23 2.4 Lý thuyết dàn 25 2.5 Lý thuyết điểm cố định 28 2.5.1 Điểm cố định 28 2.5.2 Mở rộng ký hiệu điểm cố định 29 2.5.3 Bước lặp 29 2.5.4 Đồ thị luồng điều khiển (Control Flow Graphs - CFG) 33 2.5.5 Phân tích luồng liệu (Data Flow Analysis) 36 2.5.6 Thuật toán tìm điểm cố định 36 2.6 Tiếp cận kết nối Galois cho kỹ thuật giải thích trừu tượng 38 2.6.1 Kết nối Galois 38 2.6.2 Tính đủ tính xác (Soundness and Precision) 39 2.6.3 Mở rộng tới không gian hàm (Extension to Function Spaces) 40 2.6.4 Trừu tượng hàm (Functional Abstraction) 41 2.7 Trừu tượng hóa ngữ nghĩa chương trình 41 2.7.1 Hệ dịch chuyển 41 2.7.2 Ngữ nghĩa vết (Trace semantics) 43 2.7.3 Biểu diễn ngữ nghĩa vết dạng điểm cố định 44 2.7.4 Bao đóng phản xạ bắc cầu (RTC - reflexive transitive closure) trừu tượng hóa ngữ nghĩa vết 45 2.7.5 Thỏa mãn kết nối Galois 45 2.7.6 Biểu diễn ngữ nghĩa RTC dạng điểm cố định 46 2.7.7 Ngữ nghĩa tới trừu tượng hoá ngữ nghĩa RTC 47 2.7.8 Biểu diễn ngữ nghĩa tới dạng điểm cố định 47 2.8 Kết luận chương 48 Chương - THỰC NGHIỆM 49 3.1 Giới thiệu TVLA 49 3.2 Phân tích TVLA 50 3.2.1 Cấu trúc 3-valued Logic 51 3.2.2 Biểu diễn trạng thái nhớ Heap qua cấu trúc Logic 52 3.2.3 Trừu tượng heap 53 3.2.4 Biểu diễn ngữ nghĩa chương trình 55 3.2.5 Ví dụ phân tích chương trình 57 3.3 Thuật toán sinh hệ ràng buộc Coerce thuật toán giải hệ ràng buộc tìm điểm cố định Focus 59 3.3.1 Công thức 59 3.3.2 Các lớp công thức 60 3.3.3 Ngữ nghĩa 60 3.3.4 Focus 61 3.3.5 Công thức cập nhật 63 3.3.6 Thuật toán Coerce xác định hệ ràng buộc 65 3.3.7 Thuật toán Focus giải hệ ràng buộc 67 3.4 Thử nghiệm 70 3.4.1 Đặc tả hệ thống TVLA 70 3.4.2 Giới thiệu toán 71 3.4.3 Đặc tả liệu đầu vào 71 3.4.4 Kết phân tích 76 3.5 Kết luận chương 77 KẾT LUẬN 78 TÀI LIỆU THAM KHẢO 79 PHỤ LỤC A: 81 PHỤ LỤC B: 83 DANH MỤC CÁC THUẬT NGỮ VÀ CHỮ VIẾT TẮT TT Tiếng Anh - Viết tắt Abstract domain Tiếng Việt Miền trừu tượng Abstract semantics Ngữ nghĩa trừu tượng Concrete domain Miền cụ thể Concrete semantics Ngữ nghĩa cụ thể Continue - Tính liên tục hàm số Control Flow Graphs - CFG Đồ thị luồng điều khiển Data Flow Analysis - DFA Phân tích luồng liệu Fixpoint - fix Fixpoint approximation 10 Galois connections Điểm cố định Xấp xỉ điểm cố định Kết nối Galois 11 Interval semantics Ngữ nghĩa khoảng Dàn - Tập hợp phần tử có thứ tự phần có điểm chặn lớn trặn nhỏ Tính đơn điệu hàm Thu hẹp Tập hợp phần tử có thứ tự Tính xác Ngữ nghĩa tới 12 Lattice 13 14 15 16 17 Monotone - mon Narrowing Partial Ordered Set - Poset Precise Reachability semantics 18 Reflexive transitive closure - RTC Reflexive transitive closure 19 semantics - RTCs 20 Soundness Bao đóng phản xạ bắc cầu Ngữ nghĩa bao đóng phản xạ bắc cầu Tính đủ 21 Trace semantics Ngữ nghĩa vết, Tập hợp dấu vết trình chuyển đổi trạng thái chương trình 22 Transition system 23 Widening Hệ dịch chuyển Mở rộng DANH MỤC CÁC HÌNH VẼ TT 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 Hình ảnh sử dụng Hình 1.1: Bài toán phân tích chương trình tổng quát Hình 1.2: Trừu tượng hóa theo điểm cố định Hình 1.3: Các thành phần phân tích chương trình Hình 2.1 Sơ đồ hành vi chương trình Hình 2.2: Quĩ đạo an toàn thực thi Hình 2.3: Quĩ đạo không an toàn kiểm thử/gỡ lỗi Hình 2.4: Biểu diễn miền trừu tượng Hình 2.5: Trừu tượng hóa quĩ đạo hành vi chương trình Hình 2.6: Trừu tượng hóa quĩ đạo hành vi không đảm bảo tính đủ Hình 2.7: Lỗi trừu tượng hóa quĩ đạo hành vi không xác Hình 2.8: Tiêu chuẩn trừu tượng hóa theo khoảng Hình 2.9: Biểu đồ Hasse dàn (2A,⊆) Hình 2.10: Biểu diễn ngữ nghĩa chương trình thành dàn Hình 2.11: Biểu diễn điểm cố định hàm cosx = x Hình 2.12: Tính toán điểm cố định dàn Hình 2.13: Phép cộng dàn Hình 2.14: Phép nâng dàn Hình 2.15: Dàn phẳng Hình 2.16: CFG cho lệnh đơn giản Hình 2.17: CFG cho cấu trúc Hình 2.18: CFG cho cấu trúc rẽ nhánh Hình 2.19: CFG cho cấu trúc lặp Hình 2.20: CFG hàm tính n! Hình 2.21: ¯F(¯x) xấp xỉ F(x) Hình 2.22: Biểu diễn quan hệ chuyển tiếp ngữ nghĩa chương trình Hình 2.23: Hệ chuyển dịch quĩ đạo thực thực thi chương trình Hình 2.24: Biểu diễn ngữ nghĩa vết thực thi Hình 2.25: Biểu diễn ngữ nghĩa vết dạng điểm cố định Hình 2.26: Trừu tượng hóa đến ngữ nghĩa tới Hình 3.1: Các toán tử 3-valued logic Kleene Hình 3.2: Biểu diễn heap cụ thể Hình 3.3: Trừu tượng hóa heap Hình 3.4: Kết heap trừu tượng đầu Hình 3.5: Trạng thái chương trình sử dụng cấu trúc 2-valued logic Hình 3.6: Trạng thái chương trình sử dụng 3-valued logic Hình 3.7: Biểu diễn trình làm việc phân tích chương trình Hình 3.8: Ứng dụng giải thích trừu tượng cho phân tích lệnh Hình 3.9: Kết phân tích hàm tạo danh sách liên kết Trang 12 14 14 18 19 20 21 22 24 24 25 26 28 30 30 32 31 32 34 34 34 35 35 41 42 42 43 44 48 52 53 55 56 58 58 59 62 77 MỞ ĐẦU Ngày nay, hệ thống phần mềm sử dụng cách phổ biến tất lĩnh vực đời sống, sản xuất, kinh doanh như: kinh tế, tài chính, kế toán, y tế, giáo dục, phủ,… , thiết bị điện tử công nghiệp dân dụng, phát triển trở lên ngày phức tạp Sự phức tạp lớn hệ thống điều khiển hệ thống nhúng thiết bị công nghiệp, hàng không, vũ trụ, … Đối với đơn vị, cá nhân tổ chức làm phần mềm chuyên nghiệp họ hiểu sản phẩm phần mềm họ tạo chạy cách hoàn hảo từ lúc mà không mắc lỗi Trong trình phát triển đưa vào sử dụng phần mềm bất kỳ, hầu hết tất lỗi phát sau phần mềm đưa vào sử dụng Do vậy, hoạt động kiểm thử đóng góp vai trò quan trọng nhằm đảm bảo chất lượng hệ thống phần mềm Các hoạt động kiểm thử nhà phát triển phần mềm tính đến suốt trình phát triển cho hệ thống phần mềm Tuy nhiên, hoạt động kiểm thử thường có chi phí cao, chiếm đến 40% toàn chi phí phát triển phần mềm, mặt thời gian nhiều việc xây dựng hệ thống Hầu hết hoạt động kiểm thử nhằm mục đích phân tích thành phần cấu trúc phần mềm để xác định số lượng lớn lỗi tiến trình phát triển: từ đặc tả mã hóa Đối với hệ thống phần mềm phức tạp, cách giải đưa ban đầu với hệ thống cẩn thận khâu: phân tích, thiết kế, lập trình, kiểm thử để giảm thiểu cách tối đa lỗi phát sinh Các nguồn lực cần thiết cho hoạt động kiểm thử quan trọng Vì vậy, việc nghiên cứu phương pháp nhằm mục đích giảm chi phí trình kiểm thử đưa ra, đảm bảo mục tiêu tính hiệu phần mềm biện pháp hữu hiệu Do vậy, luận văn giới thiệu phương pháp lĩnh vực phân tích chương trình tĩnh Cụ thể nghiên cứu kỹ thuật giải thích trừu tượng, mục tiêu cập nhật xu hướng kỹ thuật giới để nâng cao chất lượng phần mềm Các đề tài nghiên cứu kỹ thuật giải thích trừu tượng chưa phổ biến nước, khuôn khổ đề tài xin trình bày khái niệm bản, sở lý thuyết ban đầu dựa báo cáo hội nghị thường niên VMCAI (Verification, Model Checking, and Abstract Interpretation) tài liệu nghiên cứu, giảng tác giả Patrick Cousot năm gần Ứng dụng thử nghiệm tập trung vào công cụ mã nguồn mở TVLA (3 – Valued Logic Analysis Engine) phát triển Lev-Ami trường Đại học Khoa học Máy tính Tel Aviv – Israel Bố cục luận văn gồm chương: Chương - TỔNG QUAN: Tập trung vào khái niệm liên quan đến kiểm chứng phần mềm, phân tích chương trình tĩnh, tiếp cận lý thuyết kỹ thuật giải thích trừu tượng phân tích chương trình tĩnh, tình hình nghiên cứu nước Chương - CƠ SỞ LÝ THUYẾT CỦA KỸ THUẬT GIẢI THÍCH TRỪU TƯỢNG: Tập trung vào sở lý thuyết toán học kỹ thuật giải thích trừu tượng, phương pháp trừu tượng hóa ngữ nghĩa chương trình, biểu diễn ngữ nghĩa chương trình thông qua kỹ thuật trừu tượng, …, ứng dụng kỹ thuật giải thích trừu tượng Chương - THỬ NGHIỆM: Tập trung vào việc cài đặt phương pháp phân tích chương trình tĩnh kỹ thuật giải thích trừu tượng dựa công cụ mã nguồn mở TVLA, làm rõ ứng dụng phân tích hình dạng KẾT LUẬN: Trình bày nội dung nghiên cứu đạt được, hạn chế trình nghiên cứu định hướng nghiên TÀI LIỆU THAM KHẢO [1] M Sagiv, T Reps, and R Wilhelm Parametric shape analysis via 3valued logic ACM Transactions on Programming Languages and Systems (TOPLAS), 24(3):217–298, 2002 [2] Michael I Schwartzbach Lecture Notes on Static Analysis BRICS, Department of Computer Science University of Aarhus, Denmark 2009 [3] Patrick Cousot, Jer C.Hunsaker An informal overview of abstract interpretation Massachusetts Institute of Technology Department of Aeronautics Astronautics, Course 16.399, 2005 [4] Patrick Cousot, Radhia Cousot Abstract Interpretation: A Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints Conference Record of the Fourth ACM Symposium on Principles of Programming Languages, Los Angeles, California, USA, January 1977 ACM, 1977, pp 238-252 [5] Patrick Cousot, Radhia Cousot Basic concepts of abstract interpretation, Web page maintained by P Cousot, 2004 [6] Patrick Cousot, Radhia Cousot Comapring the Galois Connection and Widening / Narrowing Approaches to Abstract Interpretation In Maurice Bruynooghe and Martin Wirsing Proc 4th Int Symp on Programming Language Implementation and Logic Programming (PLILP) LNCS 631 Springer pp 269–296, 1992 [7] Patrick Cousot Abstract Interpretation Based Formal Methods and Future Challenges In Informatics, 10 Years Back — 10 Years Ahead, R Wilhelm (Ed.), Lecture Notes in Computer Science 2000, Springer, pp 138–156, 2001 [8] Patrick Cousot Abstract Interpretation Web page maintained by P Cousot, 2008 79 [9] Patrick Cousot Constructive Design of a Hierarchy of Semantics of a Transition System by Abstract Interpretation In Electronic Notes in Theoretical Computer Science, Volume 6, 1997 [10] Patrick Cousot Partial Completeness of Abstract Fixpoint Checking Lecture Notes in Computer Science Volume 1864 Springer Berlin Heidelberg, 2000, pp 1-25 [11] Roberto Giacobazzi (Università di Verona, Italie), Nicolas Halbwachs (Vérimag, France), Manuel Hermenegildo (IMDEA Software Institute & Technical University of Madrid, Espagne) Static analysis by abstract interpretation of concurrent programs, 2013 [12] Steve S.Muchnick, Patrick Cousot Semantic Foundations of Program Analysis In Program Flow Analysis: Theory and Applications PrenticeHall, Inc., Englewood Cliffs, New Jersey, U.S.A., 1981 [13] T Lev-Ami and M Sagiv Tvla: A framework for kleene logic based static analyses Master’s thesis, Tel Aviv University, 2000 80 [...]... của kỹ thuật giải thích trừu tượng trong phân tích chương trình tĩnh, tình hình nghiên cứu ở trong và ngoài nước Chương 2 - CƠ SỞ LÝ THUYẾT CỦA KỸ THUẬT GIẢI THÍCH TRỪU TƯỢNG: Tập trung vào cơ sở lý thuyết toán học của kỹ thuật giải thích trừu tượng, các phương pháp trừu tượng hóa ngữ nghĩa chương trình, biểu diễn ngữ nghĩa của chương trình thông qua các kỹ thuật trừu tượng, …, và ứng dụng trong kỹ thuật. .. trong luận văn này tôi giới thiệu một phương pháp trong lĩnh vực phân tích chương trình tĩnh Cụ thể là nghiên cứu về kỹ thuật giải thích trừu tượng, mục tiêu chính là cập nhật các xu hướng mới của kỹ thuật này ở trên thế giới để nâng cao chất lượng phần mềm Các đề tài nghiên cứu về kỹ thuật giải thích trừu tượng chưa được phổ biến ở trong nước, do vậy trong khuôn khổ của đề tài tôi xin trình bày các khái... tượng, …, và ứng dụng trong kỹ thuật giải thích trừu tượng Chương 3 - THỬ NGHIỆM: Tập trung vào việc cài đặt phương pháp phân tích chương trình tĩnh bằng kỹ thuật giải thích trừu tượng dựa trên bộ công cụ mã nguồn mở TVLA, làm rõ các ứng dụng trong phân tích hình dạng KẾT LUẬN: Trình bày nội dung nghiên cứu đã đạt được, các hạn chế trong quá trình nghiên cứu và định hướng nghiên cứ tiếp theo 9 TÀI LIỆU THAM... tài tôi xin trình bày các khái niệm cơ bản, cơ sở lý thuyết ban đầu dựa trên các báo cáo tại các hội nghị thường niên VMCAI (Verification, Model Checking, and Abstract Interpretation) và các tài liệu nghiên cứu, bài giảng của tác giả Patrick Cousot trong những năm gần đây Ứng dụng thử nghiệm tập trung vào công cụ mã nguồn mở TVLA (3 – Valued Logic Analysis Engine) được phát triển bởi Lev-Ami trường Đại

Ngày đăng: 09/09/2016, 23:24

Xem thêm: NGHIÊN cứu kỹ THUẬT GIẢI THÍCH TRỪU TƯỢNG

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w