ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
LÊ CHÍ LUẬN
LUAN AN TIEN Si NGANH CONG NGHE THONG TIN
Hà Nội — 2018
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trang 3Mục lục
Chương 1 GIỚI THIỆU - 1
1.1 Đặt vấn dé cece cree ence een nhu ng kh ng vn va 11.2 Các đóng góp chính của luận ấn bì
1.3 B6 cục của luận ấn 222v 6
Chương 2 KIÊN THUC NEN TẢNG 8
2.1 Mô hình của thành phần phần mềm 8
2.1.1 Hệ thống chuyển trạng thái được gán nhãn 8
2.1.2 Vet ccc cence cence tee beet e bene k vn k vs 11
2.1.3 Phép ghép nối song song - - - 12
2.1.4 LTS an toàn, thuộc tính an toàn, tính thỏa mãn và LTS lỗi 13
2.2 Ôtômát hữu hạn trạng thái đơn định 152.3 OtOmat VàO/Tâ cece cece tee e eee cette teen enna 21
2.4 Kiểm chứng giả định - đảm bao (Assume - Guarentee Verification) 22
2.4.1 Lý thuyết giả định cc c2 teen eee 22
2.4.2 Bộ công cụ LTSA (Labelled Transition Systems Analyzer) 23
2.5 Kết Wan ccc cece eee e eee e beeen nh nà va 24
Chương 3 PHƯƠNG PHÁP SINH MO HÌNH VA KIEM CHUNG
TÍNH DUNG DAN THIET KE CHO CAC PHAN MEM DUA TREN
THÀNH PHAN 2.0.0.0 ccccccecc cece teense cease enseeeneeenas 25
3.1 Giới thiệu Q0 Q Q n n ng een ee ete x 25
3.2 Các nghiên cứu liên quan - ch 27
3.3 Phân tích biểu đồ tuần tự 293.3.1 Định dạng của đầu vào biểu đồ tuần tự 303.3.2 Sinh biểu thức chính quy cho phân đoạn Option 343.3.3 Sinh biểu thức chính quy cho phân đoạn Break/Critical/Strict 353.3.4 Sinh biểu thức chính quy cho phân đoạn Alternative 353.3.5 Sinh biểu thức chính quy cho phân đoạn Loop 39
Trang 43.3.6 Sinh biểu thức chính quy cho phân đoạn Consider 36
3.3.7 Sinh biểu thức chính quy cho phân đoạn Ïgnore 37
3.3.8 Sinh biểu thức chính quy cho phan đoạn Parallel và Sequencing 373.3.9 Sinh biểu thức chính quy cho biểu đồ tuần tự 38
3.4 Sinh mơ hình cho thành phần sử dụng thuật tốn CNNFA 39
3.4.1 Tổng quan về CNNEA e nnn 393.4.2 Sinh biểu diễn CNNFA cho các biểu thức chính quy thành phan 403.4.3 Phương pháp duyệt biểu thức chính quy 43
3.4.4 Sinh các mơ hình cho các thành phần 43
3.4.5 Tối wu hĩa mơ hình - . - 45
3.4.6 Ví dụ sinh mơ hình cho thành phần phần mềm bằng thuật tốnCNNEA nen ent ng ng kh kg ng vn và 483.5 Kiểm chứng tính đúng đắn của biểu đồ tuần tự 53
4.1 Giới thiỆU Q0 ng nh vn ene e eee x xà 654.2 Các nghiên cứu liên quan - -cccccccssS 674.3 Phân tích biểu đồ tuần tự thành các khối đơn 68
4.3.1 Định dạng của đầu vào biểu đồ tuần tự 68
4.3.2 Phân tích biểu đồ tuần tự thành các khối đơn 70
4.4 Sinh mơ hình từ các khối đơn của biểu đồ tuần tự 73
4.4.1 Thuật tốn xác định tập các luật chuyển 5 cho ơtơmát vao/ra từ khốiđơn khơng chứa phân đoạn nào 74
4.4.2 Thuật tốn xác định tập các luật chuyển 6 cho ơtơmát vao/ra từ khối
đơn chỉ chứa phân đoạn ĨpfiØn ccccccSVS 74
4.4.3 Thuật tốn xác định tập các luật chuyển 6 cho ơtơmát vao/ra từ khối
đơn chỉ chứa phân đoạn AlfernaliU€ ch kh va 76
4.4.4 Thuật tốn xác định tập các luật chuyển 6 cho ơtơmát vào/ra từ khối
đơn chỉ chứa phân đoạn ÙoØ0Đ ccc Sa 77
4.4.5 Thuật tốn xác định tập các luật chuyển 6 cho ơtơmát vào/ra từ khối
đơn chỉ chứa phân đoạn Ưreak c cv 78
ii
Trang 54.4.6 Thuật toán xác định tập các luật chuyển 6 cho ôtômát vao/ra từ khối
đơn chỉ chứa phân đoạn Parallel cà 79
4.4.7 Thuật toán xác định tập các luật chuyển 6 cho ôtômát vao/ra từ khối
đơn chỉ chứa phân đoạn 6Si7iCE c2 Sa 80
4.4.8 Thuật toán xác định tập các luật chuyển 6 cho ôtômát vào/ra từ khối
đơn chỉ chứa phân đoạn r?fieal cà Sa 81
4.4.9 Thuật toán xác định tập các luật chuyển ð cho ôtômát vào /ra từ khối
đơn chỉ chứa phân đoạn Consiđer cẶcccScc 81
4.4.10 Thuật toán xác định tập các luật chuyển 6 cho ôtômát vào/ra từ
khối đơn chỉ chứa phân đoạn Ïgnore 82
4.5 Xây dựng ôtômát vào/ra cho đối tượng từ biểu đồ tuần tự 83
4.6 Sinh đặc tả Promela từ Ôtômát vào/ra 86
4.7 Công cụ hỗ trợ và thực nghiệm - 90
4.7.1 Kiến trúc công GỤ - c2 2222262221221 eens 904.7.2 Thực nghiệm -ccccS c2 914.8 Thao lan occ cece cece cece eee eee e bebe bene eee xxx v2 944.0 Kết luận cece cece cence eben ene beeteteteteeenenens 94Chương 5 MOT SỐ CẢI TIEN PHƯƠNG PHAP KIEM CHUNGGIA ĐỊNH - DAM BẢO 96
5.1 Giới thi6u one ng ene ng kg nee ens 965.2 Các nghiên cứu liên quan 1 cee eens 985.3 Phương pháp sinh gia định sử dung thuật toán L* 100
5.3.1 Thuật toán L” HQ Q Q Q Q Q n n ng ng n1 v2 1005.3.2 Sinh giả định sử dụng thuật toán Ƒ* 101
5.3.3 Cập nhật bang quan sất c cà 1025.4 Cải tiến phương pháp sinh giả định sử dụng thuật toán L* 102
5.4.1 Một ví dụ về lặp vô hạn 102
5.4.2 Cải tiến về phân tích phan ví dụ 104
5.4.3 Cải tiến giảm số truy vấn thành viên 107
5.4.4 Công cụ hỗ trợ và thực nghiệm 107
5.4.5 Thao luận ng HH nh sa 1085.5 Phương pháp sinh giả định nhỏ nhất cục bộ 109
5.5.1 Kỹ thuật cải tiến cho trả lời truy vấn thành viên 109
5.5.2 Sinh giả định nhỏ nhất cục bộ -: 110
5.5.3 Cải tiến kỹ thuật cập nhật cho bảng quan sát 111
5.5.4 Phân tích kết quả truy vẫn ứng viên 114
5.5.5 Ví dụ minh họa ccSSẶSSSSx 1155.5.6 Công cụ hỗ trợ và thực nghiệm 117
11
Trang 65.5.7 Thảo luận HH ng sa 118
5.6 Kết luận 0Q 2Q ence beeen ene nu eees 119
Chương 6 KẾT LUẬN cccccccằ cà 121
6.1 Các kết quả đạt được c c2 c2 ees 121
6.2 Những hạn chế và hướng nghiên cứu tiếp theo 122
1V
Trang 7Danh sách hình vẽ
Các đóng góp chính của luận ấn 6
Một hệ thống chuyển trạng thái được gn nhãn 9
Hệ chuyển trạng thái được gan nhãn không đơn định 10
Hệ chuyển trạng thái được gan nhãn đơn định 11
Ghép nối song song hai UT§ 13
LTS của thuộc tính p và LTS lỗi tương Ứng 14
Xây dựng LTS ghép nối song song Input||Output||perr - - - 1
Minh họa ôtômát M được mô tả ở Ví dụ 2.8 17
Phương pháp chuyển một ôtômát M thành LTS M' 18
Biểu diễn của biểu đồ tuần tự bởi tệp XML 30
Biểu đồ tuần tự của thành phần M¡ trong hệ thống Mod2 31
Biểu đồ tuần tự của thành phần M2 trong hệ thống Mod2 32
Tép XML sau khi chuẩn hóa mô tả dit liệu của biểu đồ tuần tựHinh LH eee 34Biểu diễn CNNFA của ôtômát đuôi Mix thành phan J|K theocông thỨc 3.3 0 00.000 ng n k k k k va 42Biểu diễn CNNFA của ôtômát đuôi M7, thành phần J.K theocông thức 3Ä.4 0000000 va 42Biểu diễn CNNFA của ôtômát đuôi Mf thành phần J* theo côngthite 5 1 aằ na 43Ôtômát đuôi dang nén theo thuật toán CNNFA của thành phầnM, trong hệ thống Mod2 cố 54Ôtômát khong đơn định theo thuật toán CNNFA 55
Ôtômát tối thiểu cuối cùng sau khi đã tối thiểu hóa 55
LTS [cex] được tao ra từ phan ví dụ cex 56
Quá trình sinh giả định sử dụng thuật toán 7* 56
Kiến trúc công cụ sinh mô hình và kiểm chứng tính đúng đắnthiết kế cho các phần mềm dựa trên thành phan 58
Biểu diễn của biểu đồ tuần tự bởi tệp XML 69
Biểu đồ tuần tự của hệ thống đặt vé 70
Dinh dạng XML của biểu đồ tuần tự 72
Trang 8Kiến trúc công cu sinh biểu diễn PROMELA và quy trình kiểm
Tương tác giữa Learner va Teacher trong quá trình sinh giả định 100
Kiểm tra tính thỏa mãn của mỗi ứng viên tại lần lặp thứ¿ 102
Cho hệ thống M = Mj||Mz và thuộc tínhp 103Các ứng viên tương ứng cho T1, To, T3, và T1 105
Mối quan hệ giữa L(A) và L(Awy) co 109Hệ thống minh họa SỐ SẺ 115
Sinh giả định bởi phương pháp trong [25] và phương pháp đề xuất 116
Kiểm chứng Tl5SSTRONGEST = As||Aorg bang LTSA 116Kết quả kiểm chứng ISsTRONGEST = As||Aorg bang LTSA 117
vi
Trang 9Danh sách bảng
Thời gian sinh các biéu thức chính quy 61
Thời gian sinh mô hinh 2 Ặ Q Q Q Q Q S 62
Kết quả sinh giả định QC cv 62Biểu diễn các thành phần của EDTFA trong PROMELA 87
So sánh kết quả đề xuất va kết qua nghiên cứu trong [90] 92So sánh kết quả của công cụ đề xuất và phương pháp trong [90] 93
Kết quả thực nghiệm với một số biểu đồ tuần tự 93
Bang quan sát 7,7,7», và T¡ trong khi kiểm chứng M 104
Môi trường thực nghiệm Ặ Q Q So 107
Kết quả thực nghiệm S2 108
Môi trường thực nghiệm 2 Ặ Q Q Q Q c 117
Kết quả thực nghiệm 2 S Q 118
vii
Trang 10cex Counter Example Phan vi du
CNNFA Compressed NNFA Tên gọi của một phương
pháp chuyển biểu thức chính
quy về ôtômát hữu hạn
không đơn định
CP List Check Point List Danh sách điểm kiểm soát
DEA Deterministic Finite State Au- | Ôtômát hữu hạn trang thái
FA Finite State Automata Ôtômát hữu han trạng thái
FSP Finite State Process Tiến trình hữu han trạngthái
1/O Au- | Input/ Output Automata Otomat vao/ra
LTL Linear Temporal Logic Logic thời gian tuyến tính
LTS Labeled Transition System Hệ thống chuyển trạng thái
được gán nhãn
LISA Labelled Transition Systems | Công cụ hỗ trợ kiểm chứngAnalyzer với đặc tả là hệ thống chuyển
trạng thái được gán nhãn
MQ Result | Membership Query Result Kết qua truy vấn thành viên
MYNNFA McNaughton/Yamada NNFA_ | Tên gọi của một loại ôtômát
hữu hạn không đơn định
theo McNaughton và
nas Non-Accepting States Cac trang thai khong két
viii
Trang 11Giai nghia -Tam dich
Ôtômát hữu han khong don
NNFA Normal Nondeterministic Fi- | Tên gọi của một loại 6t6matnite Automata hữu hạn không đơn định
OT Observation Table Bang quan sat
PML Process Meta Language or Pro- | Ngon ngữ kiểm chứng mô
tocol Meta Language hinh do Gerard J Holzmanndé xuat
SPIN Simple Promela Interpreter Công cu kiểm chứng tinh
đúng đắn của mô hình phầnmềm
UFSM Unknown Finite State Machine | Máy hữu han trạng thai
không xác định
UML Unified Modeling Language Ngôn ngữ mô hình hóa
thống nhất
UNSAT Unsatisfiable Không thỏa mãn
XML eXtensible Markup Language | Ngôn ngữ đánh dấu mở rộng
ix
Trang 12Lời cam đoan
Tôi xin cam đoan day 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 PGS TS Phạm Ngọc Hùng và PGS TS Hồ Si Dam tại bộ môn Côngnghệ Phần mềm, Khoa Công nghệ Thông tin, Trường Đại học Công nghệ, Đạihọ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à trungthự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
Tác giả
Trang 13Toi xin chân thành cảm ơn các thay cô giáo khoa Công nghệ thông tin, trường
Đại học Công nghệ, Dạ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ệctrong suốt quá trình học tập, nghiên cứu tại Trường.
Đồng thời tôi xin chân thành cảm ơn các đồng nghiệp trong khoa Công nghệ
thông tin, trường Dại học Công nghệ Giao thông vận tải đã tạo mọi điều kiện,bồ trí thời gian tốt nhất dành cho tôi trong suốt quá trình làm nghiên cứu sinh.Cuối cùng, tôi xin chân thành cẩm ơn những người than 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.
xi
Trang 14Tóm tắt
Luận án đề xuất một số phương pháp hỗ trợ sinh tự động mô hình đặc tả
hành vi của thiết kế phần mềm dựa trên thành phần dưới dạng biểu đồ tuần tựUML 2.0 và kiểm chứng tính đúng đắn của các thiết kế này một cách hiệu quả.
Các nghiên cứu của luận án hướng đến giải quyết các khó khăn trong việc sinh
mô hình một cách tự động và hướng đến giải quyết bài toán bùng nổ không giantrạng thái trong kiểm chứng mô hình Cụ thể luận án đã đạt được ba kết quả
chính như sau.
Luận án đã đề xuất một phương pháp hoàn chỉnh nhằm tự động sinh mô hình
và kiểm chứng từng phần cho các thiết kế phần mềm được biểu diễn bằng biểuđồ tuần tự UML 2.0 Ý tưởng chính của phương pháp này là tự động sinh mô
hình đặc tả hành vi của các biểu đồ tuần tự biểu diễn dưới dạng các máy hữu
hạn trạng thái được gan nhãn (Labeled Transition Systems - LTSs) Các mô
hình này cùng với thuộc tính cần kiểm chứng (chỉ cho các thuộc tính an toàn)sẽ được cung cấp cho phương pháp kiểm chứng giả định - đảm bảo (assume-guarantee verification) nhằm kiểm chứng tính đúng đắn của hệ thống mà không
cần ghép nối các mô hình của các thành phần lại với nhau Bằng cách áp dụng
phương pháp kiểm chứng này, bài toán bùng nổ không gian trạng thái hứa hẹn
được giải quyết 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 nhằm minh chứng cho tính đúng đắn và tính hiệu quả
của phương pháp đề xuất.
Luận án đề xuất một phương pháp sinh mô hình và kiểm chứng tính đúngđắn của cho các biểu đồ tuần tự UML 2.0 Trong phương pháp này, các môhình được biểu diễn dưới dạng các ôtômát vào/ra (I/O automata) ứng với cácđối tượng từ biểu đồ tuần tự UML 2.0 Với phương pháp đặc tả này, chúng takhông làm mất tính hướng đối tượng của thiết kế phần mềm trong các biểu đồtuần tự Nghién cứu này cũng đề xuất một phương pháp chuyển đổi từ đặc tảdưới dạng ôtômát vào/ra sang đặc tả PROMELA để có thể sử dụng bộ công cụSPIN nhằm kiểm chứng tính đúng đắn của hệ thống Với giải pháp này, chúngta có thể kiểm chứng nhiều loại thuộc tính hơn so với việc chỉ hỗ trợ thuộc tính
xii
Trang 15an toàn như đóng góp đầu tiên của luận án Một công cụ hỗ trợ phương phápđề xuất cũng đã được cài đặt và thực nghiệm với một số hệ thống đơn giản vàthu được kết quả khả quan bước đầu.
Luận án đề xuất hai cải tiến nhằm nâng cao tính hiệu quả của phương pháp
kiểm chứng giả định — dam bảo sử dụng Thuật toán học L* - được biết đến như
là một phương pháp tiềm nă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 Cải tiến thứ nhất tập trung vào việc giảmthiểu các truy van lặp lại và giải pháp lựa chọn hậu tố (suffix) khi xử lý phan
ví dụ trong quá trình học và sinh các ứng cử viên giả định của Thuật toán L*.
Với cải tiến này, tính hiệu quả của phương pháp kiểm chứng giả định — đảm bao
được cải thiện đáng kể Một công cụ hỗ trợ cũng đã được cài đặt và áp dụng chomột số ví dụ điển hình nhằm minh chứng cho tính hiệu quả của những cải tiến
này Cải tiến thứ hai là đề xuất một giải pháp mới nhằm sinh ra các giả định cóngôn ngữ nhỏ nhất cục bộ (giả định nhỏ nhất cục bộ) so với các giả định đượcsinh ra bởi phương pháp hiện tại Các giả định này sẽ hiệu quả hơn trong việc
kiểm chứng lại tính đúng đắn của hệ thống trong tương lai khi một số thành
phần bị tiến hóa.
xiii
Trang 16Chương 1
GIỚI THIỆU
1.1 Đặt vẫn đề
Phát triển phần mềm dựa trên công nghệ hướng thành phần
(Component-based Software Development - CBSD) đang được quan tâm như là cách tiếp cận
chủ yếu để xây dựng các phần mềm hiện nay Phần mềm dựa trên thành phần
được xây dựng bằng cách ghép nối các thành phần đã có sẵn Các thành phần
này hoặc do công ty tự phát triển trước đó hoặc được cung cấp bởi bên thứ ba.Với cách tiếp cận này, chúng ta có thể giảm đáng kể chi phí và thời gian phattriển trong khi vẫn đảm bảo được chất lượng của phần mềm Tuy nhiên, một
trong những hạn chế lớn nhất của công nghệ hướng thành phần là làm thế nào
để đảm bảo rằng các thành phần sau khi ghép nối với nhau có thể cộng tác để
đạt được mục tiêu của hệ thống - việc đảm bao cơ chế “plug-and-play” Dac biệt,
đối với những ứng dụng yêu cầu chất lượng cao như các hệ thống điều khiển
tên lửa, máy bay, an ninh quốc phòng, v.v thì việc dam bảo tính đúng đắn củathiết kế trước khi thực hiện các pha tiếp theo là bắt buộc Hiện tại, các công
nghệ hỗ trợ phát triển hướng thành phần chỉ cho phép kiểm tra khả năng ghép
nối giữa các thành phần chứ không có cơ chế đảm bảo tính cộng tác của chúng.
Kết quả, các sản phẩm phần mềm hiện nay có chất lượng thấp, không đáp ứng
yêu cầu.
Để giải quyết các nhược điểm của CBSD, hiện nay cùng với chứng minh địnhlý (theorem proving) [36], kiểm chứng mô hình (model checking) [23, 73] được
biết đến như một giải pháp phổ biến để giải quyết vấn đề này Để áp dụng các
phương pháp kiểm chứng mô hình, ta cần phải xây dựng các mô hình đặc tảhành vi của hệ thống cần kiểm chứng [27, 26, 88] Những mô hình này thườngđược biểu diễn bằng các máy hữu hạn trạng thái đơn định Các nghiên cứu hiện
Trang 17tai hầu hết giả sử các mô hình này đã có và đúng đắn [54, 52, 51] Tuy nhiên,giả thiết này rất khó đáp ứng trong thực tế vì việc xây dựng mô hình cho cácphần mềm là một công việc khó khăn và tiềm an nhiều lỗi Trong thực tế, các
thiết kế biểu diễn bằng UML 2.0 rất phổ biến ở các công ty Nếu như chúng tacó cơ chế chuyển đổi dang đặc tả UML 2.0 sang các máy hữu hạn trạng tháiđơn định thì khả năng ứng dụng sẽ tốt hơn Làm thế nào để kiểm chứng tínhđúng đắn của biểu đồ tuần tự nói riêng và các thiết kế nói chung là vấn đề mở
và chưa có lời giải thỏa đáng.
Giả sử chúng ta đã có các mô hình của các thành phần mô tả chính xác hành
vi của chúng Để áp dụng các phương pháp kiểm chứng mô hình, chúng ta phảichép nối các mô hình này để thu được một mô hình ghép nối duy nhất của hệthống Mô hình sau khi được ghép nối kết hợp với đặc tả thuộc tính cần kiểmtra là dữ liệu vào đối với các công cụ kiểm chứng Tuy nhiên, số lượng trạng tháicủa mô hình ghép nối thường rất lớn nên vấn đề bùng nổ không gian trạng tháicó thể xảy ra khi kiểm chứng các phần mềm có kích thước lớn Khó khăn trongviệc xây dựng mô hình và vấn đề bùng nổ không gian trạng thái được xem là
nguyên nhân chủ yếu cho việc khó áp dụng các phương pháp kiểm chứng mô
hình trong thực tế Kiểm chứng từng phần (modular verification) [30, 62, 65] làgiải pháp hứa hẹn nhằm xử lý sự bùng nổ không gian trạng thái đối với kiểm
chứng mô hình Trong cách tiếp cận này, thay vì kiểm chứng trên toàn bộ mô
hình ghép nối, chúng ta chỉ cần kiểm chứng trên từng mô hình của mỗi thànhphần riêng biệt Khi tất cả các thành phần đã được kiểm chứng, chúng ta có thể
kết luận phần mềm thỏa mãn thuộc tính cần kiểm chứng mà không cần ghép
nối các mô hình của các thành phần với nhau Kiểm chứng giả định - đảm bảo
(Assume — Guarentee Verification) [25, 33] và sau đó được cải tiến trong [52|
là hiện thực hóa của tư tưởng kiểm chứng từng phần Trong phương pháp này,
để kiểm chứng các hệ thống con một cách riêng biệt, chúng ta cần các giả định
(assumptions) về môi trường mà mỗi hệ thống con sẽ được thực hiện ứng với
thuộc tính cần kiểm chứng [24] Tuy nhiên, độ phức tap của việc sinh giả định
còn cao Hơn nữa, các phương pháp này chỉ mới giải quyết được các hệ thốngđơn giản gồm hai thành phần Các phần mềm thực tế thường có nhiều hơn hai
thành phần và ý tưởng của các phương pháp này khó tổng quát hóa cho trường
hợp này.
Mặc dù đã có nhiều nghiên cứu quan tâm giải quyết vấn đề đặc tả và kiểm
chứng tính đúng đắn của thiết kế phần mềm dựa trên thành phần, các vấn đề
sau vẫn còn là các bài toán mở và chưa có giải pháp thỏa đáng.
Trang 18e Chưa có giải pháp để xây dựng mô hình đặc tả hình thức hành vi của từng
thành phần phần mềm nói riêng và hệ thống dựa trên thành phần nói chung.
Cần đề xuất một giải pháp đầy đủ từ đầu đến cuối cho bài toán kiểm chứng
mô hình phần mềm dựa trên thành phần, từ bước sinh đặc tả hình thức đến
áp dụng công cụ kiểm chứng để nhận được kết quả về tính đúng đắn củathiết kế Mặc dù đã có nhiều phương pháp và công cụ kiểm chứng mô hình
phần mềm khác nhau với yêu cầu đầu vào là các đặc tả hình thức phù hợp
tương ứng, bản thân việc sinh các đặc tả hình thức đúng đắn, tiêu chuẩn
hóa, từ các tài liệu thiết kế phần mềm là một thách thức cần giải quyết.
Hạn chế này là nguyên nhân chính dẫn đến việc khó áp dụng các phươngpháp kiểm chứng mô hình trong thực tế.
e Biểu đồ tuần tự UML là một tài liệu thiết kế phần mềm tiêu chuẩn Đã
có các nghiên cứu về kiểm chứng tính đúng đắn của biểu đồ tuần tự UML,
nhưng không tách biệt quá trình sinh mô hình với bước kiểm chứng mô
hình Việc tự động sinh mô hình từ biểu đồ tuần tự UML và cho phép sự
dụng lại mô hình một cách hợp lý là rất cần thiết.
e Với sự tăng nhanh về kích thước cũng như sự phức tạp của phần mềm, việc
kiểm chứng và đảm bảo tính đúng đắn của phần mềm ngày càng trở nên
quan trọng và ngày càng khó khăn hơn do các phần mềm ngày càng phức
tạp Hiện tại, chưa có một giải pháp đủ tốt để giải quyết vấn đề này.
e Chưa có một công cụ đủ tốt tích hợp các giải pháp trên trong một công cụkiểm chứng nhằm tự động hóa quá trình đặc tả và kiểm chứng cho thànhphần phần mềm dựa trên biểu đồ tuần tự.
Mục tiêu của luận án để giải quyết các vấn đề nêu trên Kiểm chứng mô hình
cho phần mềm dựa trên thành phần là một giải pháp đảm bảo chất lượng phần
mềm ngay từ bước thiết kế Thách thức của kiểm chứng mô hình là cần có các
đặc tả hình thức tiêu chuẩn, đúng đắn và công cụ phù hợp Đã có nhiều nghiêncứu về phương pháp kiểm chứng mô hình phần mềm và một số bộ công cụ kiểmchứng khác nhau đã được phát triển Để áp dụng kiểm chứng mô hình trong
thực tiễn, cần lựa chọn giải pháp, sinh mô hình đặc tả đúng, phù hợp với phương
pháp kiểm chứng và yêu cầu của bộ công cụ kiểm chứng được lựa chọn Một
cách lý tưởng, phương pháp đề xuất cần xây dựng mô hình cho mỗi thành phần
phần mềm bằng cách phân tích tất cả các biểu đồ UML đặc tả các khung nhìn
khác nhau về thành phần này Tuy nhiên, do hạn chế về thời gian nên phạm vinghiên cứu của luận án này là các thiết kế của các thành phần phần mềm được
Trang 19biểu diễn dưới dang các biểu đồ tuần tự UML bởi đây là biểu đồ có hành vi chitiết nhất trong các biểu đồ UML, một loại tài liệu thiết kế phần mềm phổ biến
và nghiên cứu xuyên suốt quy trình, đề xuất giải quyết các khó khăn thách thức
gặp phải, hoàn thiện thuật toán nâng cao tính hiệu quả khi áp dụng thực tiễn
để có thể nhận được kết quả kiểm chứng cuối cùng Mục tiêu của luận án là đề
xuất một số phương pháp hỗ trợ sinh tự động mô hình đặc tả hành vi của thiết
kế phần mềm dưới dạng biểu đồ tuần tự UML và kết hợp phương pháp kiểmchứng giả định - đảm bảo kiểm chứng tính đúng đắn của các thiết kế này mộtcách hiệu quả Mặt khác, luận án đề xuất phương pháp sinh mô hình và kiểmchứng tính đúng đắn của các biểu đồ tuần tự UML sử dụng ôtômát vào/ra vàcông cụ kiểm chứng SPIN Để giải quyết một số hạn chế trong kiểm chứng giảđịnh - đảm bảo, luận án đề xuất một phương pháp để tạo ra các giả định nhỏnhất cục bộ cho phương pháp kiểm chứng giả định - đảm bảo và hai cải tiến
nhằm giảm độ phức tạp trong việc sinh giả định Luận án hướng đến một giải
pháp đầy đủ cho việc kiểm chứng tính đúng đắn của các thiết kế có khả năng
ứng dụng trong thực tế.
Đối tượng nghiên cứu của luận án là thiết kế của các hệ thống phần mềm
dựa trên thành phần Các phần mềm này được phát triển bằng cách ghép nốicác thành phần sẵn có với chất lượng cao Đây là giải pháp phổ biến nhất hiệnnay để phát triển các ứng dụng vì nó giảm thiểu thời gian cũng như chi phíphát triển trong khi vẫn đảm bảo được chất lượng phần mềm Tuy nhiên, chúng
ta chưa có cơ chế đảm bảo tính cộng tác giữa các thành phần Hệ quả là cácthành phần không thể cộng tác được với nhau sau khi được ghép nối Một cáchlý tưởng, phương pháp đề xuất cần xây dựng mô hình cho mỗi thành phần phần
mềm bằng cách phân tích tất cả các biểu đồ UML đặc tả các khung nhìn khác
nhau về thành phần này Tuy nhiên, do hạn chế về thời gian nên phạm vi nghiên
cứu của luận án này là các thiết kế của các thành phần phần mềm được biểu
diễn dưới dạng các biểu đồ tuần tự UML 2.0 bởi đây là biểu đồ có hành vi chỉtiết nhất trong các biểu đồ UML Để đạt được mục tiêu nghiên cứu, luận án
sẽ tiến hành khảo sát các giải pháp đã có Từ đó, luận án sẽ xác định các hạnché/van đề chưa giải quyết được và đề xuất phương pháp mới hoặc cải tiến cácphương pháp hiện có Các công cụ hỗ trợ và thực nghiệm cũng sẽ được tiến hành
nhằm minh chứng cho tính hiệu quả của các đề xuất/cải tiến.
Trang 201.2 Các đóng góp chính của luận án
Luan án đạt được ba kết quả chính gồm: (i) phương pháp sinh mô hình và
kiểm chứng tinh đúng đắn thiết kế cho các phần mềm dựa trên thành phần, (ii)phương pháp sinh mô hình và kiểm chứng tính đúng đắn của các biểu đồ tuầntự UML 2.0 sử dụng ôtômát vào/ra và công cụ kiểm chứng SPIN va (iii) hai cảitiến cho phương pháp kiểm chứng giả định - đảm bảo Chi tiết các đóng góp của
luận án được mô tả như sau.
Đề xuất một phương pháp hoàn chỉnh nhằm tự động sinh mô hình và kiểmchứng từng phần cho các thiết kế phần mềm được đặc tả bằng biểu đồ tuần tự
UML 2.0 Ý tưởng chính của phương pháp này là tự động sinh mô hình đặc tả
hành vi của các biểu đồ tuần tự biểu diễn dưới dạng các máy hữu hạn trạng tháiđược gán nhãn (LTSs) Các mô hình này cùng với thuộc tính được kiểm chứng(chỉ cho các thuộc tính an toàn) sẽ được cung cấp cho phương pháp kiểm chứng
giả định - đảm bảo nhằm kiểm chứng tính đúng đắn của hệ thống mà không
cần ghép nối các mô hình của các thành phần lại với nhau Bằng cách áp dụng
phương pháp kiểm chứng này, bài toán bùng nổ không gian trạng thái hứa hẹn
được giải quyết 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 nhằm minh chứng cho tính đúng đắn và tính hiệu quả
của phương pháp đề xuất.
Đề xuất một phương pháp sinh mô hình được biểu diễn dưới dạng các ôtômát
vào/ra cho các đối tượng từ biểu đồ tuần tự UML 2.0 Với phương pháp đặc
tả này, chúng ta không làm mất tính tương tác giữa các đối tượng của thiết kế
phần mềm trong các biểu đồ tuần tự Nghién cứu này cũng đề xuất một phươngpháp chuyển đổi từ đặc tả dưới dạng ôtômát vào/ra sang đặc tả PROMELA đểcó thể sử dụng bộ công cụ SPIN nhằm kiểm chứng tính đúng đắn của hệ thống.Với giải pháp này, chúng ta có thể kiểm chứng nhiều loại thuộc tính hơn so vớiviệc chỉ hỗ trợ thuộc tính an toàn như đóng góp đầu tiên của luận án Một công
cụ hỗ trợ phương pháp đề xuất cũng đã được cài đặt và thực nghiệm với một sốhệ thống đơn giản và thu được kết quả khả quan bước đầu.
Đề xuất hai cải tiến nhằm nâng cao tính hiệu quả của phương pháp kiểm
chứng giả định - đảm bảo sử dụng thuật toán học L* - được biết đến như là một
phương pháp tiềm nă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 Cải tiến thứ nhất tập trung vào việc giảm thiểu các
truy vấn lặp lai và giải pháp lựa chon hậu tố (suffix) khi xử lý phan ví du trong
Trang 21ví dụ điển hình nhằm minh chứng cho tính hiệu quả của những cải tiến này Cảitiến thứ hai là đề xuất một giải pháp mới nhằm sinh ra các giả định có ngônngữ nhỏ nhất so với các giả định được sinh ra bởi phương pháp hiện tại Cácgiả định này sẽ hiệu quả hơn trọng việc kiểm chứng lại tính đúng đắn của hệ
thống trong tương lai khi một số thành phần bị thay đổi.
Các kết quả nghiên cứu trên không phải là các kết quả rời rạc mà chúngcó mối liên hệ chặt chẽ trong việc tích hợp với nhau tạo thành một giải pháphoàn chỉnh từ việc tự động sinh mô hình đến kiểm chứng như được mô tả trong
Hình 1.1 Từ đó, nghiên cứu hướng đến một giải pháp đầy đủ cho việc kiểm
chứng tính đúng đắn của các thiết kế cho các ứng dụng trong thực tế.
Trang 22các biểu đồ tuần tự UML 2.0 được trình bày trong Chương 3 Chương 4 trìnhbày phương pháp sinh mô hình và kiểm chứng tính đúng đắn của các biểu đồtuần tự UML 2.0 sử dung SPIN Trong phương pháp này, các mô hình được đặc
tả dưới dang ôtômát vào/ra nhằm giữ được tính tương tác giữa các đối tượng.
Một giải pháp chuyển đổi từ đặc tả ôtômát vào/ra sang Promela cũng được
trình bay trong chương này Chương 5 trình bày hai cải tiến nhằm giảm chi phí
khi sinh giả định cho phương pháp kiểm chứng giả định - đảm bảo Cải tiến thứnhất đề xuất một giải pháp nhằm giảm thiểu các truy vấn lặp lại và giải pháp
lựa chọn hậu tố (suffix) khi xử lý phan vi dụ trong quá trình hoc và sinh các ứng
cử viên giả định của Thuật toán L* Cải tiến thứ hai là đề xuất một giải pháp
mới nhằm sinh ra các giả định có ngôn ngữ nhỏ nhất so với các giả định được
sinh ra bởi phương pháp hiện tại 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.
Trang 23Chương 2
KIÊN THỨC NÊN TẢNG
Chương này giới thiệu các khái niệm và các phương pháp cơ bản được sử
dụng trong luận án này Các khái niệm cơ bản gồm mô hình của thành phần
phần mềm, ôtômát hữu hạn trạng thái đơn định, ôtômát vào/ra, v.v Phương
pháp kiểm chứng giả định - đảm bảo và các khái niệm liên quan cũng được giới
thiệu trong chương này.
2.1 Mô hình của thành phần phần mềm
2.1.1 Hệ thống chuyển trạng thái được gán nhãn
Mỗi thành phần phần mềm được đặc tả bởi một mô hình dùng để biểu diễn
các hành vi quan sát được của thiết kế ứng với các thành phần phần mềm Mô
hình này được biểu diễn bằng hệ chuyển trạng thái được gan nhãn (LabeledTransition System — LTS) Bảng chữ cái Ð là tập tất cả những hành động của
thành phan phần mềm Act là tập tất cả những hành động quan sát được củathành phần phần mềm Hành động không quan sát được (hành động bên trong)
của thành phần phần mềm được ký hiệu là r Một trạng thái đặc biệt của hệthống - trạng thái lỗi ứng với các lỗi có thể xảy ra được ký hiệu là z Một hệthống chuyển trạng thái được gán nhãn được định nghĩa như sau.
Định nghĩa 2.1 (Hệ thống chuyển trạng thái được gán nhãn [58, 73, 25, 89])
LTS là một bộ gồm bốn thành phần (Q,aM,6,qo), trong đó:
e Q là một tập khác rỗng hữu han các trang thái,
e aM C Act là tập các hành động quan sát được, gọi là bang chữ cái của M,
© 5 CQxaM U{r} x Q là hàm chuyển trạng thái, va
Trang 24Hình 2.1: Một hệ thống chuyển trạng thái được gán nhãn.
® qo € Q là trạng thái bắt dau.
Kí hiệu g; + q; khi hành động với nhãn a chuyển hệ thống từ trạng thái ø đến
trạng thái ạ;, lic đĩ (ø, a,g;) € 5 Nghia là khi hệ thống ở trạng thái g;, nếu thực
hiện một hành động a thì chuyển sang q; Tương tự, hệ thống dang ở trạng thái
qj nêu thực hiện một hành động a’ chuyển tới trạng thái q, Khi đĩ, ta được một
dãy các hành động q¡ + qj + ge [25].
Một cách tổng quát, nếu ta cĩ một chuỗi các hành động q¡ — +; gy biểu
diễn hệ thống thì khi nĩ ở trạng thái ø nĩ cĩ thể thực hiện một chuỗi các hành
động àaa a„ và kết thúc ở trạng thái qq.
LTS Il = ({r}, Act, 6,7) là một LTS chỉ chứa trạng thái lỗi của hệ thống [25].
Xét một LTS M =(Q,aM, ð, go) vig, € Q, a,a; € aM, với 1 <i<n ta cĩ:
ego © (q.a,g) €6
đ102 dr, a đa a3 Gn ;
#'2————>( © 340.đ1 đụ: T= % FHS đa —> —? gan = đ.
Ví dụ 2.1 Hệ thống chuyển trạng thái được gán nhãn
Hình 2.1 là một ví dụ về hệ chuyển trạng thái được gan nhãn M = (Q,aM,6,q),
trong đĩ:
e Q = {q0, 1, ga} là tập các trạng thai của M,
® aM = {in, send, ack} là tập các hành động của M,
sị= {(qo, in, g1), (q1, send, q2), (q2, ack, qo)} là các quy tắc chuyển trạng thái,
eg € Q là trạng thái bat đầu.
Trang 25Hình 2.2: Hệ chuyển trạng thái được gán nhãn không đơn định.
Định nghĩa 2.2 (Kích thước của một LTS [51, 50]) Kích thước của LTS
M = (Q,aM,6,qo) là số trạng thái của M va được ky hiệu là |MỊ, trong đó [MỊ
= /Q/.
Ví dụ 2.2 Xét một LTS M cho bởi Hình 2.1, khi đó [M/=/Q/=8.
Định nghĩa 2.3 (LTS đơn định và không đơn định [46]) Mot LTS M =
(Q,aM,6,qo) là không đơn định nếu nó chứa một chuyển trạng thái r hoặc nếuA(q,a,q) va (q,a,q") € 6 sao cho d # q" Ngược lại, M được gọi là hệ chuyển
trạng thai được gan nhãn đơn định.
Chú ý 2.1 Cho LTS M = (Q,aM,6,qo) va M' = (Q',aM"', 6’, qh) Khi đó ta hiểurằng M’ được chuyén dịch từ M bởi chuyén trang thái a khi va chỉ khi (q0, đ, qạ) €
6,aM =aM',Q=Q! va6=6' Kí hiệu: M > M!' [25].
Vi dụ 2.3 Hệ thống chuyén trạng thái được gán nhãn đơn định va không đơn
Hình 2.2 là hệ chuyển trạng thái được gán nhãn không đơn định M =
(Q,aM,6,q9), trong đó: Q = {qo,gi,ga}, aM = {in, send, ack}, qo là trạng thaikhởi đầu, va 6 = {(qo, in, q1), (qo, send, qa), (qi, send, qa), (ga, ack, qo)} Hệ thống ở
trạng thái qo, nếu thực hiện một hành động in thì có thể dẫn tới trạng thái gihoặc chuyển tới q Khi đó, trạng thái kế tiếp của q khi tác động cùng mộthành động in là không xác định duy nhất, không tất định Khi đó ta gọi là hệchuyển trạng thái được gán nhãn không đơn định Hệ chuyển trạng thái đượcgán nhãn mô tả trên Hình 2.3 gọi là hệ chuyển trạng thái được gán nhãn đơn
định O trạng thái q; nào đó nếu tác động một hành động a; thì hệ thống sẽ dẫn
tới trạng thái xác định duy nhất gp.
10
Trang 26Hình 2.3: Hệ chuyển trang thái được gán nhãn đơn định.
2.1.2 Vết
Định nghĩa 2.4 (Vét (trace) [25, 46]) Một vét trên ngôn ngữ của một hệ
chuyén trạng thái được gan nhãn M = (Q,aM,6,qo) là một chuỗi hữu han các
hành động ayaz an vdia; € aM (i = 1, ,n) sao cho tồn tại một chuỗi các
trang thái bắt dau bằng trạng thái khởi đầu, cụ thé qoạn q„ Ma (qi-1,4i,G) € ỗ,
q¡ € Q 0Uới ¡ = 1, ,m.
Như vậy, một vết o trên ngôn ngữ của hệ chuyển trạng thái được gán nhãn Mlà một chuỗi các hành động quan sát được sao cho M có thể thực hiện từ trạngthái khởi tạo qo Ngôn ngữ của M, ký hiệu là L(M), chứa tất cả các vết trên M.
Ví dụ 2.4 Hệ chuyén trạng thái được gan nhãn M = (Q,aM,ô,qo) trên Hình 2.8
là đơn định.
Trong đó: Q = {q0,%,q@},aM = fin, send,ack}, qo là trạng thái khởi đầu, và
ð = {(qo, in, ai), (gi, send, ga), (qa, ack, qo)} Với hệ chuyển trạng thái M được cho
trên Hình 2.3, dãy các hành động in send ack là một vết trên M Ở trạng thái
qo, hành động in được thực thi, khi đó hệ thống dẫn tới trạng thái q, tiếp tụcthực hiện hành động send hệ thống chuyển đến trạng thái qo, tiếp đến, thực hiện
hành động ack hệ thống trở lại trang thái ạo Hoàn toàn tương tự vết in sendack in send cũng là vết trên M Xét một chuỗi hành động in send in send acktrên M Từ trạng thái khởi tao qo thực thi hành động in hệ thống dẫn tới trạngthái mi, tiếp tục thực thi hành động send hệ thống dan tới trạng thái qo, ở trangthái ạ› hệ thống không thể thực hiện được hành động in Ta nói dãy hành động
trên không phải là một vết trên M.
Chú ý 2.2 Cho aM C Act, ta ky hiệu otaM là vét thu được bằng cách loại bỏkhởi ơ moi hành động a sao cho a ý aM Một vét o = ataa a„ạ là một uết hữu
11
Trang 27hạn trên hệ chuyển trạng thái được gan nhãn M Ta ky hiệu hệ chuyển trạng thái
được gan nhan My = (Q,aM, 6, q0) uới Q = {qo, g1; - › dn} va 6 = {(Gi-1, ai, Gi)
2.1.3 Phép ghép nối song song
Tốn tử ghép nối song song, được ký hiệu “||” là phép tốn ghép nối haithành phần phần mềm bằng việc đồng bộ các hành vi chung trên bảng chữ cái
và đan xem các hành động cịn lại Giả sử cĩ hai hệ chuyển trạng thái được gán
nhãn là My = (QI,aÄ, ði, gả) và M2 = (Q2, aM, ổa, g4), phép ghép nối song songgiữa M, và M2, ký hiệu A⁄4||Mạ được định nghĩa như sau: Nếu M, = II hoặc
Mạ = II thì M/:|LM¿ = II Trái lại, Mi||Ma = (Q,aM, ơ, go), trong đĩ: Q = Qi x Qe,
aM = aM, UaMa, qo = (qj, 9) và hàm 6 được mơ tả như sau [25, 73]:
Vi dụ 2.5 Mé hành ghép nối song song hai hệ chuyén trạng thái được gan nhãn
Input va Output như trên Hành 2.4 Ghép nối hai mơ hành được mơ tả trên Hình2.4, hành động send va ack là dong bộ, những hành động con lại dan xen nhau.
Từ các quy tắc đã cho, ta cĩ: M' = (Q1,aM",ð',qạ), vot:
Trang 28' * Output
Hình 2.4: Ghép nối song song hai LTS.
® q = (0,a), và
e 6 = {((0,a), in, (1,ø)), (1, a), send, (2, b)), ((2, b), out, (2, c)), ((2, e), ack, (0, a))}.
2.1.4 LTS an toàn, thuộc tính an toàn, tinh thỏa mãn va LTS lỗi
Định nghĩa 2.5 (Hệ chuyền trạng thái được gán nhãn an toàn [25, 73])
LTS an toàn (Safety LTS) là một LTS không chứa trang thái lỗi m.
Định nghĩa 2.6 (Thuộc tính an toàn (Safety property) [25, 73])
Thuộc tính an toàn là thuộc tính đúng tại mọi trạng thái của hệ thống.
Trong nghiên cứu nay, một thuộc tính an toàn p được biểu diễn dưới dang mộthệ chuyén trạng thái được gán nhãn an toàn p = (Qp œp, Sp, đo):
Định nghĩa 2.7 (Hệ chuyển trạng thái được gan nhãn lỗi [25]) Hệ
chuyén trạng thái được gan nhãn lỗi (Error LTSs) của một thuộc tính
PF (Qp, ap, 6, q0); kú hiệu là Perr = (Q U {7}, @perr, 6’, q0); trong do:
APerr = ap, 6’ = ôU {(q,a,7)|a € ap} va lạ! € Q sao cho (q,a,q') € 6.
ere
Trang 29LTS của thuộc tính P Error LTS Perr
Hình 2.5: LTS của thuộc tính p và LTS lỗi tương ứng.
Chú ý 2.3 Dé xác định thành phần M có thỏa mãn thuộc tính p uới M va p
được biểu diễn bằng các LTSs an toàn, phép hợp Ml|p.„„ được tính Nếu kết quả
có thể đạt được đến trạng thái x, M vi phạm p va ngược lại [25, 73].
Ví dụ 2.6 Xây dựng hệ chuyén trang thái được gan nhãn lỗi từ hệ chuyển trạng
thái tương ứng uới thuộc tính p.
Hình 2.5 biểu diễn cách thức xây dựng hệ chuyển trạng thái lỗi tương ứng
với thuộc tính p Theo Dịnh nghĩa 2.7, hệ chuyển trạng thái lỗi của thuộc tính
p được xác định: perry = (QU {7}, aperr, 6’, G0), trong đó:
e Tap các hành vi là œpe;; = ap = {in, out},
e Tập trang thái của per, là QU {rr} = {i, ti, wr},
e Trạng thái khởi tao là qo, và
e Tập các quy tắc chuyển trạng thái là ð' = {(i, in, it), (ii, out, i),
(it, in, 7), (¡, out, a)}.
Dinh nghĩa 2.8 (Tinh thỏa mãn (Satisfiability) [25, 73, 23, 7]) Mot hệ
chuyén trang thái được gan nhãn M duoc gọi là thỏa man thuộc tính p, ky hiệu
M Ep khi va chỉ khi Vo € L(M) ta có (otap)e L(p).
Việc kiểm chứng thành phần M có thoả mãn thuộc tính p, ta biểu diễn cả M
và Perr bởi các LTSs an toàn, sau đó thực thi phép ghép nối song song M||perr.Nếu LTS thu được sau khi ghép nối tồn tai một vết đưa đến trạng thái 7 Lúc
đó, ta khang định thành phần M không thỏa thuộc tính p Ngược lại, M thoả
mãn thuộc tính ø.
14
Trang 30Ví dụ 2.7 Kiểm chúng hệ chuyển trạng thái ghép nối song song được gán nhãn
như trong Ví dụ 2.5 có thỏa man thuộc tính p được trình bay ở Vi dụ 2.6.
Xây dựng hệ chuyển trạng thái ghép nối song song được gan nhãn
Input||Output||perr được mô tả trong Hình 2.6 Từ sơ đồ ghép nối song songnhư Hình 2.6, ta dé dàng kiểm tra được trang thái lỗi z không thể tới được khi
bắt đầu từ trạng thái khởi dau (0,a,i) Vì vậy, hệ chuyển trạng thái ghép nối
song song được gấn nhãn Input||Output thỏa mãn thuộc tính p.
2.2 Ôtômát hữu hạn trạng thái đơn định
Định nghĩa 2.9 (Ôtômát hữu hạn trạng thái [25, 46, 82, 32, 77])
Ôtômát hữu hạn trang thái (Finite State Automata - FA) là một bộ năm
15
Trang 31M =(Q,aM,ô,qo, F), trong đó:
e Q là tập hữu hạn khác rỗng các trang thái,
e aM C Act là một tập hữu hạn khác rỗng các hành động, con gọi là bang chữcái của M,
e qoC Q là trạng thái khởi tạo hay trang thái ban dau,e F CQ là tập các trạng thái kết thúc, va
e ô là hàm chuyển có dang:
o Nếu hàm chuyển là ánh xa 6: Q x aM + Q thà M được gọi là ôtômát
hữu hạn đơn định (deterministic finite automata - DFA).
o Nếu hàm chuyển là ánh xa 6: Q x aM —› 29 thà M được gọi là ôtômát
hữu hạn không đơn định (nondeterministic finite automata - NFA)
Chú ý 2.4 Một ôtômát hữu hạn trạng thái M va một uết ơ, ta ký hiệu ô(q, ø)
để chỉ trạng thái của M sau khi đọc vét ơ bắt đầu từ trạng thái q Vét o được
rem là đoán nhận bởi ôtômát hữu hạn M = (Q,aM,6,q0,F) nếu như ð(q,ơ) €
F Ngôn ngữ đoán được đón nhận bởi ôtômát M định nghĩa như sau L(M) =
mới ổ(g¡, a2) = q2 € Q Công việc trên tiếp diễn đến khi xảy ra một trong nhữngtrường hợp sau:
e Ôtômát đọc hết vết vào ơ = œ1as a„ và 5(dn—1;4n) = dn € F, lúc đó ta
khẳng định vết o được đoán nhận bởi ôtômát M.
e Ôtômát đọc hết vết vào o = atas da„ và ỗ(Œn—1; #„) = In ¢ F, lúc đó ta nói
rằng vết o không được đoán nhận bởi ôtômát M, hoặc
e Ôtômát M đọc đến a; (j < n) và 5(qj-1,4;) không xác định, lúc đó ta nói
rằng ôtômát M không đoán nhận vết o.
Chú ý 2.5 Biểu dién ôtômát hữu hạn trạng thái
16
Trang 32Hình 2.7: Minh họa ôtômát M được mô tả ở Ví dụ 2.8.
Có nhiều phương pháp để biểu diễn ôtômát hữu hạn trạng thái Thứ nhất,ôtômát có thể được diễn tả bởi hàm chuyển trạng thái, được thể hiện từ Định
nghĩa 2.9 Thứ hai, ôtômát có thể được diễn tả bằng đồ thị Ở luận án này, hàm
chuyển trạng thái mô tả bởi một đồ thị có hướng, sao cho mỗi trạng thái tươngứng là một đỉnh Nếu đầu vào là a € D> ở trạng thái ạ, ôtômát chuyển đến trạng
thái p (p = 6(q,a)) thì tương ứng tồn tại một cung từ đỉnh ạ đến đỉnh p với nhãntương ứng là a Đỉnh ứng với trạng thái khởi tạo có mũi tên trỏ vào, vòng tròn
kép thể hiện đỉnh ứng với trạng thái kết thúc, những đỉnh còn lại được mô tảbởi vòng tròn đơn Ví dụ 2.8 minh họa cho hai cách biểu diễn của một ôtômátAM, biểu diễn bằng hàm chuyển trang thái 6 và biểu diễn bằng đồ thị có hướng
Ta dé dàng kiểm tra được rằng một vết aaaa € L(M), nhưng vết aaaab ¢ L(M).
Chú ý 2.6 Ôtômát hữu hạn trạng thái M được gọi là tiền tố đóng (prefix-closed)
nếu ngôn ngữ được L(M) đoán nhận là tiền tố đóng, nghĩa là uới mỗi uết ơ €L(M) thì tat cả moi tiền tố của ơ đều thuộc L(M) [25].
Chú ý 2.7 Ôtômát M thu vé khi thực hiện giải thuật học L* J6, 22] là ôtômátday du, tối thiểu va tiền tố đóng Do đó, nó sẽ chứa một số trạng thái không kếtthúc Để có được hệ thông chuyén trạng thái được gan nhãn M' từ ôtômát M ta
17
Trang 33Hình 2.8: Phương pháp chuyển một ôtômát M thành LTS M’.
bỏ đi moi trạng thái không kết thúc va mọi quy tắc chuyển trang thái tới trangthái không kết thúc ấu Cách chuyén một ôtômát M thành một hệ chuyển trạng
thái được gan nhãn M' được định nghĩa như sau.
Định nghĩa 2.10 (Chuyển đổi ôtômát sang LTS [25, 51, 50]) Với mỗiôtômát M = (QUnas,aM,6,q0,Q), ta xác định được hệ thống chuyển trang thái
được gan nhãn M' tương ứng là: M' = (Q,œM,ôn (Q x aM x Q),qo) vdi nas
(non-accepting states) là tập các trang thái không kết thúc.
Ví dụ 2.9 Hình 2.8 biểu diễn phương pháp chuyển một ôtômát M thành mộthệ chuyén trạng thái được gan nhãn M' Dễ nhận thay, ôtômát M có q là trạng
thái kết thúc duy nhất Vì vay, chúng ta loại bỏ trạng thái qo va mọi quy tắc
chuyển trạng thái đến trang thái qo kết quả thu được một hệ chuyển trạng thái
M' như Hình 2.8.
Định nghĩa 2.11 (Ôtômát tối thiểu [51, 50]) Ôtômát có số trang thái ít
nhất trong các ôtômát hữu hạn cùng đoán nhận ngôn ngữ L được gọi là ôtômát
tối thiểu của ngôn ngữ L.
Định nghĩa 2.12 (Trạng thái tương đương [82]) Hai trạng thái q va q›
được gọi là tương đương, ky hiệu q = qo nếu cả hai trạng thái ð(q\,+) va (qo, +)đều là những trạng thái kết thúc hoặc ca hai đều là không kết thúc vdi mọi
Định nghĩa 2.13 (Trang thái k tương đương [82]) Hai trạng thái q va q›
được gợi lak — tương đương, ký hiệu qi Xp q nếu cả hai trang thái ð(@\,+) vaô(qa.+) đều là những trạng thái kết thúc hoặc ca hai đều là không kết thúc với
mọi ø€ S” có độ dài nhỏ hơn k (k > 0).
Chú ý 2.8 Quan hệ & va =, là những quan hệ tương đương (có day du tínhchat phan xa, đối zứng va bắc cầu) Các lớp tương đương của hai quan hệ nay sẽtạo ra các phân hoạch m va m„ của Q Các phan tử của mạ là các lớp k - tươngđương.
18
Trang 34Định nghĩa 2.14 (Trang thái k + 1 - tương đương [82]) Hai trạng thái ạ
va qo được gọi là k+ 1 - tương đương, nếu các điều kiện sau được thỏa mãn:
e Chúng là k — tương đương, va
e ð(gi,d) va 5(q2,a) cũng lak — tương đương uới moiae 3`.
Định nghĩa 2.15 (Định nghĩa về biểu thức chính quy [47, 2, 13]) Cácbiểu thúc chính quy được dùng để biểu diễn ngôn ngữ chính quy Tập Ð là bảng
chữ cái, ngôn ngữ chính quụ trên © được định nghĩa một cách đệ quụ như sau:
e \,a€ là các biểu thức chính quy tương ứng của các ngôn ngữ 0, {a}.
e Nếu r va s là các biểu thúc chính quy ứng uới các ngôn ngữ Ly va Ls, thà(r|s) (r.s), (r*) là các biểu thúc chính quụ tương ứng uới các ngôn ngữ L„UL„,
Định nghĩa 2.17 (Khối cơ bản và khối không cơ bản [18, 19]) Khối cơ
ban là một biểu thúc chính quy con của R mà chúa tối thiểu một lần xuất hiện
của các kí tự trong bảng chữ cái Các khối không cơ bản là các thành phần của
biểu thức chính quy được chia tách bởi các khối cơ bản.
Mỗi một khối cơ bản có thêm hai thuộc tính gọi là n va star Thuộc tính n
trong khối cơ bản bằng \ khi và chỉ khi khối cơ bản đó đoán nhận vết rỗng,ngược lại thuộc tính này bằng 0 Thuộc tinh star để chỉ có hay không có một kítự “*” trên biểu thức chính quy gắn với khối này.
Định nghĩa 2.18 (NNFA (normal NFA) [18, 19]) NNFA là NFA ở đó moi
cạnh đều đưa đến cùng một trạng thái có cùng nhãn NNFA được định nghĩa là
một bộ sáu như sau (>,Q.,ô,T,F, A), uới:
19
Trang 35© A:Q—>} là ánh xạ cho các trạng thái q € Q thành một nhãn A(q) thuộc 3.
Chú ý 2.10 Một McNaughton/Yamada NNFA (MYNNFA) [74] là một NNFA
trong đó trạng thái khởi tạo uới bậc vao là 0.
Định nghĩa 2.19 (Ôtômát đuôi của MYNNFA [18, 19]) M =
(5,Q,ð,T = {qo}, F, A) là một NNFA MT = (=7,Q7,67, 17, F?, AT), uới 5? =D
Q” = Q- {qo}, 6” = {[x,y] € ð|z # qo}, I” = {y: [ao,y] € 5}, F = F — {qo},
AT= A,
Dinh nghĩa 2.20 (Cặp của tập hợp [18, 19]) Cho hai tập G va A,
pair(G, H) = {[G, H]} nếu cả G va H đều khác rỗng, trái lại pair(G, H) = 0.
Chú ý 2.11 Dat nredy = FEIT, — 64,, ta xem biểu diễn trễ của nó là Id Ta
cũng có thể gọi biểu diễn trễ của 5 là lồ Cả hai ld va lỗ đều là một danh sách
các cặp của hai tập hợp.
Định nghĩa 2.21 (CNNFA [18, 19]) Biểu diễn ƠNNFA (Compresscd
NNFA) của một ôlômát đuôi MYNNFA MT = (X1,.Q1r.ðA lập Fh, Ady)
là biểu diễn nén va được định nghĩa bởi bộ bay thành phần PT =
(=5,Q5,1db, 165,15, FẺ Ad), uới:e 5 = MỊ, là bang chữ cái,
Trang 36Từ một ôtômát đuôi MYNNFA MT = (D7, QT,ðT, TT, FT, AT), ta có thể xây
dựng được ôtômát ban đầu MYNNFA M = (%,Q,6,/, F, A) như sau:
5=*#”,Q=QU{4ø}.ð = ð” U{[ao, ylly € 17}, 1 = {a0},
F=F' U{q}ny,4=A’, (2.4)
với {qo} nạ; = {qo} nếu ny = {A},ngược lai {qo} nạ; = 9.
Chú ý 2.12 Thinh thoảng chúng ta không viét © trong NNFA, MYNNFA,6tômát đuôi MYNNFA va CNNFA khi nó đã rõ rùng Nhiều lúc, ta cho phép tap
các nhãn A là không xác định uới trạng thát có bậc uào là 0.
Trong CNNFA, ta biểu diễn các tập hợp F và I bằng cách sử dụng cấu trúc
dữ liệu gọi là F-Forest và I-Forest theo cách thức:
e Mỗi tập được biểu diễn tương ứng bởi một cây nhị phân.
e Dùng danh sách liên kết đôi để nối các lá của cây với nhau.
e Gốc của cây chứa con trỏ đến danh sách lá của cây.
e Hợp của hai tập hợp là một cây mới có gốc mới, hai tập đó trở thành cây
con phải và cây con trái của cây mới Phép hợp này có thể thức hiện được
trong thời gian đơn vị đối với hai tập hợp không giao nhau.
2.3 Ôtômát vào/ra
Hiện nay, có rất nhiều định nghĩa về ôtômát vào/ra (I/O automata) trong
các nghiên cứu [72, 28, 64, 90] Trong nghiên cứu này, tác giả định nghĩa lạiôtômát vào/ra hướng sự kiện được trình bày trong Định nghĩa 2.22 và được sử
dụng trong Chương 4.
Định nghĩa 2.22 (Ôtômát vào/ra) Ôtômát vao/ra là một bộ sáu có thứ tu
Q'= (Q.5 59,ä, qo, F), trong đó:
® Q= {4i,4a, qn} là tập các trạng thái,
«5` ={(c.e)|ceŒ,ec E!} là tập các ky tự vao,
© S2 ={(c,e)|ce Œ,ec EY} là tập các ky tu ra,
e® ôố=Qx(C x E) — Q là tập các luật chuyén 5(qi, (c,e)) = đj,
e qo là trang thái khởi dau, va
e F=( fi, fo, fm} là tập trang thái kết thúc.
21
Trang 372.4 Kiểm chứng giả định — đảm bảo (Assume — Guarentee
2.4.1 Lý thuyết giả định
Kiểm chứng từng phan (modular verification) [39, 15, 16, 14, 62, 66] được biếtđến như là một giải pháp tiềm năng nhằm giải quyết bài toán bùng nổ khônggian trạng thái trong kiểm chứng mô hình (model checking) Thay vì tiến hànhkiểm chứng trên toàn bộ hệ thống gồm các thành phần được ghép nối với nhau,cách tiếp cận này tiến hành kiểm chứng trên từng thành phần riêng biệt Vớicách tiếp cận này, van đề bùng nổ không gian trạng thái hứa hen sẽ được giảiquyết Một trong những phương pháp kiểm chứng hiện thực hóa ý tưởng này làphương pháp kiểm chứng giả định - đảm bảo (assume-guarantee verification -
AGV) Phương pháp nay được đề xuất đầu tiên trong [80, 55] và tiếp tục được
phát triển trong [25, 33, 34, 10, 11] Trong phương pháp này, một hệ thống cầnkiểm chứng được chia thành các hệ thống con và kiểm chứng từng hệ thốngcon một cách riêng biệt Bằng cách kết hợp các kết quả kiểm chứng riêng biệt
này, chúng ta có thế kết luận tính đúng đắn của hệ thống so với thuộc tính cầnkiểm chứng Bằng cách kiểm chứng riêng biệt trên từng hệ thống con (với kíchthước nhỏ hơn nhiều so với kích thước của hệ thống ghép nối), bài toán bùng
nổ không gian trạng thái hứa hẹn được giải quyết Thông thường, hành vi của
một hệ thống con phụ thuộc vào các hệ thống con khác mà chúng có tương tác
với nhau Vì vậy, để kiểm chứng các hệ thống con một cách riêng biệt, chúng
ta cần các giả định (assumptions) về môi trường mà mỗi hệ thống con sẽ được
thực hiện ứng với thuộc tính cần kiểm chứng [24].
Trong phương pháp kiểm chứng giả định - đảm bảo, bài toán kiểm chứng
được biểu diễn bằng bộ ba (A(p)) M (p), trong đó M là một thành phan ứngvới hệ thống con cần được kiểm chứng, p là thuộc tính cần kiểm chứng, và A(ø)
là môi trường mà M sẽ được sử dụng Cho dù ký hiệu của bộ ba này tương tựnhư bộ ba được đề xuất bởi Hoare [44] nơi mà A(p) là tiền điều kiện và p là hauđiều kiện, ý nghĩa của ký hiệu này là A(p) là ràng buộc trên hành vi của A7 NêuM với ràng buộc bởi A(p) thỏa mãn p thì công thức (A(p)) M (p) đúng Trong
nghiên cứu của tác giả, để kiểm tra một công thức giả dinh(A(p)) M (p), với M,A(p) và p được biểu diễn bằng các LTSs, phương pháp giả định - đảm bảo tínhtoán trên công thức A(p)||M||per và kiểm tra xem trạng thai z có thể đến được
trong LTS kết quả hay không Nếu có, thì công thức vi phạm, ngược lại công
22
Trang 38thức thỏa mãn yêu cầu Giả định A(p) được định nghĩa như sau.
Định nghĩa 2.23 (Giả định (Assumption) [25]) Với một hệ thống gồm hai
hệ thông con MỊ va Mo, để kiểm chúng hệ thống nay uới thuộc tính p mà không
cần ghép nối chứng uới nhau, chúng ta cần tim một giá định A(p) thỏa man điều
kiện A(p) đủ mạnh đối uới M, để thỏa mãn p, nhưng đủ yếu để Mz thỏa mãn
A(p) Một cách hành thúc, A(p) phải thỏa mãn hai luật sau (gọi là các luật gia
hệ thống AMH||Ma thỏa mãn p mà không cần ghép MỊ uới Mo Với cách tiếp cận
nàu, chúng ta có thể kiếm chứng riêng biệt trên từng hệ thống con Kết quả là
bài toán bùng nổ không gian trạng thái hứa hẹn được giải quyết.
Định nghĩa 2.24 (Giả định yếu nhất (Weakest assumption) [33]) Với
một hệ thống con M, va thuộc tính cần kiểm chứng p, giả định yếu nhất, ký
hiệu la Aw, có nghĩa rằng đối uới bat kỳ môi trường E của My, My|\|E E p khi
va chủ khi E | Ap.
2.4.2 Bộ công cu LTSA (Labelled Transition Systems Analyzer)
LTSA [73] là công cu hỗ trợ kiểm chứng với đặc tả là LTS LTS thường đượcbiểu diễn dưới dạng hình học Tuy nhiên, đối với những LTS có số lượng trạngthái lớn thì phương pháp biểu diễn hình học không khả thi Khi đó, ký pháptiễn trình hữu hạn trạng thái (Finite States Processes - FSP) được dùng để biểudiễn LTS, từ đó có thể biểu diễn các LTS có kích thước lớn tốt hơn.
Đầu vào là các tiến trình hữu han trạng thái (FSPs) Sau khi đã đặc tả thiếtkế của bài toán bằng FSP ta tiến hành kiểm chứng thiết kế bằng việc dùng côngcụ hỗ trợ kiểm chứng LTSA để phân tích giả định LTS vừa được tạo ra.
Luận án sử dụng công cụ LTSA để kiểm tra tinh đúng đắn của giả định được
tạo ra bởi các kết quả đề xuất trong luận án Với mục đích này, ta kiểm tra
xem liệu một giả định được tạo ra A(p) đấp ứng các luật giả định - đảm bao
(tức là, (A(p)) ||“ (p) và (true) |LMa (A(p))) bằng cách kiểm tra hệ thống ghép
nối A(p)||Mi||perr qua công cụ LTSA Nếu công cụ LTSA trả về kết quả giống
như kết quả kiểm chứng của chúng ta cho mỗi minh họa hệ thống, giả định A(ø)
được tạo ra là đúng.
23
Trang 392.5 Kết luận
Trong chương này, tác giả trình bày các kiến thức nền tảng được sử dụng
trong luận án Phần thứ nhất trình bày phương pháp đặc tả từng thành phầnphần mềm, thuộc tính cần kiểm chứng và giả định bằng hệ thống chuyển trạng
thái được gán nhãn LTS và các kiến thức liên quan như vết, phép ghép nối songsong, thuộc tính an toàn, thuộc tính lỗi, v.v Các khái niệm về ôtômát hữu hạn
trạng thái đơn định (DFAs) được trình bày ở phần hai Phần thứ ba trình ba
trình bày về ôtômát vao/ra (Input/Output Automata) Cuối cùng trình bày các
kiến thức cơ bản quan trọng về kiểm chứng giả định - dam bao và công cụ LTSAlà công cụ hỗ trợ kiểm chứng với đặc tả là LTS Lý thuyết về kiểm chứng giả
định - dam bảo được sử dụng trong Chương 3 và Chương 5.
24
Trang 40Chương 3
PHƯƠNG PHÁP SINH MÔ HÌNH VÀ KIEM
CHUNG TÍNH DUNG DAN THIET KE CHO CÁC
PHAN MEM DUA TREN THANH PHAN
Chương này dé xuất một phương pháp sinh mô hình tu động cho biểu đồ
tuần tự nhằm giảm độ phức tạp so với các phương pháp hiện tại Phương pháp
này sẽ được tích hợp với phương pháp kiểm chứng giả định - đảm bảo để có
được một giải pháp tổng thể nhằm kiểm chứng tính đúng đắn của biểu đồ tuần
tự UML 2.0 và hướng đến giải quyết bài toán bùng nổ không gian trạng tháitrong kiểm chứng mô hình Một công cụ hỗ trợ giải pháp này cũng được cài đặtvà áp dụng cho một số ví dụ để minh chứng cho tính tính đúng đắn và hiệu quả
của phương pháp đề xuất.
3.1 Giới thiệu
Đảm bảo chất lượng là một trong những vấn đề cấp thiết và tiêu tốn nhiềuchi phí trong quá trình phát triển phần mềm Tự động hóa toàn bộ hoặc mộtsố bước trong quá trình này là mục tiêu hướng tới của các công ty phần mềm
nhằm nâng cao chất lượng và giảm thiểu chi phí Đặc biệt, đối với những sảnphẩm có yêu cầu chất lượng cao như các hệ thống điều khiển máy bay, ga tàu,an ninh quốc phòng, y tế, v.v các phương pháp hình thức sẽ được yêu cầu áp
dụng nhằm đảm bảo tính đúng đắn của thiết kế trước khi thực hiện các pha tiếp
theo Nếu thiết kế ngay từ đầu không đúng và không được kiểm chứng/đảm bảochất lượng thì về sau chúng ta sẽ mất rất nhiều chi phí để phát hiện và sửa chữalỗi Cùng với chứng minh định lý (theorem proving) (35, 36], kiểm chứng môhình (model checking) [23, 73] được biết đến như một giải pháp pho biến để giải
25