• Tidak ada hasil yang ditemukan

M c l c

N/A
N/A
Protected

Academic year: 2024

Membagikan "M c l c"

Copied!
155
0
0

Teks penuh

(1)

Mục lục

Chương 1. GIỚI THIỆU . . . 1

1.1. Đặt vấn đề . . . 1

1.2. Các đóng góp chính của luận án . . . 6

1.3. Bố cục của luận án . . . 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

(2)

3.3.2. Thuật toán sinh giả định sử dụng thuật toán học L. . . 34

3.4. Phương pháp sinh giả định nhỏ nhất và mạnh nhất cục bộ . . . 36

3.4.1. Phương pháp sinh giả định mạnh nhất cục bộ . . . 37

3.4.2. Phương pháp sinh giả định nhỏ nhất và mạnh nhất cục bộ . . . 45

3.5. Thực nghiệm và thảo luận . . . 55

3.6. Tổng kết. . . 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

(3)

5.4. Phiên bản một pha của phương pháp sinh giả định hai pha . . . 111

5.4.1. Phiên bản một pha của thuật toán sinh giả định . . . 111

5.4.2. Phiên bản cài đặt các thuật toán thực thi Teacher. . . 113

5.5. Thảo luận . . . 116

5.5.1. Một số vấn đề trong thực tế cài đặt . . . 116

5.5.2. Ví dụ cho quá trình sinh giả định vô hạn . . . 118

5.6. Tính đúng đắn . . . 119

5.7. Thực nghiệm . . . 121

5.8. Tổng kết . . . 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

(4)

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 Tương tác giữa L LearnerT eacher. . . 33

3.2 Quá trình kiểm chứng thành phần tại bước thứ i. . . 35

3.3 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. . . 37

3.4 Mối quan hệ giữa s, L(A), and L(AW). . . 38

3.5 Ý 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. . . 44

3.6 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). . . 46

3.7 Ý tưởng để tính tempQ, comF inalState, và Cikj. . . 47

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 Thuật toán CBAG. . . 77

4.2 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. . . 80

4.3 Mối quan hệ giữa L(AO), L(AN), và L(AW). . . 86

4.4 Mối quan hệ giữa ListN WListN. . . 87

4.5 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. . . 89

4.6 Thuật toán sinh lại giả định cho CBS trong ngữ cảnh tiến hóa. . . 91

5.1 Phương pháp sinh giả định hai pha. . . 109

5.2 Ví dụ về quá trình sinh giả định lặp vô hạn. . . 119

5.3 Ứng viên cho giả định tương ứng. . . 119

(5)

Danh sách bảng

2.1 Các phép gán cho ví dụ về chuỗi . . . 18

3.1 Kết quả thực nghiệm so sánh Thuật toán 3.1 và Thuật toán 3.3 . . . 56

3.2 Kết quả thực nghiệm so sánh Thuật toán 3.1 và Thuật toán 3.4 . . . 59

3.3 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 Bảng chân lý của phép toán lôgic kéo theo . . . 79

4.2 Sinh giả định đầu tiên sử dụng thuật toán LWAG . . . 92

4.3 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 . . . 93

4.4 So sánh các phương pháp sinh giả định . . . 98

4.5 So sánh các phương pháp sinh lại giả định . . . 101

5.1 Một bảng quan sát trong quá trình kiểm chứng M . . . 118

5.2 Kết quả thực nghiệm phiên bản một pha . . . 123

(6)

Thuật ngữ và từ viết tắt

Từ viết

tắt Từ gốc Giải nghĩa -

tạm dịch

AG Assume-Guarantee Giả định - đảm bảo

AGV Assume-Guarantee

Verification Kiểm chứng giả định - đảm bảo

AMC Adaptive Model Checking Kiểm chứng mô hình thích nghi

CBAG CDNF-based assumption generation Thuật toán sinh giả định dựa trên thuật toán CDNF

CBS Component-based software Phần mềm dựa trên thành phần CDNF Conjunction of Disjunctive Normal

Form

Tên một thuật toán học hàm lôgic dùng để sinh giả định

CIRC-AG Circular Assume-Guarantee Kiểm chứng giả định - đảm bảo quay vòng

CNF Conjunctive Normal Form Dạng chuẩn hội

DFA Deterministic Finite State Automata Ô-tô-mát hữu hạn trạng thái đơn định DNF Disjunctive Normal Form Dạng chuẩn tuyển

EQ Equivalence query Thuật toán trả lời truy vấn ứng viên ERA Event-Recording Automaton Ô-tô-mát ghi sự kiện

FMS Flexible Manufacturing System Hệ thống sản xuất linh hoạt

GSS Gas station system Hệ thống trạm gas

IMQ Improved membership query Thuật toán trả lời truy vấn thành viên cải tiến

IW Is witness Thuật toán phân tích phản ví dụ

LMAG Locally minimum and strongest assumption generation tool

Công cụ sinh giả định nhỏ nhất và mạnh nhất cục bộ

LSAG Locally strongest assumption

generation tool Công cụ sinh giả định mạnh nhất cục bộ LTS Labelled transition system Hệ thống chuyển trạng thái được gán nhãn LTSA Labelled transition system analyser 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 LWAG Local weakest assumption generation Thuật toán sinh giả định yếu nhất cục bộ MTBDD Multiterminal binary decision diagram Sơ đồ quyết định nhị phân đa chiều NC-AG Non-circular assume-guarantee Kiểm chứng giả định - đảm bảo không

quay vòng

OMQ Original membership query Thuật toán trả lời truy vấn thành viên ban đầu

PAT Process Analysis Toolkit Tên một công cụ đặc tả, kiểm chứng phần mềm

Tivet Timed systems verification tool Công cụ kiểm chứng phần mềm có ràng buộc thời gian

(7)

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

(8)

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.

(9)

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

(10)

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.

(11)

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

(12)

đã 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 (Non- Circular 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ể LearnerT 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à

(13)

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.

Mô hình phần mềm

Bùng nổ không gian trạng thái?

· Yes + giả định A

· No + phản ví dụ cex

Mô hình phần mềm tiến hóa

LTS Lôgic mệnh đề ERA

Kiểm chứng M với các loại đặc tả khác nhau?

Tăng tốc độ kiểm chứng?

Kiểm chứng M’

hiệu quả?

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ềmM thànhM0), 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

(14)

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 M0).

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.

(15)

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 Lsg để 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 Lsg được đề xuất trước đó bởi Grinchtein và cộng sự [42].

Thuật toánT 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

(16)

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ánL [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.

(17)

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ợpTeacher “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ừ

(18)

đó, 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.

(19)

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ọiActlà 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,Σ, δ, q0i, 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,

(20)

δ 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ộtchuỗi củaM được định nghĩa như sau.

Định nghĩa 2.2 (Chuỗi). Một chuỗi σ của một LTS M = hQ,Σ, δ, q0i là một trình tự hữu hạn các hành vi a1a2...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 q0q1...qn), với 1in, sao cho (qi−1, ai, qi)δ, qiQ.

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 ΣQΣ, phép ghép nối của PQ được định nghĩa là P.Q={pq | pP, q Q}, trong đó pq biểu diễn phép ghép nối của các chuỗi pq.

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 σ = a1a2...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,Σ, δ, q0i, trong đó Q = {q0, q1, ..., qn}, và δ={(qi−1, ai, qi)}, với 1in.

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

(21)

luận án này, khái niệm tiến hóa được sử dụng để chỉ phần mềm và thành phần của nó đã được thay đổi bằng cách thêm, sửa hoặc bớt một số hành vi. Hình thức hóa khái niệm này là một thách thức trong các phương pháp hình thức.

Trong luận án này, khái niệm tiến hóa của phần mềm và thành phần của chúng được định nghĩa như sau.

Định nghĩa 2.4 (Tiến hóa phần mềm). Một phần mềm M được gọi là tiến hóa thành M0 nếu và chỉ nếu L(M)6=L(M0)L(M)L(M0)6=.

Phép ghép nối song song: Phép ghép nối song song (ký hiệu là k) là một phép toán giao hoán và kết hợp xét về mặt tương đương về ngôn ngữ mà kết hợp các hành vi của hai mô hình bằng cách đồng bộ các hành vi chung trong bảng chữ cái và xen kẽ các hành vi còn lại. Phép ghép nối song song được dùng để biểu diễn sự tương tác của các thành phần trong cùng một phần mềm. Đây là phép toán được sử dụng xuyên suốt trong toàn bộ luận án. Đối với các phần mềm được đặc tả bằng LTS, phép ghép nối song song được định nghĩa như sau.

Định nghĩa 2.5 (Phép ghép nối song song). Phép ghép nối song song giữa hai thành phần M1 = hQ1,ΣM1, δ1, q10iM2 = hQ2,ΣM2, δ2, q02i, ký hiệu là M1kM2, được định nghĩa như sau. M = M1 k M2 là tương đương với Q nếu M1 hoặc M2 là tương đương với Q, trong đó Q biểu diễn LTS h{π}, Act,ø, πi. Ngược lại, M1 k M2 là một LTS M = hQ,Σ, δ, q0i, trong đó Q = Q1×Q2, Σ = ΣM1 ΣM2, q0= (q01, q02), và quan hệ chuyển trạng thái δ được cho bởi các công thức:

(i)αΣM1 ΣM2,(p, α, p0)δ1,(q, α, q0)δ2

((p, q), α,(p0, q0))δ (2.1) (ii)α ΣM1M2,(p, α, p0)δ1

((p, q), α,(p0, q))δ (2.2) (iii)α ΣM2M1,(q, α, q0)δ2

((p, q), α,(p, q0))δ (2.3) Trong Chương 3, các thuật toán đề xuất sử dụng các LTS đơn định để đặc tả hành vi của phần mềm và thuộc tính của chúng. Một LTS được gọi là đơn định nếu và chỉ nếu với mỗi trạng thái q của LTS và một hành vi aΣ chỉ có tối đa là một trạng thái q0 của LTS sao cho (q, a, q0)δ. Một cách hình thức, LTS đơn định được định nghĩa sau.

(22)

Định nghĩa 2.6 (LTS đơn định). Một LTS đơn định là một LTS thỏa mãn điều kiện sau. ∀aΣ, qQ, | { q0 | (q, a, q0)δ } | ≤1.

LTS an toàn, thuộc tính an toàn, tính thỏa mãn và LTS lỗi

Thuộc tính an toàn được sử dụng xuyên suốt các nghiên cứu của luận án.

Thuộc tính an toàn được sử dụng để biểu diễn tình huống không có gìbất thường xảy ra trong toàn bộ thời gian hoạt động của hệ thống. Bất thường ở đây có thể là tình huống hệ thống có thể vào một trạng thái khóa chết hoặc một trạng thái lỗi [63]. Định nghĩa sau được sử dụng để biểu diễn một hệ thống an toàn.

Định nghĩa 2.7 (LTS An Toàn). Một LTS an toàn là một LTS đơn định mà không chứa trạng thái tương đương với trạng thái lỗi π (trạng thái sau phép ghép nối song song có chứa π).

Chú ý 2.3 Một thuộc tính an toàn báo cho biết rằng không có điều gì xấu trong toàn bộ thời gian. Một thuộc tính an toàn p được biểu diễn bởi một LTS an toàn p = hQ,Σp, δ, q0i mà ngôn ngữ L(p) định nghĩa tập hợp những hành vi được chấp nhận trong bảng chữ cái Σp.

Trong bài toán kiểm chứng, tính thỏa mãn là một khái niệm không thể thiếu và là cơ sở cho các thuật toán được trình bày trong toàn bộ luận án. Đối với các phần mềm được đặc tả bằng LTS, tính thỏa mãn được định nghĩa như sau.

Định nghĩa 2.8 (Tính thỏa mãn). Một LTS M được gọi là thỏa mãn p, ký hiệu bởi M |=p, nếu và chỉ nếu ∀σ L(M): (σ↑Σp) L(p), trong đó σ↑Σp biểu diễn chuỗi có được bằng cách loại bỏ toàn bộ các hành vi a /Σp từ σ.

Chú ý 2.4 Khi kiểm tra một LTS M có thỏa mãn một thuộc tính cho trước p hay không, một LTS lỗi được tính toán, ký hiệu là perr, để biểu diễn các khả năng vi phạm trạng thái lỗi π. perr được định nghĩa như sau:

Định nghĩa 2.9 (LTS lỗi). Một LTS lỗi của một thuộc tính p = hQ,Σp, δ, q0iperr =hQ∪ {π},Σp, δ0, q0i, trong đó δ0=δ∪ {(q, a, π)|aΣp và @q0Q: (q, a, q0) δ}.

Ghi chú 2.1 LTS lỗi là một ô-tô-mát đầy đủ, nghĩa là mọi trạng thái khác trạng thái lỗi đều có các chuyển trạng thái xuất phát từ nó với mọi hành vi trong bảng chữ cái. Để kiểm tra xem thành phần M có thỏa mãn một thuộc tính p hay

(23)

song song M kperr được tính toán sau đó. Nếu một số trạng thái dạng (q, π) là đến được trong hệ thống ghép nối đó thì M vi phạm p. Ngược lại, M thỏa mãn p [100].

Các thuật toán sinh giả định được trình bày trong Chương 3 đều sinh ra một ô-tô-mát hữu hạn trạng thái đơn định (DFA) như một đối tượng trung gian trong quá trình sinh ứng viên giả định. Các ô-tô-mát hữu hạn trạng thái đơn định này được định nghĩa như sau.

Định nghĩa 2.10 (Ô-tô-mát hữu hạn trạng thái đơn định) (DFA). Một DFA D là một bộ gồm năm thành phần hQ,Σ, δ, q0, Fi, trong đó:

Q,Σ, δ, q0 là các tập được định nghĩa như với LTS, và

F Q là một tập các trạng thái chấp nhận.

Chú ý 2.5 Xét D là một DFA và σ là một chuỗi trên tập bảng chữ cái Σ. Ký hiệu δ(q, σ) được dùng để biểu diễn một trạng thái mà D sẽ đến sau khi đọc chuỗi σ bắt đầu từ trạng thái q. Một chuỗi σ được gọi là được chấp nhận bởi một DFA D =hQ,Σ, δ, q0, Fi nếu δ(q0, σ)F. Tập tất cả các chuỗi σ được chấp nhận bởi D được gọi là ngôn ngữ của D (ký hiệu là L(D)). Một cách hình thức, L(D) = | δ(q0, σ)F}.

2.1.2. Kiểm chứng giả định - đảm bảo cho các hệ thống đặc tả bằng LTS Phương pháp kiểm chứng giả định - đảm bảo (Assume-Guarantee Verification) cho phần mềm dựa trên thành phần được nghiên cứu trong luận án. Trong đó, Chương 3 tập trung vào luật kiểm chứng giả định - đảm bảo cho các phần mềm được đặc tả bằng LTS. Luật này được phát biểu như sau.

Định nghĩa 2.11 (Kiểm chứng giả định - đảm bảo). Xét M là một hệ thống chứa hai thành phần M1M2, p là một thuộc tính an toàn, và A là một giả định về môi trường của M1. Luật kiểm chứng giả định - đảm bảo được mô tả như trong công thức sau [29].

(step 1) hAi M1 hpi (step 2) htruei M2 hAi

htruei M1||M2 hpi

(24)

Chú ý 2.6 Luân án sử dụng công thứchtrueiM hAiđể biểu diễn công thức ghép nối MkAerr. Công thức hAi M hpitrue nếu với M là một phần của một hệ thống thỏa mãn A, thì hệ thống cũng phải đảm bảo p là đúng. Để kiểm tra công thức này, trong đó Ap đều là các LTS an toàn, công thức ghép nối AkMkperr được tính toán và kiểm tra xem trạng thái lỗi π có đến được hay không trong hệ thống kết quả. Nếu π là đến được, công thức này bị vi phạm. Ngược lại, công thức này được thỏa mãn [100].

Định nghĩa 2.12 (Giả định) Gọi M là một hệ thống chứa hai thành phần M1M2,p là một thuộc tính an toàn. NếuA là một LTS thỏa mãn luật kiểm chứng giả định - đảm bảo trong Định nghĩa 2.11 thì A được gọi là giả định ngữ cảnh của M1 (gọi tắt là giả định).

Giannakopoulou và cộng sự đã chỉ ra sự tồn tại của giả định yếu nhất AW trong bài toán kiểm chứng giả định - đảm bảo [41]. Đây là cơ sở cho các nghiên cứu sau này của cộng đồng nghiên cứu và của Chương 3 của luận án về các phương pháp sinh giả định thỏa mãn các luật kiểm chứng giả định - đảm bảo.

Giả định yếu nhất được định nghĩa như sau.

Định nghĩa 2.13 (Giả định yếu nhất) [41]. Giả định yếu nhấtAW mô tả chính xác những chuỗi trên tập bảng chữ cái Σ = (ΣM1 Σp)ΣM2 mà trạng thái lỗi π là không đến được trong hệ thống ghép nối M1 k perr. Giả định yếu nhất AW nghĩa là với mọi môi trường E, E kM1|=p nếu và chỉ nếu E |=AW.

Bài toán kiểm chứng giả định - đảm bảo có bản chất là bài toán kiểm tra một ngôn ngữ có là ngôn ngữ con của một ngôn ngữ khác hay không đối với các ngôn ngữ của các thành phần phần mềm có sự tham gia của giả định đang xét.

Do đó, giả định mạnh (có ngôn ngữ nhỏ), đặc biệt là giả định mạnh nhất, đóng vai trò quan trọng trong quá trình kiểm chứng. Tuy nhiên, kích thước của các giả định cũng ảnh hưởng không nhỏ đến độ phức tạp của các thuật toán này do bài toán kiểm chứng cũng chính là bài toán kiểm tra tính rỗng của ngôn ngữ của các LTS [100]. Trong đó, giả định mạnh nhất và giả định nhỏ nhất được định nghĩa như sau.

Định nghĩa 2.14 (Giả định mạnh nhất). Gọi AS là một giả định thỏa mãn các luật kiểm chứng giả định - đảm bảo trong Định nghĩa 2.11. Nếu với mọi giả định A thỏa mãn các luật kiểm chứng giả định - đảm bảo trong Định nghĩa 2.11:

(25)

Chú ý 2.7 Cho hai giả định A1A2 thỏa mãn các luật kiểm chứng giả định - đảm bảo trong Định nghĩa 2.11, nếu L(A1)↑ΣA

2 L(A2), A1 được gọi là mạnh hơn A2, hay A2 là yếu hơn A1.

Định nghĩa 2.15 (Giả định nhỏ nhất). Gọi AM là một giả định thỏa mãn các luật kiểm chứng giả định - đảm bảo trong Định nghĩa 2.11. Nếu với mọi giả định A thỏa mãn các luật kiểm chứng giả định - đảm bảo trong Định nghĩa 2.11:

|AM| ≤ |A|, AM được gọi là giả định nhỏ nhất.

Chú ý 2.8 Cho hai giả định A1A2 thỏa mãn các luật kiểm chứng giả định - đảm bảo trong Định nghĩa 2.11, nếu |A1|<|A2|, A1 được gọi là nhỏ hơn A2, hay A2 là lớn hơn A1.

Chương 3 của 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 giả định mạnh nhất cục bộ và giả định nhỏ nhất cục bộ được hiểu như sau.

Chú ý 2.9 Gọi A là một tập con của tập tất cả các giả định thỏa mãn luật giả định - đảm bảo trong Định nghĩa 2.11 và ALS A. Nếu với mọi A A:

L(ALS)↑ΣA L(A), ALS được gọi là giả định mạnh nhất cục bộ trong A.

Chú ý 2.10 Gọi A là một tập con của tập tất cả các giả định thỏa mãn luật giả định - đảm bảo trong Định nghĩa 2.11 và ALM A. Nếu với mọi A A:

|ALM| ≤ |A|, ALM được gọi là giả định nhỏ nhất cục bộ trong A.

Trong quá trình kiểm chứng giả định - đảm bảo, các thuật toán kiểm chứng sử dụng một cấu trúc dữ liệu được gọi là bảng quan sát làm cơ sở để sinh các ứng viên giả định cho quá trình kiểm chứng. Bảng quan sát được định nghĩa như sau.

Định nghĩa 2.16 (Bảng quan sát). Cho một bảng chữ cái Σ, một bảng quan sát là một bộ ba (S, E, T), trong đó:

S Σ là một tập các tiền tố,

E Σ là một tập các hậu tố, và

T : (SS.Σ).E → {true, f alse}. Với mỗi chuỗi s Σ, T(s) = true nghĩa là s L(A), ngược lại s / L(A), trong đó A là giả định tương ứng với bảng quan sát (S, E, T).

Gambar

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.
Hình 2.1: Mô hình kiểm chứng giả định - đảm bảo.
Hình 3.1: Tương tác giữa L ∗ Learner và T eacher.
Hình 3.2: Quá trình kiểm chứng thành phần tại bước thứ i.
+7

Referensi

Dokumen terkait

Xuất phát từ thực tiễn đó, bài viết này xin đề cập ba nội dung: i Lý thuyết lượng giá môi trường, HST biển; ii Một số phương pháp cơ bản về lượng giá tổn thất do sự cố tràn dầu và khả

Nhưng cũng từ việc mượn các câu chuyện lịch sử ñể xây dựng kịch bản, thể hiện quan ñiểm mà ta thấy rằng dường như các tác giả kịch bản chịu một áp lực nhất ñịnh khi tái hiện những xung

Nhiều NHTM đã chuyển đổi từ cấu trúc tổ chức theo chức năng sang mô hình cấu trúc theo nhóm khách hàng, loại hình dịch vụ; áp dụng mô hình Các điều kiện đảm bảo ổn định khu vực tài

Từ đây có thể xác định thư viện là một trong những thiết chế quan trọng trong việc bảo đảm quyền tiếp cận thông tin của công dân trên nguyên tắc bình đẳng; thư viện tạo cơ hội cho người

KẾT QUẢ NGHIÊN CỨU a Tháo lưu lượng thi công qua lòng sông thu hẹp Việc xây dựng công trình đầu mối được bắt đầu từ việc đào kênh dẫn dòng thi công ở bờ phải và được bảo vệ bởi các

Các hàm ý từ ngôn ngữ học tri nhận đối với phương pháp giảng dạy ngoại ngữ đều dựa trên 3 giả thiết cơ bản sau: 1 Quá trình xử lí thông tin theo một cách thức thoả đáng sẽ hỗ trợ khả

Từ quan điểm của thuyết cấu trúc phát sinh, bài viết này phân tích sự vận động của tiểu thuyết lịch sử Nam Bộ các khía cạnh: thành tựu sáng tác xuất phát từ các hành vi thể nghiệm của

STT Ký hiệu/ chữ viết tắt Ý nghĩa 22 MPLSoGRE MPLS over Generic Routing Encapsulation Giao thức đóng gói nhiều loại giao thức lớp network 23 NETCONF Network Configuration