phân tích tĩnh chương trình bằng phương pháp giải thích trừu tượng

65 487 1
phân tích tĩnh chương trình bằng phương pháp giải thích trừu tượng

Đ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 THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG NGUYỄN THANH BẰNG PHÂN TÍCH TĨNH CHƯƠNG TRÌNH BẰNG PHƯƠNG PHÁP GIẢI THÍCH TRỪU TƯỢNG LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Thái Nguyên, năm 2013 ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG NGUYỄN THANH BẰNG PHÂN TÍCH TĨNH CHƯƠNG TRÌNH BẰNG PHƯƠNG PHÁP GIẢI THÍCH TRỪU TƯỢNG Chuyên ngành : KHOA HỌC MÁY TÍNH Mã số : 60.48.01 NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. Nguyễn Trường Thắng Thái Nguyên, năm 2013 LỜI CAM ĐOAN Tôi xin cam đoan tất cả những nội dung đƣợc trình bày trong nội dung luận văn đều do tôi nghiên cứu và viết ra dƣới sự hƣớng dẫn của TS. Nguyễn Trƣờng Thắng – Viện Công nghệ thông tin – Viện Khoa học và công nghệ Việt Nam hƣớng dẫn. Không hề có bất cứ sự sao chép nào ngoài việc tham khảo từ các tài liệu nhƣ đã trình bày trong phần tài liệu tham khảo. Nếu có một hình thức gian lận nào tôi xin hoàn toàn chịu trách nhiệm. Thái Nguyên, tháng 01 năm 2013 Học viên cao học khóa 9. Chuyên ngành: Khoa học máy tính. Trƣờng đại học Công nghệ thông tin và truyền thông Đại học Thái Nguyên 3 MỤC LỤC LỜI CAM ĐOAN 2 MỤC LỤC 3 DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT 5 DANH MỤC CÁC THUẬT NGỮ 6 DANH MỤC CÁC HÌNH 7 MỞ ĐẦU 8 CHƢƠNG I. TỔNG QUAN 10 1.1. Công nghệ phần mềm và các vấn đề liên quan 10 1.1.1. Khái niệm về công nghệ phần mềm 10 1.1.2. Quy trình phát triển phần mềm 11 1.2 Các kỹ thuật trong công nghệ phần mềm nhằm nâng cao chất lƣợng phần mềm 13 1.2.1. Kiểm chứng phần mềm 14 1.2.2. Phân tích mã nguồn tĩnh 15 1.2.3. Kiểm thử phần mềm 17 1.2.4. So sánh giữa kiểm chứng mô hình và kiểm thử phần mềm 18 1.3 Kết luận chƣơng 1. 18 CHƢƠNG II. PHƢƠNG PHÁP GIẢI THÍCH TRỪU TƢỢNG 19 2.1. Khái niệm giải thích trừu tƣợng 19 2.2. Ứng dụng của giải thích trừu tƣợng. 19 2.3. Một số khái niệm cơ bản. 20 2.3.1. Ngữ nghĩa 20 2.3.2. Tính an toàn: 20 2.3.3. Giải thích trừu tƣợng: 21 2.3.4. Tiêu chuẩn trừu tƣợng hóa: 22 2.3.5. Miền trừu tƣợng: (Abstract domains): 22 2.3.6. Vết thực thi 23 2.3.7. Thu thập ngữ nghĩa: 25 2.4. Nền tảng toán học của giải thích trừu tƣợng. 26 2.4.1. Liên kết nhị phân 26 4 2.4.2. Tập có thứ tự từng phần (Poset) 26 2.4.3. Cấu trúc dàn (Lattices) 27 2.4.4. Sơ đồ Hasse 28 2.4.5. Điểm cố định (Fixpoint) 28 2.4.6. Bƣớc lặp 29 2.4.7. Kết nối Galois 29 2.5. Giải thích trừu tƣợng. 29 2.5.1. Đối tƣợng trừu tƣợng (Abstract objects) 30 2.5.2. Thuộc tính trừu tƣợng 31 2.5.3. Giải thích trừu tƣợng trong phân tích tĩnh chƣơng trình: 32 2.5.4. Kết luận chƣơng 2. 34 CHƢƠNG III. CHƢƠNG TRÌNH THỰC NGHIỆM 35 3.1. Giới thiệu về TVLA 35 3.2. Nền tảng toán học của TVLA 36 3.2.1. Giá trị 3-logic 37 3.2.2. Phƣơng pháp 39 3.3. Phân tĩnh tĩnh chƣơng trình sử dụng TVLA. 43 3.3.1. Bài toán 1 43 3.3.2. Bài toán 2 48 3.4. Kết luận chƣơng 3. 53 KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN 54 TÀI LIỆU THAM KHẢO 55 PHỤ LỤC 56 1. Thuật toán phân tích mối quan hệ vô hạn thông qua lặp tiến/lùi chi tiết . 56 2. Các định nghĩa chức năng trừu tƣợng trong action.tvp. 57 3. Các định nghĩa chức năng trừu tƣợng trong predicates.tvp. 62 4. Dữ liệu đầu vào của TVLA phân tích chức năng tạo danh sách liên kết creat.tvp 64 5 DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT STT Từ viết tắt Viết đầy đủ Nghĩa 1 EASL Engineering Analysis and Simulation Language Kỹ thuật Phân tích và ngôn ngữ mô phỏng 2 CM Summary nodes Nút đại diện 3 PTTGTT Phân tích tĩnh chƣơng trình bằng giải thích trừu tƣợng. 4 CFG Control Flow Graphc Sơ đồ luồng điều khiển. 6 DANH MỤC CÁC THUẬT NGỮ STT Thuật ngữ Ý nghĩa 1 Vết thực thi (Trace semantics) Tập hợp các dấu vết về quá trình chuyển đổi trạng thái của chƣơng trình. 2 Tập có thứ tự từng phần (Poset - Partial Ordered Set) Là một tập hợp các phần tử có thứ tự 3 Cấu trúc dàn (Lattice) Là một tập hợp các phần tử có thứ tự từng phần có điểm chặn dƣới lớn nhất và trặn trên nhỏ nhất 7 DANH MỤC CÁC HÌNH STT Hình sử dụng 1 Hình 1.1: Mô hình tổng quát quy trình sản xuất phần mềm trong xe hơi 2 Hình 1.2: Tổng quan phân tích mã nguồn tĩnh 3 Hình 1.3: MISRA-C là “Subset”-Tập con của ngôn ngữ C 4 Hình 1.4: Hai cuốn MISRA-C:1998 và MISRA-C:2004 5 Hình 2.1 Sơ đồ hành vi của chƣơng trình 6 Hình 2.2 Quỹ đạo an toàn 7 Hình 2.3 Quỹ đạo không an toàn 8 Hình 2.4 Quỹ đạo hành vi trừu tƣợng của chƣơng trình. 9 Hình 2.4 Phát hiện lỗi với giải thích trừu tƣợng 10 Hình 2.5 Các bƣớc chuyển trạng thái của chƣơng trình 11 Hình 2.6 Vết thực thi của chƣơng trình 12 Hình 2.7 Thu thập ngữ nghĩa của chƣơng trình 13 Hình 2.8 Đồ thị liên kết nhị phân 14 Hình 2.9 Thuật toán giải thích trừu tƣợng tổng quát 15 Hình 3.1 Bảng giá trị phép giao 3-logic 16 Hình 3.2 Bảng giá trị phép hợp 3-logic 17 Hình 3.3 Bảng giá trị phép hợp 3-logic. 18 Hình 3.4 Bảng trừu tƣợng hóa bằng logic vị từ 19 Hình 3.5 Mô phỏng trạng thái bộ nhớ cấu trúc con trỏ. 20 Hình 3.6 Trạng thái chƣơng trình sử dụng 2-logic 21 Hình 3.7 Trạng thái chƣơng trình sử dụng nút đại diện (3-logic) 22 Hình 3.8 Tiến trình làm việc của một quá trình PTTGTTT 23 Hình 3.9 Thực hiện phân tích tĩnh chƣơng trình bằng TVLA. 24 Hình 3.10. Kết quả phân tích chức năng tạo danh sách liên kết 25 Hình 3.11. Trạng thái tổng thể chƣơng trình thêm một nút vào cây nhị phân 8 MỞ ĐẦU Ngày nay, phần mềm xuất hiện ở khắp mọi nơi và trong hầu hết các thiết bị điện tử đều sử dụng phần mềm trong đó. Phần mềm không đơn giản là chƣơng trình trên máy tính mà nó bao gồm cả tƣ liệu lƣu trữ và thông tin vận hành giúp chƣơng trình có thể hoạt động đƣợc. Vì những ứng dụng to lớn của phần mềm trong các ngành sản xuất, tài chính ngân hàng, y tế, bệnh viện, trƣờng học, nhà nƣớc, nên yêu cầu rất lớn đặt ra đó là xây dựng, phát triển và ứng dụng công nghệ phần mềm. Trong luận văn này tôi xin giới thiệu một phƣơng pháp kiểm tra đánh giá chất lƣợng phần mềm mới đó là phân tích tĩnh chƣơng trình. Với mục tiêu: Đƣa ra một cách nhìn nhận mới về việc lập xây dựng và kiểm tra sự đúng đắn của chƣơng trình đó là sử dụng phƣơng pháp phân tích tĩnh chƣơng trình. Áp dụng các công cụ để phân tích chƣơng trình, kiểm tra sự đúng đắn của chƣơng trình bằng giải thích trừu tƣợng (Abstract Interpretation). Vì đây là một kỹ thuật phân tích chƣơng trình chƣa đƣợc nghiên cứu rộng rãi ở Việt Nam, nên luận văn này mang tính giới thiệu ban đầu về khái niệm cơ bản và nền tảng lý thuyết dựa trên tài liệu gốc [2], là giáo trình đƣợc sử dụng trong đào tạo thạc sỹ của Học viện Công nghệ Massachussette (MIT) – Hoa Kỳ, trong chƣơng 2. Phần thử nghiệm trong chƣơng 3 tập trung vào việc cài đặt và thử nghiệm bộ công cụ TVLA (3- Valued Logic Analysis Engine) của trƣờng đại học Khoa Học Máy Tính Tel Aviv (School of Computer Science Tel Aviv University), thành phố Tel Aviv, Isarel[6]. Công cụ này phân tích chƣơng trình sử dụng giải thích trừu tƣợng. Nội dung luận văn gồm 3 chƣơng: CHƢƠNG I. TỔNG QUAN Đƣa ra các khái niệm liên quan, sự cần thiết của việc phân tích tĩnh chƣơng trình, giới thiệu các phƣơng pháp phân tích tĩnh chƣơng trình. CHƢƠNG II. PHƢƠNG PHÁP GIẢI THÍCH TRỪU TƢỢNG 9 Trình bày nền tảng lý thuyết, thuật toán, ứng dụng, ƣu nhƣợc điểm của phƣơng pháp giải thích trừu tƣợng.[2] CHƢƠNG III. CHƢƠNG TRÌNH THỰC NGHIỆM Cài đặt phƣơng pháp phân tích tĩnh bằng giải thích trừu tƣợng, đƣa ra kết quả thực nghiệm và kết luận[6] [...]... phần mềm, phân tích tĩnh chƣơng trình Chƣơng 2 sẽ tìm hiểu sâu hơn về giải thích trừu tƣợng và phân tích tĩnh chƣơng trình bằng giải thích trừu tƣợng 18 CHƢƠNG II PHƢƠNG PHÁP GIẢI THÍCH TRỪU TƢỢNG 2.1 Khái niệm giải thích trừu tƣợng Giải thích trừu tƣợng (Abstract interpretation): Là một kỹ thuật trong phân tích tích chƣơng trình máy tính, kỹ thuật này diễn giải về ngữ nghĩa của một chƣơng trình phần... việc trừu tƣợng hóa một chƣơng trình dùng trong phân tích tĩnh Điều này sẽ đƣợc thực nghiệm trong chƣơng 3 của luận văn 2.5.4 Kết luận chƣơng 2 Trong chƣơng này, tôi đã trình bày các khái niệm về giải thích trừu tƣợng, phân tích tĩnh chƣơng trình bằng kỹ thuật giải thích trừu tƣợng, ứng dụng của giải thích trừu tƣợng, kỹ thuật phân tích tĩnh chƣơng trình sử dụng giải thích trừu tƣợng bằng thuật toán phân. .. tích thuộc tính và cú pháp của các dòng lệnh bằng việc giải thích trừu tƣợng các thuộc tính và cú pháp - Phân tích tĩnh chƣơng trình: đây là lĩnh vực đƣợc ứng dụng nhiều nhất của giải thích trừu tƣợng Phƣơng pháp này phân tích mã nguồn của chƣơng trình bằng cách trừu tƣợng hóa các bƣớc thực hiện lệnh của chƣơng trình đó Từ đó chứng minh tính đúng đắn của chƣơng trình - Ẩn thông tin: trong các ngôn ngữ... không an toàn 2.3.3 Giải thích trừu tƣợng: Chính là chứng minh tính an toàn của chƣơng trình dựa trên ngữ nghĩa trừu tƣợng của nó Phân tích tĩnh chƣơng trình bằng giải thích trừu tƣợng tính toán ngữ nghĩa trừu tƣợng của chƣơng trình dựa trên mã của chƣơng trình đã đƣợc trừu tƣợng hóa Nếu ngữ nghĩa trừu tƣợng là an toàn, không trong vùng cấm Hình 2.4 Quỹ đạo hành vi trừu tƣợng của chƣơng trình 21 Hình 2.4... trong chƣơng trình dịch và trong gỡ rối chƣơng trình 2.2 Ứng dụng của giải thích trừu tƣợng Giải thích trừu tƣợng đƣợc ứng dụng rộng rãi và là một phần không thể thiếu trong ngành khoa học máy tính Giải thích trừu tƣợng đƣợc dùng để chứng minh tính đầy đủ và tính đúng đắn của hệ thống Một số ứng dụng của giải thích trừu tƣợng nhƣ: - Phân tích cú pháp của dòng lệnh: phân tích thuộc tính và cú pháp của các... bằng giải thích trừu tƣợng chính là sự giải thích ngữ nghĩa của chƣơng trình Đây là một vấn đề rất 29 rộng lớn, hiện tại có nhiều thuật toán ứng dụng giải thích trừu tƣợng trong phân tích tĩnh chƣơng trình Các thuật toán này chủ yếu tập trung vào các hƣớng giải quyết vấn đề nhƣ sau: - Phân tích mối phi-quan hệ vô hạn thông qua lặp tiến - Phân tích mối quan hệ vô hạn thông qua lặp tiến - Phân tích mối... sau: P, ≤ Q, ⊑ 2.5 Giải thích trừu tƣợng Phân tích tĩnh chƣơng trình bằng giải thích trừu tƣợng còn đƣợc gọi là kiểm chứng hình thức một chƣơng trình bao gồm việc mô tả một chƣơng trình dự định sẽ làm gì, các ngữ nghĩa (ngữ nghĩa: mô tả các chức năng của chƣơng trình, cái mà chƣơng trình đó sẽ làm) của chƣơng trình thỏa mãn đặc tả (đặc tả: mô tả các yêu cầu đặt ra đối với chƣơng trình, tất cả các công... chƣơng trình phải làm) của chƣơng trình đó Giải thích trừu tƣợng chính là việc hình thức hóa các ý tƣởng, các chứng minh hình thức sẽ đƣợc thực hiện ở một mức độ trừu tƣợng, bỏ qua các chi tiết về ngữ nghĩa và đặc tả không cần thiết Do đó ngữ nghĩa trừu tƣợng thỏa mãn đặc tả trừu tƣợng Từ đó đƣa ra sự phù hợp và thiếu sót của chƣơng trình đƣợc phân tích Trên thực tế, phân tích tĩnh chƣơng trình bằng giải. .. quát của phân tích tĩnh chƣơng trình bằng giải thích trừu tƣợng đƣợc mô tả nhƣ hình sau: Hình 2.9 Thuật toán giải thích trừu tƣợng tổng quát 2.5.1 Đối tƣợng trừu tƣợng (Abstract objects) - Một đối tƣợng trừu tƣợng ō là một đại lƣợng tính toán biểu diễn một đối tƣợng cụ thể o - Hàm trừu tƣợng hóa ⍺ là một hàm ánh xạ một đối tƣợng cụ thể o sang một đối tƣợng trừu tƣợng ký hiệu là ⍺(o) - Miền trừu tƣợng... phân tích mối quan hệ vô hạn thông qua lặp tiến/lùi 34 CHƢƠNG III CHƢƠNG TRÌNH THỰC NGHIỆM 3.1 Giới thiệu về TVLA Trên thế giới đã có nhiều tổ chức đã nghiên cứu và áp dụng giải thích trừu tƣợng để phân tích tĩnh chƣơng trình trên các ngôn ngữ khác nhau Dựa trên các ngôn ngữ thì có cấu trúc trừu tƣợng hóa khác nhau và phân tích khác nhau Trong luận văn này tôi xin đƣa ra phƣơng pháp phân tích tĩnh . của giải thích trừu tƣợng nhƣ: - Phân tích cú pháp của dòng lệnh: phân tích thuộc tính và cú pháp của các dòng lệnh bằng việc giải thích trừu tƣợng các thuộc tính và cú pháp. - Phân tích tĩnh. quy trình phát triển phần mềm, kỹ thuật kiểm thử phần mềm, phân tích tĩnh chƣơng trình. Chƣơng 2 sẽ tìm hiểu sâu hơn về giải thích trừu tƣợng và phân tích tĩnh chƣơng trình bằng giải thích trừu. CHƢƠNG II. PHƢƠNG PHÁP GIẢI THÍCH TRỪU TƢỢNG 2.1. Khái niệm giải thích trừu tƣợng Giải thích trừu tƣợng (Abstract interpretation): Là một kỹ thuật trong phân tích tích chƣơng trình máy tính,

Ngày đăng: 22/11/2014, 21:23

Từ khóa liên quan

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

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

Tài liệu liên quan