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

Luận văn kiểm chứng từng phần cho chương trình c

48 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 Từng Phần Cho Chương Trình C
Tác giả Hoàng Mạnh Khôi
Người hướng dẫn PGS.TS. Nguyễn Việt Hà
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 2012
Thành phố Hà Nội
Định dạng
Số trang 48
Dung lượng 742,58 KB

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

Nội dung

Phương pháp hiện tại để kiểm chứng chương trình này là xây dựng một mô hình đặc tả toàn bộ hành vi của chương trình bao gồm cả hành vi của các hàm được gọi trong chương trình.. Cách tiếp

Trang 1

TRUONG DAI HOC CONG NGHE

HOANG MANH KHOI

KIEM CHUNG TUNG PHAN CHO CHUONG

TRINH C

LUAN VAN THAC SI

Hà Nội - 2012

Trang 2

DAI HOC QUOC GIA HA NOL

TRUONG ĐẠI HỌC CÔNG NGHỆ

Trang 3

MỤC LỤC

BANG CAC CII VIET TAT

DANH MỤC HÌNH VẼ

Chương 1: Giới Thiệu

Chương 2: Một Số Khái Niệm Cơ Bản

2.1 IIệ chuyển trạng thái được gan nhan - LTS

2.2 Các phương pháp biểu diễn L1S

2.2.1 Phương pháp liệt kê 22.2 FSP

2.3 Trừu tượng hóa thủ tục - ĐA

2.4 Logic thời gian tuyến tính - LTL

2.5 Dé thi luéng điều khiển - CFG

Chương 3: Phương Pháp Kiểm Chứng

3.1 Xây dung mô hình Mụm,

3.1.1 Otsmal luỗng điều khiển

3.1.2 Otomat luồng điều khiển mở rộng

3.1.3 Phương pháp trừu tượng mệnh đề

3⁄2 Kiểm chứng

3.2.1 Phép ghép nối song song

3.2.2 Kiém ching tinh ding đắn của chương trình Chương 4: Ứng Dụng Với Công Cụ Copper

Trang 4

1 LTS Labeled Transition System Hệ chuyển tạng thái được

3 PA Procedure Abstraction 'Trừu tượng hóa thủ tục

Trang 5

DANH MỤC HÌNH VẼ

Hình 2.1: Một hệ thống chuyền trạng thải được gản nhãn 5

Tĩnh 2.2: IIệ chuyển trạng thái được gán nhãn không đơn định

Hình 2.3: Hệ chuyển trạng thái được gán nhãn đơn định

Hình 2.4: Dang biếu diễn liệt kê của L.T8

Hình 2.4: Biểu diễn ESP của I.T§ Switch

Tình 2.6: Diễu diễn FSP cia mot LTS

Hình 2.7: Hệ trạng thái được gán nhãn LÌ

Hinh 2.9: Ngữ nghĩa [:TI cho các từ vô hạn trên 24P 13

Hinh 2.10: Minh hoạ ngữ nghĩa của I.I1 14

Ilinh 3.1: CPA cia mét chuong trinh C

Hình 3.9: LT§ của thuộc tính p và LI§ lỗi tương ứng của p 29

Hình 4.3: LTS miêu tả hành vi của chương trình

Hình 4.4: LT5 miêu tá hành vỉ của chương trình

Hình 4.5 Kết quá chạy ví dụ † vớ

Hình 4.7 Kết quả chạy vi du 2 véi céng cu Copper

Hinh 4.8 Két qua chay vi du 2 véi céng cu Copper 40

Trang 6

Chương 1: Giới Thiệu

Đảm bảo chất lượng phần mềm là một trong những hoạt động quan trọng và khỏ

khăn nhất trong quy trình phát triển phần mềm Hoạt động này cũng chiếm Ihời

gian và kinh phí rất lớn (khoảng 15-20%) trong kinh phí của mỗi dự án phát

triển phần mềm Có rất nhiều phương pháp được sử dụng trong việc đảm báo

chất lượng phần mềm Kiểm thử phần mềm đang là giải pháp được sử dụng phd biển nhất trong công nghiệp Tuy nhiên, kiểm thử chỉ cho phép chỉ ra các lỗi của

phần mềm chứ không có khả năng chứng minh hệ thống không cỏn lỗi Dể chứng minh tính đúng đắn của các hệ thống, kiểm chứng mô hình [6] đang được

quan tâm như một giải pháp hiệu quả nhất và ngày càng được sử đụng tộng rãi,

đặc biệt là trong các hệ thống phần mềm đòi hỏi độ chính xác cao

Kiểm chứng mỏ hỉnh là một nhóm các kĩ thuật ứng mình tự đông tính đúng đẫn của hệ thống với các đặc tâ thuộc tính nào đó Với mục đích này, các

kỹ thuật kiểm chứng mô hình phải xây dựng mô hình hình thức đặc tả chính xác

hành vi của hệ thống cần kiếm chứng Mô hình là một hệ thông bao gỗm tập hợp

có giới hạn các trạng thái và tập hợp các bước chuyển tiếp giữa các trạng thái

đỏ Kiếm chứng mô hinh là chứng minh tinh đúng đắn của mô hình bằng cách

xác định xem thuộc tính mà người dùng mong muốn có được thöa mãn bởi mô

hình đỏ hay không [6]

Trong kiểm chứng mô hình phần mềm cỏ hai bài toản được quan tâm

chính đó là kiếm chứng tính đủng đắn của đặc tả thiết kế và kiểm chứng tỉnh

đúng đắn của mã nguồn Bài toản kiểm chứng tự động mã nguồn được xem là ủng dụng đầu tiên của kiểm chứng mô hình trong việc đấm bảo chất lượng phân mềm Dủ cách tiếp cận này đã được để xuất từ lâu nhưng đến nay nó vẫn là vấn

để mở và chưa có giải pháp thða đáng do gặp phải vấn đề bùng nổ không gian

trạng thái và khỏ khăn trong việc xây dựng mô hình đặc tả hành vi của mã

nguễn Vì vậy kiểm chứng mã nguần vẫn nhận được sự quan tâm rộng rãi trong

nghiên cứu cũng như trong ửng dụng công nghiệp

Xem xét một chương trình C có mã nguồn lớn và tổn tại nhiêu lời goi đến các hàm thư viện hoặc các hàm do người phát triển định nghĩa Phương pháp hiện tại để kiểm chứng chương trình này là xây dựng một mô hình đặc tả toàn bộ hành vi của chương trình bao gồm cả hành vi của các hàm được gọi trong chương trình Để làm được việc này, yêu cầu là phải có tất cả mã nguồn của các

ham nay Tuy nhiên, chứng 1z thường khó khăn trong việc có đầy đú mã nguồn

Trang 7

và tài liêu đặc tả của các hàm được gọi vi trong nhiều trường hợp chúng ta sử dụng đến thư viện của các bên thứ ba Kết quá là, chúng ta không áp đụng được phương pháp hiện tại cho bài toán này Cho dủ chủng ta có đủ mã nguôn của các hàm được gọi, việc áp dụng phương pháp kiểm chứng này cũng sẽ gặp phải bài toán bủng nỗ không gian trạng thái vi kích thước của chương trình cộng với mã

ngudn cua cde ham được gọi lả rất lớn

Trong luận vấn này lôi xin giới thiệu một phương pháp mới |3| [4] tong

kiểm chứng tự đông để kiểm chứng một cài dặt của chương trình Œ có mã nguồn

lớn và có nhiều thành phần nhằm giải quyết các vẫn để nêu trên

Cách tiếp cận của phương pháp là chúng ta đưa việc kiểm chứng một chương trình phần mềm lớn về việc kiểm chứng các thành phần con nhỏ hơn và

đơn giản hơn bằng cách trừu tượng hóa hành vi [3] (procedure abtraction-PA)

của các thành phần con (hay các hàm thư viện) theo một khái niệm đắp tã của

máy hữu hạn trạng thái đỏ là hệ thống chuyển trạng thái được gắn nhãn 1T8

(Label Transition System) |4| Phương pháp cho phép chúng ta tự dịnh nghĩa các hành vi của các hàm thư viên (chưa có mã nguồn hoặc chưa rõ hành vĩ) và

sử dụng chúng như là giả thiết trong quá trình xây dựng mô hình kiểm chứng,

Nội dung chính của luận văn là giới thiệu phương pháp kiểm chứng phần

cài đặt của một chương trình viết bằng ngôn ngữ C có đám bảo đứng với đặc tả

của nó Để làm được điều đó, trước hết từ mã nguồn C chúng ta phải xây dựng

được mô hình LTS biểu diễn hành vĩ của chương trỉnh bằng phương pháp trừu tượng mệnh đề (predicate abstraction) kết hợp với các IS giả thiết biểu diễn hành vị của các thành phan con, sau đó sử dụng kĩ thuật kiểm chứng để kiểm

định xem nó có đâm bảo đúng với mô hình 1L§ của đặc tả hay không,

Nội đung của luận văn được trình bày trong 4 chương:

Chương I giới thiệu về dễ tải, trình ông quan về nội dụng phương

pháp được nghiên trong để tải, mục tiêu của để tài và cầu trúc của luận văn

Chương 2 trình bày các khái niêm cơ bản phuc vụ cho để tải, chương này

đưa ra các khái niệm về mô hình chuyển trạng thái được gin nhãn LTS, các

phương pháp biểu điễn LTS, khái niệm về trừu tượng hóa hành vị của hệ thống

PA, cũng như các khái niệm cần thiết trong kĩ thuật kiểm chứng

Chương 3 trình bảy nội dung chính của luận văn, đó là nều

ch xây dựng,

mô hình T.T8 biểu diễn hành vi của hệ thắng từ mã nguẫn bắt dầu bằng việc xây

Trang 8

3

dụng sơ đồ luồng xử lý CEA (Control Flow Automata) [3] và sơ đỗ luồng xử lý

mở rộng (Expanding Control flow Automata) [3] cia chương trình có sử đụng các LTS§ giả thiết Giới thiệu phương pháp trừu tượng mệnh để dé xây dựng được mô hình LTS biểu điễn hành vi của mã nguễn từ sơ đồ luỗng xử lý mở rộng Và cuối củng nêu cách kiểm chứng mô hình LTS của phần cài đặt có đảm

táo với mô hình LT§ của đặc lá

Chương 4 luận văn dưa ra ứng dụng của phương pháp bằng cách giới

thiệu các công cu Copper [2] Dau vào của công cụ này là tập fde mã nguồn Œ

của chương trình và các đặc tả của các thuộc tính cần kiểm chứng, đầu ra là kết

luận phần cài đặt đã đúng với đặc tả của nó hoặc đưa ra phần ví dụ chứng minh

cài đặt không đúng với đặc tả Trong chương này giới thiệu một vài ứng dụng,

đơn giản được áp dụng thực tế trên công cụ băng cách nêu chỉ tiết cách xây

đựng các file đặc tả cũng như cách xây dựng các PA giả thiết bằng ví dụ

Phần cuối của luận văn trinh bảy những kết quả dạt dược, hướng nghiên cứu phát triển trong tương lai vả những hạn chế cần khắc phục

Trang 9

Chương 2: Một Số Khái Niệm Co Ban

Trong chương này chúng 1a sẽ tìm hiểu một số khái niệm oần thiết như máy hữu

hạn trạng thái, hệ chuyển trạng thái được gán nhãn và khái niệm về trừu tượng

hóa hành vị một chương trình

2.1 Hệ chuyển trạng thái được gán nhãn - LTS

Trong các nghiên cứu về máy trạng thái, cấu tric Kripke [6] thường được sử

dụng để mô hình hoa và đặc tá hệ thống, tuy nhiên đối với phương pháp này chúng ta sẽ sử dụng khái niệm hệ thống chuyển trạng thái dược gan nhãn

(Labeled Transition System - 1.78) ]4| I.T8 cũng tương tự như cấu trúc Kripke

nhưng các bước chuyển trạng thái dễu dược gán nhãn bởi các hành động

Về lý thuyết sự hiên diện của hành động không làm tăng khả năng biểu

diễn của LTS hơn cầu trúc Kripke Tuy nhiên, nó là tự nhiên hơn cho các nhà

thiết kế và kỹ sư phần mềm để thể hiện các hành vi mong muốn của hệ thông

thằng cách sử dựng sự kết hợp giữa trạng thái và hành động

Định nghĩa 2.1: Hệ thông chuyển trạng thải được gắn nhãn

Một hê chuyển trạng thái được gán nhãn Mi là một bộ có thứ tự gồm bắn thành phân (S, Sạ, Act,T) trong đỏ:

s8 là một tập khác rổng các trang thái của M

® Sp CS lả trạng thái khởi tạo

®_ Act lá tập các hành dộng quan sắt được

® TCSX AclXx S là hàm chuyển trang thái

Ta kí hiệu §— — §” nếu có một hành động a chuyển hệ thống tử trang,

thái S sang trang thái S` Trang thái kết thúc TOP là trang thái mà ở đó không,

có hành động để chuyển sang một trạng thái nào khác, tức với SE S,Va E

Act (STOP,a,5) £T

Chủ ÿ 2.1: Chủng ta dùng T dễ kí hiệu trạng thái lỗi đặc biệt của hệ thống, và TT

để biểu diễn LTS <{x}, Acl, Ø, x> z là hành động cục bộ không quan sát được

trong môi trường của một hệ thông phần mềm.

Trang 10

Hình 2.1: Một hệ thẳng chuyển trạng thái được gán nhãn

Ilinh 2.1 mồ tả một ví đụ về một hệ chuyển trang thái được gắn nhãn MI =

(5, So, Acl, T), trong đỏ:

® S— {30, 51, SIOP},

® AcL— {lock, return {0}, retum {1}},

» T— {(80, lock, S1) (81 return {0}, STOP), (80, return {1}, STOP)},

» S0 1ä trạng thái khởi đầu

Định nghĩa 2.2: Kích thước của hệ chuyển trạng thái dược pán nhãn

Kích thước của hệ chuyến trạng thải được gán nhãn MI — (S,Sg, Act, T) là

sé trang thai ctia M, ký hiệu là [MỊ, trong d6 [Mj = [SI

Định nghĩa 23: Hệ chuyển trạng thái được gắn nhãn đơn định và không đơn

định

Một hệ chuyển trạng thái được gán nhãn MI - (S,Sạ, Act,T) là không đơn

định nếu nó chứa 1- chuyển địch hoặc nếu 3 (s,a, s ), (,a,s” ET thì s # s”

Ngược lại, M là hệ chuyển trạng thái được gán nhãn đơn định

Chú ÿ 2.2: Cho 2 hệ chuyên trạng thái được gán nhãn M = (S, So, Act,T) và MỸ =

(S',Sự, Act,T') Ta nói M chuyển dịch thành Mĩ với chuyển dịch a nếu và chỉ

nếu (Sạ,a, Sạ) € T, Act = Act, § — 8' và T = T/ Tạ ký hiệu: M— — MỸ

Trang 11

Ví dụ 2.2: Miột hệ thông chuyển trang thai được gán nhãn đơn định vả không

don dinh

1Tình 2.2: 11é chuyén trạng thái được gắn nhãn không đơn định

Hình 2.2 mổ tả một hệ chuyển trạng thái được gản nhãn không đơn định

M — (8,5, Act, T) trong dé: § = {89,851,852}, Act = {ay, 42,43}, Sp la rang thái

khởi đầu và T = {(Sọ, a4, 8), (89,44, $2), (81,82, 82), (S243, Sọ )}

Khi hệ thống đang ở trạng thái sọ, thực hiện mệt hảnh động a, thi hé

thống có thể chuyển đến trạng thải sự hoặc trạng thải sự Như vậy, trạng thải kế

tiếp của sọ khi thực hiện cùng một hành động a+ là không xác định duy nhất hay

không tất định Ta gọi đó là hệ chuyển trạng thái được gán nhãn không đơn

định

Ilinh 2.3: 116 chuyén trang thai duoc gán nhăn đơn định

Hệ chuyển trang thai được gản nhãn như trên hình 2.3 là một hệ chuyển

trang thải được gắn nhãn dơn định Từ trạng thải 5; bat kỳ nếu thực hiện một hành động a¡ nào đó thỉ hệ thông sẽ chuy

nhát sự,

sang một trạng thái xác định duy

Trang 12

7

Dinh nghia 2.4: Din xuat cha mot hé chuyén trang thái dugc gén nhin M

Tin xuất ø của một hệ chuyến trạng thái được gán nhin M =

(,5¿,Act,T) là một chuỗi hữu hạn các hình đông a„,a;, a„ với ai = 5

a, EAct(— 1,.,.n)

Như vậy dẫn xuất o của hệ chuyển trang thái được gán nhãn M là một

chuỗi các hành động quan sát được mà MI có thể thực hiện từ trạng thái khởi tạo

Sa

Vi du 2.3: Voi hé chuyển trạng thái được gán nhăn MM như trên hình 2.1, chuỗi

các hành động lock, return {0} là một đẫn xuất trên MI Từ trạng thái 50 thực

hiện hành động lock hệ thống chuyển sang trạng thái S1, tiếp tục thực hiện hành động reuurn{0} hệ thống chuyền sang trang thai STOP

Chủ ý 2.3: Ta ký hiệu ø†X là một dẫn xuất thu được bằng cách loại bỏ khỏi œ tất

cả các hành động a mả a £ © Tập tất cả các dẫn xuất của M được gọi là ngôn ngữ của M, ký hiệu L(M) Một dẫn xuất q = aa; ap là một dẫn xuất hữu hạn

trên hộ chuyển trạng thái được gán nhãn M Ta ký hiệu hộ chuyển trạng thai

được gan nhãn Mẹ = (S,5ọ,Act,T) với § = {So,S+, ,5n} và T= {S¡_1,ay, Sị }

1, a Ta nói rằng một hành động a € AcL được chấp nhận từ một trang thái s € S nếu tổn tại s” € § sao cho (s,a,s 3 €T Tương tự vậy ta nói rằng một dẫn xuất aya; .a„ được chấp nhận từ trạng thái s € § nếu tồn tại một dãy các

Sp sao cho Vig Tm thi (5;4,a;,5;) ET

Cho một dẫn xuất ơ = đ,d, ,„ Và hai trạng thái s, † của hệ chuyển

trạng thái được gán nhãn M = (S, Sạ,Act, T) Ta nói rằng t có thể đi đến được từ

s thông qua dẫn xuất ơ (viết là s S 1) nếu tổn tại một tập các trạng thái

So, , Sạ VỚI 8 = 8g Và t— Sạ sao cho so 38453 Sy

Ví dụ 2.4: Với hệ chuyển trang thai M trong vi du 2.1, ta có trạng thái S FOP có

thể đi đến dược từ 80 thông qua dẫn xuất œ; = (lock, rutum {0}) hoặc dẫn xuất G2 — (return {1})

Trang 13

2.2 Các phuơng pháp biếu diễn LTS

2.2.1 Phương pháp liệt kê

Dạng liệt kê là một phương pháp biểu diễn L.T§ khá tự nhiên và phổ biến Trong,

phương pháp nảy, một L1 được biếu diễn bằng cách liệt kê tất cả các hàm

chuyển trạng thái cùng với trang thái khởi tạo Hình 2.4 định nghĩa đệ quy phương pháp biểu diễn này Trong đó State đại diện cho một trạng thái của hệ thống, Action đại điện cho một hành động thuộc tập các hành động, Transition

là một phép chuyển trạng thái, Transiions là một đãy tuần tự các phép chuyển

trạng thái và LT$ được biểu diễn bằng Transitions vả kết thúc bằng trạng thải

khối lạo

State =Id Action = Id

‘lransition — (State, Action, State)

‘lransitions — ‘Transition | ‘Iransition, ‘Transitions

LTS = Transition, State

Hình 2.4: Dạng biểu diễn liệt kế của T.T8

2.2.2 FSP

ESP là viết tắt của Einite State Process [9] (các tiễn trình hữu hạn trạng thái), là

một ngôn ngữ biểu điễn tương ửng voi LTS FSP dùng để xây dựng mô hình các

tiến trình Một tiến trình được chia làm một hoặc nhiều hành động nguyên tử (hành động nguyên tử không thể chia được thành các hành động nhỏ hơn), các hành động nảy được thực thi một cách tuân tự Mỗi hành động gây ra một sự

chuyển tiếp từ trạng thái hiện tại sang trạng thái tiến theo Trinh Ly các hành

đông xây ra có thể dược xác dịnh bằng một dễ thị chuyển tiếp Nói cách khác, chúng ta có thể mô hình hóa các tiến trình thành các máy hữu hạn trạng thai

Như vậy, chúng ta hoàn toàn có thể mô hinh hóa chỉ tiết một hệ chuyển trạng thái được gắn nhãn (L.T8) bằng các khái niệm đặc tá của F8P

Trang 14

Các thành phần cư bản trong FSP:

Action prefix ((x -> P)): Nếu x là hành động và P là một tiễn trình thì một

action Pređx (x -> P) mơ tả một tiến trình trong đĩ các hành động x được thực

hiện theo mơ tã của tiến trình P Tiến trình P phải viết hoa chữ cái đầu, hành

đồng x việt bằng chữ cái thường

Vi dụ 2.5:

Hình 2.5 biểu điển bằng khái niệm Action Prefix trong FSP mét LTS

SWITCIL LTS nay bao gom các trạng thái 0, 1 vd cdc hanh déng on, off

SWITCH OFF, OLE = (on -> ON),

ON = (off-> OFF), Hay,

lara chon (| Chọce): Nếu x, y là các hành động thi (x -> Q | y -> P) mơ

tả một tiền trình trong đĩ các hành động đầu tiên tham gia là x hoặc y Các hành đơng tiếp theo hoạt déng theo mơ tả của Q nếu hành dộng dầu tiên xây ra là x,

các hành động tiếp theo hoạt động theo mơ tả của P nêu hành động đầu tiên xáy

Hinh 2.6: Biểu điễn FSP cia mat LTS

Biểu dig LTS trac quan va dé hiểu trong khi FSP mang tinh tổng quát hon, tuy nhiên hai cách biểu điễn là tương đương nhan, tương ứng với mỗi FSP

thi cĩ một biểu điển LTS và ngược lại Dé biéu điễn được hết hệ thơng LTS/FSP

Trang 15

còn có nhiều từ khỏa và cấu trúc khác có thế tham khảo thêm trong [9] mà không đề cập chỉ tiết trong luận văn này,

2.3 Trừu tượng hóa thủ tục - PA

Để kiểm chứng một chương trình từ mã nguẫn chúng ta phải trừu tượng ha

được các hành vi của chương trình và các hảm thư viện của nó bằng các đặc tả

LTS ‘Trong một chương trình Œ, một hảm thư viện có thể thực hiện những chức

năng khác nhau tùy thuộc vào tham số đầu vào hay ngữ cảnh thực hiện, trong cách tiếp cận của phương pháp này chúng ta đưa ra khải niệm trừu tượng hóa thi tuc (Procedure Abstraction - PA) [3] cho phép nhiều đặc tả LTS biểu diễn

cho một thủ tục hàm

PA của một thủ tục hàm proe là một tập hữu hạn các cấp

GŒi,MI), (Bạ, Ma) trong đó

© g¡ là điều kiện (guard) ràng buộc trên các tham sẽ của proc,

°M; là 1.T§ trừu tượng hóa hành vi của proc ứng với điều kiên g¡ dạt giá

Trang 16

Hinh 2.7: Hệ trạng thái được gán nhãn L1

Ứng với trường hợp tham số đầu vào bằng 1, hành vi của my proo được

mô tả bằng máy trạng thái L2 (hình 2.8)

giả thiết trong việc xây dựng mô hình kiểm chứng, ta xem đó là các PA giả thiết

Ví dụ 2.8: Với chương trỉnh C ở ví dụ 2.4 ở trên có sử dụng hai hảm thư viện

không có mã nguồn là fooQ và bar(Q Chúng ta tự định nghĩa các LTS tương ứng với mỗi hàm và cung cấp các PA cho quá trình kiểm chứng LTS đặc tả tương

img cho ham foo() la FOO, điều kiện (guard) Lương img la TRUE luc dé PA gid

thiết biểu điễn cho hảm fooQ là (TRUE,FOO), điều này có nghĩa là đưới mọi

điều kiện của tham số dầu vào thì ham foo(} luén duoc biểu diễn bing LTS

FOO Tương tự như vậy ta có PA cho hàm barQ là (TRUE, BAR)

Trang 17

2.4 Logic thai gian tuyén tinh - LTL

Logic thời gian tuyến tính (Linear Temporal Logic - LTL) được để xuất bởi Amir Pnueli (1941-2009), là một loại logic áp đụng cho thời gian, được sử dụng

để xây dựng các công thức về Lương lai Ví dụ như một điều kiện cuối cùng sẽ

đúng hoặc một điều kiện sẽ đúng cho đến khi một điều kiện khác đúng,

1.TL là một phân của ŒTI.* (một loại logic có thêm các lượng từ và nhánh

thời gian) I.TL đầu tiên được để xuất dùng trong kiểm chứng hình thức bởi

Air Pnueli năm 1977

Các toán tử trong LTL:

Ngoài các toán tử —, ^ biểu điển các công thức trong logic mệnh để, còn

có một số toán tử được bổ sung thêm k, G, X, U

© G doc là Global đuôn xây ra)

© X doc la NEXT (tgp theo sé xây ra)

® Udoe la UNTIL (cho dén khi x4y ra)

© Fdoe 1A Future (cudi cing sẽ xây ra)

‘Trong đó các toán tử một ngôi có độ tru tiên cao nhất, toán tử ¬ và toán tử

X có dộ ưu tiên tương dương nhau Toán tử L7 có độ ưu tiên hơn các toán tử A,V

và _ › Toán tử U có độ ưu tiên bên phải, tức là công thức @„U (@;U @;) có thể

viết thành @;U @;U @¿

Cú pháp trong LTL:

LTL được xây dựng từ các bién ménh dé AP (Atomic Proposition), các

toán tử logic và cáo toán tử thời gian X, U Một cách hình thức, các công thức LTL dược dịnh nghĩa như sau

©_ Nếu p là một mệnh đề nguyên tử thi p (p e AP) lá một công thức

Trang 18

13 Ngữ nghĩa của I/TI¿

Công thức LTL biểu điễn các tính chất của một chuỗi hành động (gọi là

vết - trace) Một chuỗi các hành động có thể thoả một công thức LTI hoặc

không Ngữ nghĩa của công thức Tl @ được định nghĩa như một ngôn ngữ

Words(g) chứa tất cả các từ vô hạn trên bang chit cdi 24" thoả mãn œ, sau đó

ngữ nghĩa được mở rộng để diễn giải toàn bộ các trạng thái và các chuỗi hành

động của một hệ thống dịch chuyến

Định nghĩa 2.6: Ngữ nghĩa của LTL

Cho œ là một công thức LTL trên AP Tỉnh chất logic thời gian được sinh

Ta bởi tp là

Words(@) = {oc (2^P)%}| ơ E@

Ö đây, quan hệ thoả được E là tập con của (2^P)® x LTLlả quan hệ nhỏ

nhất với thuộc linh trên hình 2.9 Ký hiệu E C (2^P)® x LTL,

ora néu va chi néua@ € Ag (Ap F Ø}

]

G E @iU4@¿ nếu và chỉnếu 3ƒ > 0.0[ƒ ] E@

va olf ) & gy cho moi 0<i <j

Hình 2.9: Ngữ nghĩa LTL cho các tử võ hạn trên 24°

Ví dụ 2.9: Ngữ nghĩa của I.TL,

Giả sử a, b là hai mệnh để nguyên tử, hình 2.10 minh họa ngữ nghĩa của các phép toán đối với các mệnh để này Trong đỏ toán tử F được ký hiệu là Ô,

toán tử Œ ký hiệu lả |, Loán tử X ký hiệu lả ©

Trang 19

Hình 2.10: Minh hoa ngữ nghĩa của LTL

2.5 Dé thi luông điều khién - CFG

Trong các kĩ thuật kiểm chứng, có một khái niệm được sử dụng Tông rãi trong

quá trình phân tích một chương trinh phần mềm dó là đề thị luỗng điều khiển (Control Flow Graph - CFG)

D6 thi luéng diéu khiến G¡ = (N,E) của một chương trình f là một dé thi có

huớng trong đó

+ Mỗi dính (node) nạ tương ứng với một câu lệnh œ trong f và bổ sung

thêm hai dỉnh nạn, Hạ;

«Canh (n„,n„') € E nêu lệnh œ thực hiên ngay lập tức sau lệnh œ Với câu

lệnh đâu tiên œ ta đưa vào cạnh (nạụu,nạ„,) Và ba sung canh (nyt Nou)

cho mỗi dinh ng: ma sau khi thực hiện lệnh a thi thoat khỏi hàm bởi lệnh

return hoặc kết thúc hảm

CIG của một hàm rỗng vi dụ như hàm không có câu lệnh sẽ bao gồm N= (nạ, nụ } Va E = {Cin ngụy )} Dinh (node) ny, 18 dinh vao (entry node) đuy nhất và ngụ: là đình ra (exit nođe) duy nhất của Gr

Trang 20

void Search(int arr[], int key, int

*found, int *index)

Trang 21

Chương 3: Phương Pháp Kiếm Chứng

Mục đích chính của chúng ta là cần phải kiểm chứng xem phần cai dat mi

nguồn của một chương trình C có thõa mãn với đặc tá của nó Msz¿„ (dược biểu

diễn bằng một L1S) hay không? Dễ làm được việc đó thì trước hết từ phần cài

đặt chúng ta phải xây dựng được một mô hình Mụạy (biểu diễn bằng một 1.I8)

mô tả hành vi của phần cải đặt, sau đó sử đụng kĩ thuật kiểm chứng để kiểm

định sự thốa mãn ctia Mimp VOI Mspoc (Mirap F Mspec )-

3.1 Xây dụng mô hình Mịm,

Cho một chương trình C và một tập các mệnh để logic (predicates) P, hệ trạng thái được gán nhãn Mẹgz¿‹ =(Sspec „ Sospec ; ACtspec, Tsg„ ) là đặc tá của chương,

trình và các PAs gia thiét {PAg, .,PA,} Trong phần nay sẽ trình bay cách xây

dung Mya, ti ma nguồn của chương trình bằng cách sử dụng các PA giả thiết,

các diều kiện (Guard) Gsyạ, và tập một các mệnh đề logie P Việc xây dựng Mimp dựa trên các nguyên tắc sau:

«© Mỗi trạng thái của May được mô hình từ một trạng thái của chương trình trong quá trình thực hiện, vi vậy mỗi trạng thái sẽ bao gồm một thành

phân điều khiển (control cormponenU và một thành phần dữ liệu (dala

component),

« ‘Thanh phan điều khiển là đại diện trực quan chơ các giá trị của chương trình và nó thu được từ otomat luỗng điều khiển (CEA) của chương trình

* Thành phần dữ liệu lả dại điện trim trong cho trạng thải các biển của

chương trình, được tính toán dựa trên tập các mệnh đề logic P

+ Các bước chuyến trạng thái trên Mimp tuong img voi các bước chuyén

trang thai én CFA

Không mắt tỉnh tổng quát ta giả thiết trong chương trình có 5 loại lệnh

gán, gọi hàm, rể nhánh ¡[ ~then-clsc, rcturn và lệnh goto Ta cũng gọi Sumt là tập các câu lệnh của chương trình và Hxp là tập tất ả các biểu thức logic (ví dụ như

các điều kiện rẽ nhánh) trên các biến của chương trình

Ta cũng mô hinh hóa kết thúc một hàm hay một chương trình C (vi đụ

như lênh return) bằng mệt lớp hành động đặc biệt gọi là lớp return Mọi hảnh

đông reLurn r đều kết hợp với một giá trị RetValŒ) có kiểu integer hoặc kiểu

Trang 22

17

void ‘ap tất cả các hành đông return nếu có giá tri trả về kiểu interger gọi là IntRet, nếu giá trị trả về là kiểu void goi là VoidRet Tất cả những hành động khêng phái là hảnh động return được gọi lả hành động cơ ban (basic action) LTS (S,Sq,Act,T) mé tả một hàm hay một chương trỉnh C phải luôn thốa mãn

điêu kiện Vs E S,s as STOP khi va chi khi a là một hành động rettrn

3.1.1 Ofomat luỗng điều khiển

Việc xây dựng mô hình Mụmp từ mã nguồn của một chương trình C bắt đầu bằng

việc xây dựng otomat luồng điều khiển (Control Flow Automata - CEA) của

chương trình theo nguyên tắc:

® Mỗi trạng thái của CEA là một diém diéu khién (control location) trong chương trinh (tương ứng với một câu lệnh trong chương trình)

« Mỗi bước chuyến trang thái trong FA tương ứng với một bước chuyển

giữa hai điểm điều khiển (hai câu lệnh) trong chương trình

Dinh nghĩa 3.1: CEA của một chương trình C

CA của một chương trình là một bộ gồm 4 thành phần {Scp,Icg, Tcg, £} trong đó

* Scp la tập các trạng thái,

* Icy € Spy là trạng thái khởi tạo,

© Tor S 5œ X Sœ là tập các chuyến đổi trạng thái,

£: Sœr\ {Final} > Stmt là hàm gán nhãn các trạng thái cha CFA

{Final} 1a trang thin kết thúc duy nhất của ŒEA (ẹg) là lệnh khới tạo

của chương trình, vả (s4,8)) € Trg néu va chi né

dây dược thốa mẫn

một trong các điều kiên sau

© Nếu £(s;) là lệnh gán, lệnh gọi hàm hoặc lệnh goto và £(s;) là lệnh kế

tiếp duy nhất của nó

«Nếu £(s;) là lệnh rẽ nhánh và £(s;) là lệnh kế tiếp nó sau then hoặc clse

© Néu £(s;) 1a lénh retum va s2 — {Final}

Từ định nghĩa đễ thấy là CFA của một chương trình chính là CEG được gan nhấn tại các dĩnh

Trang 23

Ví dụ 3.1: Xem xét một hàm C như sau:

Trang 24

19

Với CEA ở trên các trạng thái được gán nhãn tương ứng là 80, 81 59, FINAL, trong dé SO la trang thai khéi tao, FINAL là trạng thái kết thúc

Nhu vay CFA là mô hình đơn giản nhất của chương trình tuy nhiên nó chỉ

mới đặc lâ được luỗng điều khiển của chương trình mà chưa trừu tượng hóa

được đữ liệu các biến tại các trạng thải cúa chương trình Để làm được điều này chúng ta sử dụng dến tập các mệnh để logic P và một phương pháp gọi lả prcdicatc absIraction |3| dễ xây dựng một mô hình lưồng điều khiển mớ rộng

3.1.2 Otonmt luồng điều khiến mở rộng

Miô hình của chương trình được đặc tâ bởi otomat luỗng điều khiển mở rộng là

sự kết hợp giữa mỗi trạng thái s của CFA với một tập cơn của Exp thu được từ P goi la P, (P thường là các điều kiện rẽ nhánh trọng chương trinh) Như vậy nêu

P, có k phẫn tử mỗi phần tử nhận giá trị là true hoặc false thì lúc đó mỗi trạng,

thái trong CFA sẽ tương ứng với 2* trạng thái trong CFA mớ rộng Việc xây

dung LTS Mim, thyc hiện theo các bước như sau:

1) Xây dựng CEA

2) Xây dựng một CFA mổ rộng Mgạ = (Smp,Sorxp,ÀCLgpec,Tgạ) theo

nguyên ta

«_ Với mỗi trang thai trong CFA, ching ta bd sung 2 trang thai trong Six),

mỗi trạng thải trong CFA mở rộng là tổ hợp trạng thải trong CFA và giá

trị của tập các mệnh đề logic đang xem xét

*®_ Xem xét một canh (sị,s;) trong CEA Lúc đó mỗi sy va s; số Lương ứng,

với 2Ì trạng thải trong tập cdc trang thai Sy) Nhu vậy (Sạ,sz) có

2 x 2È khả năng chuyển đổi trạng thái tương ứng trong Tpu„, Tuy nhiên không phải tất cả các khả năng chuyển trang thái đều thuộc Tu Chúng,

ta sẽ sử dụng công cụ chứng minh dinh ly (theorem prover) [4] đế quyết định xem phép chuyến đổi nào là thực sự được chấp nhận Chúng ta cũng

sẽ chỉ loại bỏ những chuyển trạng thái nào bị loại trừ bới kĩ thuật chứng minh dinh ly

3) Mgxp là mồ hình chính xác hơn so với CEA Tuy nhiên nó cũng không mô

hình hớa được hành vị của các hàm thư viện mã thủ tục proc gọi dến Để

làm được việc dé thi chung ta phải kết hop các PAs giả thiết với Mixy LES thu được sau khi kết hợp với các PAs giả thiết chính là Mimp-

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

HÌNH ẢNH LIÊN QUAN

Hình  2.1:  Một  hệ  thẳng  chuyển  trạng  thái  được  gán  nhãn. - Luận văn kiểm chứng từng phần cho chương trình c
nh 2.1: Một hệ thẳng chuyển trạng thái được gán nhãn (Trang 10)
Hình  2.2  mổ  tả  một  hệ  chuyển  trạng  thái  được  gản  nhãn  không  đơn  định - Luận văn kiểm chứng từng phần cho chương trình c
nh 2.2 mổ tả một hệ chuyển trạng thái được gản nhãn không đơn định (Trang 11)
Hình  2.5  biểu  điển  bằng  khái  niệm  Action  Prefix  trong  FSP  mét  LTS  SWITCIL  LTS  nay  bao  gom  các  trạng  thái  0,  1  vd  cdc  hanh  déng  on,  off - Luận văn kiểm chứng từng phần cho chương trình c
nh 2.5 biểu điển bằng khái niệm Action Prefix trong FSP mét LTS SWITCIL LTS nay bao gom các trạng thái 0, 1 vd cdc hanh déng on, off (Trang 14)
Hình  2.8:  Hệ  trạng  thái  được  gán  nhãn  L2. - Luận văn kiểm chứng từng phần cho chương trình c
nh 2.8: Hệ trạng thái được gán nhãn L2 (Trang 16)
Hình  2.9:  Ngữ  nghĩa  LTL  cho  các  tử  võ  hạn  trên  24° - Luận văn kiểm chứng từng phần cho chương trình c
nh 2.9: Ngữ nghĩa LTL cho các tử võ hạn trên 24° (Trang 18)
Hình  2.10:  Minh  hoa  ngữ  nghĩa  của  LTL. - Luận văn kiểm chứng từng phần cho chương trình c
nh 2.10: Minh hoa ngữ nghĩa của LTL (Trang 19)
Hình  2.11:  Một  chương  trinh  C  và  CEG  của  nó. - Luận văn kiểm chứng từng phần cho chương trình c
nh 2.11: Một chương trinh C và CEG của nó (Trang 20)
Hình  3.2:  8poc  của  chương  trình  Œ  trong  ví  dụ  3.1 - Luận văn kiểm chứng từng phần cho chương trình c
nh 3.2: 8poc của chương trình Œ trong ví dụ 3.1 (Trang 27)
Hình  3.5  minh  họa  EA  với  mỗi  trang  thái  s  đã  được  gán  các  tập  P,  tương - Luận văn kiểm chứng từng phần cho chương trình c
nh 3.5 minh họa EA với mỗi trang thái s đã được gán các tập P, tương (Trang 28)
Hình  3.6:  Mu„„  của  một  chương  trình  C. - Luận văn kiểm chứng từng phần cho chương trình c
nh 3.6: Mu„„ của một chương trình C (Trang 31)
Hình  4.1:  Input/Ouput  của  công  cụ  Copper. - Luận văn kiểm chứng từng phần cho chương trình c
nh 4.1: Input/Ouput của công cụ Copper (Trang 35)
Hình  4.2:  Kiến  trúc  mình  họa  công  cụ  Cuppcr. - Luận văn kiểm chứng từng phần cho chương trình c
nh 4.2: Kiến trúc mình họa công cụ Cuppcr (Trang 37)
Hình  4.7  Kết  quả  chạy  vỉ  dụ  2  với  công  cụ  Copper. - Luận văn kiểm chứng từng phần cho chương trình c
nh 4.7 Kết quả chạy vỉ dụ 2 với công cụ Copper (Trang 44)
Hình  4.8  Kết  quả  chạy  ví  dụ  2  với  công  cụ  Copper. - Luận văn kiểm chứng từng phần cho chương trình c
nh 4.8 Kết quả chạy ví dụ 2 với công cụ Copper (Trang 45)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm