Đăng ký Đăng nhập
Trang chủ Giáo dục - Đào tạo Cao đẳng - Đại học Một số cải tiến phương pháp kiểm chứng giả định – đảm bảo cho phần mềm dựa trên ...

Tài liệu Một số cải tiến phương pháp kiểm chứng giả định – đảm bảo cho phần mềm dựa trên thành phần.

.PDF
155
30
127

Mô tả:

Mục lục Chương 1. GIỚI THIỆU. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1. Đặt vấn đề . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2. Các đóng góp chính của luận án . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3. Bố cục của luận án . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 6 8 Chương 2. KIẾN THỨC NỀN TẢNG . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.1. Đặc tả và kiểm chứng giả định - đảm bảo cho các hệ thống đặc tả bằng LTS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.1.1. Hệ thống chuyển trạng thái được gán nhãn. . . . . . . . . . . . . . . . . . . . . . 9 2.1.2. Kiểm chứng giả định - đảm bảo cho các hệ thống đặc tả bằng LTS . 13 2.2. Đặc tả và kiểm chứng giả định - đảm bảo cho các hệ thống đặc tả bằng lôgic mệnh đề . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.2.1. Đặc tả hệ thống chuyển trạng thái bằng lôgic mệnh đề . . . . . . . . . 16 2.2.2. Kiểm chứng giả định - đảm bảo cho các hệ thống đặc tả bằng lôgic mệnh đề . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.3. Đặc tả và kiểm chứng giả định - đảm bảo cho các hệ thống có ràng buộc thời gian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.3.1. Hệ thống chuyển trạng thái có ràng buộc thời gian . . . . . . . . . . . . . 21 2.3.2. Kiểm chứng giả định - đảm bảo cho các hệ thống có ràng buộc thời gian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.4. Mô hình kiểm chứng giả định - đảm bảo . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.5. Tổng kết. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Chương 3. PHƯƠNG PHÁP SINH GIẢ ĐỊNH NHỎ NHẤT VÀ MẠNH NHẤT CỤC BỘ CHO VIỆC KIỂM CHỨNG PHẦN MỀM DỰA TRÊN THÀNH PHẦN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.1. Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.2. Các nghiên cứu liên quan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.3. Phương pháp sinh giả định dựa trên thuật toán học L∗ . . . . . . . . . . . . 33 3.3.1. Thuật toán học L∗ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 i 3.3.2. Thuật toán sinh giả định sử dụng thuật toán học L∗ . . . . . . . . . . . 3.4. Phương pháp sinh giả định nhỏ nhất và mạnh nhất cục bộ . . . . . . . . . 3.4.1. Phương pháp sinh giả định mạnh nhất cục bộ. . . . . . . . . . . . . . . . . . 3.4.2. Phương pháp sinh giả định nhỏ nhất và mạnh nhất cục bộ . . . . . 3.5. Thực nghiệm và thảo luận . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6. Tổng kết. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 36 37 45 55 65 Chương 4. PHƯƠNG PHÁP KIỂM CHỨNG HỒI QUY GIẢ ĐỊNH - ĐẢM BẢO CHO PHẦN MỀM TIẾN HÓA . . . . . . . . . . . . . . . . . . 67 4.1. Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.2. Các nghiên cứu liên quan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.3. Phương pháp sinh giả định dựa trên thuật toán CDNF. . . . . . . . . . . . . 73 4.3.1. Thuật toán CDNF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 4.3.2. Thuật toán sinh giả định dựa trên CDNF . . . . . . . . . . . . . . . . . . . . . . 74 4.4. Phương pháp sinh giả định yếu nhất cục bộ . . . . . . . . . . . . . . . . . . . . . . . . 78 4.4.1. Biến thể của thuật toán trả lời các truy vấn thành viên . . . . . . . . 78 4.4.2. Thuật toán quay lui sinh giả định yếu nhất cục bộ . . . . . . . . . . . . . 80 4.4.3. Tính đúng đắn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 4.5. Phương pháp kiểm chứng từng phần cho phần mềm dựa trên thành phần trong ngữ cảnh tiến hóa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 4.5.1. Phương pháp kiểm chứng giả định - đảm bảo cho phần mềm trong ngữ cảnh tiến hóa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 4.5.2. Ví dụ minh họa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 4.6. Thực nghiệm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 4.6.1. So sánh các thuật toán sinh giả định . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 4.6.2. Tính hiệu quả của các giả định được sinh ra trong ngữ cảnh tiến hóa 98 4.6.3. Thảo luận . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 4.7. Tổng kết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Chương 5. THỬ NGHIỆM CÀI ĐẶT PHIÊN BẢN MỘT PHA CHO VIỆC KIỂM CHỨNG GIẢ ĐỊNH - ĐẢM BẢO CHO PHẦN MỀM CÓ RÀNG BUỘC THỜI GIAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 5.1. Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 5.2. Các nghiên cứu liên quan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 5.3. Phương pháp sinh giả định hai pha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 5.3.1. Pha thứ nhất – pha sinh giả định không có ràng buộc thời gian 109 5.3.2. Pha thứ hai – pha sinh giả định có ràng buộc thời gian . . . . . . . 110 ii 5.4. Phiên bản một pha của phương pháp sinh giả định hai pha . . . . . . . 5.4.1. Phiên bản một pha của thuật toán sinh giả định . . . . . . . . . . . . . . 5.4.2. Phiên bản cài đặt các thuật toán thực thi Teacher . . . . . . . . . . . . 5.5. Thảo luận . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.5.1. Một số vấn đề trong thực tế cài đặt . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.5.2. Ví dụ cho quá trình sinh giả định vô hạn . . . . . . . . . . . . . . . . . . . . . 5.6. Tính đúng đắn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.7. Thực nghiệm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.8. Tổng kết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 111 113 116 116 118 119 121 124 Chương 6. KẾT LUẬN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 6.1. Các kết quả đạt được . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 6.2. Hướng phát triển tiếp theo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 iii Danh sách hình vẽ 1.1 Tổng quan về phương pháp kiểm chứng giả định - đảm bảo và các vấn đề còn tồn tại. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1 Mô hình kiểm chứng giả định - đảm bảo. . . . . . . . . . . . . . . . . 26 3.1 3.2 3.3 3.7 Tương tác giữa L∗ Learner và T eacher. . . . . . . . . . . . . . . . Quá trình kiểm chứng thành phần tại bước thứ i. . . . . . . . . Một phản ví dụ cho thấy các giả định được sinh bởi phương pháp của Cobleigh và cộng sự [29] không phải là mạnh nhất. . . . . . Mối quan hệ giữa s, L(A), and L(AW ). . . . . . . . . . . . . . . . Ý tưởng chính của phương pháp sinh giả định mạnh nhất cục bộ dựa vào L∗ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ví dụ cho sự tồn tại của một giả định nhỏ hơn và mạnh hơn (ALM S ) giả định được sinh bởi Thuật toán 3.1 (A). . . . . . . . . Ý tưởng để tính tempQ, comF inalState, và Cikj . . . . . . . . . . . 3.8 Ý tưởng của phương pháp sinh giả định nhỏ nhất và mạnh nhất cục bộ.53 4.1 4.2 4.6 Thuật toán CBAG. . . . . . . . . . . . . . . . . . . . . . . . . . . Thuật toán LWAG sinh giả định yếu nhất cục bộ cho việc kiểm chứng giả định - đảm bảo cho các CBS. . . . . . . . . . . . . . . Mối quan hệ giữa L(AO ), L(AN ), và L(AW ). . . . . . . . . . . . . Mối quan hệ giữa ListN W và ListN . . . . . . . . . . . . . . . . . . Sử dụng lại giả định được sinh bởi thuật toán LWAG cho việc kiểm chứng CBS trong ngữ cảnh tiến hóa. . . . . . . . . . . . . . Thuật toán sinh lại giả định cho CBS trong ngữ cảnh tiến hóa. . 5.1 5.2 5.3 Phương pháp sinh giả định hai pha. . . . . . . . . . . . . . . . . . . . 109 Ví dụ về quá trình sinh giả định lặp vô hạn. . . . . . . . . . . . . . . . 119 Ứng viên cho giả định tương ứng. . . . . . . . . . . . . . . . . . . . . . 119 3.4 3.5 3.6 4.3 4.4 4.5 iv . . . 33 . . . 35 . . . 37 . . . 38 . . . 44 . . . 46 . . . 47 . . . 77 . . . 80 . . . 86 . . . 87 . . . 89 . . . 91 Danh sách bảng 2.1 Các phép gán cho ví dụ về chuỗi . . . . . . . . . . . . . . . . . . . . . 18 3.1 3.2 3.3 Kết quả thực nghiệm so sánh Thuật toán 3.1 và Thuật toán 3.3 . . . 56 Kết quả thực nghiệm so sánh Thuật toán 3.1 và Thuật toán 3.4 . . . 59 Không gian trạng thái giảm được với giả định được sinh bởi Thuật toán 3.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.1 4.2 4.3 4.4 4.5 Bảng chân lý của phép toán lôgic kéo theo . . . . . . . . . . . . . Sinh giả định đầu tiên sử dụng thuật toán LWAG . . . . . . . . Sinh giả định cho hệ thống trong ngữ cảnh tiến hóa sử dụng thuật toán LWAG và phương pháp kiểm chứng đề xuất . . . . . . . . . So sánh các phương pháp sinh giả định . . . . . . . . . . . . . . . So sánh các phương pháp sinh lại giả định . . . . . . . . . . . . . 5.1 5.2 Một bảng quan sát trong quá trình kiểm chứng M . . . . . . . . . . . 118 Kết quả thực nghiệm phiên bản một pha . . . . . . . . . . . . . . . . 123 v . . . 79 . . . 92 . . . 93 . . . 98 . . . 101 Thuật ngữ và từ viết tắt Từ viết tắt AG Giải nghĩa tạm dịch Giả định - đảm bảo Từ gốc AMC Assume-Guarantee Assume-Guarantee Verification Adaptive Model Checking CBAG CDNF-based assumption generation CBS Component-based software Conjunction of Disjunctive Normal Form AGV Kiểm chứng giả định - đảm bảo CIRC-AG Circular Assume-Guarantee CNF Conjunctive Normal Form Kiểm chứng mô hình thích nghi Thuật toán sinh giả định dựa trên thuật toán CDNF Phần mềm dựa trên thành phần Tên một thuật toán học hàm lôgic dùng để sinh giả định Kiểm chứng giả định - đảm bảo quay vòng Dạng chuẩn hội DFA DNF EQ Deterministic Finite State Automata Disjunctive Normal Form Equivalence query Ô-tô-mát hữu hạn trạng thái đơn định Dạng chuẩn tuyển Thuật toán trả lời truy vấn ứng viên ERA FMS GSS Event-Recording Automaton Flexible Manufacturing System Gas station system IMQ Improved membership query IW LTS Is witness Locally minimum and strongest assumption generation tool Locally strongest assumption generation tool Labelled transition system Ô-tô-mát ghi sự kiện Hệ thống sản xuất linh hoạt Hệ thống trạm gas Thuật toán trả lời truy vấn thành viên cải tiến Thuật toán phân tích phản ví dụ Công cụ sinh giả định nhỏ nhất và mạnh nhất cục bộ LTSA Labelled transition system analyser LWAG MTBDD Local weakest assumption generation Multiterminal binary decision diagram NC-AG Non-circular assume-guarantee OMQ Original membership query PAT Process Analysis Toolkit Tivet Timed systems verification tool CDNF LMAG LSAG Công cụ sinh giả định mạnh nhất cục bộ vi Hệ thống chuyển trạng thái được gán nhãn Công cụ hỗ trợ đặc tả và kiểm chứng hệ thống chuyển trạng thái được gán nhãn Thuật toán sinh giả định yếu nhất cục bộ Sơ đồ quyết định nhị phân đa chiều Kiểm chứng giả định - đảm bảo không quay vòng Thuật toán trả lời truy vấn thành viên ban đầu Tên một công cụ đặc tả, kiểm chứng phần mềm Công cụ kiểm chứng phần mềm có ràng buộc thời gian Lời cam đoan Tôi xin cam đoan đây là công trình nghiên cứu do tôi thực hiện dưới sự hướng dẫn của thầy giáo, PGS. TS. Phạm Ngọc Hùng và thầy giáo, TS. Võ Đình Hiếu tại Bộ môn Công nghệ Phần mềm, Khoa Công nghệ Thông tin, Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội. Các số liệu và kết quả trình bày trong luận án là trung thực, chưa được công bố bởi bất kỳ tác giả nào hay ở bất kỳ công trình nào khác. Tác giả Trần Hoàng Việt vii Lời cảm ơn Trước tiên tôi xin gửi lời cảm ơn chân thành và sâu sắc đến thầy giáo, PGS. TS. Phạm Ngọc Hùng và thầy giáo, TS. Võ Đình Hiếu – những người đã hướng dẫn, khuyến khích, truyền cảm hứng, chỉ bảo và tạo cho tôi những điều kiện tốt nhất từ khi bắt đầu làm nghiên cứu sinh đến khi hoàn thành luận án này. Tôi xin chân thành cảm ơn các thầy cô giáo khoa Công nghệ thông tin, Trường Đại Học Công Nghệ, Đại Học Quốc Gia Hà Nội, đặc biệt là các Thầy Cô trong Bộ môn Công Nghệ Phần Mềm đã tận tình đào tạo, cung cấp cho tôi những kiến thức vô cùng quý giá, đã tạo điều kiện tốt nhất cho tôi về môi trường làm việc trong suốt quá trình học tập, nghiên cứu tại Trường. Tôi xin trân trọng cảm ơn đề tài mã số 102.03-2015.25 được tài trợ bởi Quỹ phát triển khoa học và công nghệ quốc gia (NAFOSTED) đã hỗ trợ tôi trong quá trình thực hiện luận án. Cuối cùng, tôi xin chân thành cảm ơn những người thân trong gia đình cùng toàn thể bạn bè đã luôn giúp đỡ, động viên tôi những lúc gặp phải khó khăn trong suốt quá trình học tập và nghiên cứu. viii Tóm tắt Kiểm chứng giả định - đảm bảo được biết đến như là một trong những giải pháp quan trọng nhằm giải quyết bài toán bùng nổ không gian trạng thái trong kiểm chứng mô hình cho các hệ thống phần mềm dựa trên thành phần. Ý tưởng chính của phương pháp này là kiểm chứng từng phần nhỏ của phần mềm mà không cần ghép chúng. Mặc dù có tiềm năng áp dụng lớn trong thực tế, các nghiên cứu hiện tại cho thấy nhiều vấn đề còn tồn tại của phương pháp này ngăn cản nó được áp dụng rộng rãi. Luận án đề xuất phương pháp giải quyết một số trong các vấn đề đó của quá trình kiểm chứng cho phần mềm được đặc tả bằng nhiều loại đặc tả và trong ngữ cảnh tiến hóa. Cụ thể, luận án đã đạt được ba kết quả chính như sau. Luận án đề xuất phương pháp sinh giả định nhỏ nhất và mạnh nhất cục bộ cho bài toán kiểm chứng giả định - đảm bảo các phần mềm dựa trên thành phần đặc tả bằng hệ chuyển trạng thái được gán nhãn (Labelled Transition System LTS). Các giả định này góp phần giảm chi phí tính toán sinh lại giả định mới và giảm không gian trạng thái khi kiểm chứng các phần mềm tiến hóa. Ý tưởng chính của phương pháp là sử dụng một biến thể của phương pháp trả lời các truy vấn thành viên được đề xuất bởi Cobleigh và cộng sự. Biến thể này được tích hợp trong thuật toán đề xuất để sinh được các giả định nhỏ nhất và mạnh nhất cục bộ. Các chứng minh cho tính đúng đắn của phương pháp đề xuất cũng được trình bày trong luận án. Một công cụ hỗ trợ đã được xây dựng và tiến hành thực nghiệm với các hệ thống ban đầu cho những kết quả khả quan so với các phương pháp hiện có. Luận án đề xuất phương pháp sinh giả định yếu nhất cục bộ và phương pháp sử dụng các giả định đó để giảm số lần sinh lại giả định khi kiểm chứng giả định - đảm bảo phần mềm được đặc tả bằng lôgic mệnh đề trong ngữ cảnh tiến hóa. Để làm việc này, luận án đề xuất một biến thể của thuật toán trả lời các truy vấn thành viên được đề xuất bởi Chen và cộng sự. Biến thể này được tích ix hợp trong thuật toán quay lui sinh giả định yếu nhất cục bộ khi kiểm chứng. Biến thể của phương pháp trả lời truy vấn thành viên và thuật toán quay lui này được tích hợp trong phương pháp đề xuất nhằm giảm được tối đa số lần giả định cần được sinh lại khi kiểm chứng phần mềm tiến hóa. Việc này giúp giảm chi phí cho quá trình kiểm chứng các phần mềm trong ngữ cảnh tiến hóa phần mềm. Tính đúng đắn của thuật toán đề xuất cũng được chứng minh trong luận án. Công cụ hỗ trợ cho phương pháp đã được cài đặt và tiến hành thực nghiệm với các hệ thống phổ biến trong cộng đồng nghiên cứu và cho những kết quả tốt so với các phương pháp hiện nay. Luận án thực nghiệm cài đặt phiên bản một pha cho phương pháp kiểm chứng giả định - đảm bảo hai pha được đề xuất bởi Lin và cộng sự cho phần mềm dựa trên thành phần có ràng buộc thời gian. Phiên bản này loại bỏ pha sinh giả định không có thời gian từ quá trình kiểm chứng. Luận án cũng trình bày một số vấn đề phát sinh và phương pháp xử lý trong quá trình cài đặt phương pháp kiểm chứng trong thực tế. Tính đúng đắn của phiên bản đề xuất được trình bày và thảo luận trong luận án. Công cụ hỗ trợ đã được cài đặt và thực nghiệm với một số hệ thống phổ biến trong cộng đồng nghiên cứu và cho các kết quả khả quan. Các đề xuất của luận án đóng góp các giải pháp về mặt lý thuyết và công cụ hỗ trợ nhằm nâng cao hiệu quả của phương pháp kiểm chứng giả định - đảm bảo góp phần làm cho các phương pháp kiểm chứng mô hình dễ dàng được áp dụng hơn trong thực tiễn. Luận án góp phần nâng cao chất lượng trong công nghiệp phần mềm nói chung và trong cộng đồng nghiên cứu nói riêng. x Chương 1 GIỚI THIỆU 1.1. Đặt vấn đề Trong ba thập kỷ vừa qua, công nghệ phần mềm dựa trên thành phần (Component-Based Software Engineering - CBSE) nổi lên như một cách tiếp cận quan trọng trong công nghệ phần mềm vì các đặc tính cả về nghiệp vụ và kỹ thuật của nó như: tăng hiệu quả, giảm chi phí, rút ngắn thời gian đưa sản phẩm ra thị trường, tăng khả năng bảo trì, v.v. [99]. Từ đó, việc đảm bảo chất lượng cho các phần mềm dựa trên thành phần (Component-Based Software CBS) đóng vai trò sống còn trong vòng đời phát triển của chúng do yêu cầu ngày càng tăng về chất lượng. Với các sản phẩm phần mềm quan trọng có yêu cầu chất lượng cao như các phần mềm điều khiển ô tô, tàu hỏa, máy bay, v.v., các phần mềm này được yêu cầu thỏa mãn một số thuộc tính (thuộc tính được nghiên cứu trong luận án này là thuộc tính an toàn) cho trước, kiểm chứng là bắt buộc để đảm bảo thuộc tính đã cho không bị vi phạm trong toàn bộ thời gian hoạt động của chúng. Có hai hướng tiếp cận chính nhằm giải quyết vấn đề này gồm: hướng tiếp cận chứng minh định lý (theorem proving) là hướng tiếp cận bán tự động, đòi hỏi có sự tham gia của các chuyên gia trong quá trình kiểm chứng [31, 35, 53, 60, 61, 95], cần nhiều công sức và chi phí [9] và hướng tiếp cận kiểm chứng mô hình (model checking) là hướng tiếp cận hoàn toàn tự động [12]. Trong hai hướng tiếp cận này, hướng tiếp cận kiểm chứng mô hình [24, 25, 27, 54, 90] nhận được sự quan tâm đặc biệt trong cộng đồng nghiên cứu và trong công nghiệp phần mềm vì tính tự động hoàn toàn của nó. Kiểm chứng mô hình là hướng tiếp cận vét cạn thông qua việc duyệt qua toàn bộ không gian trạng thái của phần mềm để kiểm tra xem phần mềm có vi phạm thuộc tính 1 đã cho hay không. Nếu không có sự vi phạm nào, hệ thống ban đầu thỏa mãn thuộc tính đã cho. Ngược lại, một minh chứng về sự vi phạm sẽ được trả lại. Vì đặc tính vét cạn không gian trạng thái của hệ thống cần kiểm chứng, hướng tiếp cận này gặp vấn đề về sự bùng nổ không gian trạng thái đối với các hệ thống lớn [24, 26, 90]. Để tận dụng được những ưu điểm của kiểm chứng mô hình và giải quyết vấn đề về bùng nổ không gian trạng thái, phương pháp kiểm chứng giả định - đảm bảo (Assume-Guarantee Verification - AGV) đã được đề xuất [23, 44, 52, 81, 88]. Kiểm chứng giả định-đảm bảo là phương pháp kiểm chứng dựa trên chiến lược chia để trị. Trong đó, hệ thống phần mềm lớn được chia thành các thành phần nhỏ hơn để kiểm chứng. Từ đó, quá trình kiểm chứng kết luận rằng hệ thống tổng thể có thỏa mãn thuộc tính đã cho hay không mà không phải ghép nối toàn bộ các thành phần lại với nhau. Trong phương pháp kiểm chứng giả định - đảm bảo, có hai phương pháp lập luận: giả định - đảm bảo quay vòng (Circular Assume - Guarantee Reasoning CIRC-AG) [3, 64, 75, 77, 78, 84] và giả định - đảm bảo không quay vòng (NonCircular Assume - Guarantee Reasoning - NC-AG) [5, 21, 23, 41, 44, 68, 76, 96]. Trong luận án này, thuật ngữ “kiểm chứng giả định - đảm bảo quay vòng” và “kiểm chứng giả định - đảm bảo không quay vòng” được sử dụng lần lượt để chỉ “phương pháp kiểm chứng sử dụng lập luận quay vòng” và “phương pháp kiểm chứng sử dụng lập luận không quay vòng”. Sau này, phương pháp kiểm chứng giả định - đảm bảo không quay vòng được mở rộng, áp dụng cho các hệ thống được đặc tả bằng nhiều phương pháp khác nhau như: hệ chuyển trạng thái được gán nhãn (Labelled Transition Systems - LTS) [18, 22, 29, 41, 45, 46, 55, 56, 57, 58, 86], hệ thống có ràng buộc thời gian (timed systems) [68, 69], hệ thống chuyển trạng thái được đặc tả bằng lôgic mệnh đề [21, 48, 94], hệ thống chuyển trạng thái tượng trưng (symbolic transition systems) [6, 49, 82, 83], các hệ thống có yếu tố xác suất (probalistic systems) [16, 20, 37, 62], v.v. Bài toán quan trọng nhất trong phương pháp kiểm chứng giả định - đảm bảo là làm sao để sinh được giả định. Để giải quyết vấn đề này, các phương pháp hiện nay đều dựa vào các thuật toán học ngôn ngữ chính quy thông qua sự tương tác của hai thực thể Learner và T eacher. Tùy vào loại hệ thống (có hoặc không có ràng buộc thời gian) và tùy vào phương pháp đặc tả được sử dụng (đặc tả bằng hệ chuyển trạng thái được gán nhãn, lôgic mệnh đề, và ô-tô-mát ghi sự kiện, v.v.), thuật toán sinh giả định sẽ được lựa chọn tương ứng (L∗ [8, 91], và 2 CDNF (Conjunction of Disjunctive Normal Form) [15, 21], T L∗ [68, 69], v.v.). Mặc dù tồn tại nhiều phương pháp kiểm chứng giả định - đảm bảo, các phương pháp này đều có những ưu và nhược điểm nhất định. Tổng quan về phương pháp kiểm chứng giả định - đảm bảo và các vấn đề còn tồn tại được trình bày trong Hình 1.1. Trong luận án này, phần mềm được đặc tả bằng các dạng đặc tả khác nhau như LTS, lôgic mệnh đề, và ô-tô-mát ghi sự kiện và thuộc tính được kiểm chứng là thuộc tính an toàn. Kiểm chứng M’ hiệu quả? Tăng tốc độ kiểm chứng? Mô hình phần mềm tiến hóa · Yes + giả định A · No + phản ví dụ cex Mô hình phần mềm LTS Lôgic mệnh đề ERA Kiểm chứng M với các loại đặc tả khác nhau? Bùng nổ không gian trạng thái? Hình 1.1: Tổng quan về phương pháp kiểm chứng giả định - đảm bảo và các vấn đề còn tồn tại. Phương pháp kiểm chứng giả định - đảm bảo cho hệ thống chuyển trạng thái được gán nhãn là phương pháp phổ biến nhất trong cộng đồng nghiên cứu cũng như trong việc áp dụng trong công nghiệp. Trong phương pháp này, các luật kiểm chứng giả định - đảm bảo cho thấy rằng bản chất của bài toán kiểm chứng là bài toán bao của các ngôn ngữ và độ phức tạp của quá trình kiểm chứng tỉ lệ thuận với số trạng thái của giả định được sinh ra [100]. Theo đó, chi phí của quá trình kiểm chứng (chi phí được đề cập trong luận án này là chi phí về thời gian), đặc biệt trong ngữ cảnh tiến hóa (từ phần mềm M thành M 0 ), có thể nhỏ hơn nếu sử dụng giả định có số trạng thái và ngôn ngữ nhỏ hơn. Để sinh giả định cho bài toán kiểm chứng giả định - đảm bảo cho các hệ thống được đặc tả bằng LTS, Giannakopoulou và cộng sự là nhóm tác giả đầu tiên chỉ ra sự tồn tại của giả định yếu nhất (giả định có ngôn ngữ lớn nhất) trong kiểm chứng giả định - đảm bảo [41, 87]. Tiếp đó, Cobleigh và cộng sự đề xuất sử dụng thuật toán L∗ [8, 91] sinh giả định cho bài toán kiểm chứng giả định - đảm bảo [29]. Sau Cobleigh, có nhiều nghiên cứu mở rộng, cải tiến, tối ưu 3 cũng như áp dụng kết quả của Cobleigh cho nhiều ngữ cảnh khác của việc kiểm chứng phần mềm [10, 39, 87, 22, 28, 93, 17, 18, 19, 46, 38, 101, 86, 55, 57, 58]. Mặc dù vậy, vẫn chưa có nghiên cứu nào đề xuất phương pháp sinh giả định nhỏ nhất và mạnh nhất để giảm chi phí kiểm chứng phần mềm trong ngữ cảnh tiến hóa (tăng hiệu quả, tốc độ kiểm chứng M 0 ). Phương pháp kiểm chứng giả định - đảm bảo sử dụng đặc tả bằng LTS là phương pháp phổ biến và thường được áp dụng cho các hệ thống được đặc tả ở mức cao, như mức thiết kế, dưới dạng các hệ thống chuyển trạng thái. Tuy nhiên, độ phức tạp của nó vẫn rất cao. Vì vậy, trường hợp hệ thống được đặc tả ở mức thấp hơn dưới dạng lôgic mệnh đề, một số nghiên cứu khác đã sử dụng phương pháp kiểm chứng được đề xuất bởi Chen và cộng sự để giảm độ phức tạp của quá trình kiểm chứng [21, 48]. Các thuật toán kiểm chứng giả định đảm bảo sử dụng đặc tả bằng lôgic mệnh đề có những ưu điểm vượt trội so với các thuật toán sử dụng đặc tả bằng ô-tô-mát. Thứ nhất, về khả năng biểu diễn, đặc tả bằng lôgic mệnh đề tương đương với đặc tả bằng ô-tô-mát không đơn định và nó có thể biểu diễn súc tích hơn nhiều lần so với đặc tả bằng ô-tô-mát. Do đó, các thuật toán kiểm chứng sử dụng đặc tả bằng lôgic mệnh đề sinh các giả định có số trạng thái ít hơn nhiều lần các giả định sinh bởi các phương pháp sử dụng thuật toán L∗ . Thứ hai, xét về tốc độ thì thuật toán sinh giả định sử dụng đặc tả bằng lôgic mệnh đề sử dụng các thuật toán như CDNF [15], v.v. có tốc độ tốt hơn các thuật toán kiểm chứng sử dụng thuật toán L∗ [21]. Năm 2007, Sinha và cộng sự đã đề xuất sử dụng bộ giải nhằm kiểm tra tính thỏa mãn của hàm lôgic (SAT solver) cho bài toán kiểm chứng giả định - đảm bảo với các hệ thống được đặc tả bằng lôgic mệnh đề [94]. Năm 2010, Chen và cộng sự đã đề xuất áp dụng thuật toán CDNF được đề xuất bởi Bshouty [15] cho bài toán kiểm chứng giả định - đảm bảo cho hệ thống chuyển trạng thái được đặc tả bằng lôgic mệnh đề [21]. Sau Chen, năm 2016, He và cộng sự đã đề xuất một phương pháp sinh giả định có tốc độ nhanh và hiệu quả sử dụng thuật toán CDNF để sinh các giả định trong quá trình kiểm chứng giả định - đảm bảo cho hệ thống phần mềm được đặc tả bằng lôgic mệnh đề [48]. Sau đó, phương pháp này được áp dụng cho việc kiểm chứng hồi quy cho phần mềm tiến hóa. Tuy nhiên, trong ngữ cảnh tiến hóa phần mềm, thuật toán vẫn cần sinh lại giả định trong tất cả các trường hợp dù chỉ có sự thay đổi nhỏ trong các thành phần của phần mềm ban đầu. 4 Trong phát triển phần mềm nói chung, ngoài các phần mềm không có ràng buộc thời gian được đặc tả bằng LTS hoặc lôgic mệnh đề, v.v, các hệ thống có ràng buộc thời gian cũng nhận được sự quan tâm đặc biệt của cộng đồng nghiên cứu và trong công nghiệp. Do đó, việc kiểm chứng các phần mềm này trở thành một xu hướng tất yếu do các đòi hỏi về chất lượng của các hệ thống thời gian thực ngày càng cao và trong nhiều lĩnh vực của đời sống xã hội như Internet vạn vật, khoa học vũ trụ, v.v. Một trong các phương pháp đặc tả các hệ thống có ràng buộc thời gian là sử dụng các ô-tô-mát ghi sự kiện (Event - Recording Automata - ERA) [4]. Năm 2010, Grinchtein và cộng sự đề xuất thuật toán học T L∗sg để học các ô-tô-mát ghi sự kiện [42]. Sau đó, năm 2014, Lin và cộng sự là nhóm tác giả đầu tiên đề xuất bài toán kiểm chứng giả định - đảm bảo cho phần mềm có ràng buộc thời gian được đặc tả bằng ô-tô-mát ghi sự kiện [68]. Phương pháp được Lin đề xuất sử dụng thuật toán học ô-tô-mát ghi sự kiện T L∗ cũng được đề xuất bởi cùng nhóm tác giả năm 2011 [69]. Thuật toán này được phát triển từ thuật toán T L∗sg được đề xuất trước đó bởi Grinchtein và cộng sự [42]. Thuật toán T L∗ được triển khai vào bộ công cụ hỗ trợ việc kiểm chứng hệ thống có ràng buộc thời gian gọi là PAT [71, 97]. Tuy phương pháp của Lin có thể sinh được giả định cho bài toán kiểm chứng giả định - đảm bảo cho phần mềm có ràng buộc thời gian, phương pháp này có độ phức tạp cao nên vẫn rất khó khăn để có thể được áp dụng rộng rãi trong cộng đồng nghiên cứu và trong công nghiệp. Từ các phân tích trên, luận án hướng tới các mục tiêu sau. Mục tiêu thứ nhất là sinh giả định nhỏ nhất và mạnh nhất cho bài toán kiểm chứng giả định - đảm bảo. Mục tiêu này hướng tới việc giảm chi phí thời gian khi sinh lại giả định trong quá trình kiểm chứng phần mềm đã tiến hóa. Mục tiêu thứ hai là giảm chi phí thời gian của quá trình kiểm chứng giả định - đảm bảo phần mềm đã tiến hóa bằng cách giảm số lần sinh lại giả định khi kiểm chứng hồi quy. Luận án đề xuất phương pháp sinh giả định yếu nhất cục bộ cho quá trình kiểm chứng giả định - đảm bảo. Các giả định này được sử dụng trong phương pháp đề xuất để giảm số lần sinh lại giả định khi kiểm chứng hồi quy phần mềm tiến hóa. Mục tiêu cuối cùng của luận án là tiến hành thử nghiệm cài đặt phiên bản một pha của phương pháp kiểm chứng giả định - đảm bảo hai pha cho phần mềm có ràng buộc thời gian. Để đạt được mục tiêu này, luận án tiến hành nghiên cứu, cài đặt, và xử lý các vấn đề phát sinh trong quá trình cài đặt phương pháp sinh 5 giả định được đề xuất bởi Lin và cộng sự [68]. Đối tượng nghiên cứu của luận án là phương pháp kiểm chứng giả định - đảm bảo cho phần mềm dựa trên thành phần. Trong khuôn khổ luận án này, phương pháp kiểm chứng giả định - đảm bảo cho các phần mềm tương tranh không có và có ràng buộc thời gian lần lượt được đặc tả bằng ba loại đặc tả là LTS, lôgic mệnh đề, và ERA được nghiên cứu và cải tiến. Các loại đặc tả này quyết định các phương pháp kiểm chứng tương ứng được sử dụng là phương pháp sử dụng thuật toán L∗ [29], phương pháp kiểm chứng sử dụng thuật toán CDNF [21], và thuật toán T L∗ [68]. Tuy nhiên, các phương pháp kiểm chứng giả định - đảm bảo hiện có cho phần mềm sử dụng ba loại đặc tả này vẫn chưa phải là tối ưu về chi phí thời gian và chưa được áp dụng trong ngữ cảnh tiến hóa phần mềm. Do đó, luận án tập trung vào tối ưu chi phí thời gian cho các phương pháp kiểm chứng này và trong ngữ cảnh tiến hóa. Các nghiên cứu này có ý nghĩa lớn trong việc nâng cao chất lượng phần mềm và làm cho phương pháp kiểm chứng giả định - đảm bảo được áp dụng rộng rãi hơn trong thực tiễn. Để đạt được mục tiêu nghiên cứu, các phương pháp kiểm chứng giả định đảm bảo đã có sẽ được tiến hành khảo sát. Từ đó, các khoảng trống nghiên cứu được xác định làm cơ sở để đề xuất các phương pháp mới hoặc cải tiến các phương pháp hiện có. Các công cụ hỗ trợ thực nghiệm cũng được xây dựng để minh chứng cho tính đúng đắn và tính hiệu quả của các đề xuất và cải tiến. 1.2. Các đóng góp chính của luận án Luận án đạt được ba kết quả chính gồm: (i) phương pháp sinh giả định nhỏ nhất và mạnh nhất cho việc kiểm chứng phần mềm dựa trên thành phần, (ii) phương pháp kiểm chứng hồi quy giả định - đảm bảo cho phần mềm tiến hóa, (iii) kết quả thử nghiệm cài đặt phiên bản một pha cho phương pháp kiểm chứng giả định - đảm bảo hai pha cho phần mềm có ràng buộc thời gian. Chi tiết các đóng góp của luận án như sau. Đề xuất một phương pháp sinh các giả định nhỏ nhất và mạnh nhất cục bộ cho bài toán kiểm chứng giả định - đảm bảo cho phần mềm dựa trên thành phần. Các giả định này góp phần làm giảm chi phí tính toán khi kiểm chứng phần mềm đã tiến hóa do độ phức tạp của quá trình kiểm chứng tỉ lệ thuận với độ lớn của ngôn ngữ của các thành phần phần mềm và số trạng thái của chúng. 6 Tính đúng đắn của phương pháp đề xuất cũng được chứng minh trong luận án. Một công cụ hỗ trợ cũng đã được cài đặt và thực nghiệm với một số ví dụ điển hình để minh chứng cho tính hiệu quả của phương pháp đề xuất. Đề xuất một phương pháp kiểm chứng hồi quy giả định - đảm bảo một cách hiệu quả bằng cách giảm số lần cần sinh lại giả định khi kiểm chứng cho phần mềm trong ngữ cảnh tiến hóa. Phương pháp này dựa trên thuật toán quay lui đề xuất nhằm sinh các giả định yếu nhất cục bộ khi kiểm chứng. Các chứng minh cho tính đúng đắn của phương pháp đề xuất cũng được trình bày trong luận án. Một công cụ hỗ trợ cũng đã được cài đặt và thực nghiệm với một số hệ thống phổ biến trong cộng đồng nghiên cứu và cho những kết quả khả quan. Tiến hành thử nghiệm cài đặt phiên bản một pha cho phương pháp kiểm chứng giả định - đảm bảo hai pha cho hệ thống phần mềm có ràng buộc thời gian. Thử nghiệm này nhằm có được đánh giá về thời gian, hiệu quả của quá trình kiểm chứng một pha. Một số trường hợp phát sinh trong quá trình cài đặt và phương pháp xử lý cũng được trình bày trong luận án. Trường hợp đầu tiên là trường hợp Teacher “không biết” nếu tiếp tục quá trình kiểm chứng có thể sinh được giả định cần tìm không hoặc trường hợp Teacher “không biết” trả về phản ví dụ nào để Learner tiếp tục quá sinh các ứng viên giả định tốt hơn. Trường hợp thứ hai là hiện thực hóa việc trả về các phản ví dụ cho Learner của Teacher và việc phân tích các phản ví dụ này ở phía Learner để sinh các giả định tốt hơn ở bước kiểm chứng tiếp theo. Tính đúng đắn của các đề xuất cũng được trình bày và thảo luận trong luận án. Một công cụ đã được cài đặt và tiến hành thực nghiệm với một số hệ thống phổ biến và cho kết quả tốt. Các kết quả nghiên cứu trên cải tiến phương pháp kiểm chứng giả định - đảm bảo cho phần mềm dựa trên thành phần được đặc tả bằng nhiều loại đặc tả khác nhau. Tùy vào loại đặc tả mà đội phát triển phần mềm sử dụng, cải tiến tương ứng có thể được lựa chọn. Khi các phần mềm được mô hình hóa ở mức cao dưới dạng các hệ thống chuyển trạng thái, cải tiến ở Chương 3 nên được sử dụng. Ngược lại, khi quá trình kiểm chứng đòi hỏi tốc độ cao và các hệ thống được mô hình hóa ở mức thấp hơn, đội phát triển nên áp dụng cải tiến ở Chương 4. Ngoài ra, khi phát triển các phần mềm có ràng buộc thời gian, các phần mềm này nên được đặc tả bằng ERA để có thể áp dụng các thử nghiệm trong Chương 5. Các đóng góp này góp phần làm cho phương pháp kiểm chứng giả định - đảm bảo trở nên hiệu quả và được sử dụng nhiều hơn trong phát triển phần mềm. Từ 7 đó, chất lượng phần mềm ngày càng được nâng cao và đảm bảo nhằm đáp ứng được đòi hỏi ngày càng cao của cộng đồng nghiên cứu nói riêng cũng như trong công nghiệp phần mềm nói chung. 1.3. Bố cục của luận án Phần còn lại của luận án được cấu trúc như sau. Chương 2 giới thiệu các khái niệm cơ bản được sử dụng trong các nghiên cứu của luận án. Trong chương này, các phương pháp đặc tả và kiểm chứng cho các hệ thống phần mềm được trình bày. Các phương pháp đặc tả này bao gồm LTS, lôgic mệnh đề, và ERA. Phương pháp sinh giả định nhỏ nhất và mạnh nhất cục bộ được trình bày trong Chương 3 sử dụng đặc tả bằng LTS. Chương 4 đề xuất một phương pháp sinh giả định yếu nhất cục bộ và sử dụng giả định đó trong việc kiểm chứng các phần mềm trong ngữ cảnh tiến hóa. Lôgic mệnh đề được sử dụng để đặc tả các hệ thống phần mềm trong nghiên cứu của chương này. Một thử nghiệm cài đặt phiên bản một pha cho phương pháp kiểm chứng giả định - đảm bảo hai pha cho phần mềm có ràng buộc thời gian được giới thiệu trong Chương 5. Trong chương này, các thành phần phần mềm và thuộc tính của chúng được đặc tả bằng ERA. Cuối cùng, tổng kết các kết quả nghiên cứu của luận án và các hướng nghiên cứu tiếp theo được trình bày trong Chương 6. 8 Chương 2 KIẾN THỨC NỀN TẢNG Chương này trình bày các khái niệm nền tảng và các phương pháp kiểm chứng được sử dụng trong luận án. Các khái niệm cơ bản gồm các phương pháp đặc tả phần mềm sử dụng các hệ thống chuyển trạng thái được gán nhãn, lôgic mệnh đề, ô-tô-mát ghi sự kiện, v.v. Các phương pháp kiểm chứng giả định - đảm bảo sử dụng các loại đặc tả trên và các khái niệm liên quan cũng được giới thiệu. 2.1. Đặc tả và kiểm chứng giả định - đảm bảo cho các hệ thống đặc tả bằng LTS 2.1.1. Hệ thống chuyển trạng thái được gán nhãn Các hệ thống chuyển trạng thái được gán nhãn (Labelled Transition Systems - LTS) được dùng để đặc tả các hành vi của các thành phần phần mềm cũng như các thuộc tính của chúng. Các nghiên cứu trong Chương 3 và Chương 5 của luận án sẽ sử dụng các khái niệm này. Gọi Act là tập các hành vi toàn cục quan sát được của phần mềm và τ là một hành vi cục bộ không quan sát được của thành phần nhìn từ góc nhìn của môi trường của thành phần. π được dùng để biểu diễn một trạng thái đặc biệt gọi là trạng thái lỗi. Một LTS được định nghĩa như sau. Định nghĩa 2.1 (LTS). Một LTS M là một bộ gồm bốn thành phần ký hiệu là hQ, Σ, δ, q0 i, trong đó: • Q là một tập không rỗng các trạng thái, • Σ ⊆ Act là một tập hữu hạn các hành vi quan sát được gọi là bảng chữ cái của M , 9 • δ ⊆ Q × Σ ∪ {τ } × Q là quan hệ chuyển trạng thái, và • q0 ∈ Q là trạng thái khởi tạo. Chú ý 2.1 Số lượng trạng thái của M được gọi là kích thước của M , ký hiệu là |M | (|M | = |Q|). Đây là một khái niệm có ảnh hưởng lớn đến độ phức tạp của các thuật toán kiểm chứng nói chung và trong các thuật toán đề xuất trong Chương 3 nói riêng. Chuỗi được dùng để biểu diễn một dãy có thứ tự các hành vi quan sát được của phần mềm. Đây là khái niệm được sử dụng xuyên suốt trong luận án. Đối với phần mềm được đặc tả bằng một LTS M , một chuỗi của M được định nghĩa như sau. Định nghĩa 2.2 (Chuỗi). Một chuỗi σ của một LTS M = hQ, Σ, δ, q0 i là một trình tự hữu hạn các hành vi a1 a2 ...an , mà tồn tại một trình tự các trạng thái bắt đầu từ trạng thái khởi tạo (nghĩa là tồn tại q0 q1 ...qn ), với 1 ≤ i ≤ n, sao cho (qi−1 , ai , qi ) ∈ δ , qi ∈ Q. Trong quá trình làm việc với các phần mềm được đặc tả bằng LTS, đặc biệt là trong các thuật toán sinh giả định được trình bày trong Chương 3 và Chương 5, các ngôn ngữ của chúng là tập các chuỗi thường xuyên được đề cập tới. Trong các phép toán về ngôn ngữ, phép ghép nối là một trong những phép toán quan trọng nhất. Định nghĩa 2.3 (Phép ghép nối). Cho hai tập các chuỗi hành vi P ⊆ Σ∗ và Q ⊆ Σ∗ , phép ghép nối của P và Q được định nghĩa là P.Q = {pq | p ∈ P, q ∈ Q}, trong đó pq biểu diễn phép ghép nối của các chuỗi p và q . Chú ý 2.2 Tập hợp tất cả các chuỗi của M được gọi là ngôn ngữ của M , ký hiệu là L(M ). Gọi σ = a1 a2 ...an là một chuỗi của một LTS M . Ký hiệu [σ ] được dùng để biểu diễn một LTS Mσ = hQ, Σ, δ, q0 i, trong đó Q = {q0 , q1 , ..., qn }, và δ = {(qi−1 , ai , qi )}, với 1 ≤ i ≤ n. Chương 3 và Chương 4 nghiên cứu cải tiến các phương pháp kiểm chứng giả định - đảm bảo cho phần mềm trong ngữ cảnh tiến hóa. Vì vậy, khái niệm tiến hóa là một khái niệm quan trọng được sử dụng trong các chương này cũng như trong toàn bộ luận án. Trong thực tế phát triển phần mềm, khái niệm này được hiểu theo các cách khác nhau tùy thuộc vào ngữ cảnh sử dụng của nó. Trong 10
- Xem thêm -

Tài liệu liên quan