Nội dung nghiên cửu Nội dung để tải nghiên cứu vẻ kỹ thuật kiếm chứng mé hinh Model Checking, ding céng cụ Spin để thực hiện kiếm chứng mô hinh hệ thông báo động, báo cháy, sử dụng ngô
Trang 1
NGUYEN THỊ LOAN
KIEM CHUNG TINH BUNG DAN HE THONG TiNH TOAN
CUA CHUGNG TRING BANG KIEM DUYET MO BINH
Ngành: Công nghệ Lhông tin
Chuyên ngành: Công nghé phan mém
Mã đỏ: 6048 10
TÓM TẮTI LUẬN VĂN THẠC SĨ
Tà Nội 2012
Trang 2
3 Phương pháp nghiên cứu 7
4 Cấu trúc luận văn 8
1.1 Khái niệm và ý nghĩa của kiếm duyệt mô hình 9
1.3.1 M6 hinh héa (Modeling) ll 1.3.2 Thực thi chương trình (Running the model checker) 12
1.4 Điểm mạnh và điểm yếu của kiểm duyệt đựa trên mô hình - 13
1.5 Sir dung logic théi gian (Temporal Logie) mô tả gác thuộc tỉnh cần kiểm
1.5.1.1 Cú pháp của 1.TI 14
1.5.1.2 Ngữ nghĩa 15 1.5.1.3 Sự tương đương của công thức LTL 16
1.5.2 Các thuộc tính cần kiểm chứng 17 1.5.2.1 Thuée tinh an toan (Safety) 17
1.5.2.2 Thuộc tính sống (Livcnoss} 17
1.5.2.3 Thuộc tính công bằng (Faimess) 17
1.6.1 Định nghĩa máy trạng thái hữu hạn - 18
1.6.2 Các máy trang thái hữu hạn trao đổi thông tin 19
CHUONG 2: GIỚI THIBU VE SPIN VA PROMELA „20
2.1 Ngôn ngữ Promela TH cau 20 2.1.1 Cấu trúc chương trìh Promela, 20
Trang 32.1.3.1 Các kiểu dữ liệu cơ bản trong Promela - 21 2.1.3.2 Kiểu đữ liệu có cẩu trúc - - 22
2.1.4 Dinh danh, hig, v và biểu thức ¬-
2.1.5.1 Tiền trinh process "- 26
2.1.5.2, Tiền trình init cu xreeeerreerereoroTf
2.1 Kiểm chứng Hường tình u trung 1 Spin 31
2.2.1.2 Mô hình hệ thống trong SPIN - 32
2.2.1.3 Câu trùc của Spin - 32
3.1 Xây dựng biển và tiến trình dồng hd - 44
3.2 Hệ thống báo động, báo cháy mức trừu tượng - 48
3.2.1 Mô tả hệ thông mức trừu tượng AB
MG hinh Promela cho hé thông báo động, báo cháy m mite trou tượng va kiểm chứng thuộc tính đơn giản 40 3.3 Hệ thống báo động, báo cháy mức 2 252
Trang 4
3.3.2 Mô hình Promela cho hệ thing báo động, báo chảy mức 2 và kiểm chứng thuộc tỉnh đơn giản
BT LUAN
'TẢI LIỆU THAM KHẢO
Trang 5TAT TEN TIENG ANH TEN TIENG VIET
CTL Branching Temporal Logic Logic thời gian rẽ nhánh
FSM Finite State Machine Máy trạng thái hữu hạn
LTL Linear Temporal Logic Logic thời gian tuyến tính
VHDL Very High Speed Intergrated Cireuit | Mach tich hop téc dd cao
FIFO First In First Out Vàn trước ra trước
Trang 6DANH MUC CAC BANG
Bang 2.1: Các kiểu đữ liệu cơ bán trong Promecla
Bang 2.2: Các toán tử trong Promela
Bang 2.3: Các phép toán mệnh để trong 1T
Bảng 2.4: Các phép toán thời gian của LLL
21
¬
42 -°Öö482
Trang 7Hình 1.3: Vi du may hitu han trang thai dang dé thi - 18
Hình 1- Tuyền thông điệp đồng bộ hóa Œm, ?m), (?m, lim) „19
Ilinh 2.1: mô hình của hệ thống trong Spin 32 Hình 2.2: Cấu trúc của Spin 33 Ilinh 2.3: Man hinh cửa số chính của XSpin _" besten OE
Hình 2.5: Cửa số chính chức nang Sct Simulation Parameters - 38
Hình 2.6: Cửa sẽ khi chay chức năng Rưn Simulation - 39
Hình 2.7: Cửa số chính chức nang Set Verification Parameters - 40
Hình 2.8: Cửa số khi chạy chức năng Run Verification 4G Hình 2.9: Cửa số khi chạy chwre ning LTL Property Manager 41 Bảng 2.3: Các phép toán mệnh đề trong LIL 2 Bảng 2.4: Các phép toán thời gian của LTL A Ilinh 3.1: Kiến trúc trừu tượng của hệ thống báo động, báo cháy ©ò48
Hình 3.2: Kết quả khi mô phông mô hình hệ thống báo đông, bảo cháy mứ
Hình 3.3: Kết quá kiểm chứng mô hình hệ thống báo động, báo cháy 32
Hình 3.4: Kiến trúc mức 2 của hệ thống bảo động, bảo chảy - 33
Hình 3.5: Kết quả khi mô phỏng mô hình hệ thông báo động, báo cháy mức
Hình 3.6: Kết quả kiểm chứng mô hình hệ thống báo đông, báo cháy 57
Trang 8MỞ ĐÂU
1 Đặt vẫn dễ
Ngày nay chủng ta phụ thuộc rất nhiều vào hệ thống máy tính (phần cứng,
và phần mềm) cả trong sân xuất lẫn dởi sống hãng ngày Các hệ thống này cần
phải đảm bảo sự tin cây và an toàn khi sử dụng l2o đó chúng cần phải được
kiếm duyệt kỹ càng ngay từ mô hình của hệ thống để đảm bảo hệ thống hoạt
động chính xác tranh gây thiệt hại cả về com người lẫn tiền của Ilơn nữa việc áp
đụng kỹ thuật kiểm chứng hệ thống qua mô hình hệ thống sẽ lam tăng hiệu qua
kinh tế bởi nhờ có kiểm chứng mô hình mả nhà sản xuất có thể xác định sớm các lỗi trong hệ thống nên chỉ nhí vào quá trình kiểm thử hoặc khắc phục lỗi sẽ giám
đáng kể
Kỹ thuật kiểm chứng mô hình dã dược sử dựng dể kiểm chứng cho các mỗ hình hệ thống trong thực tế Tuy nhiên để phát huy dược hết hiệu quả của kỹ
thuật này cần có công cụ kiểm chứng đi kẻm để hỗ trợ qua trinh kiểm chứng
Các công cụ kiếm chứng hiện nay hay dùng như 5pin, Kronos, NuSMV,
Céng cu Spin mac đủ rất đơn giản, gọn nhẹ nhưng có tắm ảnh hưởng lớn trong
phát triển phần miềm cho các hệ thống phức tạp như hệ thời gian thực, hệ thống
nhúng, hệ tương tác,
Từ thực tiễn đó, chúng tôi chọn đẻ tải “Kiểm ghứng tính ding đắn hệ thắng
tính toán của chương trình bằng kiểm duyệt mô hình” nhằm mục đích là tiếp
cận, nghiên cửu phương pháp kiểm chứng mô hình, dùng công cụ kiểm chứng Spin và ngôn ngữ mô hình hóa Dromcla để kiểm chứng tinh đúng dẫn của hệ
thống,
2 Nội dung nghiên cửu
Nội dung để tải nghiên cứu vẻ kỹ thuật kiếm chứng mé hinh (Model
Checking), ding céng cụ Spin để thực hiện kiếm chứng mô hinh hệ thông báo
động, báo cháy, sử dụng ngôn ngữ mô hình hóa Promela để mô hình hóa hệ
thống báo động, báo cháy, và mô tả các thuộc tính cần kiểm chứng qua Logic
thời gian tuyến tính để kiểm chứng tinh dimg đắn của hệ thẳng báo động, báo
cháy qua mô hình của nó
3 Phương pháp nghiên cứu
" Phương pháp thu thập tài liệu: Các thông Uin sử dụng trong luân văn dược thu thập từ các nguồn: Sách tham khảo, giáo trình, giáo án, các bài
báo
= Phuong pháp phân tích: Dựa trên các tải liệu thu thập được, phân tích,
đánh giá và đưa ra kết luận.
Trang 9Chương 1 trình bày về cơ sở lý thuyết của kiểm duyệt mỗ hình (Model
Š công cu Spin, giao điện Xspin, và ngôn ngữ mồ hình
như hướng phát triển trong tương lai của đề tài
Trang 10CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
Trong chương 1 sẽ trình bày các khải niệm cơ băn về kỹ thuật kiểm duyệt
mô hình (Model Checking), và giới thiêu về logic thời gian tuyến tính cũng như
máy trạng thái hữu hạn
1.1 Khải niệm và ý nghĩa của kiểm duyệt mô hình
Theo Clarke va Emerson 1981, kiểm duyệt mô hình được định nghĩa:
“Kiểm duyệt mô hinh là một kỹ thuật được tự động hóa nhằm đưa ra mô
hình hữu hạn trạng thái của hệ thông và thuộc tính hình thức, kỹ thuật này sẽ
+kiểm tra có hay không thuộc tính được thõa mãn bởi mô hình của hệ thông” [5]
Trong giải đoạn thiết kế phần mềm và phần cứng của các hệ thống phức tạp
hiện nay, các chuyên gia dành rất nhiều thời cho việc kiểm chứng hơn là việc xây dựng hệ thống Có rất nhiều kỹ thuật dã dược tim ra dé làm tăng phạm vì
từng dụng của kiểm chứng Các phương pháp hình thức là một trong những kỹ
thuật đó Né được tích hợp vào việc kiểm chứng trong quá trình thiết kế, để đưa
Ta những kỹ thuật kiểm chứng hiệu quả và lâm giâm thời gian kiểm chúng hệ thống Một trong những phương pháp hình thức mạnh mẽ nhất là kiểm duyệt mồ
hình [1, 2]
Kỹ thuật kiểm đuyệt mô hình miêu tả hành vi của hệ thống bằng một
phương pháp toán học chính xác vả rõ rằng, Một mô hình hệ thống chính xác có
thể giúp chúng ta phát hiện ra những gì chưa đầy đủ, mơ hỗ và không nhất quán
trong đặc tá hệ thống, điều này thường được phát hiện sau giai đoạn thiết kế Do
đó cần kỹ thuật kiểm duyệt mô hình để làm rõ những diều nêu trên trước giai
đoạn thiết kể Các mô hình của hệ thống thường được di kém voi những thuật
toán mã có thể piúp chúng ta tìm ra tất cả các trạng thái của mô hình hệ thống,
đó Nhờ có sự nghiên cứu phát triển về thuật toán và cấu trúc đữ liệu, củng với khả năng của máy tính ngày càng nhanh vả dung lượng lưu trữ ngày cảng cao, những kỹ thuật đựa trên mô hình đã cực kỳ phát triển và không chỉ áp dụng trong những ví dụ đơn gián mà hiện nay da được ửng dụng vào những bản thiết
kế dành cho các hệ thông phức tạp [2]
Các thuộc tỉnh điển hình có thể được kiểm tra bằng kiểm duyệt mô hình
thông thường la: Kết quả sinh ra có đúng không”, hệ thống có lâm vào trạng thái
bể tắc không? Thậm chỉ các thuộc tính trên thời gian cũng có thể được kiểm
tra như: Có thể xảy ra bế tắc trong vỏng 1 gid sau khi hệ thẳng khởi dộng lại?
hoặc sư phân hồi có được nhận lại trong vòng 10 phủt?
Mô hình của hệ thống thông thường được sinh ra tự động từ một sự mô tả
mô hình được đặc tả trên các ngôn ngữ lập trỉnh như C, Java hoặc ngôn ngữ mồ
tả phần cứng như Verilog Các thuộc tính nói lên rằng hệ thống nên lâm những
Trang 11gi, va không nên làm gì, nhưng ngược lại bản mô lá mô hình tập trung vào hệ
thống hành động như thế nào Công cụ kiểm chứng có khả năng kiểm tra mọi
trạng thái của hệ thống để kiếm tra xem chúng có hay không thỏa mãn thuộc
tính mong muốn
Kỹ thuật kiếm duyệt mô hình có nhiễu phiên bản Phiên bản kế đến dầu tiên
1à dùng kỹ thuật kiểm duyệt mô hình để mô hình hóa và kiểm chứng hệ thống
không có ràng buộc thời gian, tiếp đến lả ứng dụng kỹ thuật này để kiểm chứng
hệ thống có ràng buộc thời gian và hệ xác suất Tuy nhiên với việc tìm hiểu và
ding kỹ thuật kiểm đuyệt mô hinh dé kiểm chứng hệ thông không có ràng buộc
thời gian sẽ đơn gián hơn Do đỏ trong luận văn tác giã sẽ nghiên cứu và sử
đụng phiền bán này kết hợp với kỹ thuật xây dựng biển vả tiến trình dễng hồ dể
kiểm chứng tính chất ràng buộc thời gian trong hệ thông bảo động, bảo cháy
1.2 Quy trình hoạt dậng của kiểm duyệt mô hình
Hình 1.1: Sơ đỗ hoạt động của phương pháp liễm đuyệt mã hình [2]
Mô hình của hệ thống được xây dựng từ đặc tả của hệ thống Mô hình nảy thế hiện hành vi của hệ thống và có thể được viết bởi ngôn ngữ C, Java, hay các
ngôn ngữ mô tả phần cứng
Trang 128ự đặc tả thuộc tính yêu cầu những gì hệ thống nên làm và những gì không
nên lam trong khi mô hình mỗ tả hệ thắng hoạt động như thế nào”
Kiểm duyệt mô hình sẽ kiểm tra tất cả các trạng thải hệ thẳng liên quan
xem có thỏa mãn không, nêu không thỏa mãn sẽ dưa ra một phản ví dụ - một
trạng thái của hệ thống không thỏa mãn - cho thấy cách đạt đến trang thái không thỏa mãn, sử đụng phản vỉ dụ cùng với sự mô phỏng ta sẽ có được những thông tin gỡ lỗi vả từ đó sẽ có được mô hình phù hợp
1.3 Dặc trưng của kiếm đuyệt mồ hình
Quá trình kiểm duyệt một mô hình có thể chia thành những pha như sau:
" Pha mô hình hóa (Modcling): Xây dựng mô hình cho hệ thống bằng cách
mỗ hình hóa hệ thống sử dụng ngôn ngữ mô tả mô hình của công cụ kiểm duyệt Sau đó kiểm tra sự dùng dẫn và dánh gid nhanh mô hình bằng sự mô phỏng Hình thức hóa thuộc tính cần được kiểm duyệt sử dụng ngôn ngữ đặc tả thuộc
tính
" Pha thực thí (Running): Sử dụng chương trình kiếm duyệt để kiểm tra tính
hợp lê của thuộc tính trên mô hình hệ thống vừa xây dựng
" Pha phân tích (Analysis): Kiểm tra xem nếu thuộc tính được thỏa mãn thì kiểm tra thuộc tính tiếp theo (nếu còn), Nếu thuộc tính bị vị phạm thi tiến hành
phân tích phân ví dụ bằng sự mô phỏng; Tĩnh chỉnh mô hình, bản thiết kể, hoặc thuộc tính: Lặp lai toan bộ các pha Nếu tràn bộ nhé thì cố gắng giảm bát mô
hình vả thứ lái
Sau dây, là chỉ tiết nội dung của từng pha
1.3.1 M6 hinh héa (Modeling)
Để có thể áp dụng dược kiểm duyệt mô hình cần yêu cầu dầu vào lả một
mô hình của hê thông và các thuộc tính đặc tả hình thức sẽ được kiểm chứng
Mô hình của hệ thống mô tả hành vi của nó một cách đúng đắn và rõ ràng
Chúng thường được diễn tả bằng otomat hữu hạn trạng thái (ñnite state automata) Một otomat hữu hạn trạng thái gém tập các trạng thái (states) va tap
các phép chuyển (transitions) Các trạng thái chữa thông tin về giá trị hiện tại
của các biến, của câu lệnh được thực thi trước đỏ, hoặc gì đó tương tự Các phép
chuyển diễn tả làm thế nao hệ thẳng chuyển từ trạng thải này sang trang thái
khác Với các hệ thống thực tế, olomat hữu hạn trạng thải dược diễn tá bằng
ngôn ngữ mô tã mô hình nhu C, Java, VHT
Trang 13A model of wach
C2 A modulo 3 counter
Hình 1.2 Vi du vé mé hinh [5]
Để tăng chất lượng của mô hình, cần có sự mô phỏng trước khi kiểm duyệt
mô hình có Sự mô phỏng nảy được sử dụng để loại bô những vấn đề đơn giản hơn trước khi kiểm duyệt Diéu này giúp làm giảm thời gian cũng như chỉ phí
Và cuối cùng, để có thể kiểm duyệt chính xác Các thuộc tính nên được
điễn đạt rõ ràng, ngắn gọn nhưng đẩy đủ Do vậy, cần sứ đụng một ngôn ngữ
đặo tả thuộc tính Trong luận văn này chỉ tập trưng vào cách sử dung logic thời
gian (temporal logic) như là ngồn ngữ đặc tả thuộc tính Thực chất, logic thời
gian là sự mở rộng cúa logic mệnh đề với những toán tử biểu điễn hành vi cla
hệ thống theo thời gian T.ogic thời pian hoàn toản có khả năng biểu diễn những,
thuộc tính của hệ thống như sự đúng đắn chức ning (functional correctness),
thuộc tính sống (liveness propery), thuộc tính an toàn (safety property), thuộc
tính céng bang (fairness property)
1.3.2 Thue thi chung trinh (Running the model checker)
Sau khi có được mô hình của hệ thống và các thuộc tỉnh, chứng ta cần sử đụng một công cụ kiểm chứng để kiểm tra các thuộc tỉnh có thỏa mãn mô hinh vừa xây dựng không Trong luận văn sé str dung công cụ kiểm chứng Spin để
thực hiện điều đó
1.3.3 Phân tích (Analysis)
Sau pha thực thị kiểm chứng mô hình, cẦn phăi phân tích kết quả dạt dược
Thường thì chủng ta có ba trường hợp xãy ra: Các thuộc tính có thỏa mãn hay
không hoặc mô hỉnh quá lớn ngoài khả năng vật lý của bô nhở máy tính
Khi các thuộc tính được thôa mãn, mê hình đáp ứng được tất cả những
thuôc tỉnh mong muôn
Trang 14hi một thuộc tinh không thủa mãn, tức có thể xuất hiện lỗi trong mô hình,
hoặc có thể do thuộc tính dược hình thức hỏa sai
Còn về khả năng thứ 3, mô hình quá lớn để có thế xử lÿ thì có rất nhiều giải pháp để khắc phục Tuy nhiên, giải pháp hiệu quả nhất là cố gắng làm giảm
không gian trang thái (state space) khi kiểm chứng
1.4 Điểm mạnh và diễm yếu của kiểm duyệt dựa trên mô hình
Kiểm duyệt mô hình có một vải điểm mạnh như [2]:
"_ Là phương pháp kiểm chứng tổng quan được áp dụng cho các ứng dụng,
trong phạm vi lớn như hệ thông nhủng, công nghệ phần mềm, thiết kế
phan cimg,
" Hỗ trợ kiểm duyét cuc bd, cdc thuộc tính có thể được kiểm tra riêng lẻ, tir dé tập chung kiểm duyệt các thuộc tính quan trọng trước mả không cần thiết đặc tả hệ thống hoàn chỉnh
* Qué tinh kiểm duyệt sau không ảnh hưởng đến các lỗi đã được phát
hiện trước đó
= Cung cấp các thông tin có ý nghĩa cho việc gỡ lỗi khi phát hiện một
thuộc tính không thẻa mãn
" Kiểm duyệt mô hình là tiềm năng của công nghệ “push — botton”, sử
dụng kiểm đuyệt mô hình làm tăng mức độ tương tác người ding va
chuyên môn
" Kiểm duyệt mô hình dễ dàng tích hợp trong chu kỳ phát triển phần mém, lam gidm thời gian phát triển phần mềm
"Kiểm duyệt mô hình có nền tảng của toán học, nó dựa trên lý thuyết
thuật toán dễ thị, cấu trúc dữ liệu và logic
Bên canh những ưu điểm trên, phương pháp kiểm duyêt mô hình cũng có
những yếu điểm như [2]:
" kiểm đuyệt mô hỉnh chủ yếu phủ hợp với các ứng dụng điều khiển,
không phù hợp với các ủng dụng hướng dữ liệu đo khối lượng dữ liệu
thường tăng vô hạn
"- Kiểm duyệt mô hinh kiểm chứng mô hình của hệ thống chứ không phải
bản thân hệ thẳng, mọi kết quả dạt được là về mặt mô hinh hệ thống, do
dó cần có những kỹ thuật khác hỗ trợ như kiểm duyệt để tìm ra lỗi chế
tạo (trong phần cứng) và lỗi lập trình (phần mềm)
"_ Kiểm duyệt mô hình chỉ kiểm chứng những thuộc tỉnh được dic td
" _ Việc sử dụng kiếm duyệt mô hình yêu cầu kinh nghiệm trừu tượng hóa
hệ thống thích hợp để đưa ra mô hình hệ thống theo logic thời gian.
Trang 15Mặc dù cơ những hạn chế nhất định trên nhưng kiểm duyệt mơ hình vẫn là
kỹ thuật hiệu quá dễ tìm ra lễ¡ thiết kế nhằm tạo ra hệ thống hoản chính nhất
1.5 Sử dụng logic thời pian (Temporal Logic) mé 14 cic thuộc tính cần
kiểm chứng
1.5.1 Logic théi gian (f'emporal Logic)
Các biểu thức temporal logic khơng chỉ xét đến những dầy trạng thái đơn,
mà cịn xét đến những đãy trạng thải phức tạp trong đĩ từ một trạng thái cĩ thể
cĩ nhiều trạng thái ngay tiếp sau nỏ Trong các nghiên cửu về kiểm duyệt mơ hình, cĩ hai loại logic thời gian hay được xem xét là LTL (Linear Temporal
Logic) va CTL (Banching Temporal Logie) |2|
*L-TL (Linear ‘lemporal Logic): Logic thé gian tuyén tinh ‘Thai gian od
cấu trúc tuyến tính, mỗi trạng thái chỉ cĩ một trạng thái ngay tiếp sau nd
* CTI (Branching Temporal L.ogic): L.ogic thời gian rẽ nhánh Thời gian cĩ
cầu trúc tuyến tính, mãi trạng thái cĩ nhiễu trạng thái ngay tiếp sau nĩ
Nhờ khá năng xét dến yếu tổ thời gian, temporal lopic dã được sử dụng,
rơng rai trong cơng nghệ kiếm chứng phần mềm Temporal logic thường được
sử dụng để mơ tả các thuộc tính cần kiểm chứng Trong khĩa luận này xin trình bay vé LTL (Linear Temporal Logic)
1.5.1.1 Cú pháp của LTL
Mật cơng thức I.TI được hình thảnh tử những mệnh đề nguyên tứ (ze4P),
các phép boolean như phép hội ^, phép phủ định —¬, và hai phép thể thức (modality) don gian 1a O (goi la “next) va U (gọi là “until”) Thể thức O là
tốn tử một ngơi và yêu cầu một cơng thức LTL là tham dối Cơng thức Cợ thõa
mãn tại thời điểm hiện tại, nếu ø thõa mãn ở bước tiếp theo Thể thức L.lả tốn
tử trung tổ một ngơi và yêu cầu hai cơng thức LTL lả tham đếi Cơng thức ø, L
øz thỏa mãn tại thời hiện tại, nếu cỏ một vải thời điểm trong tương lai mà
go tha min và ø; tha mãn tại mọi thời điểm cho đến thời diễm trong lai dé
Định nghĩa 1.1: Cú pháp của LTL
Cơng thức L1L trên tập mệnh đề nguyên từ /LP co dang sau:
@: =pue |a|0;^@ |¬ø Oø| øi Ủ ø;
voi ae AP
Sử dung cdc phép boolean hội và phủ định, ta sẽ cĩ được sức mạnh đầy đủ
của logic mệnh đề Các phép boolcan khác như phép tuyển ›⁄, suy ra ›, tương
đương =>, chẵn lẻ @ cĩ thé suy ra được theo các luật sau:
Bi G2 =H G2)
Gi gạ= GV Pe
Trang 16Gi 92 =(0: > GING: > OY
G9 Ø:#(0:^ ¬@2) V (0; A ¬Ø¿)
Toán tứ unHl LÍ có thể suy ra từ Loán tử 6 (“cventually” tức cuỗi cùng) và Lì
(falways” tức luôn luôn) như sau:
0 sirue U gy
Les
Ngoài ra, bằng việc kết hợp hai toán tử © vả o, ta ¢6 các thể thức thời gian
mới Ví dụ như, LÔœ (“always oventually @”) miéu tả thuộc tính mà tại bất kì
thoi diém ÿ dều có một thời diễm ¡ >ÿ mà tại dé một trạng thải a được duyệt
'Tức là trạng thái a được duyệt thường xuyên và vô hạn — mfinitely often Lương,
tự, phép đối ngẫu ôna có thể hiểu rằng từ một vài thời điểm 7, chỉ có trạng thái 4
được đuyệt
còø “infinitely often gy”
ug “eventually forever o”
Vi du 1.1: Các thuộc tính được điễn tả bằng LTL
Thuộc tính hệ thống đèn giao thông
Đổi với dến tín hiệu giao thông, thì có thuộc tính yêu cầu như sau“ khi đèn
Công thức LTL thể hiện cho các thuộc tính của đường - path (hay truy vết
của chúng) Tức là một đường có thể thõa mãn một công thức LTL hoặc không,
Ngữ nghĩa của công thức LTL g dược dịnh nghĩ: như là một ngôn ngữ
Words(g) bao gồm mọi đãy vô hạn trên tập chữ cái 24P mà thõa mãn ø Mọi
công thức LTL liên kết các thuậc tính LT đơn Ngữ nghĩa của nó được mỡ rộng
để giải thích các đường va các trạng thái của hệ thống truyền
Định nghĩa 1.2: Ngữ nghĩa của LTL
Giả sử ø là một công thức I.TL trên 4P Thuộc tính T.incar - Time có thể
được kết luận bởi ø là
Words(p) = (øe (“0| ø|= ø}
Ở dây |—<('Ô”xLTL là quan hệ nhỏ nhất thỏa mãn.
Trang 17ao U @ of > 0 ofj ]|—@ and off ] |, for all 0 <1<j7
Với 0 — Ag A; Ap © (2), ofp | — Aj Ape Apne dutoe goi 1a hau 16 ctta
o bat đầu từ vị trí ÿ+1) ký hiệu là 4, Do đó, chúng ta có các ngữ nghĩa của các
toan ty 7, ð, n9 và Ôn như sau
logic nào, một sự tách biệt rõ ràng giữa cú pháp vá ngữ
chúng đều có cùng giá trị chân lý Ví dụ như là: hai công thức ¬ ¬ a và a, mặc
đủ khác nhau về cú pháp nhưng lại tương đương nhau
Tịnh nghĩa 1.3: Sự lương đương của công thức
Hai công thức LTL ø„ ø; được gọi là tương dương được viết là ø — øy nếu
Wfords(e;) — Words(e;)
Co thé str dung một số luật để thuận thiên cho việc diễn dạt thuộc tỉnh dưới
dang |
.Bỗ đã 1.1: Giải pháp tôi thiêu của sự mở rộng các luật
Cho hai công thức LTL g và #/ Words(g J Ÿ) là thuộc tính LT tối thiểu,
P=(2”)" khi đó:
Words(f)U1{Aa44,44: e Wordsfe)|A,A¿ eP?}c<P
Ngoài ra, Words( U_ #2 phủ hợp với tập:
Words('¥4U {49A; Az © Words(g} Ay Az © Words(y U 49}
1.5.1.4 Toán tử Wcak Until— W
Toán tứ Weak Unuil gW #2= (ø U #2 v nợ dường như ngược lại với toán
tử unHil Toán tử @ U #“ không yếu cầu ø phải được thõa mãn
'oán tử Until L va toán tử Weak Untill W là đối ngẫu:
aie UH =n nw Hen 2
—¬p W #2 =(@^ U Gea 2
Trang 181.8.2 Các thuộc tính cần kiểm chứng
1.5.2.1 Thuậc tính an toàn (Safety)
'Fính an toàn của một chương trình đảm bảo rằng sẽ không bao giờ xây ra
tình huỗng xấu trong chương trình (“'sormething bad never happen”)
‘Tinh an toàn có thể được biểu diễn bằng LLTL như sau:
G¢@ trong LIL
Trong đó ¿ là một biểu thức logic
Vi dụ của tính an toàn:
" _ Nhiệt độ của phản ứng không bao giờ quả 100 độ C
"- BấI kỉ lúc nào chìa khóa xe chưa vặn tới vị trí khới động, xe số không nỗ
may
“Thuộc tinh an toàn thể hiện trong LTL: Cho công thức LTL và cho T = (Sa
5), đa ) khi đó r4 (uôn luôn A) ding với trạng thái s, nêu và chỉ nếu 4 ding
với mọi s trong % mà j 2+ ý
Công thức n4 được gọi là thuộc tính an toàn bởi nó đặc lả sự tính toán an
toàn mà không bao giờ xây ra trường hợp xấu “ba¿”, hay tương tự thế mà luôn xây ra trường hợp tét “good” C6 thé vé sơ dễ thể hiện sự tỉnh toán, mỗi trạng
thái s¡ được gán nhãn 1 nếu 4 ding véi s,, va gan a4 néu4 sai véi s, Nều sơ đồ
được mở rộng với mọi trạng thái được gắn nhãn <4 thì r⁄4 đúng với ss;
= Khi chìa khóa xe vặn tới vị trí khởi động, xe sẽ nỗ máy
= Béng dén sẽ chuyển sang màu xanh
'Thuộc tính #veness thể hiện trong I.TI.: Cho công thức LIT 4 va t~ (Sa Sp
sa ), khi đó 944 (cuối cùng thì 4) dúng với trạng thải s; nếu vả chỉ nếu 4 dùng
với một vai s, trong + mà / > ï
Công thức 9⁄4 được gọi là thuộc tính liveness béi nd dic t4 trong sy tinh
toán luôn có một vài trường hợp tất “geod”
1.5.2.3 Thuộc tinh céng bang (Fairness)
Tinh công bằng đấm bảo rằng nếu một sự kiện nào đỏ ở trạng thái
được thực thị thì đến một lúc nào đó nó sẽ dược thực thị
Trang 19
Công bằng yếu (Weak Fairness) dim bao néu mét su kiện được kích hoạt
liên tục thì sẽ xãy ra về hạn lần
Công bằng mạnh (Stronp Fairsss) đảm bảo nếu một sự kiện được kích hoạt vô hạn lần thì sẽ xây ra vô hạn lần
Mét vi du cho tinh công bằng trong một hệ ông truyền — nhần lả khi một
gói tin được gửi đi thi đền một lúc nào đó nó sẽ đền được đích
1.6 Máy trạng thái hữu han
1.6.1 Dịnh nghĩa máy trạng thái hữu hạn
Có rất nhiều mô hình được sử dụng trong kiểm chứng phần mềm, trong đó
có mô hinh máy hữu hạn Irạng thái — Finite State Mĩachines (ƑSM)
Máy hữu hạn trạng thái là một Automata đơn giản có thể được định nghĩa
như sau
Máy hữu hạn trạng thái là một bộ ă — <7, 6Ó s„ đ, A> Trong dó
1: Tập các yêu tổ đầu vào;
Š: Tập các trạng thái;
O: Tập thông tin đầu ra:
sơ: Trạng thái ban đầu,
ổ: SxI — S$ là hàm chuyển trạng thái;
Â:8xI >O là hàm thông tin đầu ra
Ví dụ 1.3: Máy trạng thái hữu hạn được thể hiện dạng đỗ thị:
5 = {6(Sp,0) = So, 8(Sa,1) = Si, d(S1,0) = So, (31.1) = Sz, d(52,0) = Ss,
(82,1) ~ Sa, d(83,0) ~ So, 6(S9,0) — So, 683.1) — Si}:
Trang 20A = 18,0) = 0, Ấ(So,1) = 0, Ä(S¡,0) = 0, Ấ(§¡,1) = 0, Ấ(S;,0) =0, A(8;,1)
=0, Ä(8a.0) = 0, A(Ss,1) = 0}
Mô hình máy hữu hạn trạng thái FSM được sử dụng để mô tả hoat động của
nhiều hệ thông trong thực tế
1.6.2 Các máy trạng thái hữu hạn trao đổi thông tin
Các máy trạng thái hữu hạn trao đổi thông tin với nhau qua việc truyền các
thông báo một cách đồng bộ Trong quá trình truyền giữa các nhãn cần có sự đồng bô hóa giữa thông điệp gửi m (1m) và thông điệp nhận (?zm) Việc truyền
đồng bộ chỉ được thực hiên khi thông điệp gửi và thông điệp nhận là đồng thời
và tương ứng [Š}
Sending m Receiving m
Hình 1.4: Truyền thông điệp đồng b6 héa (!m, 2m), (2m, !m) [5]
Trong quá trình đồng bộ hóa, các thông điệp không được truyền ngay khi gửi Do đó các kênh truyền được xem như bộ đêm giới han dang FIFO (First In First Out) [5]
Hình 1.5: Đằng bộ hóa thông điệp [5]
Trang 21CHƯƠNG 2: GIỚI THIỆU VE SPIN VA PROMELA
Để kiểm chứng mỗ hình phần mềm sử dụng kỹ thuật kiểm duyệt mỗ hình
cần có những công cụ hỗ trợ, cụ thể là Spin Hé co thể làm việc được với Spin
chúng ta phải xây dựng mô hình hệ thống bằng ngồn ngữ mô hình hóa Promela
'Irong chương này sẽ trình bày về những khái niệm cơ bản của ngồn ngữ mô hình hóa Promela, công cụ kiếm chứng 5pin, giao điện người dùng Xspin, cách kiểm chứng một chương trình Promela trong Spin, và giới thiệu về logic thời
gian tuyến tính để biểu điễn tính chất cần kiêm chứng và các thuộc tính tuyến
tinh
2.1 Ngôn ngữ Promela
Promela IA ngồn ngữ mô hình hỏa dùng để mô tá hệ thống dồng thoi [3]
Chẳng hạn như hệ thống diện thoại, chương trình giao tiếp da luồng, giao thức mạng Nó là ngôn ngữ không tắt định, có cú pháp vả ngữ nghĩa tương tự ngôn
net C [9]
2.1.1 Cấu trúc chương trinh Promeia
Cấu trúc cơ bản của một trương trình Promela [1]:
"_ Các khai báo kiểu vả khai báo biến,
" Khai báo tiến trinh,
" Tiểntrình iniL
Chẳng hạn, cấu trúc chương trình Promela
/*Các khai báo kiểu và biên */
mtype ={ABC, DEF}
Một chương trình Promela chứa các tiễn trình các tiền trình được khai báo
và có thé có tham số hay không, nhung luôn phải có cặp ([danh sách tham số)
Trang 22theo sau tên tiến trình Các lệnh trong tiến trình được viết trong cặp {các lệnh
trong tiến trinh}, lời chú thích được đặt trong cấp /“lời chủ thich*/
Ví dụ2.1
active proctype P(j {
int value — 123; “* khai báo biến value kiéu byte va khỏi tạo bằng 123
it reversel; ¿* khai bảo biễn reversed kiểu imí *⁄
reversed = (value % 10) * 100 1 ({value / 10} % 10) * 10+
Cũng như hầu hết các ngôn ngữ lập trình có dấu trúc, Dromela yêu cầu ác
biến phải được khai báa trước khi chúng được sử dụng Khai báo biến trong
Tromola giống trong ngôn ngữ lập trình C, bắt đầu lä kiểu đữ liệu cơ ban theo sau la một hay nhiều biển được định nghĩa và khởi tạo Các biến có kiểu dữ liễu
cơ bản được mặc định giá trị khởi tao 14 0 Citing nhu trong (, Ú† được xem lả sai,
các piá trị khác 0 duoc xem là đúng Miệt biển trong Promela có thể là toàn cục
hay cục bộ
Vi dụ 2.2: khai báo biến trong Promela
byte count, total = 4;
Trong vi dy 2.2 biến count va total c6 kiéu byte, biến roiai được khởi tạo
giả trị là 4
2.1.3 Kiểu dữ liệu
2.1.3.1 Các kiểu dữ liệu cơ bản trong Promela
Các kiểu dữ liệu cơ bản trong Promola được liệt kê trong bằng sau
Bang 2.1: Các kiểu dữ liệu cơ bản trong Promela |1 |
Trang 23
Khai báo mảng trong ví đụ 2.3 sẽ tạo ra một mang max — 1 phân tử kiểu
nguyên: /ablej 0|, fable{ 1], , tablefmax-I]
"_ Kiểu cdu tric (ban ghi}
Hinh nghĩa kiểu: Để định nghĩa một kiểu mới, ta sử dụng tir khéa typedef Với tupedeƒ ta có thé dinh nghĩa dược đữ liêu kiểu cầu trúc tương tự như Ơ Và giải quyết được vẫn đề mảng 2 chiều khi Promela không hỗ trợ mảng n chiều
Vi du 2.4: Sir dung typedef dé dinh nghĩa kiéu message
Trong ví dụ 2.5 định nghĩa kiểu cầu trúc
Biển cầu trúc trong Promela được truy cập giống ©, chẳng hạn với kiểu câu trúc được khai báo trong vỉ dụ 2.5, khai bảo biển message có kiểu zng, và sau
đó truy cập tới từng phần tử trong cầu trúc qua biến cầu trúc zessage
Trang 24Ví dụ 2.6: Khai báo kiểu liệt kế
mtype = {line_clear, train_online, line_blocking};
"_ Dũ hậc kiểu kênh
“Trong Promala, với dữ liệu kiểu kênh có 2 toán tử ! (gửi) và ? (nhận),
Cấu trúc khai báo kênh:
chan ch = [dung lượng] dƒ/(Miểu dữ liệu 1 kiểu đữ liệu m};
Ví dụ 2.7
chan in_data = [8] of {byte};
Trong ví dụ 2.7 khai báo kénh in đưzz có thể lưu trữ 8 thông diép kidu byre
Ngoài ra còn có thể truyền nhiều thông tim
Vidu2.8
chun out_data — {8} of {hyte, bool}
Kénh out_data trong ví dụ 2.8 có thể lưu trữ 8 thông diệp, các thông diệp
có thể là kiểu by/e hay kiểu bool
Truyền dữ liệu kiểu kênh:
© Gửi thông điệp
Tên tiên trình lbiểu thức l, , biểu thức m
Ví dụ 2.9
int_data! x—I, true, in_data,
1 ảnh gửi dược thực hiện lchi kênh còn có thể chửa thông diệp (kênh
không đầy),
® Nhận thông điệp
Tên biến kênh ? biến 1, , biển n;
Ví du 2.10:
out_data ? value!, value2;
Lệnh nhận được thực hiện khi có thông điệp được gửi qua kênh
(kênh không rỗng)
Các phép toán kiểm tra điều kiện kênh:
o_ Để biết độ dài ctia kénh str dung toan tt len: lenfin_data)
o Kiém tra kénh ring, day để cho phép thông điệp được nhận
hay gửi:
ˆ Kiểm tra ring: empiyfin data}
*“ Kiểm tra dầy: fidl(out_data)
© Cac biểu thức trong lệnh gửi thông điệp sẽ tính toán giá trị thu được
là thông điệp truyền trên kênh, lệnh nhận thông điệp được thực thị
sau khi nỏ gán các giá trị này cho các biển của nó
Trang 25lrơng Promela có hai loại kénh la Rendezvous channels va
Buffered channels Rendezvous channels là kênh được khai báo với
dung lượng là 0 Việc gửi và nhận thông điệp của thành phần gửi và
thành phần nhận là đồng bộ Tức thông điệp được gửi đi sẽ được nhận ngay lập tức Với loại kênh này tiến trình gửi sẽ bị chặn đến
khi lệnh nhận trong tiến trình nhận được thực thi Nếu trong một
tiễn trình có một lệnh gửi (hay một lệnh nhận) được khởi tạo mà
không có lễnh nhận (hay lệnh gửi) nào tương ứng về kiểu thông
diệp thì tiến trình đố sẽ bị khóa #wØøred chammels là kênh được
khai báo với một dung lượng lá hing số nguyên Khi sử dung dang
kênh nảy thì thông điệp sẽ vào ra qua kênh theo dạng FIFO — First
in first out Khi đó các tiễn trinh gửi và nhận sẽ hoạt động không,
đồng bộ
Ví dụ 2.11: Ví dụ hai tiến trình Ciieri0 và Cñieni!, gửi yêu cầu đến
tiển trình khác là Server: thông qua kénh request cé dung luong bing 0
chan request — [0] of {byte};
active proctype Server(){
Giả sở ta muốn dùng một ki hiệu cho một số, ta có thể sử dụng macro
dgfine khai bảo tại đầu chương trình tương tự như ngôn ngữ C:
Trang 26fe pring The light is now %e\n", light)
od
? ‘
Một vải kết quả của lệnh priný/ là
The light is now yellow
‘The light is now red
The light is now green
2.1.4, Dịnh danh, hằng, và biểu thức
Dinh danh cé thể là một chữ cái, một ký tự, một dấu chấm hay đấu gạch
đưới
Hằng số là một chuỗi ký tự đại điện cho số nguyên, số thập phân,
Ví dụ 2.13: địmh nghĩa hing Max có giá trị 999
# define Max 999
Biểu thức: Một biểu thức dược xây dựng tử các biến, hằng số va sit dung
các toán tử được liệt kẽ trong bắng 2.2
Bảng 2.2: Các toán tử trong Promela [1]
Trang 272.1.5.1 Tién trinh process
Mật biến trình procøss được khai báo bắt đầu bởi từ khóa proctype va chira
"Tên tiến trình
" _ anh sách tham số hình thức
"_ Khai báo biến cục bộ
= ‘Than tién trinh
Cú pháp khai báo tiễn trình:
proctype name process (/*danh sach tham số hình thức®⁄)
Một tiến trình tmf có đạng:
init [/* Các khai báo biến cục bộ và các câu lệnh)
Vi dụ 2.14: chương trình Promela đơn giản nhất
init {skip;}
/“Trong tién trình trên không có biéu tite nao*/
Mật tiến trình process được khai bao qua từ khéa proctype, viée cai đặt và
thực thị tiến trình được thực hiện qua tiến trình ii
Ví dụ 2.15
proctype hellof)— £
printf{“Hello”);
3 proctype word() ƒ
print Word”);
Trang 28init {
run hellof);
run word{);
? R ‘
Trong vi du 2.15, ban đầu tạo hai tiên trinh Ael/of) va word{), hai tiên trình
này được thực hiện sau khi tiến trình iz được thực hiện Toán tử zưn chỉ có thể
hoạt động khi các tiến trình có thể được thực hiện Một tiến trình có thể bị khóa
nếu có quá nhiều tiến trình cùng thực hiện
Nhiéu trường hợp việc khai báo tiến trình sử đựng từ khóa acfive giống như
khai bao proctye bằng cách dùng mảng có hậu tố tùy chọn theo sau từ khóa
Trong vi du 2.17 sé tạo ra 4 trường hợp của tiến trình helio và 6 trường hợp
của tiền trình word.
Trang 292.1.6.1, Rum va tién trinh init
Cách khởi tạo tiến trình trong tiến trinh init 1a dùng toán tử rưø, khi tiến
trình được khai báo mà không có từ khóa acfive
'Liển trỉnh iz2() luôn được khởi tao đầu tiền nên luôn có giả — 0
run A();
run BỊ);
}
2.1.6.2 Atomic
Các lệnh được đặt trong 4omic { } sẽ được thực hiện như một lệnh độc lập
và không bị oác lệnh khác ngoài nó chen vào Việu sử dụng œfomie nhằm giảm
sự phức tạp của mô hình cần kiểm đuyệt
Doan mi trong vi dy 2.19 tuong duong véi # = atl;
Có thể sử dụng atomic dé két hop các câu lệnh giữa các tiến trình
Trang 30Trong ví dụ 2.20 sau khi khối lệnh Ở trong tiến trình 4 được thực thị, giá trị
1 @iểu œ) dược gửi cho kênh ch có kiểu pặp (lệnh ch!7; được thực hiền), tiến
trình # nhận dữ liều trên kênh (cñ??) và khôi lệnh # được thực thị, khi khối lệnh
# kết thúc, việc thực thi sẽ tự động chuyển về tiến trình 4 và thực thị khối lệnh
Đ
Atomic duge st dung để khởi tạo một số các tiền trình và đấm bảo không một tiền trình nào được thực hiện cho tới khi tất cả các tiễn trinh trong nó đều được thực hiện
Ví dụ 2.21: khởi tạo hai tiến trình P, g
Trong ví dụ 2.21 do tiến trình øuữ đã được khởi tạa và có thể chạy, khi đó
một trong hai tiến trình P, Q có thể được chạy trước khi tiến trình cón lại được
khối tạo, diều đó là bất lợi, do vậy việc bổ sung a#omie sẽ loại bö được diều nay
atomic {
run PQ);
run Of)
}
Trang 312.1.7 Cầu trúc điều khiến
‘Trong vi du 2.23 sau khi tính dược giá trị của đ, cấu trúc ÿý sẽ kiểm tra pid
trị của đ theo từng trường hợp, va trong vi dụ này sẽ mì ra kết quả là 0
Trang 32Lénh if va do thé hién tinh không tất định của Promela: Nếu hai hay nhiều
biểu thức logic có giá trị re, chuỗi lệnh theo sau một biểu thức bất kỳ trong số
2.2.1 Kiểm chứng chương trình trong Spin
2.2.1.1 Đặc trưng cia SPIN
Spin (Simple Promela Interpreter) ld mét công cụ kiếm chứng, nó hỗ trỡ
ngôn ngữ đặc tả hệ thống Promela Spin duoc ding để theo dõi những lỗi logie ở
trong những bản thiết kế của hệ thống phân tán như hệ điều hành, giao thức
truyền thông đữ liệu, thuật toán song song, giao thức báo hiệu tàu điện, Ta có
thể sử dụng Spin mả không cần phải dựng lên mô hình đưởi dạng đồ thi trang
thái [5]
Spin hé tro kiểm chứng mọi thuộc tính yêu cầu có thể biểu diễn đưới đạng
LTL (Lincar Temporal Logic — Logie thời gian tuyển tỉnh), hoặc cũng có thể sử
đụng các khẳng dinh — assertion dễ đặc tả một số thuộc tính cần kiểm chứng
Ngôn ngữ dic Lá Dromcla được sử dụng dễ diễn tá mê hinh hệ thông và
thuộc tính của nó dễ kiểm chứng mô hình
Spin có thế mô phỏng sự thực thi của hệ thông
Việc sử dụng Spin rất đơn giản, hiệu quả cao, vả nó phủ hợp đề kiếm
chứng hệ thống phân tán
8pin không hỗ trợ kiểm chúng hệ thống võ hạn trạng thái
Trang 332.2.1.2 Mô hình hệ thống trung SPIN
Các hệ thống được mê hình hóa trong 8pin như là một tập các tiễn trình (mạng các Automata), được chạy song song theo chế độ dan xen vá giao tiếp với nhau qua các thông diép hay qua chia sẻ các biến
Uinh 2.1: mô bình của hệ thông trong Spin [5J
2.2.1.3 Cầu trie cia Spin
Cầu trúc cơ bân của Bpin được thể hiện trong hinh 2.2 Ludng công việc bắt
đầu từ việc đặc tả mô hình ở mức cao của hệ thống hiện thởi, qua giao diễn
tront-End của Xspin (giao diện đồ họa người đùng của Spin), sau đó kiếm tra lỗi cú pháp, thực hiện mô phỏng tương tác cho đến khi người dủng nhận được sự tin cậy cơ bản mô hình thuộc tính mong đợi Một chương trình Promel đúng đắn
có thể yêu cầu được tạo từ một công thức được đặc tả trong logic thời gian tuyển tinh (LTL) Sau đỏ Spin được sử dụng để tạo một chương trình xác minh tối ưu
Chương trình xác mmh này được biên dịch với thời gian biên dịch có thể được
chon trước, và sau đó thực hiển xác minh chính nó Néu bất ky phan vi du nao
thỏa mãn yêu cầu Linh dùng dắn được phát hiện thì chúng có thể dược dưa trở lại
để mô phông trong Spin Việc mỗ phỏng có thể được kiểm tra chỉ tiết để xác
định nguyền nhân [3]