Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 78 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
78
Dung lượng
1,36 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Bùi Quang Cường PHƯƠNG PHÁP TỰ ĐỘNG SỬA LỖI CHO CÁC CHƯƠNG TRÌNH JAVA LUẬN VĂN THẠC SĨ Ngành: Khoa học máy tính HÀ NỘI - 2020 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Bùi Quang Cường PHƯƠNG PHÁP TỰ ĐỘNG SỬA LỖI CHO CÁC CHƯƠNG TRÌNH JAVA Ngành: Khoa học máy tính Chun ngành: Khoa học máy tính Mã số: 60 48 01 01 LUẬN VĂN THẠC SĨ NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS TS Phạm Ngọc Hùng HÀ NỘI - 2020 VIETNAM NATIONAL UNIVERSITY, HA NOI UNIVERSITY OF ENGINEERING AND TECHNOLOGY Bui Quang Cuong A METHOD FOR AUTOMATED REPAIR OF ERRORS FOR JAVA PROGRAMS MASTER THESIS OF COMPUTER SCIENCE Major: Computer Science Supervisor: Assoc Prof., Dr Pham Ngoc Hung HANOI - 2020 i LỜI CAM ĐOAN Tôi xin cam đoan nghiên cứu phương pháp tự động sửa lỗi cho chương trình Java trình bày luận văn chưa nộp báo cáo luận văn trường Đại học Công nghệ - ĐHQGHN trường đại học khác Những tơi viết khơng chép từ tài liệu, không sử dụng kết người khác mà khơng trích dẫn cụ thể Tơi xin cam đoan cơng cụ tự động sửa lỗi cho chương trình Java tơi trình bày luận văn tơi tự phát triển, không chép mã nguồn người khác Nếu sai tơi hồn tồn chịu trách nhiệm theo quy định trường Đại học Công nghệ - ĐHQGHN Hà Nội, ngày 15 tháng 08 năm 2020 Học viên cao học Bùi Quang Cường ii TÓM TẮT Các hệ thống phần mềm không ngừng phát triển theo lẽ tự nhiên để đáp ứng nhu cầu thay đổi liên tục từ khách hàng thị trường Tuy nhiên, thay đổi gây lỗi khiến cho chức có chương trình khơng hoạt động Những lỗi gọi lỗi hồi quy Sửa lỗi tự động (Automated Program Repair - APR) gần cho thấy tiềm lớn việc tự động sửa lỗi phần mềm Mặc dù với phát triển mạnh mẽ APR, có số kỹ thuật tập trung xử lý lỗi hồi quy Tuy nhiên, kỹ thuật chưa thực khai thác đầy đủ thông tin có sẵn lịch sử phát triển phần mềm (ví dụ: cập nhật gây lỗi, v.v.) để sửa lỗi hồi quy Hơn nữa, kỹ thuật không công bố công cụ cài đặt cho cộng đồng cơng cụ hạn chế khó sử dụng để sửa lỗi thực tế Luận văn nhằm mục đích đề xuất phương pháp sửa lỗi hồi quy cho chương trình Java cách khai thác mở rộng phát gần lỗi hồi quy, ví dụ: mối tương quan cập nhật tạo lỗi sửa lỗi Luận văn cài đặt lại cải tiến phương pháp sửa lỗi hồi quy tự động cho chương trình C (Relifix) Từ đó, xây dựng hệ thống có tên LyFix, cho phép người dùng sửa lỗi hồi quy Java tự động cách tận dụng nguyên liệu sửa lỗi mẫu sửa lỗi cụ thể học từ lịch sử phát triển phần mềm Tám mẫu sửa lỗi hồi quy, thuật toán sửa lỗi cài đặt lại dựa vào ý tưởng Relifix Ngoài ra, luận văn cài đặt thêm ba mẫu sửa lỗi hồi quy cho Java Luận văn thực thực nghiệm để so sánh khả sửa lỗi LyFix jRelifix (bản cài đặt Relifix cho Java) công cụ sửa lỗi tự động tốt (jGenProg, jMutRepair, TBar) tập liệu 51 lỗi hồi quy thực tế hệ thống phần mềm Java mã nguồn mở Kết cho thấy LyFix sinh vá thành cơng cho 56.8% lỗi có tập liệu tỉ lệ số vá xác 79.3% công cụ khác sửa lỗi tốt (TBar) với kết sinh vá 33.3% lỗi tỉ lệ vá 41.1% Từ khóa: tự động sửa lỗi chương trình, lỗi hồi quy, lịch sử phát triển phần mềm iii LỜI CẢM ƠN Đầu tiên quan trọng nhất, xin gửi lời cảm ơn trân trọng sâu sắc tới PGS TS Phạm Ngọc Hùng - người Thầy giáo trực tiếp hướng dẫn tận tình đóng góp ý kiến quý báu trình tơi học tập, nghiên cứu kinh nghiệm sống từ năm tháng tơi cịn sinh viên trường Đại học Công nghệ Thầy không ngần ngại cho phép hỗ trợ tự lựa chọn đề tài để thực luận văn Tôi xin gửi lời cảm ơn chân thành tới TS Bách Lê, TS Lê Quang Lộc, PGS TS Corina Pasareanu hướng dẫn hỗ trợ tơi nhiệt tình q trình thực luận văn Các anh cô động viên đưa câu trả lời gợi ý tơi gặp khó khăn Các anh cô chia sẻ nhiều kinh nghiệm quý báu nghiên cứu sống học nhiều điều từ anh Xin cảm ơn ban tổ chức chương trình Google Summer of Code 2020 Java PathFinder Team cho phép tài trợ kinh phí để tơi thực đề tài luận văn Cơng trình tài trợ phần từ đề tài KHCN cấp ĐHQGHN, Mã số đề tài: QG.19.24 Cuối cùng, xin cảm ơn lời động viên từ gia đình, người thân, bạn bè để giúp vững bước đường tương lai iv Mục lục Giới thiệu 1.1 Mở đầu 1.2 Đóng góp 1.3 Bố cục luận văn Kiến thức tảng 2.1 Kiểm thử hồi quy lỗi hồi quy 2.2 Sửa lỗi chương trình tự động 2.2.1 Xác định vị trí gây lỗi 2.2.2 Các phương pháp sửa lỗi tự động 12 Phương pháp sửa tự động lỗi hồi quy 16 3.1 Tổng quan phương pháp 16 3.2 Xác định cập nhật gây lỗi 17 3.3 Thu thập thông tin mã nguồn thay đổi nguyên liệu sửa lỗi 22 3.4 Các mẫu sửa lỗi 24 3.5 Xác định vị trí gây lỗi 33 v 3.6 Thuật toán sửa lỗi 34 Cài đặt công cụ thực nghiệm 40 4.1 Cài đặt công cụ 40 4.2 Thực nghiệm 42 4.2.1 Phương pháp thực nghiệm 43 4.2.2 Kết thực nghiệm thảo luận 46 Kết luận 52 A Danh sách mẫu sửa lỗi 54 Tài liệu tham khảo 60 vi Danh sách hình vẽ 2.1 Các chiến lược kiểm thử hồi quy 2.2 Các bước tiêu chuẩn kỹ thuật APR [27] 2.3 Số lượng công bố năm APR từ 1996 - 2019 2.4 Tổng quan xác định vị trí gây lỗi dựa phổ chương trình 10 2.5 Tổng quan kỹ thuật sửa lỗi [14] 13 3.1 Tổng quan phương pháp sửa tự động lỗi hồi quy 17 3.2 Các cập nhật gây lỗi sửa lỗi Closure 31 [21] 18 3.3 Ví dụ minh họa tính độ đo nguyên liệu sửa lỗi câu lệnh nghi 4.1 ngờ lỗi 36 Kiến trúc công cụ sửa lỗi tự động LyFix 41 vii Danh sách bảng 3.1 Nguyên liệu sửa lỗi mẫu sửa lỗi sử dụng 23 3.2 Các mẫu sửa lỗi cài đặt 24 4.1 Thống kê số liệu lỗi hồi quy 44 4.2 Thống kê số lượng hành động sửa lỗi liệu lỗi hồi quy 46 4.3 Kết sửa lỗi tập liệu lỗi hồi quy 47 ... lỗi chương trình tự động Sửa lỗi chương trình bước cơng việc gỡ lỗi chương trình vịng đời lỗi chương trình, bao gồm: Nhận diện lỗi - Nhận diện tồn lỗi chương trình, quan sát dấu lỗi để phục vụ cho. .. chương trình Java cách cài đặt mở rộng phương pháp sửa lỗi phát gần lỗi hồi quy (ví dụ: phương pháp sửa lỗi hồi quy tự động cho chương trình C [42], tương quan cập nhật gây lỗi sửa lỗi [46]) Luận... 24 Chương Phương pháp sửa tự động lỗi hồi quy 3.4 Các mẫu sửa lỗi Hiện nay, luận văn cài đặt tám mẫu sửa lỗi thừa kế từ tư tưởng Relifix [42] Những mẫu sửa lỗi thiết kế để sửa lỗi cho chương trình