1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận văn kiểm chứng chương trình dựa trên smt

82 1 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Kiểm chứng chương trình dựa trên SMT
Tác giả Lê Thị Hằng
Người hướng dẫn TS. Tô Văn Khánh
Trường học Đại Học Quốc Gia Hà Nội
Chuyên ngành Công nghệ Thông tin
Thể loại Luận văn thạc sĩ
Năm xuất bản 2014
Thành phố Hà Nội
Định dạng
Số trang 82
Dung lượng 891,95 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

thực thi tượng trung và một số kỹ thuật thực thí lượng trưng hiện đại đang được áp dụng trong các công, cụ kiểm chứng, Chương 3 trình bày về SMIT một công cụ giải các công thức logic t

Trang 1

TRUONG DAI HOC CONG NGHE

LE THI HANG

KIÊM CHỮNG CHƯƠNG TRÌNH DUA TREN SMT

LUAN VAN THAC Si CONG NGHE THONG TIN

Hã Nội - Năm 2014

Trang 2

TRUONG DAI HOC CONG NGHE

Lé TH HÀNG

KIÊM CHỨNG CHƯƠNG TRÌNH DUA TREN SMT

Ngành: Công nghệ thông tin Chuyên ngành: Kỹ thuật phần mềm

Trang 3

Tôi xin cam đoan rằng nội dung và những kết quả của luận văn tốt

nghiệp: “Kiểm chứng chương trình dựa trên SMTT là sản phẩm nghiên cứu của

riêng tôi đưới sự giúp đỡ rất lớn từ TS Tô Văn Khánh Tôi không sao chép của người khác Toàn bộ nội dung được trỉnh bày trong luận văn này hoặc là của

chính tôi hoặc là dược tổng hợp tử nhiều nguồn tải liệu khác Tắt cá các tải liệu

tham khảo đều được trích đẫn rõ ràng ở phần cuối của luận văn

Tôi xin hoàn toàn chịu trách nhiệm và chịu mọi hình thức kỷ luật theo quy

định cho lời cam đoan của mình

TR Nội, tháng 11 năm 2014

Học viên

Lê Thị Hằng.

Trang 4

LOT CAM ON

Trude hét, tai xin duge bay té long biét on chan thanh va siu sic dén thay

giáo, TS Tô Văn Khánh người đã dành nhiều tâm huyết và tận tình chỉ bảo giúp

tôi hoàn thiện luận văn này

'Tôi cũng xin pửi lời cám ơn đến tập thể các thầy cô pido trong Khoa

CNTT Trưởng ĐII Công Nghệ - ĐII Quốc Gia Hà Nội Những bài giáng của

thầy cô là nền tăng kiến thức cơ bản giúp tôi hoàn thành luận văn ngày hôm nay

Cuối cùng, tôi xin gửi lời cảm ơn tới gia đình tôi những người thân đã đông viên tồi bằng cả vật chất lẫn tính thần trong suốt thời gian tôi học tập và

thực hiện luận văn này

Tuy rằng, tôi đã cố gắng hết sức trong quá trình làm luận văn nhưng

khéng thể tránh khôi thiếu sót, tôi rất mong nhận được những góp ý của thầy cô

‘va các bạn

TH Nội, thang 11 nim 2014

Học viên

Lê Thị Hằng

Trang 5

MUC LUC

LOI CAM DOAN

LOT CAM ON

MUC LUC

BANG CAC THUAT NGU VIET TAT

DANH MUC HINH VE

Chương 1 GIỚI TIIỆU

1.3 Nội dung luận văn

Chương 2 KIỂM CHỨNG CHƯƠNG TRÌNH VÀ THỰC THỊ TƯỢNG TRUNG 3

2.2.1 Téng quan về thực thi tượng trưng

2.2.3 Thực thí tượng trưng dộng và giải pháp

Chương 3 SATISEFTABILITY MODULO THEORIES (SMT)

3.1 SÁT solver

3.1.1 Bải toán SAT

3.3.2 Thuật toán DPLL cho SMT 28

Chuong 4, KLEM CHUNG DUA TREN KLEE

Trang 6

4.4.2 Tối ưu hóa tập các ràng buộc với KLEE se 2)

1.3 Giải ràng buộc tự động với molaSMT 4§

4.2 Độ bao phú mã nguồn của ca kiểm thử dược sinh bới KI,EE

4.3 Thực thi tương trưng động với KLEE

4.4 Thực thi tượng trưng động và giải pháp của KLEE

4.5 Một số bài toán kiểm chứng và kiểm thử tự động dựa trên KL,EE 57

4.3.1 Kiểm tra lỗi chia cho 0 trong chương trình seen SF 4.3.2 Phat hiện lỗi truy cập ra ngoài kích thước của mảng, 59

4.3.3 Phát hiện lỗi hàm khi đột ngột gọi ham abort "———

4.3.4 Sinh đữ liệu kiểm thử tự động, 63

KET LUAN

Trang 7

BANG CAC THUAT NGU VIET TAT

STT | Thuat nga wiét tat | Thuật ngữ đầy đử

1 DPLL Davis Pulnam Logemann Loveland

2 HGT Lxecution Generated Testing

3 | SAT Satisfiability

4 smMr Satisfiability Modulo Theories

5 | AOT Ahead Of Time

6 JIẺ Just In ‘Time

8 CNE Conyunctive Normal Form

9 | FIFO First In First Out

10 |DAG Direcled Acyclic Graph

Trang 8

DANH MỤC HÌNH VẼ

Hình 2.1 Sơ đỗ của hệ thông kiểm chứng [3] 4

Hinh 2.2 Mô hình hóa cách tiếp cân cúa kiểm chứng mồ hình |3| «e 6 Liinh 2.3 Một đoạn mã nguỗn C1 I và thực thi tượng trưng tương ng 10

Hình 2.4 Một đoạn ruã nguồn chứa vùng lặp 12

Hinh 2.5 Công thức biểu diễn thực thi tượng trung cho vòng lặp ]5|, « L2 Hình 2.6 Doạn mã nguồn Ở chửa biểu thức không tuyến tính se, LB Tinh 2.6 Đoạn ma ngnén C két hop đầu vào cụ thể và tượng trmg, 14 Hinh 3.1.a Hình về mẻ tả thú tục DPLL " Hinh 3.1.b Sơ đồ cơ chễ hoạt động của thủ tục DPLL, eho SAT [6] 23 Tình 3.2 Sơ đỗ tông quan của Booleclor [21] 30 Hinh 3.3 Sơ đồ tổng quan của Z3 |15| àSnnnasriaeeoseeooeue,38 Hinh 3.4 Sơ đỗ kiến trắc của ST'P solver [26] 36

Hình 4.1 Kiến trúc tổng quan cia KLEE 40

Hình 4.2 Kiến trúc của melsSMT [10] 46

Hình 4.3 Biểu thức đầu vào đạng đỗ thi [8| ào, đĐỆ

Linh 4.4 Mô hình quá trình giải ràng buộc cửa mefaSMT [10] 49

Hinh 4.6 là đô thủ luòng điễu khiển của chương trình trên << 30

Hinh 4.5 Ví dụ về mã nguỗn hảm ReturnAverage sài cceoseoeeeeeoeoe.SÔ Llinh 4.6 Đã thị luồng điều khiển của hàm RetumAverager [14] 51

Hình 4.7 Minh họa việc loại đường thực thì dư thừa

Hinh 4.3.1.a Hàm phát sinh lỗi chia cho 0

Ilinh 4.3.2.a [làm phát sinh lỗi cập ngoài kích thước của mảng 60 Hình 4.3.2.b Quả trình thực thí lượng inmg eda cheemg trình phái hiện lỗi truy cập ngoài kích

thước của mắng Ha - " ene 0

[inh 4.3.2.c Cay thie thi trong trmg của chương trình phát hiện lỗi truy cập ngoài kích

Hình 4.3.2.4 Cây thực thí tượng trưng của chương trình phát hiện lỗi truy cập ngoài kích

62

thước của mảng

Tình 4.3.3.a Đoạn mế nguồn có gợi hàm aborlÖ 62

Trang 9

Llinh 4.3.4.a Đoạn mã nguồn sơ sánh hai ehmỗi

Linh 4.3.4.b Thue hiện tượng trưng hóa cho hàm so sánh chuỗi

Hình 4.3.4.c Cây thực thi Lượng trưng kiểm thử hàm so sảnh chuỗi

Hình 4.3.4.d Mô hình quá trình giải các rằng buộc cúa các solvar

64

64

Trang 10

1.1 Đám bản chất lượng phần mềm

Máy tính và phần mềm máy tính ngày cảng đóng vai trô to lớn trong

nhiều lĩnh vực của đời sống xã hội như: kinh tế, giao thông, vũ trụ hay các dịch

vụ y tế trong khám chữa bệnh Thông thường các phần mễm máy tính không

đứng riêng lẻ mà chúng được tích hợp hoặc nhúng trong các hệ thống phức lạp

Cho nên việc đảm báo chất lượng phần mềm là hết sức cần thiết Việc đảm báo

chất lượng phần mềm Irong các lĩnh vực như địch vụ y tế hay vũ trụ hàng không

lại càng được cơi trọng Bởi chỉ một sai sót nhỏ của hệ thống cỏ thể

y ra

những tổn thắt to lớn về tỉnh mạng cơn người cũng như về kinh tế

Trong những năm gần đây, chúng La cũng đã chứng kiến nhiều thảm họa

xây ra mà nguyễn nhân lại nằm ở lễ¡ phần mềm chẳng hạn ngay 04/06/1996 tau

vũ trụ Ariane -5 đã nỗ tung chỉ 36 giây sau khi khởi động [3] Nguyên nhân là

do lỗi chuyển đổi một số dạng dấu phẩy dộng 64 - bịt thành số nguyên dương 16-bit Sự việc nảy xây ra dã lâu, nhưng cho đến nay nó vẫn dược nhắc đến như

một thảm họa khủng khiếp nhất do lỗi phần mềm gây ra

Rất nhiều kỹ thuật dược nghiền cứu và sử dựng để khẳng định tỉnh đúng

đắn của hệ thông Hai kỹ thuật truyền thống đã và đang được sử dụng để đảm

bảo chất lượng phần mềm là kiếm thử phần mềm và kiểm chứng phần mềm

(Bofiware verification) 'Iluy nhiên, việc sử dụng các phương pháp kiểm thử chỉ

làm giảm bớt lỗi của hệ thống mà không thể chứng minh được hệ thống không

có lỗi Cáo phương pháp kiểm chứng đang được quan tâm số một trong việc chứng minh tính đúng đắn của hê thống Phương pháp kiểm chứng mô hình

(model checking) là sự lựa chọn hiệu quả trong việc chỉ ra hệ thống hoạt động

đúng Nhưng phương pháp này lại gặp phải vấn dé bung né trang (hai khi thuc

hiện với các hệ thống lớn, phức tạp trong thực tế

Trang 11

Luận văn trình bảy phương pháp kiểm chứng dựa trên SMT (SAT Modulo

Theories) stt dung thực thi lượng trưng (symbolie execution) là phương pháp

khác thay thé cho phương pháp kiểm chứng mô hình khi thực hiện với các hệ thống phức tạp

1.2 Mục tiêu của luận văn

Mục liêu của luận văn là tìm hiểu và trình bảy về phương pháp kiểm chứng đựa trên SMT Một phương pháp có nhiều ưu diễm cho vẫn dé bing nd

trạng thái của kiểm chứng mô hình

Tuan vin sé trinh bảy về công cụ KL,EE, một công cụ kiểm chứng tự động

sử dụng thực thi tượng trưng kết hợp với ha SMT solver dược đánh giá là hiệu

quả đó là Z3, Boolector va STP Tiếp theo luận văn sẽ trình bày về ứng dụng của

KLEE trong kiểm chứng một số thuộc tính cúa chương trình như phát hiện lỗi

chia cho 0, lỗi trần vùng đêm, lỗi truy cập ra ngoài kích thước của mảng,

1.3 Nội dung luận văn

Luận văn gồm 4 chương, trong đó phần giới thiệu được trình bày trong

chương I

Chương 2 trình bày về kiểm chứng chương trình thực thi tượng trung và

một số kỹ thuật thực thí lượng trưng hiện đại đang được áp dụng trong các công,

cụ kiểm chứng,

Chương 3 trình bày về SMIT một công cụ giải các công thức logic trên lý

thuyết vi lit cap Iva việc áp dụng SMT, thực thi tượng trưng để kiểm chứng,

chương trình trên một số lý thuyết cụ thể

Chương 4 trình bày về công cụ KLEE, thực nghiệm trên công cụ KLEE

và các ứng dụng của nd trong việc kiểm chứng và phát hiện những lỗi của chương trỉnh

Phần kết luận trình bày kết luận quá trình nghiên cứu, đưa ra các kết quả

đạt dược và hướng nghiên cứu tiếp theo.

Trang 12

Chương 2 KIỀM CHUNG CHƯƠI RÌNH VÀ THUC THE

SONG TRU

Kiểm chứng chương trình là một trong những vấn đề quan trọng quyết

định dến chất lượng phần mềm 'Irong chương nay luận văn trình bày về kiểm

chứng chương trình, kỹ thuật kiểm chứng mô hình Dồng thời luận văn cũng trình bày về thực Ứủ tượng trưng (symbolic executon), thực thì tượng trưng đông và một số giải pháp khắc phục những vấn để phát sinh trong thục thi tượng,

trưng

2.1 Kiểm chứng chương trình

Kiểm chứng chương trình là một trong những giai đoạn quan trọng trong

quy trình sản xuất phần mềm Các vẫn để tổng quan vẻ kiểm chứng chương trình, kỹ thuật kiểm chứng mô hình sẽ được trình bày ngay sau đây

2.1.1 Tổng quan về kiểm chứng chương trình

Hai kỹ thuật chủ yếu được áp dụng để đám bảo chất lượng phần mềm hiện

nay đỏ là kỹ thuật kiểm thứ (Software testing) va ky thuật kiểm chứng (Safiware

verification) Trong khi các kỹ thuật kiểm thử chỉ được thực hiện khi đã có mã

nguồn hệ (hồng và cũng chỉ cỏ khả năng phảt hiện những lỗi hoặc khiếm khuyết của hệ thẳng mà không thể khẳng định dược là chương trình không cỏn lỗi Do

đỏ, áp dụng kỹ thuật kiểm thử không thôi thi chưa đủ để đảm bảo chất lượng của

hệ thống Các kỹ thuật kiểm chứng có thể piải quyết dược vấn để này

Kiểm chứng [I] là hoạt động giúp đảnh giá một hệ thông phần mềm bằng

cách xác định sản phẩm ở các pha phát triển có thỏa mãn các đặc tả yêu cầu

phần mềm hoặc các thuộc tính của chương trình có thỏa mãn hay không? Sản

phẩm ở đây có thé hiểu là sân phẩm trung gian như: Đặc tả yêu cầu, thiết kế chỉ

tiết, mã nguồn Những hoạt động kiểm tra Lính đúng đắn của các pha phát triển

được gọi là hoạt động kiểm chứng Kiểm chứng trả lời cho câu hỏi “Hệ thông

Trang 13

được xây dụng có đúng với đặc tả” Mục đích của hoạt động kiểm chứng là xác

thưc xem đã xây dựng dang sin phẩm

Vé cơ bản, kiểm chứng hệ thống là kỹ thuật được áp dung để xác minh

tính đúng đắn của một thiết kế, một sân phẩm Dỏ là những đặc tả quy định các

hành vị đã thực hiện của hệ thống và những gì hệ thống không thực hiện từ đó tạo cơ sở cho hoạt động kiểm chứng Hệ thống được coi là đúng nếu nó thỏa

mãn tắt cả các thuộc tính thu được từ các đặc tả cụ thể của nó Sơ đề minh họa

quá trình kiểm chứng dược trình bày trong hình 2.1

Trang 14

trên mọi môi trường được đặc tả Có thể kế đến một số phương pháp như:

Thương pháp suy điễn (deductive methods), kiém chimg m6 hình (model

checking), định kiếu chương trình (program typing), phân tích chương trình tĩnh (static program analysis)

Trong số các phương pháp kể trên, phương pháp kiểm chứng mô hình

(model checking) là phương pháp ra đời khá sớm Tuy nhiên, nó còn hạn chế là chỉ áp dụng được cho các hệ thống nhỏ Phân tiếp theo sẽ tập trung trinh bày về

kỹ thuật này

Kỹ thuật kiểm chứng mô hình [3] là kỹ thuật mô tả những hành vì có thể

có của hệ thống đưới đạng các công thức taán học rõ ràng, chính xác và biểu

diễn hệ thống đưới dạng các trạng thái

Kiểm chứng mô hình là kỹ thuật phát hiện lỗi chương trình theo cách thức

với cạn LAL c& cdc trang thái có thể có của hệ thống Các công oụ kiểm chứng

phần mềm mà sử dụng kỹ thuật kiểm chứng mô hinh sẽ tiến hành kiểm tra tất cả

Những thuộc tỉnh của chương trình được kiểm tra bằng cách sử dụng mô

hình có tính chất định tính như: Kết quả sinh ra liệu có chính xác Liệu hệ thống

có gšp phải tình huỗng deadlock, ví dụ hai tiến trình củng tiên hành chờ đợi

nhau dẫn đến sự bề tắc của hệ thống

Kiểm chứng mô hình dòi hỏi phải có một khẳng định chính xác vỀ các

thuộc tính đã được kiểm tra của hệ thông Việc mô hình hóa hệ thông một cách

chính xác thường phát hiện được những lỗi tiềm ẩn của hệ thông,

Các mỗ hình hệ thống thưởng dược tự động tạo ra từ một mô tả vỀ mô

hình được thể hiện cho từng ngôn ngữ lập trinh như C, Java hoặc ngôn ngữ mô

14 phan cig nhw Verilog Cần lưu ý rằng đặc tả thuộc tính quy định cái gì hệ

thống nên làm và cái gì hệ thống không nên làm rong khi mô hình hóa hệ

thống lại kiểm tra tất cả các trạng thái liên quan để kiểm tra xem chúng có thỏa mẫn cai mà thuộc tính mong muốn Phần vi du (Counterexample) mé tả một đường thuc thi từ trang thái khởi tao của hệ thống tới trang thái vi phạm thuộc

Trang 15

có thỄ xem lại kịch bắn vi phạm, theo cách này thu thập thông tin gỡ lỗi hữu ích

và phù hợp với mê hình Cách tiếp cân về kiếm chứng mô hình xem hình 2.2

Hệ thông

(System)

Bac ti (requirements}

+ (Hũnh thức

Hình 2.2 Mô hình hóa cách tiếp cận của kiểm chứng mô hình [3]

Quy trình thực hiện của kiểm chứng mô hình được thể hiện qua các pha

sau đây

Trang 16

© Pha mô hình hỏa (modeling phase}: Điễu kiện tiên quyết của cáo đầu

vào của kiếm chứng mô hinh là mô hình của hệ thông dang duoc xem

xét và đặc trưng hỉnh thức hóa của các thuộc tính được kiểm tra Mô

hình của hệ thống rnỗ tả hành vi của hệ thống một cách rõ rằng chỉnh

xác Nó thường thể hiện băng ôtômát hữu hạn bao gồm một tập hữu hạn

các trạng thái và hàm chuyển Lương ứng Trạng thái bao gồm thông tin

về các giá trị hiện tại của các biến, cầu lệnh được thực hiện trước đó,

Hảm chuyển mô tả cách thức để chuyển từ trạng thải hiện thời sang

trạng thái khác Để việc kiểm chứng cho kết quả đứng, các thuộc Linh ở đầu vào cũng nên dược mô tả một cách chính xác và rõ ràng Để làm

được điều này thì sử dụng ngôn ngữ đặc tả thuộc tính Sử dụng logic

thời gian (temporal logic) là cách thức hiệu qua dé dic ti thuộc tính

© Pha thu thì: Chạy hộ công cụ kiểm chứng để kiểm tra tính hợp lệ của

các thuộc tính trong mô hình hệ thống,

© Pha phan tich:

+ Nếu một thuộc tính thỏa mãn thì tiếp tục với thuộc tính tiếp (nếu có)

1 Nếu thuộc tính vi phạm thực hiện:

- Phan tich va sinh ra phan ví dụ bằng mô phông

-_ Cải tiễn mô hình, cải tiến thiết kế hoặc thuộc tính

-_ Lắp lại toân bộ Lhủ tục

+ Nếu truy nhập ngoải bộ nhớ thi cỗ gắng giám thiểu mô hình vả thử lại

Như đã trình bây ở trên, kỹ thuật kiểm chứng mô hình [16] được đánh giá

là kỹ thuật hiệu quả dược sử dụng nhiều trong các công cụ kiểm chứng với

những ưu điểm sau:

-_ Là kỹ thuật có thể thực hiện hoàn toản tự động

- Thuật toản kiểm chứng mỗ hình sẽ kết thúc với câu trá lời đúng và

đưa ra một mô hinh cụ thể Iloặc chỉ ra một phẩn ví dụ

(counterexamples) là lý do tại sao hiểu thức là không thỏa mãn Các

Trang 17

phản vi dy déng vai tré dic biét quan trong trong việc phát hiện các

lỗi oũa sáo hệ thống chuyển phức tap

- Thực hiện nhanh, cụ thể nó có thể thực hiện trên từng phần của hệ

thống Da đó, có thế tập trung vào những phần có nguy cơ phát sinh

lỗi cao trước Khi một trường hợp lả không thỏa mãn, các công thức

khác không thuộc trường hợp đó có thể được kiểm tra để xác định

nguồn gốc của lỗi

-_ Cuối cùng, lý thuyết logic dược sử dụng trong kỹ thuật này đóng vai

trò quan trọng, Nó thể hiện nhiều tính chất cần thiết cho lý luận về hệ thắng hiện thời

'Tuy nhiên kiểm chứng mô hình (model checking) cũng có những diễm

hạn chế như sau:

-_ Phương pháp nay chủ yếu thích hợp với cáo ứng đụng điều khiển hơn

la cdc ung dụng hướng dữ liệu bởi vi dữ liêu thường vượt quá các

miền vô hạn

- N6 chỉ kiểm tra các yêu cầu đã được trạng thái hỏa Nó không đấm

bảo tính toàn vẹn Tính hợp lý của các thuộc tinh không được kiểm

chứng có thể không được đấm bản

- Phương pháp nảy găp phải trở ngai lớn nhất đó là vẫn để bùng nỗ

+không gian trạng thái, số các trạng thái cần che mô hình hệ thống cá

thể vượt quá bộ nhớ của máy vì tính

-_ Nó không đấm bảo chọ ra kết quả chính xác hoàn toàn vì cũng như các công cụ khác thì bộ kiểm chứng cũng là một phần mềm và có thể

có lỗi 2.2 Thực thì tượng trưng

“Trong phần này luận văn trình bày các vấn dé của thực thi tượng trưng,

thực thi tượng trưng động củng một số giải pháp để giải quyết các vấn để của thực thi tượng trưng dông

Trang 18

2.2.1 Tổng quan về thực thi tượng trưng

Trong những năm pẦn đây, vấn dé thực thi tượng trưng |5| (Symbolic

execution) cho kiểm chứng phân mềm rất được quan tâm, do khả năng sinh ra các ca kiểm thử có độ phủ cao và tìm lỗi sâu trong các ứng dụng phức tạp

'Thực thi tượng trưng lả phương pháp chạy chương trình máy tinh bằng, cách sử dụng các biến tượng trưng Thay vì thực thi chương trình với đầu vào cụ

thể Chương trình được thực thi lượng trưng tương ứng một lập cde gid trị đầu

vào (mpuÐ Kiễm chứng mô hình vả kiểm thử là bai kỹ thuật phố biến thường

được sử dụng để đảm bảo tính đúng đắn của hành vi chương trình Các phương

pháp kiểm thử chỉ khẳng định dược chương trính tốt đối với các ca kiểm thử

(test case) cy thé Kiểm chứng mô hình cung cắp một giải pháp toàn diện hơn dé

xác định độ tin cậy cia chương trinh Tuy nhiên, nhược điểm của phương pháp

nay la bing nỗ không gian trạng thái Thực thi tượng trưng cung cấp một cach

để làm giâm bớt vẫn đề bùng nỗ trạng thải Bằng cách thực thi với đầu vào

tượng trưng thay vì với cạn các giá trị cụ thể của đầu vào

Trong kiểm chứng, thực thi tượng trung được sử dụng để sinh ra giá trị đầu vào kiếm thứ (/fesr impwf) cho mỗi đường thực thì (execuion paih) của chương trình Miột dường thực thi là một chuỗi các giả trị dũng (we) hoặc sai (alse) tuong úng Trong đó, một giá trị là đúng ở vị trí thứ ¿ nghĩa là tại vị trí thứ ¡ điều kiện nhận giá trị đúng và đi theo hướng đúng Iloặc ngược lai di theo hướng sai Tập hợp các dường thực thi của một chương trình tạo thành cây thực

thi

Mục đích của thực thi tượng trưng IA sinh ra tất cá các đầu vào có thé có

cho toàn bộ các đường thực thị Xét ví dụ hình 2.3 (đoạn mã nguồn chúa câu

lệnh điều diéu kiện) để thây được cách thức thực hiện của thự thì tượng trưng.

Trang 19

chứa câu lệnh điều kiện hình 2.3, quá trình thực thi tượng trưng được thực hiện

qua các bước sau:

— Tao dau vảo tượng trưng cho các biển x và y bằng 2 lễnh tại dòng 14, 15

của đoạn mã hình 2.3 Sau hai câu lệnh nảy một ánh xạ vào hàm trạng thải

tượng trưng ø được bổ sung Kết quả của hàm ø là ø — x =2xe y —ya}

—_ Thực hiện câu lệnh gọi hàm ở đòng 16 Tiếp theo, thực hiện câu lệnh gản

ở dòng 6 được thực hiện Sau lệnh này kết quã cúa hàm ø trở thánh @ — fx

>x¿ y >yn z 226}

— Thue hiện câu lệnh điều kiện ở dòng 7 Lúc này xuất hiện đường điều kiện

ré nhanh (path condition), tùy thuộc vào giá trị của biểu thức điều kiện sẽ

Trang 20

quyết định chương trỉnh thực thi theo nhánh đúng hay nhánh sai Tử đó,

hình thành 2 tập hợp chứa các điều kiện rõ nhánh khác nhau kí hiệu là PŒ

và PC' Sau dòng 7 tập PC;=(Xa= 2yq) va PC2 = ¬(xo = 204)

—_ Thực hiện câu lệnh diễu kiện tại dòng 8 Thực hiện tương tự câu lệnh diều

kiện ở dòng 7 la được 3 tập điều kiện rế nhánh ĐC; — ¬(xe — 2a)

PC,~ (Bq — Byeda fo >> v¿~+ 10)) và PƠI”— (Cu — 2n) A Ga < Yo+ 101)

—_ Giả sử một lỗi được phát sinh ở câu lệnh tại dòng 9 Lỗi ở đây có thể là

chương trình bi treo hoặc v1 phạm một hàm đánh giá (assert) [rường hợp

này xuất hiện một phản ví dụ (counter example) Một phép gán được chỉ 1a dễ chương trinh thực thi theo nhánh này, Kết thúc câu lệnh ở đóng 9 cả

3 nhánh của chương trình đều đã được duyệt với 3 tập rằng buộc sau:

P€› = ¬(xa= 22}

PC.—(a — 2Wa)AfXe >ta+ 19))

PC, '=(Wa = 2w2JAlo S và L 18)

— SMI solver sé gidi lần lượt từng tập ràng buộc này để sinh ra các test case

tương ứng Giả sử kết quả được giải bởi SMT solver lần lượt là fe = 6 v—12(x—2y— 1} và (x— 36, y — 15)

'Irong kiếm chứng tự động nếu áp dụng kỹ thuật sinh đầu vào ngẫu nhiên thì khi áp dụng với chương trình có chứa vòng lắp có thể sẽ gặp phải vẫn đề thực

hiện vô hạn Nhưng trong thực thì tượng trưng van dé nay sẽ được giải quyết

Phan tiếp theo luận văn sẽ trình bảy về thực thi tượng trưng cho chương trình chứa vòng lặp

Thực thi tượng trưng cho chương trinh chứa vòng lặp: Xẻt một ví dụ khác trong hình 2.4 để hiểu rõ hơn quá trình thực hiện của kỹ thuật thực thi tượng trưng, pằm các hước sau:

" Thực thi tượng trưng với thuộc tình đầu vào năm trong điều kiện vòng lặp

Xét câu lệnh lip while (N > 6) 6 dòng 4 hình 2.4 ta thấy điều kiện kết thúc

vỏng lặp này phụ thuộc vào giả trị của biển N Ma biến Ấ lại là dầu vào

tượng trưng Cho nên, chương trỉnh có thể sẽ sinh ra một lượng vô hạn các

Trang 21

đường thực thi Trong đó, mỗi đường thực thi hoặc là một tập ngẫu nhiên

các giả trị đúng và kết thúc với giá trị sai hoặc một dãy vô hạn các giá trị

đúng của biểu thức điều kiện

1 void (esLme inf Q 2.intsum 0;

3 inl N~ sym input;

Hình 2 4 Một đoạn mã nguôn chứa vòng lap

"Trong trường hợp biểu thức diễu kiện của vỏng lặp whilc nhận 7 gid tri ding

và một giá trị sai dé kết thúc vòng lặp thì tập rằng buộc cho đường thực thi

này được trình bày trong công thức sau:

Tình 2 5 Công tức biểu diễn thực th lượng trưng cho vòng lặp |5}

‘Trang céng thức này, mỗi giá trị của A, là một giá trị tượng trưng và

tập hợp các trạng thái tượng trưng khi quá trình thực thi kết thúc là {N > Nuis tong > Lican] N;} Trên thực tế, nên giới hạn quá trình tìm kiếm

(chẳng han giới hạn thời gian ché (timcoul), gidi han vé sé lượng dường thực thi, số lượng vỏng lặp hoặc độ sâu dược duyệt )

Một bất lợi chính của kiểu thực thi tượng trưng truyền thống là nó không

thể sinh ra được giá trị dầu vào tương ửng hoặc các ca kiểm thứ trong trường,

hợp tập rang buộc trên đường thực thi chứa biểu thức mả biểu thức này không,

Trang 22

thể giải được bởi SMT solver Xét ví dụ trong hình 2.3 nhưng thay thể mã của

hảm twiơe( im v) xem hình 2.6

1 int twice (int v) {

2 return (v<v) % 50;

4, void testme (iat x, int y) { x = sym inputQ;

6 2= twice (y); + y= sym inpulg;

if >y+10) + return 0;

ERHOIE;/Giả sử một lệnh sinh lỗi ỡ đây ¥

Tình 2.6 Đoạn mã nguôn C chúa biêu thức không tuyễn tính

Gia sit, SMT solver không thể xử lý được các phép toán số học không,

tuyến tinh (nonlinear) dẫn đến việc giá trị đầu vào được sinh ra có thể sai hoặc

không thể sinh ra giá trị đầu vào này Trong trường hợp như vậy nên sử đụng

các kỹ thuật thực thi tượng trưng động dược trình bày trong phần tiến theo của

luân vẫn

2.2.2 Kỹ thuật thực thi tượng trưng déng

Ý tưởng chính của các kỹ thuật thực thi tượng trưng động [5| (dynamic symbolic execution) ld sư xen kẽ giữa việc thực thi với các giá trị tượng trưng và thực thi với các giả trị cụ thê Hai kỹ thuật thé hiện khá hiệu quả ý tưởng trên là

Coneolie Testing và Execulion - đeneraled Testing (BQT)

© Cancolic Testing [5] là kỹ thuật kiểm tra theo hướng tự động ngẫu nhiên

Thực hiện việc động hóa thực thì tượng ưưng Trong chương trình thực thì

trên một vài giá trị đầu vào cy thé Concolic Testing sẽ duy trì đồng thời một trạng thái eụ thể và một trạng thải tượng trưng trong đỏ

"Tập trạng thái cụ thể sẽ ánh xa tẤt cả các biển có giả trị cụ thể

Trang 23

= Tp trạng thái tượng trưng sẽ ánh xạ tất cả các biển không có giá trị cụ thể

Khác với thưc thi tượng trưng theo kiểu truyền thống vi Concolic Testing duy trỉ tập trạng thái đầu vào cụ thể của chương trình trong quả trình

thực thị Điều này là cân thiết cho việc khởi tạo giá lrị cụ thể cho các biến

đầu vào tượng trưng của nó Concolic Testing bit đầu thực thi với một số

đầu váo nhất định cho trước hoặc ngẫu nhiên Tập các ràng buộc được tạo

bởi dầu vào tượng trưng của câu lễnh diều kiện cũng dược thực hiện Sau đó,

nó sử đụng một SMTT solver để giải ra các giá trị đầu vào tượng trưng trước

đó để quy định việc thực hiện tiếp theo của chương trinh hướng tới một dường thực thi thay thể Quá trình này được lấp di lặp lại một cách có hệ thống hoặc dựa trên kinh nghiệm cho đến khi tất cả các đường thực thi đã

được duyệt qua Xét ví dụ hình 2.6 để thấy được các bước thực hiện cụ thể

của kỹ thuật Concolic Iesting

Kỹ thuật Concolio Testing áp dụng cho đoạn mã hình 2.6 thực hiện lần

lượt các hước sau

= Gia sit Concolic Testng sẽ sinh ngẫu nhiên giá trị đầu vào

íx — 22 và y — 7} và thực thi chương trình theo eã hai hướng cụ thể

hỏa và tượng trưng hóa

Trang 24

" Khi thực thi với giá trị đầu vào trên nhánh thực thì được đuyệt là

nhánh sai của biểu thức điều kiện (z —— x) ở dòng 7 Tập ràng buộc (ki hiệu là PC) với giá trị khởi tạo ban đầu là ø) sẽ bễ sung thêm rang

huộc (xạ — 2a) và trỡ thành PƠ; — ¬ (*o — 2ya) cho nhủ hợp với giá

trị đầu vào v = 22 vả y = 74 Trong đó xe, „2 là đầu vào tượng trưng,

của biến x, y

"_ Tiến hành phủ dịnh điều kiện ¬ (%; — 2ya) và tiến hành giải rằng huộc

(% = 2yo) dé sinh giá trị đầu tương ứng ƒx = 2 và y = 1) Giá trị đầu

vào mới này sẽ làm cho chương trình thực thì theo nhánh đúng của

biểu thức điều kiên ở dòng 7 và nhánh sai trong biểu thức điều kiện ở

đồng 8 Một tập rảng buộc mới được hinh thành nhánh này

ĐÓ; — (So — 294) A fSø +10)

" Tiền hành phủ định điều kiện (+ <ya 126) ta được tập rằng buộc trên

đường thực thi này PƠa' = @&¿ = 22) 4 (Xe > ya 110) Tiếp thực thi

đến dòng 9 thì gặp câu lệnh phái sinh lỗi tiến hành đánh dấu đường,

thực thi này và quá trình thực thi kết thúc Sau đó, giải biểu thức trong

PCy’ ta được đầu vào tuong (mg fx — 30 y— 15}

" Công việc này sẽ lặp di lặp lại cho dến khi tất cả các nhánh của biểu

thức điêu kiện đều được duyệt qua hoặc khi gấp một lỗi

xecution Generated 1esting [5] (EGL) là kỹ thuật thực hiện với giá trị đầu vào cụ thể và giá trị đầu vào tượng trung theo hai cách khác nhau của cùng một chương trình BGT sẽ thực hiện hòa trộn giữa thực thi với giá trị gụ thể

và thực thi với giá trị tượng trung Bằng cách tự động kiểm tra trước mỗi

thao tac néu moi giá trị tham gia đều là cụ thể thì thao tác đó sẽ được thực

hiện bình thường giống chương trình ban dầu Ngược lại, nếu có ít nhất một

giả trị là tượng trưng, thì thao tác sẽ được thực hiện tượng trưng hóa bằng

cách cập nhật các điều kiện chơ đường thực thi hiện tại Quả trình này cử

tiếp tục cho đến khi tất cả các đường thực thi của chương trình đã được

Trang 25

đuyệt Chỉ tiết vẻ cách thức thực hiện của kỹ thuật này được trình bay trong

ví dụ hình 2.6

Vi dụ trong hình 2.6 là đoạn giả mã trong hình 2.3 nhưng dòng 15 được thay bởi lệnh = 1Ø nên đỏng 6 gọi hàm /mice(1) Kết quả của hàm twice (19 là =8

Tiếp tục thực thi đến dòng 7 câu lệnh điêu kiện tré thanh if (20 =x)

Quá trình thực thi tượng trưng sẽ duyệt theo cả hai nhánh của biểu thức

điều kiện: Nhánh sai thi rang bude x # Ø được thêm vào tập rằng buộc (kí hiệu PCI khởi tạo với giá trị Ø) PC; = ¬ = 0) cho đường thực thi tương ứng và nhánh đúng ràng buậc x — Ø được thêm vào tập rằng buộc ĐC; = ( = 0} cho đường thực thị nảy,

Tiếp tục thực hiện với lệnh ở dòng 8 biểu thức điều kiện trong trường

hợp này trở thành ÿƒ @ > 10)

Quá trình thực thi tượng trưng sẽ duyệt theo cả hai nhánh của biểu thức

diều kiện: Nhánh sai với rằng buộc x < 7Ø dược thêm vào tập rằng

buée PC, = @«& =O) ^ @ < 10) và nhánh đúng ràng buộc x >> 1Ø được

thêm vao lap rang bude PC2’— fx — 0) ø @ > 10)

Tiếp tục thực thi dến dòng 9 pặp một lệnh phát sinh lỗi trạng thải hiện tại sẽ được đánh đấu lại Quá trình thực hiện kết thúc với câu lệnh

retum ở dòng 17 Trong đó, tất cả các đường thực thị đã được duyệt

thích hợp giữa thực thi cụ thể với thực thi Lượng trưng

Một trong những lợi thể chính trong việc hòa trộn giữa thực thi tương trưng với thực thi cụ thể là làm giảm thời gian chờ trong khi giải các ràng buộc

của các SMT solvcr.

Trang 26

Hầu hết các ứng dụng trên thực tế đều tương tác với môi trường bên ngoài

bằng cách gọi các thư viện mả thực lủ tượng lrưng không thể thực hiện được

hoặc sử dụng lời gọi hé thống như tạo tệp, xóa tệp hay cập nhật trong hệ điều hành Nếu tất cả các tham số được truyền cho những lời gọi hàm như vậy đều là

cụ thể, thì lời gọi được thực hiện một cách dơn giản như thực thi một chương trình thông thường Tuy nhiên, nêu tổn tại một vải tham số là tượng trưng thì kỹ thuật thực thi tượng trưng động có thể sử đụng các tham số cụ thể trước Chẳng

hạn tron EGT những tham số cu thé nay dược dùng để hỗ trợ trong việc giải

các ràng buộc trên đường thực thị hiện tại

Kỹ thuật thực thi tượng trưng nói chưng hay thực thi tượng trưng động nói

riêng đã đóng póp đáng kế trong lĩnh vực kiểm chứng, kiểm thử tự động, Nhưng

kỹ thuật nảy cũng gặp phải một sé van để khi thực hiện Những vấn dé này và giải pháp giải quyết được trình bày trong phan tiép theo

2.2.3 Thực thi tượng trưng động và giải pháp

a) Vấn dễ bùng nỗ dường Lhực thi

IDễ thấy rằng, kỹ thuật thực thi tượng trưng động sinh ra một lượng rất

lớn các đường thực thi kế cả các chương trình nhỏ cho tới các chương trình

thực tế Với các chương trình lớn trong các ứng dụng thực tế thì số lượng đường thực thi mả kỹ thuật thực thí tượng trưng sinh ra là rất lớn hoặc có thể

là vô hạn

Hai kỹ thuật chính dược sử dụng dễ giải quyết vẫn dé nay là

" Sử dụng kỹ thuật đựa trên kinh nghiệm để lựa chọn những đường

thực thi tốt nhất và ưu tiên duyệt qua những đường nay

= Sir dung ky thuật phân tích chương trình đễ làm giảm đô phức tap của những đường đang duyệt

Chỉ tiết về hai kỹ thuật này được trình bảy cụ thể trong [5] Luận văn

khéng tập trung đi sâu trình bay van dé này

Trang 27

b) Vấn đề giải các ràng buộc

Một trong những thách thức chính khi áp dụng kỹ thuật thực thú tượng

trưng động trên quy mô lớn đó là lượng các phép toán của truy vấn cần giải quyết là rất lớn Làm cho việc giải của solver gặp nhiều khó khăn và có thé

dẫn đến thất bại

Có hai cách thức chính để làm giảm số lượng các ràng buộc đó là

«Loại bủ các rằng buộc dư thừa: Xót ví dụ, cho trước tập rằng buộc trên một đường thực thí hiện tại của chương trinh (kí hiệu lá PƠ) như sau: PCO — (x — y > 10) 4Œ > 0) A (y < 12) Chương trình tiếp tục

đuyệt đến câu lệnh điều kién cé rang buds (x —y < 2) Trong trường

hợp này tập mới dược ra (kí hiệu là PCŒ') có kết quả như sau PCA (x i p> ID AG < 12) 4 fe—y <2) Trong dd, ring buộc

z > 0 đã bị loại bố vì không liên quan đến ràng x—y < 2

* Gidi quyết gia tăng: Trong thực tế, những tập ràng buộc sinh ra trong

suốt quả trình thực thi tượng trưng động dõi khi giống nhau vỉ thế co

cùng một cách giải quyết Diễu này có thể được cải thiện để làm tăng tốc độ giải các ràng buộc bằng cách sử dụng lại các kết quả của các

truy vẫn trước đó Ví dụ, tiến hảnh giải tập ràng buộc sau

(x+y <10) A (x > 5) được kết quả là {x — 6, y — 3} Ta tiễn hảnh lưu +kết quả này vào bộ nhớ phụ Sau đó, khi gặp các tập con hoặc tập cha của lập này la có thể

dụng lại kết quá Ví đụ {x — 6, y — 3} cũng

thỏa min: (x+y < 10) A(x > 5A Cy 20)

€) Xử lý truy cập đồng thời: Phần lớn các ứng dụng trên thực tế thường tổn

lai truy cập đồng thời Đây là van đề làm cho việc kiểm thử trở nôn khó

khăn hơn Miặc dù vậy, thực thi tượng trưng dộng dã được sử đụng, một cách hiệu quả để kiểm tra chương trình đồng thời, bao gồm: Các ứng dung với dầu vào phức tạp dữ liệu |19, 22, hệ thống phan Lan [13],

các chương trình GPGPU |9| (General-Purpose Compufation on GPU)

Trang 28

Sau khi đã có kết quả từ thực thi tượng trưng là các biểu thức ràng buộc được

tạo thành từ mã chương trình Các biểu thức này sẽ được đưa vào SMT để giải

quyết Chương tiếp theo sẽ trình bày về lý thuyết SMY solver, mét công cụ giải các công thức Logic trên một nền tảng lý thuyết nhất định

Trang 29

Chuong 3 SATISFIABILITY MODULO THEORIES (SMT)

Satisfiability Modulo ‘Theories (SM‘T) biét đến như là sự mở rộng của

SÁT đối với từng lý thuyết (Theory) nhất định Trong việc xây dựng các céng

cụ kiểm chứng Lự déng SMT la thank phần dược sử dụng nhiều và mang lại hiệu

quả to lớn SMT đựa trên tư tưởng của SAT solving nhưng cho các công thức

của lý thuyết vị từ cấp I thay vì Logie mệnh dé cia SAT solving Trong chương nảy luận văn sẽ trình bày cụ thể hơn về 8AT cũng như về SMT Cụ thể hơn, luận văn sẽ đi sâu trinh bày về bải toán SAT, thuật toán để giải bài toán SÁT từ

đó, mỡ rộng trình bảy cho bài toán SMT và thuật toán dễ giải bài toán SMT dựa

trên tư tưởng ofa SAT

3.1 SAT sulver

Bai ton Satisfiability (SAT) [6] là một trong những vấn để quan trọng

của ngành l<hoa học máy lính Bài toán SAT cé thể hiểu đơn giản là trả lời cho

câu hỏi có tôn tại hay không một phép gán giá trị đứng (true) hoặc sai (false) cho tất cả các biến của công thức mệnh đề cho trước sao cho công thức cho nhận gia

trị đúng Kết quả của BA'I' solver thuộc một trong hai trường hợp sau

1 Mễu tim được một phép gán thỏa mãn công thức mệnh để thì trả về kết

quả là SAT

2 Nếu không tần tại một phép gắn nào thỏa mãn thỉ ta nói rằng bải toán là

không thỏa mãn trả về UNSAT,

SAT duoc img dung để giải quyết nhiều vẫn đề của cũng nghệ thông tin

như: Kiểm chứng phần mềm vả phần cứng, lập kế hoạch vả thuyết tự động Hởi

vậy việc giải bài toán SAT là cần thiết

3.1.1 Bai toin SAT

Trong phần này, luận văn trình bảy vỀ công thức Logie mệnh để và các thành phần liên quan trong bài toán SAT.

Trang 30

* Công thức logic mệnh dé (prepositional formula) |6| là công thức

được định nghĩa trên tập các biến mệnh để xị, x„ cùng với các phép toán trên nó như phép phú dịnh (—), phép hội (^), phép tuyển (v)

‘Trong đó miễn giá trị của các biển mệnh dễ là {true, false}

* Literal la mét bién ménh dễ hoặc phủ định của nó

* Ménh dé (Clause) là một công thức chỉ chứa phép tuyển của các

literal

«Công thức chuẩn lắc hội (Conjunobive Normal Form) kí hiệu CNE là

công thức có dạng hêi của các tuyển trên các literal + Phép gản (assignment) [26]: Cho công thức logic mệnh đề ạ, một phép gán của ọ trên miên dữ liệu D là một ánh xạ tương ứng của các

biến mệnh đề tới một phần tử của D Một phép gắn gọi là toàn bộ nếu

tất cả các biến mệnh để đều được gán giá trị Ngược lại, thủ goi là phép gán bộ phận

* SAT (Satisfiability) va UNSAT [6]: Bat toan SAT 1a bài toán quyết

định xem cá lồn Lai phép gan giá trị chân tri cho cdc bién ménh dé cua

công thức cho trước mà tại đó công thức nhận giá trị đừng Nếu tồn tại

một phép gán như vậy thì khẳng định bài toán là SAT Trong trường hợp ngược lại la ndi bai toan a UNSAT

Xét ví dụ sau với công thức

tEF~ (Xi V¿ V Xa) Á 0y V —XI) Á (OX) V 782) Trong đó: Xị, X;, —Xa, Xạ, Xa, ~X2 14 cde literal, (x, Vx ¥ 7x4), (% V 7x1)

va (Ox, V ¬%;) là các mệnh đề Các phép toán trên 3 mệnh đề đều là phép hội

nên E là 1 CNE, tồn tại phcp gán xị — truc (đúng), xạ — fxlse (sai), xạ — truc

(đúng) để F = true (đúng) nên F là SÁT

3.1.2 Thuật toán DPLL cho SAT

SÁT là bài toán quan trọng được ứng dung trong nhiễu lĩnh vực của công

nghệ thông tứrn nỏi chưng và công nghệ phần mềm nói riêng Dưới đây trình bảy

Trang 31

thu tuc DPLL (Davis Putnam Logemann Loveland nim 1962) mé ta cdc bude

giải bai loan SAT

'thủ tục DPLL [26] được sử dụng để tim một phép gán thỏa mãn cho công thức F có dạng CNE Phép gán được xác định dân tùng bước một Phép gán

thành phần ở bước Liếp theo dược xác dịnh dựa trên phép gán thành phần ở hước

hiện tại Nếu việc tìm kiếm that bai hoặc gặp phải trường hợp xung đột thì áp dụng luật backtrack (quay lui) ngay tại vị trí tìm kiếm thất bại

Thuật toán T3PLI là thuật toán khá phổ biến và được sử dụng trong hầu

hết các máy giải SAT Mục đích chính của nẻ là tìm ra một phép gán MI thỏa mãn công thức Tr tồn tại ở đạng CNT Trong đó:

= M6t literal 1a duge định nghĩa trong M nếu / nhận giá trị đúng hoặc sai trong

ÂM Ngược lại, ï không dược dịnh nghĩa trong M

®_ Một mệnh đề là đúng trong Mi nếu tồn tại một literal thuộc mệnh đề nhận giả

trị đẳng trong Mi

« Một công thức E là đứng trong M hoặc 8A'T trong MI nếu tất cã các mệnh dễ

trong của F đều nhân giá trị đúng trong MI khi đó ta nói MI là mô hình của F

ký kiệu là M E F

Về cơ bản, DPLL chỉnh là thuật toán tìm kiém theo chiều sâu Với những, cải tiễn nhất dịnh dễ khắc phục vấn dễ về không gian trạng thái

Thủ tục DPLL thực hiện với đầu vào là một biểu thức F có định đạng

ƠNE và thực hiện tính toán một chuỗi hữu hạn các trạng thái là các phép gan

thỏa mãn cho các mệnh dé con cla F nhu @ || F = - => S Trạng thái khởi tạo

la trang thai rng ki higu ($) và kết thúc khi gặp trạng 8 Trạng thải nảy nhận giá tri false nêu F là không thỏa mãn (UNSATT) hoặc trả về một phép gán M thỏa min F’ Qf if F’), trong d6 M 14 mé hinh cla F (M & F) khi F théa man Trong

truéng hop nay F’ JA trang thai cuối củng và là biểu thức dạng CNE dã dược biến dỗi từ bằng cách thêm vào một số các mệnh dễ trong suốt quá trinh thực

hiện thú tục DPLL Né khác với công thức F ở đầu vào

Thủ tục DPLLI đễ giải bài toán SAT dược trinh bày trong hình 3.1

Trang 32

Algorithm : DPLL-SAT

Inpuf: Một công thức lô gic mệnh dé B

Output: “Satisfiable” néu công thức là thỏa mãn và “Unsatisfiable” trong trường hợp ngược lại

Hinh 3.].a Hinh vé mé ta thit tec DPLI

Cơ chế hoạt déng cla DPLL duge thể hiện trong hình 3.1

(luật quay lui) đl>0

BCP Conflict Analyze Conflict

(Luật unit Propagete) [ (xung độp) (bộ phần tích xung đột) TNSAT

Hình 3.1.b Sơ dỗ cơ chế hoạt dộng của thủ tục JAPLL, cho SAT [6]

Trang 33

Trong đó, đï là biển kiếm tra để quyết định có quay lai không

Thủ Lục DPLTL áp dụng luật unit propagate để suy luận phép gán liếp theo

từ phép gán MI hiện tại và công thức CNF hiện tại È Luật declde được áp dụng

+khi không thể xác định được giá trị của một literal trong công thức F thông qua

luật uniL propagatc Luật Eail và luật backtraok dược áp dụng khi xây ra trường

hợp không thỏa mãn khi một hoặc nhiều mệnh để của công thức CNF F nhận giá

trị sai trong phép gán hiện tại M Nếu công thức dạng CNE T là NSAT luật fail

được áp dụng khi toán bộ các litcral trong công thức F đều được xác định

gua lai thi ta 4p dung ludt backtrack

Dưới đây là các luật cơ bản của DPLL [25]

* Luat Unit Propagate:

ME, C= FailState Nếu |

M không còn chứa literal quyết định nào

« Luat Backtrack:

_ (MIEN &

MIÊN || EC=— M-I||F,C Nếu

N không chứa literal quyết định

* Vida img dung DPLL

Cho công thức F — (1 v 2)^ (3v 4) ^( Sv 6) A (6v 'Šv 2) Áp dụng

thuật toán DPLL để từm một mô hinh M thóa mãn biểu thức E

$||( 1v 2).( 3v 4) 05v 63(6v Sv 2) — (uật dovide )

Trang 34

1" C1 v 3, C3 49,0 -5¥76),(Gv—5v72) => (Lait unit propagate)

Ngoài 4 luật cơ bản kể trên, thuật toán DPLL với việc học mệnh đề

(elause learning) còn bổ sung thêm hai luật mới luật learn và ludt forget

Trong hai luật này mệnh đề C được gọi là luật learn và luật forget tương

ứng Trong luật Backtrack ménh d8 C +⁄Ƒ là ménh dé xung dét (conflict) Thì

mệnh đề xung đột được học bằng luật learn đề tránh xảy ra trường hợp xung đột tương tự Luật forgoL được áp dụng để giải phóng bộ nhớ bằng cách loại bỏ

mệnh để €' trong trường hợp nhiễu lần ménh dé C lả nguyên nhân xẩy ra xung

đột

Vi du 2: Vi dụ này áp dụng luat backtrack và luật learn để Lừm một mô

vy oh)

hình đầu vào của công thức đạng F =(¬l¡ v l;) A (Gb v ah va) AG

$lÏ( hvÒAC Gv 2v) ÁC lv độ = Guat decide}

hy || Gh vb) 4 Gb v ab v L) ^ (¬ v —¬l¿) = (luat unit propagate)

Lb] Gh vb) A Gb v sh vA Gb v ala) = (luật decidc)

Trang 35

L* hl] Gh vb} 4 Gb v —h v L) A (Gh v sl) = Cudt unit propagate)

Wb bh C hv LYAC SY Vb) AC dy la) => (luat backtrack)

bể b||[CSh v 5) A (sh v ah v Wa (ob v Sl) = (uit leam)

LC sh VL)AC de ¥ se VDAC dy vc) => (ludt unit propagate)

hth al] (Ch vb) A Cl v ¬b v lộ A (¬b v —k) Đây là trạng thái cuối cùng,

Một phép gắn thồa mãn đã được chỉ ra MI(h — đúng, lạ — đúng, là — sai)

một đặc tả toán học Phương pháp truyền thống để tìm lỗi của phần cứng hay

phan mém dé là kiểm thử và phương pháp mỗ phỏng Tuy nhiễn, với sự phức tạp ngây cảng tăng của hệ thống thỉ việc sử dụng các kỹ thuật phức tạp hơn dễ

dim bảo tính chính xác của hệ thống là cần thiết SMT solver la một trong những kỹ thuật hiệu quả dang dược áp dụng hiện nay

SMT là vấn đề quyết định tính thỏa mãn của công thức được biểu diễn trên nền tăng lý thuyết Logic wi tx c4p I (First order logic) Vé nguyên tắc, có

thể coi SMT là phần mở rộng của SAT trong ly thuyét Logic vi tt cdp L Dé duy

trì quá trinh quyết định lý thuyết bậc nhất thường được giới hạn không chứa các phép toán lượng tử tồn tại C1) và voi moi Cv) Cling tong ty SAT, việc chỉ ra một phép gản MI thỏa mãn công thực đầu vào F trên nền tảng Logic vị từ cấp I

được gọi là SMT solver

3.3.1 Bài toán của SMIT

Bài toán của SMT (Satisability Modulo Thcorics) |25| lá vẫn dể quyết

định tính thỏa mãn của một công thức trên một nền tầng lý thuyết (Lheory) nào

đó Trong khi SAT chỉ tập trung vào tính thỏa măn của công thức mệnh để Thì

Trang 36

SMT lai nhim phat hign tinh thỏa mãn của một công thức ở dạng phức tạp và có

ý nghĩa hơn

Việc giải bài toán SMIT gôm hai phần

1 Giải công thức dạng trùu tượng của 5MT với SAT solver

2 Quyết dịnh thủ Lục cho nền tăng lý thuyết T-ký hiệu là DDr bằng cách

kiểm tra tính nhất quán (consistency) của các afoms được giải bởi SÁT solver hoặc suy luận kết quả từ các atoms này

Vi dụ: Cho công thức #' = > 2) + @ > 5) A ` + y < 8) trên nền tảng lý

thuyết số học phi tuyến (non-linear arithmetic) 7 Ta thực hiện các bước sau để giải

Bước 1: Chúng ta xác định các atom của È là: x3 2, y > 5$ x” + y < ở Ta tiến

hành trừu tượng hóa các atoms nay bằng các biến mạnh đề tương ứng Ai,

Az, Ag ta duge # =4; +24; 121

Bước 2: Giả sử sai khi giải véi SAT solver ta được phép gán Mí thỏa mãn biểu

thức E như sau: 44; — true, A; — irue, Az — true

Bước 3: Ap dung thủ tục ID để kiểm tra tính nhất quán (consistency) ta thc

(x >2) =true hiện: 4 (y > 5) = true

(x? + y <8) = true

‘Trong trréng hop ndy DP, chi ra ring khéng nhat quan trên lý thuyết T

di cho ki hiéu T- inconsistency Trong trường hợp nếu DPy chỉ ra là nhất quản taki higu T - consistency

Cách tiếp cân của SMT có thể phân thành hai nhém: Kager va Lazy

Trong cách tiếp cận Zager, biểu thức đầu vào được chuyển thành công thức

logic ménh dé dang ME mà không làm thay déi tính thỏa mãn của nó Chẳng,

hạn như cách thức trừu tượng hóa ở ví dụ trên

Đối với cách tiếp cận /zsy chúng La sử dụng mội solver cụ thể với từng lý

thuyết 7 riêng cho việc quyết định tính thỏa mãn của các biểu thức dang CNE

tương ứng trên lý thuyết này Sau đó, thủ tục quyết định cho SMT có thể dễ

Trang 37

đảng thực hiện bằng cách chuyển biểu thức sang định dạng DNF (disjunctive

normal form) va sit dung 7- sohver để kiểm tra xem hội của DNE có thóa mãn

hay không,

3.3.2 Thuật toán DPLL cho SMT

Trong phần này chúng t6i trinh bay vé DPLL [17] cho SMT Nó là một

biến thé của thủ tục DPLL cho SAT trên một nền tầng lý thuyết 7 nào đó Sự

khác biệt chính ở dây đó là chúng ta thực hiện với các literal trên nền tắng I.ogic

xị tử bic mét (first - order logic) thay vi các literal trên nên tảng Logic mệnh đề Trong đỏ uác luật Decide, Fail, Unil Propagation, Restart 1a khémg thay đổi Các

literal vẫn giữ nguyên về ngữ nghĩa so với logic mệnh dề Chỉ có các luật

Learn, luật Forget, luat Backtrack (Backjump) la ¢6 thay đổi để phủ hợp khi làm

việc với SMÍT

Sau đây là một số các luật cơ bản được áp đụng trong SMIT solver các luật

nảy đều được áp dụng trên một lý thuyết 7 nào đó

Ï chưa được định nghĩa trong M

ĩ hoặc ] e F hoặc trong M1 N

Trang 38

Thủ tục DPLL được áp dụng trong nhiéu SMT solver hiện nay và mang

đến hiệu quả lo lớn trong kỹ thuật giải rằng buộc Phần tiếp thoo luận văn sẽ

trình bảy một số SMTT solver được đánh giá là hiệu quả trong kỹ thuật giải ràng

buệc đựa trên thi tue DPLL

3.2.3 SMT solver BoolecLor, Z3, và STP

Đối với mội công cụ kiểm chứng ly déng cdc SMT solver déng vai tro quyết dịnh hiệu suất thực hiện của công cụ đó Trong phần tiếp theo hiận văn

trinh bay mét vai SMT solver được đánh giá là mang lại hiệu quả †o lớn trong

lĩnh vực kiểm chứng phần mềm Cụ thể, phần tiếp thco trình bảy ba SMT solver Boalecter, ⁄3, STP là những SMTT solver dược dánh giá cao về tốc độ xử lý trên

nền tảng lý thuyết bítvector và máng mở rộng

a BuolecLer

Boolector [2l] là bô giải SMT miễn phí rất hiệu quả trên nền táng lý

thuyết không chứa phép lượng tử hóa tần tại (7), mọi (V) của Hit-Vector kết

hợp với lý thuyết mở rộng của mảng Bit - Vector có thể được sử dụng để thể

hiện thiết kế và đặc tả trực tiếp ở mức độ từ (word - level) Trong khi mảng có

thể sử dụng để mô hình bệ nhớ Ví dụ hộ nhở chỉnh của phần mềm, hộ nhở phụ

(cache) hoặc các thành phần FIFO (Fizst In First OuQ của các hệ thống phần

cứng Sự kết hợp giữa Bit - Vector và mảng làm cho lý luận về phần mềm, phần

cứng ở mức dộ thích hợp hơn so với logic mệnh dé Boolector cung cấp mô hình

cu thé cho Bit-Vector và mang Boolector dugc danh gid 14 SMT solver có hiệu suất thực hiện nhanh hơn so với Z3 khi tham gia cuộc thi giữa các SMTT vào năm

2008 và 2009

Kiến trúc của loolector được thể hiện trong hình 3.2 Trong dé Boolector

phụ thuộc vào việc viết lại và BịL - Blasting cho BíL - Vector và lý thuyết mắng

mở rộng Dữ liệu đầu vào của Boolector là các công thức thuộc định dạng SAZ7

— LIB hoặc định dang BTOR.

Trang 39

— BTOR Li dinh dang Bil - Vector ở mức thấp với ngữ nghĩa rỡ rằng,

dễ phân tích BTOR cũng hỗ tre mang Bit - Vector và kiếm chứng

mô hình (modei checking) cho các thuộc tính của chương trình

Ngoài ra, BoolccLor cũng cưng cấp một hệ thống API C phong phú

cho phép sử dụng Boolector như là một thư viện Boolector được thực thi trong ngôn ngữ C

Hình 3.2 Sơ dỗ tổng quan của Boolector [21]

- Parser (Bộ phân tích cú pháp): Thanh phan nay sẽ tiến hành dọc

các giá trị (Input) và xây dựng cú pháp tra trong dạng mệt dé thi

có hướng (DAG) Trong quá trình phân tích, những luật viết lại cơ

bản được áp dụng để giản hóa đỗ thị có hưởng nay Boolector có

thể phần tích hai định dạng #MT-LIB và BTOR

- Rewriter (Bộ viết lại): Bộ ông cụ cung cấp các luật viết lại để đơn

giần hóa các đầu vào Nó được chia làm ba cấp đô: Cấp đô 1 là viết

Trang 40

lại các luật sơ bản, chẳng han ((2 a a) ©> L ) duoc áp dung trong

quá trình xây dung công thức Cấp dé 2 1a Ap dung luật thay thể các

luật phức tạp bằng các thuật ngữ đơn giản bằng kỹ thuật phân tích

tĩnh Tuy nhiên, trước khi được thay thế các luật này sẽ được lưu

trữ lại Cấp dé thực 3 thực hiện chuẩn hỏa các biểu thức số học

'trong trường hợp xấu nhất có thể giới han độ sâu đề quy

Array Cunsistency Checker (Bộ kiểm chứng Lính nhất quản của

mắng): Bộ kiểm chứng là thành phần chính trong cho cách tiếp cân cho lý thuyết mở rộng không chứa các phép lượng tử hóa của mảng

Nó tiến hành kiểm chứng xem phép gán hiện tại được tạo ra bởi

SATT solver xem liệu có nhất quản với lý thuyết

‘Under-approximation: Doolector hỗ trợ kỹ thuật xấp xỉ mức cơ sở của các biên bit-vector và thao tác dọc (rcad) trong máng bit-veotor

Thành phan này có trách nhiệm thực hiện xp XỈ cơ sở trục tiếp từ

công thức CNT Doolector cũng hỗ trợ kỹ thuật xấp xỉ cơ sở và

chiến lược làm mịn Kỹ thuật xấp xỉ cơ sở có thể được làm mịn ở cả

các bước dễ làm tăng khả năng quyết định cho lý thuyết mở rộng

của mắng và xấp xỉ mức cơ sở

Model Generator (Độ sinh mê hình): Là thành phần cung cấp các

mô hình cu thé trong trường hợp thỏa mãn (SA'I) Nhin chung, một công thức thỏa mãn tương ứng với một lỗi được tim thay Tinh

nắng cung cấp một phản ví đụ cụ thể được trực tiếp sử dụng để gỡ

lỗi Dây là một trong nhưng tính năng chính của kiểm chứng mô

hình Boolector có thể trã về bit-vector cụ thé va các mô hình mảng

Ngày đăng: 21/05/2025, 18:58

HÌNH ẢNH LIÊN QUAN

Hình  4.3.3,b, Cây thực  thí tượng  trưng  phát  hiện  lỗi hàm  abortQ.................. - Luận văn kiểm chứng chương trình dựa trên smt
nh 4.3.3,b, Cây thực thí tượng trưng phát hiện lỗi hàm abortQ (Trang 9)
Hình  2.2.  Mô  hình  hóa  cách  tiếp  cận  của  kiểm  chứng  mô  hình  [3] - Luận văn kiểm chứng chương trình dựa trên smt
nh 2.2. Mô hình hóa cách tiếp cận của kiểm chứng mô hình [3] (Trang 15)
Hình  2  4.  Một  đoạn  mã  nguôn  chứa  vòng  lap - Luận văn kiểm chứng chương trình dựa trên smt
nh 2 4. Một đoạn mã nguôn chứa vòng lap (Trang 21)
Hình  2.6  Đoạn  mã  nguồn  Ở  kết  hợp  dẫu  vào  cụ  thể  vẻ  tượng  meng - Luận văn kiểm chứng chương trình dựa trên smt
nh 2.6 Đoạn mã nguồn Ở kết hợp dẫu vào cụ thể vẻ tượng meng (Trang 23)
Hình  3.1.b.  Sơ  dỗ  cơ  chế  hoạt  dộng  của  thủ  tục  JAPLL,  cho  SAT  [6] - Luận văn kiểm chứng chương trình dựa trên smt
nh 3.1.b. Sơ dỗ cơ chế hoạt dộng của thủ tục JAPLL, cho SAT [6] (Trang 32)
Hình  3.2.  Sơ  dỗ  tổng  quan  của  Boolector  [21] - Luận văn kiểm chứng chương trình dựa trên smt
nh 3.2. Sơ dỗ tổng quan của Boolector [21] (Trang 39)
Hình  4.1  Kiến  trúc  tong  quan  ctta  KLEE - Luận văn kiểm chứng chương trình dựa trên smt
nh 4.1 Kiến trúc tong quan ctta KLEE (Trang 49)
Hình  4.2  Kiên  trúc  của  metaSMT  {10f - Luận văn kiểm chứng chương trình dựa trên smt
nh 4.2 Kiên trúc của metaSMT {10f (Trang 55)
Hình  4.3.  Biểu  thức  dâu  vào  dang  dé  thi  [8] - Luận văn kiểm chứng chương trình dựa trên smt
nh 4.3. Biểu thức dâu vào dang dé thi [8] (Trang 57)
Hình  4.7.  Minh  họa  việc  loại  đường  thực  thi  dự  thừa - Luận văn kiểm chứng chương trình dựa trên smt
nh 4.7. Minh họa việc loại đường thực thi dự thừa (Trang 62)
Hình  43.2a  Hàm  phát  sinh  lỗi  cập  ngoài  kích  thước  của  mảng. - Luận văn kiểm chứng chương trình dựa trên smt
nh 43.2a Hàm phát sinh lỗi cập ngoài kích thước của mảng (Trang 69)
Hình  4.3.3.a  nếu  nếu  xâu  vảo  là  “bycl”  thì  cầu  lệnh  ren  0  ớ  dòng  11  sẽ  không - Luận văn kiểm chứng chương trình dựa trên smt
nh 4.3.3.a nếu nếu xâu vảo là “bycl” thì cầu lệnh ren 0 ớ dòng 11 sẽ không (Trang 71)
Hình  4.3.4a  Đoạn  mã  nguồn  so  sảnh  hai  chuỗi - Luận văn kiểm chứng chương trình dựa trên smt
nh 4.3.4a Đoạn mã nguồn so sảnh hai chuỗi (Trang 73)
Hình  4.3.4.b  Thực  hiện  lượng  trưng  hỏa  cho  bàm  so  sảnh  chuỗi - Luận văn kiểm chứng chương trình dựa trên smt
nh 4.3.4.b Thực hiện lượng trưng hỏa cho bàm so sảnh chuỗi (Trang 73)
Hình  4.3.4.4.  M6  hinh  qua  trinh  gidi  cac  rang  bude  cita  cde  solver - Luận văn kiểm chứng chương trình dựa trên smt
nh 4.3.4.4. M6 hinh qua trinh gidi cac rang bude cita cde solver (Trang 76)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w