Trên thế giới đã có rất nhiều bài báo, đề tài, công trình nghiên cứuvề kiểm chứng mô hình, về các hướng khác nhau của kiểm chứng môhình nhưng hướng nghiên cứu tập trung vào giải quyết vấ
Trang 1ĐINH QUANG ĐẠT
NGHIÊN CỨU PHƯƠNG PHÁP KIỂM CHỨNG MÔ
HÌNH PHẦN MỀM DỰA TRÊN SAT
Ngành: Công Nghệ Thông Tin
Chuyên ngành: Công Nghệ Phần Mềm
Mã số: 60 48 10
TÓM TẮT LUẬN VĂN THẠC SĨ
Hà Nội - 2013
Trang 2Trên thế giới đã có rất nhiều bài báo, đề tài, công trình nghiên cứu
về kiểm chứng mô hình, về các hướng khác nhau của kiểm chứng môhình nhưng hướng nghiên cứu tập trung vào giải quyết vấn đề bùng nổkhông gian trạng thái trong kiểm chứng mô hình luôn luôn là đề tàimang lại nhiều tranh luận, cảm hứng cũng như nghiên cứu nhất Tácgiả muốn nghiên cứu về vấn đề kiểm chứng mô hình liên quan tới vấn
đề bùng nổ không gian trạng thái của kiểm chứng mô hình với một kỹthuật mới nhất hiện nay đó là Bounded Model Checking (BMC) dựatrên SAT Đồng thời dựa trên các kết quả đã được nghiên cứu tìm hiểu,tác giả cũng cài đặt thực nghiệm sử dụng kỹ thuật đã nghiên cứu, tìmhiểu
Chương 1: Kiểm chứng mô hình 1.1 Giới thiệu về kiểm chứng mô hình
1.1.1 Giới thiệu
Tầm quan trọng cũng như sự phức tạp của hệ thống ICT tăng lênnhanh chóng Các hệ thống ICT không còn độc lập, mà được nhúngvào một hệ thống lớn, tương tác và kết nỗi với các thành phần và hệthống khác Do đó, chúng trở nên dễ bị lỗi - số các lỗi phát triển theocấp số nhân đối với số các tương tác với các thành phần hệ thống Đặcbiệt, tính tương tranh và tính không đơn định của mô hình tương tác hệthống lại khó xử lý với các kỹ thuật chuẩn Độ phức tạp của hệ thốngICT ngày càng tăng cùng với những áp lực làm cho thời gian phát triển
hệ thống, điều này đã làm cho việc cung cấp các hệ thống ICT với ítkhuyết điểm là vô cùng khó khăn và phức tạp
1.1.2 Kiểm định trong phần cứng và phần mềm
Trang 3Kiểm định hệ thống được sử dụng để xác minh xem hệ thống có đạtđược những đặc tính nhất định Các đặc tính được kiểm chứng có thểrất cơ bản, ví dụ, một hệ thống không nên đến được trạng thái mà ở đó
tiến trình không thể thực hiện (kịch bản của deadlock), và chủ yếu được
lấy từ đặc tả của hệ thống Đặc tả này quy định những gì hệ thống phảilàm và những gì không, và do đó tạo nên cơ sở cho bất kỳ hoạt độngkiểm định nào Một khuyết điểm được tìm thấy một khi hệ thống khôngđáp ứng được một trong các thuộc tính của đặc tả Hệ thống được xemxét là "đúng" (correct) khi hệ thống thỏa mãn tất cả các thuộc tính lấy
từ đặc tả của hệ thống Vì vậy, tính đúng đắn luôn luôn tương đối vớiđặc tả, và không có một thuộc tính tuyết đối của hệ thống Một sơ đồcủa kiểm định được mô tả trong hình 1
Thi ế t k ế
(Design)
Ki ể m ch ứ ng (Verification)
Không tìm th ấ y
l ỗ i Tìm th ấ y l ỗ i
Hình 1: Sơ đồ kiểm định hệ thống
1.1.3 Kiểm chứng mô hình
Kiểm chứng mô hình (Model Checking) là một kỹ thuật kiểm chứng
xem xét tất cả các trạng thái có thể của hệ thống theo cách vét cạn.Tương tự như chương trình chơi cờ của máy tính kiểm tra những nước
đi có thể, model checker, công cụ giúp cho việc kiểm chứng mô hình,
xem xét tất cả các kịch bản hệ thống có thể xảy ra theo một cách có hệ
thống Model checker kiểm tra tất cả các trạng thái có liên quan của hệ
thống để kiểm tra xem chúng có thỏa mãn với đặc tính mà bạn mong
Trang 4muốn hay không Nếu trạng thái gặp phải là vi phạm đặc tính đang xem
xét, model checker sẽ cung cấp một phản ví dụ cho thấy việc làm thế
nào mà mô hình có thể tới được trạng thái không mong muốn Phản ví
dụ cũng mô tả một đường dẫn thực thi có thể dẫn tới từ những trạngthái khởi tạo của hệ thống tới những trạng thái vi phạm thuộc tính đangđược kiểm chứng Với sự giúp đỡ của mô phỏng, người sử dụng có thểxem lại các kịch bản vi phạm để có được những thông tin gỡ lỗi có ích
và tích hợp các mô hình phù hợp (xem hình 2)
Ki ể m ch ứ ng mô hình (Model checking)
Y ề u c ầ u
(Requirements)
L ỗ i đị a ph ươ ng (Location error)
Th ỏ a mãn
(satisfied)
H ệ th ố ng (System)
Đặ c t ả thu ộ c tính
(Property specification)
Mô hình h ệ th ố ng (System model)
Vi ph ạ m, ph ả n ví d ụ (Violated, counterexample)
Mô ph ỏ ng (Simulation)
Mô hình hóa (Modeling)
Hình th ứ c hóa
(Formalizing)
Hình 2: Sơ đồ tổng quan hướng tiếp cận kiểm chứng mô hình
1.1.4 Các tiến trình trong kiểm chứng mô hình
Trong việc áp dụng kiểm chứng mô hình để thiết kế các pha khácnhau như sau:
• Pha Modeling:
– Mô hình hóa hệ thống dưới sự xem xét bằng cách sử dụng
ngôn ngữ mô tả mô hình của model checker bằng tay.
– Kiểm tra tính đúng đắn trước tiên và các đánh giá nhanhcủa mô hình để thực thi một vài mô phỏng
– Mô hình hóa các đặc tính để kiểm tra sử dụng ngôn đặc tảcác thuộc tính
Trang 5• Pha Running: chạy model checker để kiểm tra tính hợp lệ của
thuộc tính trong mô hình hệ thống
• Pha Analysis:
– Thuộc tính có an toàn hay không?→ kiểm tra thuộc tínhtiếp theo (nếu có thể);
– Thuộc tính có vi phạm hay không?→
∗ Phân tích phản ví du được sinh ra từ mô phỏng
∗ Làm mịn mô hình, thiết kế, và các thuộc tính
• Cho phép tập trung vào những đặc tính quan trọng trước tiên.Không có đặc tả yêu cầu nào trọn vẹn là cần thiết
• Dễ dàng tích hợp trong vòng đời phát triển hiện có;
• Dựa trên một nền tảng toán học vững chắc;
Mặt yếu của kiểm chứng mô hình:
• Chưa phù hợp với các ứng dụng chuyên về cơ sở dữ liệu
Trang 6• Tính toán không hiệu quả đối với hệ thống vô hạn trạng thái hoặcluận lý về kiểu dữ liệu trừu tượng.
• Không kiểm chứng hệ thống thực sự
• Kiểm tra những trạng thái yêu cầu Không có đảm bảo nào làkiểm tra được hết các trạng thái
• Vướng phải vấn đề bùng nổ không gian trạng thái
• Đòi hỏi phải có một số chuyên gia trong việc trừu tượng hóa hệthống để có được mô hình hệ thống nhỏ hơn với ít thuộc tínhtrạng thái hơn
• Không đảm bảo mang lại kết quả chính xác
• Không cho phép kiểm tra một cách tổng quát
Định nghĩa 1.1 Hệ thống dịch chuyển(Transition Systems)
Một hệ thống dịch chuyển TS là một bộ (S , Act, −→, I, AP, L) với
• S là tập hợp các trạng thái,
• Act là tập hợp các hành động,
• −→⊆ S × Act × S là một quan hệ dịch chuyển,
• I ⊆ S là tập hợp các trạng thái khởi tạo,
• AP là tập hợp những mệnh đề nguyên tử, và
• L : S −→ 2 AP là một nhãn của hàm.
Trang 7T S được gọi là hữu hạn nếu S , Act, và AP là hữu hạn.
1.2.2 Logic thời gian
Đối với các hệ thống phản ứng (reactive systems), tính đúng đắn
phụ thuộc vào sự thực thi của hệ thống, không chỉ là đầu vào và đầu
ra của việc tính toán mà còn là vấn đề công bằng (fairness) Logic thời
gian là một hình thức vượt trội để xử lý các vấn đề này Logic thời gian
mở rộng logic mệnh đề hoặc logic tân từ bằng cách cho phép chuyểntới hành vi vô hạn của một hệ thống phản ứng Chúng cung cấp các kýhiệu một cách trực quan nhưng có một nền tảng toán học chính xác đểdiễn tả tính chất về mối quan hệ giữa các nhãn trạng thái trong thưc thi.Các hình thức cơ bản của thời gian được thể hiện trong phần lớn cáclogic thời gian bao gồm hai toán hạng:
♢(hay còn được ký hiệu là F): cuối cùng trong tương lai.
(hay còn được ký hiệu là G): bây giờ và sau này trong tương lai.
1.2.2 Logic thời gian tuyến tính (LTL)
Lý luận của logic thời gian tuyến tính qua những dấu vết tuyến tínhtheo thời gian Ở mỗi thời điểm, chỉ có một lịch trình trong tương laithực sự xảy ra Thông thường, lịch trình được định nghĩa như bắt đầu
ở “hiện tại” (now), trong các bước thời gian hiện hành, và tiến triển vô
hạn trong tương lai
Định nghĩa 1.2 Công thức của mệnh đề LTL
Những công thức của mệnh đề logic thời gian PTL trong thời gian
tuyến tính được định nghĩa quy nạp như sau:
- Mọi mệnh đề cơ bản v ∈ V là công thức.
- Hợp của hai mệnh đề là một mệnh đề.
- Nếu φ và ψ là các công thức thì Xφ và φUψ cũng là các công thức.
Định nghĩa 1.3 Quan hệ nắm giữ LTL
Quan hệ σ |= φ (σ nắm giữ của φ) được định nghĩa quy nạp như sau:
- σ |= v (với v ∈ V) khi và chỉ khi v ∈ σ0(V)
Trang 8- Ngữ nghĩa của phép hợp được định nghĩa như bình thường.
- σ |= Xφ khi và chỉ khi σ1|= φ.
- σ |= φU khi và chỉ khi với một số k ≥ 0, σ| k |= ψ và σ| j |= φ nắm giữ với mọi 0 ≤ j ≤ k.
Những công thức PTL hữu ích khác có thể được đưa ra như những
từ viết tắt: Fφ (“cuối cùng φ”) được định nghĩa như true U φ; nó khẳng
định rằngφ nắm giữ của một vài hậu tố Công thức kép Gφ ≡ ¬F¬φ
(“luôn luôn”φ) yêu cầu φ nắm giữ tất cả các hậu tố Công thức φWψ
(“ φ chờ đợi ψ”,“φ trừ khi ψ”) được định nghĩa như (φUψ)∨Gφ và yêu
cầuφ nắm giữ cho đến khi ψ không nắm giữ; không giống như φUψ,
nó không yêu cầuψ trở thành đúng ở sau cùng
1.2.3 Logic tính toán cây CTL
Các công thức PTL khẳng định các thuộc tính của các hành vi đơn
lẻ, nhưng chúng cũng quan tâm đến giá trị của hệ thống: chúng ta nóirằng công thứcφ nắm giữ của T (viết là T |= φ) nếu φ nắm giữ của tất
cả các hoạt động củaT Theo nghĩa này, các công thức PTL biểu thị
các tính chất đúng đắn của hệ thống Sự hiện diện của một hoạt động
thỏa mãn một thuộc tính nhất định không thể biểu thị trong PTL Các
thuộc tính có khả năng như vậy thuộc về logic thời gian phân nhánh
như logic CTL Trong mô hình thời gian nhánh, tại mỗi thời điểm t có
thể có rất nhiều khả năng trong tương lai Với những khả năng tương
lai tương ứng là một đường đi được tổ chức từ t Do đó, một đường đi
biểu diễn một khả năng xảy ra trong tương lai Các toán tử thường biểuthị hoặc là “A” nghĩa là với mọi khả năng trong tương lai diễn tả luônluôn, chắc chắn hoặc là “E” nghĩa là có thể tồn tại khả năng tương laidiễn tả sự có thể, không chắc chắn
Định nghĩa 1.4 Công thức mệnh đề CTL
Các công thức của mệnh đề CTL được định nghĩa quy nạp như sau:
- Mọi mệnh đề nguyên tử v ∈ V đều là công thức.
- Hợp của hai mệnh đề là một mệnh đề.
Trang 9- Nếu φ và ψ là các công thức thì EXφ, EGφ, và φEUψ là các công thức.
Định nghĩa 1.5 Quan hệ nắm giữ CTL
Quan hệ T , s |= φ được định nghĩa theo quy nạp như sau:
- T , s |= v (với v ∈ V) khi và chỉ khi v ∈ s(V).
- Ngữ nghĩa của phép hợp được định nghĩa như bình thường.
- T , s |= EXφ khi và chỉ khi tồn tại một s-path s0s1 sao cho
T , s1|= φ.
- T , s |= EGφ khi và chỉ khi có một s-path s0s1 sao cho T , s i |=
φ nắm giữ với mọi i.
- T , s |= φEUψ khi và chỉ khi tồn tại một s-path s0s1 và k ≥ 0 sao cho T , s k |= ψ và T , s i |= φ nắm giữ với mọi 0 ≤ j < k.
Các công thức CTL được suy ra gồm có EFφ ≡ true EU φ, AXφ ≡
¬EX¬φ, và AGφ ≡ ¬EFφ Những biểu diễn của CTL và PTL có thể
được so sánh bằng cách phân tích các thuộc tính của những hệ thốngdịch chuyển có thể được xây dựng Nó chỉ ra rằng, không thể xếp gộp
logic vào nhau được Trong khi PTL không thể đủ khả năng để thể
hiện các các tính chất về khả năng, thì tính công bằng không thể được
trình bày trong CTL Cụ thể hơn, không có công thức CTL làm cho hệ thống hợp lệ với trường hợp công thức PTL là FGφ Đặc biệt, không
có sự tương ứng với AFAGφ(xem hình 3): mọi hoạt động của hệ thốngdịch chuyểnT thỏa mãn FGp (hoặc là ở trạng thái s0mãi mãi hoặc là
kết thúc ở trạng thái s2), nhưngT , s0 ̸|= AFAGp (với hoạt động ở tại trạng thái s0luôn luôn có những khả năng chuyển tới trạng thái s1)
S 0 S 1 S 2
Hình 3: Một hệ thống dịch chuyển T mà T |= FGp nhưng T ̸|= AFAGp.
Chương 2: Vấn đề bùng nổ trạng thái và giải quyết hướng cổ điển
Trang 102.1 Vấn đề của bùng nổ không gian trạng thái trong kiếm chứng
mô hình
Số lượng các trạng thái của một mô hình có thể rất to lớn Một ví
dụ, xem xét hệ thống gồm n tiến trình, mỗi tiến trình có m trạng thái.
Do đó, sự hợp thành không đồng bộ của các tiến trình có thể có m n trạng thái Tương tự vậy, trong n − bit bộ đếm, số lượng các trạng thái
của bộ đếm trong là hàm mũ của số lượng các bit, nghĩa là có 2n Trongkiểm chứng mô hình vấn đề này được biết như vấn đề bùng nổ trạngthái Tất cả các công cụ kiểm chứng đều gặp phải vấn đề này, và đây làđiều không thể tránh khỏi Tuy nhiên, đã có nhiều kỹ thuật được đươcđua ra để giải quyết vấn đề bùng nổ trạng thái Những kỹ thuật nàythường xuyên được sử dụng trong các ứng dụng công nghiệp của kiểmchứng mô hình Đã có nhiều tiến bộ quan trọng trong việc giải quyếtvấn đề bùng nổ trạng thái Một trong những tiến bộ quan trọng đầu tiên
là sử dụng kiểm chứng mô hình biểu trưng (symbolic model checking)
với lược đồ quyết định nhị phân (BDD) Trong hướng tiếp cận này, mộttập hợp các trạng thái được biểu diễn bởi BDD thay vì biểu diễn danhsách của mỗi trạng thái riêng lẻ Biểu diễn BDD thường theo hàm mũnhỏ trong thực tiễn Kiểm chứng mô hình với các BDD được thực thi
sử dụng thuật toán điểm cố định (fixed point) Một hướng đi khác đang
được áp dụng nhiều trong ngành công nghiệp hiện nay là kiểm chứng
mô hình giới hạn (bounded model checking) khai thác bộ giải công cụ SAT (SAT Solver) để tìm kiếm các phản ví dụ của độ dài giới hạn Luận
văn nêu tìm hiểu về kiểm chứng mô hình biểu trưng với BDD và tậptrung vào kiểm chứng mô hình giới hạn dựa trên SAT
2.2 Cách giải quyết theo hướng tiếp cận cổ điển với BDD
Ý tưởng chính của kiểm chứng mô hình tượng trưng là thể hiện
và thao tác với một hệ thống hữu hạn chuyển trạng thái như một hàmBoolean Cụ thể, các lược đồ quyết định nhị phân sắp xếp (OBDDs) làmột dạng chính tắc của các công thức Boolean OBDDs về bản chất là
cô đọng hơn so với các dạng chuẩn truyền thống, hơn nữa OBDDs cóthể thao tác rất hiệu quả
Xem xét các công thức Boolean qua n biến x1, x2, , x n Một lược đồquyết định nhị phân (BDD) là đồ thị có hướng không có vòng và cómột gốc với hai loại đỉnh là đỉnh kết thúc và đỉnh không kết thúc Mỗi
Trang 11đỉnh không kết thúc v được gán nhãn bởi một biến var(v) và có hai phần tử kế tiếp, low(v) và high(v) Mỗi đỉnh kết thúc v được gán nhãn bởi 0 hoặc 1 qua hàm Boolean value(v) Một BDD với gốc v xác định một hàm Boolean f v (x1, , x n) theo cách sau:
• Các nút lá được ánh xạ tới các nút lá, và các đỉnh được ánh xạ tớicác đỉnh
• Với mọi nút lá v, value(v) = value(H(v)).
• Với mọi đỉnh v:
• var(v) = var(H(v)).
• H(low(v)) = low(H(v)).
• H(high(v)) = high(H(v)).
Các Biểu đồ chuyển trạng thái có thể được thể hiện với các BDD như
sau Trước tiên, phải thể hiện các trạng thái về n biến trạng thái Boolean
v = (v1, v2, , v n ) Sau đó, thể hiện quan hệ chuyển R như công thức
Boolean về trạng thái các biến
Biểu diễn chính tắc của các hàm Boolean có thể đạt được bằng cáchthay thế hai hạn chế trên cây quyết định nhị phân:
Trang 12• Các biến xuất hiện trong cùng thứ tự theo mỗi đường từ gốc tới
lá (Viết x < y biểu diễn x là trước y trong sắp xếp này)
• Không có cây con đẳng cấu hoặc các đỉnh dư thừa trong lược đồ.Kích cỡ của các BDD phụ thuộc vào sự lựa chon sắp xếp các biến Ví
dụ, BDD thể hiện cho so sanh n-bit là tuyến tính với sắp xếp tốt, nhưng
sẽ là theo hàm mũ với sắp xếp tồi
Biểu đồ chuyển trạng thái có thể được thể hiện với BDD như sau Trước
tiên, thể hiện các trạng thái theo n biến Boolean v = (v1, , v n) Sau đó,
thể hiện quan hệ chuyển R như một công thức Boolean theo các biến
kế tiếp Cuối cùng, chuyển f R thành một BDD
Thủ tục T oBDD lấy đầu vào là một công thức CTL f (v) và trả về là
một BDD thể hiện chính xác các trang thái của hệ thống thỏa mãn côngthức CTL Các phép toán thời gian được xử lý như sau:
• ToBDD(EX f (v)) = ToBDD(∃v′ f R (v, v′)∧ f (v′)).
• ToBDD(EF f (v)) = L f p(λZ.ToBDD( f (v) ∨ EXZ)).
• ToBDD(E[ f (v)∪g(v)]) = L f p(λZ.ToBDD(g(v)∨( f (v)∧EXZ))) Nếu f (v) có dạng ∃v i g, thì ToBDD( f (v)) = ToBDD(g| v i←0∨ g| v i←1)
Cuối cùng, để xem công thức f (v) là true trong tập các trạng thái khởi tạo I(v), kiểm tra xem liệu công thức I(v) ⇒ f (v) có nắm giữ hay
không Cách giải quyết vấn đề bùng nổ không gian trạng thái bằngcách sử dụng kiểm chứng mô hình tượng trưng với BDD đã được ápdụng từ lâu nhưng hiện nay đã không còn áp dụng nhiều nữa vì nhữngnguyên nhân, hạn chế sau:
• BDD phải lưu giữ các trạng thái, nên nó thường xuyên trở nênquá lớn với các hệ thống lớn
• Việc chọn cách sắp xếp các biến rất quan trọng cho việc thu vềnhững BDD nhỏ, thường tốn thời gian hoặc phải làm thủ công,
và đôi khi, không tồn tại những cách sắp xếp biến hiệu quả,