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

Nghiên cứu khả năng chuyển đổi giữa các đặc tả hình thức và ứng dụng trong kiểm chứng phần mềm

59 705 0

Đ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

Định dạng
Số trang 59
Dung lượng 7,87 MB

Nội dung

Thay vì kiểmchứng trên toàn bộ hệ thống, công cụ này chia bài toán kiểm chứng thành cácbài toán nhỏ hơn ứng với các thành phần phần mềm và kiểm chứng các thànhphần này một cách riêng biệ

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Đậu Quốc Toản

NGHIÊN CỨU KHẢ NĂNG CHUYỂN ĐỔI

GIỮA CÁC ĐẶC TẢ HÌNH THỨC

VÀ ỨNG DỤNG TRONG KIỂM CHỨNG PHẦN MỀM

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

HÀ NỘI-2015

Trang 2

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Đậu Quốc Toản

NGHIÊN CỨU KHẢ NĂNG CHUYỂN ĐỔI

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

NGƯỜI HƯỚNG DẪN KHOA HỌC: TIẾN SĨ PHẠM NGỌC HÙNG

Trang 3

Lời cảm ơn

Trước tiên, tôi muốn gửi lời cảm ơn sâu sắc nhất đến thầy giáo, TS Phạm NgọcHùng, người đã tận tình chỉ bảo và hướng dẫn tôi trong suốt quá trình học tập,nghiên cứu và thực hiện luận văn tốt nghiệp

Tôi xin bày tỏ lời cảm ơn sâu sắc đến những thầy cô giáo đã giảng dạy tronghai năm qua, đã tạo cho tôi những điều kiện thuận lợi để học tập và nghiên cứutại trường Đại Học Công Nghệ

Tôi xin chân thành cảm ơn GS Jeff Magee - Trưởng khoa Kỹ Thuật, trường

đại học Hoàng Gia London, tác giả cuốn sách "Concurrency - state models and Java

programs (2 ed.)" Giáo sư đã nhiệt tình giải đáp các vấn đề mà tôi gặp phải trongquá trình thực hiện luận văn

Xin gửi lời cảm ơn tới bạn Nguyễn Bảo Ngọc, người đã giúp đỡ tôi các vấn

đề kỹ thuật liên quan tới luận văn cũng như các vấn đề khác trong cuộc sống.Tôi muốn gửi lời cảm ơn sâu sắc đến gia đình và tất cả bạn bè, nhữngngười luôn kịp thời động viên và giúp đỡ tôi vượt qua những khó khăn trongcuộc sống

Cuối cùng, tôi xin gửi lời cảm ơn chân thành tới phòng thí nghiệm côngnghệ phần mềm Toshiba Phòng thí nghiệm đã tạo điều kiện cho tôi có khônggian để nghiên cứu và trao đổi cùng với bạn bè

Tôi xin chân thành cảm ơn !

Hà Nội, 28 tháng 05 năm 2015

Học viên

Đậu Quốc Toản

Trang 4

Lời cam đoan

Tôi xin cam đoan luận văn này là công trình nghiên cứu của riêng tôi Các sốliệu, kết quả được trình bày trong luận văn là hoàn toàn trung thực và chưatừng được công bố trong bất kỳ một công trình nào khác Tôi đã trích dẫn đầy

đủ các tài liệu tham khảo, công trình nghiên cứu liên quan ở trong nước và quốc

tế Ngoại trừ các tài liệu tham khảo này, luận văn hoàn toàn là công việc củariêng tôi

Hà Nội, 28 tháng 5 năm 2015

Học viên

Đậu Quốc Toản

Trang 5

Tóm tắt

Assume-Guarantee Tool(AGTool) là một công cụ sinh giả định, có ý nghĩa quan

trọng trong việc giải quyết bài toán "bùng nổ không gian trạng thái" của phương

pháp kiểm chứng mô hình Hiện tại, AGTool là một trong những công cụ tiềmnăng trong việc hỗ trợ kiểm chứng phần mềm hướng thành phần Thay vì kiểmchứng trên toàn bộ hệ thống, công cụ này chia bài toán kiểm chứng thành cácbài toán nhỏ hơn ứng với các thành phần phần mềm và kiểm chứng các thànhphần này một cách riêng biệt Tuy nhiên, công cụ AGTool còn tồn tại nhiều hạnchế để có thể ứng dụng vào trong thực tế và tương tác với các công cụ kiểm

chứng phần mềm khác như LTSA AGTool sử dụng kiểu dữ liệu liệt kê (LF), đây

là một trong những kiểu biểu diễn của hệ thống dịch chuyển được gán nhãn (LTS).

Với mục đích tăng khả năng tương tác với các công cụ kiểm chứng phần mềm

khác, luận văn nghiên cứu sử dụng các tiến trình hữu hạn trạng thái (FSP) thay

thế cho kiểu dữ liệu LF của AGTool Mục tiêu của luận văn là đưa ra phươngpháp chuyển đổi qua lại giữa các kiểu dữ liệu LF-FSP và ứng dụng vào công

cụ kiểm chứng AGTool Luận văn đề xuất một thuật toán để chuyển từ LF sangFSP Dựa trên công cụ LTSA của tác giả Jeff Magee, luận văn đã tiến hành tíchhợp giữa AGTool và LTSA để chuyển đổi từ FSP sang LF Những cải tiến này sẽgiúp AGTool trở thành một công cụ hiệu quả và tốt hơn trong thực tế

Trang 6

Bảng từ viết tắt

đảm bảo giả địnhGUI-AGTool Graphical User Interface for

OCaml

Trang 7

Mục lục

2.1 Labeled Transition System (LTS) 4

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

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

2.2.2 FSP 6

2.3 Dẫn xuất 7

2.4 Ghép nối song song 7

2.5 LTS an toàn và thuộc tính an toàn 8

2.6 Tính thỏa mãn 9

2.7 Đặc tả ngôn ngữ FSP 9

2.7.1 Định nghĩa FSP 10

2.7.2 Các định danh 10

2.7.3 Nhãn hành động 11

2.7.4 Const, Range, Set 12

2.7.5 Định nghĩa tiến trình 12

2.7.6 Tiến trình kết hợp 13

2.7.7 Tham số 14

2.7.8 Phép gán lại nhãn và phép ẩn 15

2.7.9 Property, Progress và Menu 16

2.7.10 Biểu thức 16

Trang 8

M ỤC LỤC

2.8 Ngôn ngữ lập trình hàm OCaml 17

2.8.1 Đặc trưng của OCaml 17

2.8.2 Cú pháp và ngữ nghĩa 18

2.9 OCamllex và OCamlyacc 23

2.9.1 OCamllex 23

2.9.2 OCamlyacc 23

3 AGTool 25 3.1 Giới thiệu AGTool 25

3.2 Hạn chế của AGTool 27

4 Chuyển đổi giữa các dạng biểu diễn của LTS 28 4.1 Chuyển đổi FSP sang LF 29

4.1.1 Ý tưởng 29

4.1.2 Thiết kế 32

4.1.3 Phân tích đánh giá 32

4.2 Chuyển đổi LF sang FSP 33

4.2.1 Ý tưởng 33

4.2.2 Phân tích đánh giá 36

5 Thực nghiệm 37 5.1 Cài đặt chương trình 37

5.2 Giới thiệu về chương trình 37

5.3 Thực nghiệm 39

5.4 Đánh giá thực nghiệm 43

Trang 9

Danh sách hình vẽ

2.1 Ví dụ của LTS 5

2.2 Phương pháp biểu diễn liệt kê của LTS 6

2.3 Ví dụ của LF 6

2.4 Ví dụ của FSP 7

2.5 Ghép nối song song giữa INPUT và OUTPUT 8

2.6 Biểu diễn LTS của thuộc tính an toàn Safety Property 9

2.7 Ví dụ định nghĩa hằng số 9

2.8 Ví dụ định nghĩa danh sách đối số 10

2.9 Định nghĩa FSP 10

2.10 Định nghĩa các định danh 11

2.11 Định nghĩa các chữ hoa, thường 11

2.12 Định nghĩa nhãn hành động 11

2.13 Định nghĩa tập các nhãn hành động 12

2.14 Định nghĩa Const, Range, Set 12

2.15 Định nghĩa tiến trình 13

2.16 Định nghĩa tiến trình địa phương 14

2.17 Định nghĩa thành phần tuần tự 15

2.18 Định nghĩa thành phần tuần tự 15

2.19 Định nghĩa tham số 16

2.20 Định nghĩa phép gán lại nhãn 16

2.21 Định nghĩa phép ẩn 17

2.22 Định nghĩa Property 17

2.23 Định nghĩa Progress 18

Trang 10

D ANH SÁCH HÌNH VẼ

2.24 Định nghĩa Menu 18

2.25 Định nghĩa biểu thức 19

2.26 Định nghĩa biểu thức (tiếp) 20

2.27 Định nghĩa biểu thức (tiếp) 21

2.28 Ví dụ khai báo hàm 21

2.29 Ví dụ gọi hàm 21

2.30 Ví dụ hàm mức cao 22

2.31 Ví dụ hàm nặc danh 22

2.32 Ví dụ hàm đệ quy 22

2.33 Cấu trúc lệnh của so sánh mẫu 22

2.34 Ví dụ so sánh mẫu 22

2.35 Cấu trúc tập tin đặc tả từ vựng 23

2.36 Ví dụ tập tin đặc tả từ vựng 24

2.37 Cấu trúc tập tin đặc tả cú pháp 24

3.1 Mô hình công cụ kiểm chứng AGTool 25

3.2 Thành phần đầu vào của AGTool 26

3.3 Kết quả được sinh ra bởi AGTool 26

4.1 Kiến trúc của GUI-AGTool 28

4.2 Cấu trúc thành phần chuyển đổi từ FSP sang LF 29

4.3 FSP M 29

4.4 Mô hình FSP Compiler 32

4.5 Cấu trúc thành phần chuyển đổi từ LF sang FSP 33

5.1 Giao diện chính của GUI-AGTool 38

5.2 Giao diện thể hiện giả định sinh ra bởi GUI-AGTool 39

5.3 Ví dụ FSP đầu vào của AGTool 40

5.4 LTS của thành phần M1 41

5.5 LTS của thành phần M2 41

5.6 LTS của thành phần P 41

Trang 11

D ANH SÁCH HÌNH VẼ

5.7 LTS của thành phần M1 sinh ra bởi LTSA 425.8 LTS của thành phần M2 sinh ra bởi LTSA 425.9 LTS của thành phần P sinh ra bởi LTSA 42

Trang 12

Danh sách bảng

2.1 Các kiểu dữ liệu cơ bản của OCaml 185.1 Bảng kích cỡ số trạng thái các mẫu đầu vào 40

Trang 13

Chương 1

Giới thiệu

Trong ngành công nghiệp phần mềm, việc đảm bảo chất lượng phần mềm làmột vấn đề quan trọng nhằm đảm bảo tính đúng đắn, giảm tỉ lệ lỗi, tìm khiếmkhuyết, v.v của phần mềm trước khi đưa vào sử dụng [1] Vấn đề này không chỉ

là yếu tố quyết định thành công của các công ty phần mềm trong việc nâng cao

uy tín và giảm chi phí bảo trì mà nó còn góp phần quan trọng tới sự thành côngcủa khách hàng Vấn đề này càng cấp thiết hơn khi phát triển các phần mềmnhúng/điều khiển Lỗi trong phần mềm có thể gây ra thiệt hại không mongmuốn cho người sử dụng phần mềm hoặc có thể ảnh hưởng nghiêm trọng tớitình hình kinh tế, chính trị, an ninh của quốc gia Ví dụ, sự cố Therac-25 vàokhoảng giữa tháng 6 năm 1985 và tháng giêng năm 1987 Nguyên nhân của sự

cố này được xác định là do tương tác giữa các thành phần của hệ thống và lỗichương trình song song khi thực hiện một chức năng quan trọng của chươngtrình [2, 3] Sự cố này được xem như là tai nạn bức xạ tồi tệ nhất trong lịch sử

35 năm phát triển của ngành y học kể từ năm 1985 [2,3] Hơn nữa, trong tươnglai các tiện ích phục vụ cho con người đang dần được thay thế bởi các hệ thốngnhúng/điều khiển Nên các hệ thống này sẽ trở nên phổ biến

Để đảm bảo chất lượng phần mềm, hầu hết các công ty hiện nay sử dụngcác kỹ thuật kiểm thử trong đó chủ yếu là kỹ thuật kiểm thử hộp đen [1] Tuynhiên, các kỹ thuật kiểm thử chỉ có thể phát hiện ra lỗi/khiếm khuyết chứ khôngchỉ ra được phần mềm không còn lỗi Một số dự án phần mềm hiện nay yêu cầuphải chứng minh được tính đúng đắn của chương trình (đảm bảo rằng chươngtrình không còn lỗi) trước khi đưa vào sử dụng Điều này có nghĩa là chỉ ápdụng phương pháp kiểm thử là chưa đủ để đảm bảo chất lượng phần mềm,đặc biệt đối với những phần mềm yêu cầu tính đúng đắn và chất lượng caonhư : hệ thống điều khiển máy bay/tên lửa, hệ thống giám sát hạt nhân, v.v.Một trong những phương pháp nhằm chứng minh tính đúng đắn của chươngtrình đang được quan tâm nghiên cứu và áp dụng vào thực tế là kiểm chứng mô

Trang 14

Chương 1 Giới thiệu

hình (model checking) [4] Ý tưởng của phương pháp này là xây dựng mô hìnhcủa hệ thống và các thuộc tính cần kiểm tra bằng các công cụ toán học và chứngminh tự động tính đúng đắn của nó dựa trên mô hình này Tuy nhiên, một trongnhững hạn chế lớn nhất của phương pháp này là vấn đề "bùng nổ không giantrạng thái" khi áp dụng vào các hệ thống có kích thước lớn [4] Phương phápkiểm chứng giả định-đảm bảo (Assume-Guarantee Verification) [5] được xem làgiải pháp tiềm năng để giải quyết vấn đề trên cho các hệ thống dựa trên thànhphần Phương pháp này được xây dựng dựa trên phương pháp kiểm chứng môhình kết hợp với kỹ thuật chia để trị nhằm mục đích chia nhỏ công việc kiểmchứng cả hệ thống thành các bài toán con để kiểm chứng các thành phần riêngbiệt Bằng cách tiếp cận này, bài toán bùng nổ không gian trạng thái hứa hẹn

sẽ được giải quyết Để áp dụng phương pháp này, chúng ta cần cài đặt công cụ

hỗ trợ nhằm mục tiêu ứng dụng nó trong thực tế Mặc dù phương pháp nàyđược đề xuất bởi Dimitra Giannakopoulou [5] và đã có công cụ hỗ trợ [6] nhưngcông cụ này không được công bố Một công cụ hỗ trợ phương pháp này có tên

là AGTool 1 đã được cài đặt bởi nhóm nghiên cứu [7] AGTool cho phép ngườidùng sinh ra một giả thiết kiểm chứng để kiểm tra một thành phần và cả hệthống có thỏa mãn một thuộc tính hay không

Các thành phần đầu vào của AGTool được biểu diễn dưới dạng một loạimáy hữu hạn trạng thái (LTS) và được truyền vào AGTool bằng cách liệt kê các

hàm chuyển trạng thái (trong luận văn này được gọi là dạng biểu diễn liệt kê (LF)).

Cách biểu diễn này yêu cầu phải chuẩn bị các thành phần đầu vào một cách chitiết, tốn nhiều thời gian và dễ gây ra lỗi Bên cạnh đó, dạng biểu diễn liệt kêkhông được ứng dụng rộng rãi như một số ngôn ngữ mô hình hóa khác, ví dụnhư FSP Vì vậy, AGTool gặp khó khăn trong việc tương tác và sử dụng lại đặc

tả của các chương trình kiểm chứng phần mềm khác như LTSA 2 [8] Để giảiquyết những vấn đề này, AGTool đã được nâng cấp lên phiên bản mới có tên gọi

là GUI-AGTool3 bởi [9,10] GUI-AGTool cung cấp giao diện người dùng hỗ trợnhập liệu trực quan và dễ dàng Bên cạnh đó, GUI-AGTool cũng có khả năngtương tác với các kiểu dữ liệu LF, FSP đơn giản Những cải tiến này là một bướctiến quan trọng trong quá trình đưa AGTool tiếp cận với thực tế và mở ra mộttiềm năng ứng dụng mới Tuy nhiên, GUI-AGTool vẫn còn tồn tại nhiều vấn đềcần được cải tiến GUI-AGTool cần có khả năng sử dụng được kiểu dữ liệu FSPhoàn chỉnh Kết quả của quá trình chuyển đổi từ LF sang FSP cần được tối ưunhiều hơn

Mục tiêu của luận văn này là đưa GUI-AGTool trở thành một công cụ làmviệc được với ngôn ngữ FSP hoàn chỉnh Ý tưởng cơ bản của luận văn là nghiên

1 http://uet.vnu.edu.vn/~hungpn/AGTools/

2 http://www.doc.ic.ac.uk/ltsa/

3 http://uet.vnu.edu.vn/~hungpn/GUI-AGTool/

Trang 15

Chương 1 Giới thiệu

cứu đặc tả hoàn chỉnh của FSP và tích hợp GUI-AGTool với công cụ LTSA.Những cải tiến này sẽ biến GUI-AGTool trở thành một công cụ hiệu quả và cótính tương tác rộng rãi hơn trong thực tế

Cấu trúc của luận văn được chia thành sáu phần Chương đầu tiên giớithiệu về vai trò của kiểm chứng phần mềm, công cụ hỗ trợ và bài toán cần giảiquyết trong luận văn này Tiếp theo, chương 2 trình bày các khái niệm cơ bảnnhằm phục vụ luận văn Chương này bao gồm các khái niệm về máy hữu hạntrạng thái, dẫn xuất, ghép nối song song, thuộc tính an toàn, đặc tả của ngôn ngữFSP, ngôn ngữ lập trình hàm OCaml, Ocamllex và Ocamlyacc Công cụ kiểmchứng phần mềm dựa thành phần AGTool được mô tả ở chương 3 Những vấn

đề còn tồn tại của công cụ kiểm chứng AGTool được nêu ra trong chương này.Các phương pháp chuyển đổi giữa các dạng biểu diễn của LTS được trình bàytrong chương 4 Trong chương này đưa ra hai phương pháp chuyển đổi qua lạigiữa hai cách biểu diễn của LTS là FSP và LF Kết quả sau khi làm thực nghiệmbằng công cụ GUI-AGTool được trình bày ở chương 5 Cuối cùng, chương 6 tómtắt kết quả đạt được sau khi hoàn thành luận văn, những vấn đề cần khắc phục

và hướng phát triển trong tương lai

Trang 16

Chương 2

Kiến thức cơ bản

Trong luận văn này sử dụng LTS [11] để đặc tả hành vi của các thành phần và

thuộc tính cần kiểm chứng Giả sử Act là tập các hành động có thể quan sát được

và τ là hành động đại diện cho tất cả các hành động bên trong của hệ thống, một

LTS M là một bộ bốnhQ, αM, σ, q0i Trong đó :

• Q là một tập hữu hạn các trạng thái không rỗng,

• αM ⊆ Actlà tập các hành động của thành phần (gọi là bảng chữ cái của M),

• q0 ∈ Qlà trạng thái ban đầu, và

• σ ⊆ Q× (αMτ) ×Qlà hàm chuyển trạng thái

Với π là một trạng thái lỗi của hệ thống Chúng ta ký hiệu LTS M=h{π}, Act, σ, πi.Một LTS M = hQ, αM, δ, q0i được gọi là LTS không đơn định nếu nó có

phép biến đổi τ hoặc tồn tại(q, a, q0),(q, a, q00), trong đó q0 6= q00 Ngược lại, LTS

M được gọi là LTS đơn định

LTS Input =hQ1, αM1, δ1, q10i, trong đó :

• Q1 = {0, 1, 2},

• αM1 = {in, send, ack},

• σ1 = {(0, in, 1),(1, send, 2),(2, ack, 0)}, và

• q10 = {0}

Trang 17

Chương 2 Kiến thức cơ bản

(a) LTS Input.

(b) LTS Output.

Hình 2.1: Ví dụ của LTS.

LTS Input được mô tả trực quan bởi Hình 2.1a Khi hệ thống ở trạng thái 0

và thực hiện hành động in thì sẽ chuyển sang trạng thái 1, còn nếu hệ thống ở trạng thái 1 thực hiện hành động send thì sẽ chuyển sang trạng thái 2.

LTS Output =hQ2, αM2, σ2, q20i, trong đó :

• Q2 = {0, 1, 2},

• αM2 = {send, ack, out},

• σ2 = {(0, send, 1),(1, send, 1),(1, out, 2),(2, ack, 0)},

• q20 = {0}

LTS Output được mô tả trực quan bởi Hình 2.1b Nếu hệ thống đang ở

trạng thái 1 mà thực hiện hành động send thì vẫn giữ nguyên trạng thái 1.

Để chuẩn bị đầu vào cho các công cụ kiểm chứng mà các thành phần được đặc

tả bằng LTS, chúng ta biểu diễn LTS bằng một trong hai phương pháp sau

Trang 18

Chương 2 Kiến thức cơ bản

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

Phương pháp liệt kê được viết tắt là LF (Listing Form) [7] Trong phương phápnày, một LTS được biểu diễn bằng cách liệt kê tất cả các hàm chuyển trạng tháicùng với trạng thái khởi tạo Hình 2.2 định nghĩa đệ quy phương pháp biểudiễn này với State đại diện cho một trạng thái của hệ thống, Action đại diệncho một hành động thuộc tập ký tự, Transition là một phép chuyển trạng thái,Transitions là một dãy tuần tự các phép chuyển trạng thái và LTS được biểu diễnbằng Transitions và kết thúc bằng trạng thái khởi tạo

State = Id Action = Id Transition = (State, Action, State) Transitions = Transition | Transition, Transitions LTS = Transitions, State.

Hình 2.2: Phương pháp biểu diễn liệt kê của LTS.

Hình 2.3a biểu diễn tiến trình INPUT Tiến trình này bao gồm các trạng thái

0, 1, 2 và các hành động in, send, ack Tiến trình INPUT được biểu diễn một cáchtrực trực quan bởi Hình 2.1a Hình 2.3b biểu diễn tiến trình OUTPUT Tiến trìnhnày bao gồm các trạng thái 0, 1, 2 và các hành động send, out, ack Tiến trìnhOUTPUT được biểu diễn một cách trực quan bởi Hình 2.1b

Trang 19

Chương 2 Kiến thức cơ bản

trình này bao gồm các trạng thái S0, S1, S2 và các hành động send, out, ack Tiếntrình OUTPUT được biểu diễn một cách trực quan bởi Hình 2.1b

(b) FSP của tiến trình OUTPUT.

Hình 2.4: Ví dụ của FSP.

Biểu diễn LTS trực quan và dễ hiểu trong khi FSP mang tính tổng quát vàkhó hiểu Tuy nhiên hai biểu diễn là tương đương nhau Tương ứng với mỗiFSP thì có một biểu diễn LTS và ngược lại Để biểu diễn được hết các hệ thốngLTS/FSP còn có thêm nhiều từ khóa và cấu trúc khác, có thể tham khảo trong[3]

Một dẫn xuất [12, 13] của một LTS M = hQ, αM, σ, q0i là một chuỗi hữu hạncác hành động a1, a2, , an sao cho tồn tại một chuỗi các trạng thái q1, q2, , qnthỏa mãn điều kiện (qi−1, ai, qi) ∈ σ với i=1 n Giả sử Σ ⊆ Act , ký hiệu σ ↑ Σ

ký hiệu 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ữ đoán nhận M, kýhiệu L(M) Với LTS Input được mô tả trong Hình 2.4a thì in, in send, in send ack

là các dẫn xuất Còn in in, in send send không phải là các dẫn xuất

Ghép nối song song (được ký hiệu là k) là phép toán ghép nối hai thành phầnphần mềm bằng cách đội bộ các hành động chung và gối đầu các hành độngcòn lại [11] Giả sử M1 = hQ1, αM1, σ1, q10i và M2 = hQ2, αM2, σ2, q20i , ghépnối song song giữa M1 và M2, ký hiệu M1kM2 được định nghĩa như sau Nếu

M1 = Π hoặc M2 = Π thì M1kM2 = Π Ngược lại, M1kM2 = hQ, αM, σ, q0i,trong đó : Q = Q1×Q2, αM = αM1∪αM2, q0 = (q10, q20) và hàm σ được xác

định như sau :

(i)ααM1 ∩αM2,(p, α, p0) ∈ δ1,(q, α, q0) ∈ δ2

((p, q), α,(p0, q0)) ∈ δ (2.4.1)

Trang 20

Chương 2 Kiến thức cơ bản

k INPUT_OUPUT = (INPUT k OUTPUT).

(a) FSP của INPUT||OUTPUT.

Kết quả ghép nối song song được biểu diễn trực quan bởi LTS trong Hình2.5b Các trạng thái send, ack được đồng bộ hóa, còn các trạng thái còn lại xen kẽnhau Các trạng thái mà không dẫn tới khi xuất phát từ trạng thái khởi tạo (0, 0)

sẽ bị loại bỏ

LTS an toàn là một LTS hữu hạn không chứa bất kỳ một trạng thái lỗi π nào.

Thuộc tính an toàn là thuộc tính đảm bảo không lỗi xảy ra trong quá trình thựchiện của hệ thống Một thuộc tính an toàn được biểu diễn như là một LTS antoàn p [3]

Thuộc tính an toàn Sa f etyProperty của một hệ thống được minh họa ở Hình2.6 Thuộc tính này đảm bảo rằng khi hệ thống thực thi phải luôn đảm bảo cáchành động in và out phải được thực hiện đúng thứ tự in→out→in→out Khi

hệ thống đang ở trạng thái 0 và thực hiện hành động out thì hệ thống sẽ dẫn tớitrạng thái -1 Trạng thái -1 được kí hiệu là trạng thái lỗi của hệ thống

Trang 21

Chương 2 Kiến thức cơ bản

Hình 2.6: Biểu diễn LTS của thuộc tính an toàn Safety Property.

Cho một LTS M, ta nói M thoả mãn thuộc tính p, ký hiệu M |= p, nếu và chỉnếu : ∀σ ∈ L(M): (σα p) ∈ L(p) Để kiểm chứng một thành phần M thoảmãn một thuộc tính p, khi đó cả M và perr phải được biểu diễn dưới dạng củaLTS an toàn (Safety LTS), sau đó thực hiện phép toán ghép nối song song Mkperr.Nếu LTS thu được sau phép ghép nối tồn tại một dẫn xuất có thể tới trạng thái

π, khi đó ta nói thành phần M vi phạm thuộc tính p Ngược lại, M thoả mãnthuộc tính p [3]

Cú pháp của ngôn ngữ FSP được đặc tả bằng văn phạm phi ngữ cảnh, gồm cómột tập các luật sinh [3] Mỗi luật sinh được định nghĩa bằng một kí hiệu khôngkết thúc ở phía bên trái và một hoặc nhiều các kí hiệu kết thúc hoặc không kếtthúc ở phía bên phải Các kí hiệu không kết thúc được thể hiện bằng kiểu innghiêng, các kí hiệu kết thúc được thể hiện bằng kiểu in đậm Các định nghĩacủa một kí hiệu không kết thúc được theo sau bởi dấu hai chấm Nếu một kí hiệukhông kết thúc có nhiều định nghĩa ở phía bên phải, thì các định nghĩa nằm trêncác dòng khác nhau [3] Ví dụ 2.7 là định nghĩa đặc tả cú pháp của một hằng sốtrong FSP

ConstantDef:

const ConstantIdent = Expression

Hình 2.7: Ví dụ định nghĩa hằng số.

Trang 22

Chương 2 Kiến thức cơ bản

Ví dụ 2.8 là định nghĩa một danh sách các tham số, bao gồm một hoặc nhiềucác biểu thức đơn cách nhau bởi dấu phẩy

ArgumentList:

Expression ArgumentList , Expression

Hình 2.8: Ví dụ định nghĩa danh sách đối số.

Hậu tố opt có thể xuất hiện sau các kí hiệu kết thúc, không kết thúc để chỉ

rõ đó là một kí hiệu tùy chọn

2.7.1 Định nghĩa FSP

FSPdescription:

FSPdefinition FSPdescription FSPdefinition FSPdefinition:

ConstantDef RangeDef SetDef ProcessDef CompositeDef PropertyDef ProgressDef MenuDef FluentDef AssertDef

Hình 2.9: Định nghĩa FSP.

Bên cạnh các định nghĩa dành cho tiến trình và kết hợp các tiến trình, một

mô tả FSP còn bao gồm các định nghĩa của các hằng số, dãy số nguyên, tập cácnhãn hành động, thuộc tính an toàn, thuộc tính progress, các menu, fluent vàassert Các luật sinh mô tả FSP được định nghĩa trong Hình 2.9

2.7.2 Các định danh

Các định nghĩa FSP và các tham số tiến trình là các định danh bắt đầu bởi chữhoa Nhãn hành động và các biến là các định danh được bắt đầu bằng chữthường [3] Các luật sinh mô tả định danh được định nghĩa trong Hình 2.10Hình 2.11 đặc tả các định danh hoa, thường U pperCaseLetter đặc tả mộtchữ cái hoa LowerCaseLetter đặc tả một chữ cái thường hoặc gạch dưới ’_’ Digitđặc tả chữ số thập phân

Trang 23

Chương 2 Kiến thức cơ bản

LowerCaseIdentifier

Hình 2.10: Định nghĩa các định danh.

UpperCaseIdentifier:

UpperCaseLetter UpperCaseIdentifier Letter UpperCaseIdentifier Digit LowerCaseIdentifier:

LowerCaseLetter LowerCaseIdentifier Letter LowerCaseIdentifier Digit Letter:

UpperCaseLetter LowerCaseLetter

Hình 2.11: Định nghĩa các chữ hoa, thường.

2.7.3 Nhãn hành động

Các hành động trong FSP được gán nhãn bởi các định danh thường hoặc bởimột giá trị được kết hợp từ một biểu thức đóng kín bằng ngoặc vuông Nhãnhành động cũng được tạo nên bằng việc kết hợp các nhãn đơn giản hơn với mộtdấu chấm ’.’ [3] Nhãn hành động được đặc tả trong Hình 2.12

ActionLabel:

LowerCaseIdentifier ActionLabel LowerCaseIdentifier

[Expression]

ActionLabel [Expression]

Hình 2.12: Định nghĩa nhãn hành động.

Ví dụ nhãn hành động: in [43] in[12] in[2][i*2] x[1].y[3]

Một tập các nhãn hành động được định nghĩa trong Hình 2.13

Ví dụ tập các nhãn hành động: a,b,c X.a in[x:1 3] in[x:T] a.x,y,z

Trang 24

Chương 2 Kiến thức cơ bản

ActionLabels:

ActionLabel Set

[ActionRange]

ActionLabels ActionLabel ActionLabels Set ActionLabels [ActionRange]

ActionLabels [Expression]

ActionRange:

Range Set Variable : Range Variable : Set Range:

RangeIdent Expression Expression ActionLabels:

SetIdent

{SetElements}

ActionLabels:

ActionLabels SetElements , ActionLabels

Hình 2.13: Định nghĩa tập các nhãn hành động.

2.7.4 Const, Range, Set

Định nghĩa Const, Range, Set được đặc tả trong Hình 2.14 [3]

set SetIdent = { setElements}

Hình 2.14: Định nghĩa Const, Range, Set.

Trang 25

Chương 2 Kiến thức cơ bản

ProcessDef:

ProcessIdent Paramopt= ProcessBody AlphabetExtensionoptRelabeloptHidingopt ProcessBody:

LocalProcess LocalProcess , LocalProcessDefs LocalProcessDefs:

LocalProcessDef LocalProcessDefs, LocalProcessDef LocalProcessDef:

ProcessIdent IndexRangesopt= LocalProcess AlphabetExtension:

Tiến trình kết hợp được phân biệt với tiến trình chính bằng cách thêm tiền tố k

vào trước định nghĩa Các tiến trình kết hợp được tạo ra bằng cách sử dụng cácthành phần song song, gán lại nhãn, độ ưu tiên và phép ẩn Gán nhãn và chia sẻ

Trang 26

Chương 2 Kiến thức cơ bản

LocalProcess:

BaseLocalProcess SequentialComposition

if Expression then LocalProcess

if Expression then LocalProcess else LocalProcess

(Choice)

BaseLocalProcess:

END STOP ERROR

ProcessIdent Indicesopt

Choice:

ActionPrefix Choice | ActionPrefix

ActionPrefix:

GuardoptPrefixActions -> LocalProcess

PrefixActions:

ActionLabels PrefixActions -> ActionLabels

Hình 2.16: Định nghĩa tiến trình địa phương.

tiến trình là các cấu trúc đặc biệt của việc gán lại nhãn [3] Hình 2.18 mô tả địnhnghĩa của tiến trình kết hợp

Trang 27

Chương 2 Kiến thức cơ bản

SequentialComposition:

SeqProcessList ; BaseLocalProcess SeqProcessList:

ProcessRef SeqProcessList ; ProcessRef ProcessRef:

ProcessIdent ArgumentoptArgument:

(ArgumentList)

ArgumentList:

Expression ArgumentList , Expression

Hình 2.17: Định nghĩa thành phần tuần tự.

CompositeDef:

kProcessIdent Paramopt= CompositeBody PriorityoptHidingopt

CompositeBody:

PrefixLabeloptProcessRef Relabelopt

PrefixLabelopt(ParallelComposition)Relabelopt

forall Ranges CompositeBody

if Expression then CompositeBody

if Expression then CompositeBody else CompositeBody

tương đương với

P/{ a[1]/x[1], a[2]/x[2], a[3]/x[3] }

Hình 2.21 định nghĩa phép ẩn

Trang 28

Chương 2 Kiến thức cơ bản

Param:

( ParameterList )

ParameterList:

Parameter ParameterList , Parameter Parameter:

ActionLabels / ActionLabels

forall IndexRanges { RelabelDefs }

Hình 2.20: Định nghĩa phép gán lại nhãn.

2.7.9 Property, Progress và Menu

Thuộc tính an toàn được định nghĩa bởi một tiến trình có tiền tố là property [3].Hình 2.22 định nghĩa Property

Hình 2.23 định nghĩa Progress

Một Menu định nghĩa các thể loại tập hợp các hành động mà người dùng

có thể điều khiển trong một hoạt cảnh [3] Hình 2.24 định nghĩa Menu

2.7.10 Biểu thức

Biểu thức của FSP là một tập con biểu thức của Java Có một vài bất lợi khi cáctoán tử tiến của FSP có ý nghĩa khác nhau khi được dùng trong ngữ cảnh củabiểu thức Cụ thể hơn, các phép toán ưu tiên « và » có nghĩa là dịch trái và dịchphải khi sử dụng trong một biểu thức Toán tử kết hợp song songk có ý nghĩalogic khi sử dụng trong biểu thức Toán tử lựa chọn | có nghĩa là bit-wise ortrong biểu thức Và toán tử gán lại nhãn / có nghĩa là phép chia trong biểu thức[3] Hình 2.25, 2.26, 2.27 biểu diễn đặc tả biểu thức

Biểu thức @(A, e) trả về giá trị nhãn của phần tử thứ e của tập A Biểu thức

#A trả về số lượng phần tử của tập A

Trang 29

Chương 2 Kiến thức cơ bản

2.8.1 Đặc trưng của OCaml

Trình biên dịch của OCaml [14] gán kiểu tĩnh cho dữ liệu trong chương trình vàkiểm tra tại thời điểm biên dịch để đảm bảo rằng lỗi không xuất hiện Kiểu củabiến được suy diễn tự động trong suốt quá trình dịch bởi ngữ cảnh mà chúngxuất hiện trong chương trình Vì vậy, kiểu của giá trị và kiểu trả về của hàmtrong ngôn ngữ OCaml không cần đặc tả rõ, điều này sẽ làm cho dung lượng

mã nguồn giảm xuống Mã nguồn OCaml cũng có thể kiểm chứng được Công

cụ kiểm chứng tự động có thể kiểm tra mã nguồn OCaml và chứng thực rằng cáckiểu được sử dụng hợp lệ Công cụ kiểm tra sẽ đi sâu vào phân tích tĩnh chươngtrình ở một mức độ nào đó mà các ngôn ngữ lập trình khác (trừ Ada) hiện nàychưa thể thực hiện được Bên cạnh tính năng an toàn thì OCaml còn có tốc độthực thi nhanh Trình biên dịch có khả năng tối ưu hóa mã nguồn nên sinh ra mãthực thi nhanh OCaml đã phát triển hệ thống Module và thư viện chuẩn Hệthống Module cho phép lập trình viên viết các ứng dụng lớn Một chương trìnhđược viết bằng OCaml thường có kích thước bé hơn chính nó được viết bằngcác ngôn ngữ khác OCaml là một ngôn ngữ hết sức ngắn gọn, với các ngoại

lệ và so khớp mẫu thì lập trình viên thường không phải viết nhiều mã nguồnnhư đã làm với các ngôn lập trình khác Việc rút ngắn khối lượng mã nguồn sẽgiúp lập trình viên làm việc hiệu quả hơn, nhanh hơn và ít lỗi hơn OCaml làmột ngôn ngữ lập trình hàm nên việc học nhanh chóng OCaml là một điều khókhăn Thông thường, để rút ngắn gọn mã nguồn trong OCaml và để làm chochương trình phát huy được hết sức mạnh của OCaml thì lập trình viên đượckhuyên nên sử dụng đệ quy, so khớp mẫu trong chương trình của mình OCamlthừa hưởng phong cách lập trình của Meta Language Vì vậy, người dùng phảimất một thời gian khá dài để hiểu được ngôn ngữ Bên cạnh đó, cần có một sốkiến thức lập trình và tư duy làm nền tảng

Ngày đăng: 11/11/2015, 19:10

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Paul C. Jorgensen. Software Testing: A Craftsman’s Approach, Fourth Edition.CRC Press, Inc., Boca Raton, FL, USA, 4th edition, 2013. ISBN 084937345X Sách, tạp chí
Tiêu đề: Software Testing: A Craftsman’s Approach, Fourth Edition
[2] N. G. Leveson and C. S. Turner. An investigation of the therac-25 accidents.Computer, 26:18–41, July 1993. ISSN 0018-9162. doi: 10.1109/MC.1993 Sách, tạp chí
Tiêu đề: Computer
[3] Jeff Magee and Jeff Kramer. Concurrency: State Models &Amp; Java Programs, 2nd Edition. John Wiley & Sons, Inc., New York, NY, USA, 2006. ISBN 978- 0-470-06462-7 Sách, tạp chí
Tiêu đề: Concurrency: State Models &Amp; Java Programs,2nd Edition
[4] Edmund M. Clarke and Bernd-Holger Schlingloff. Model checking, pages 1635–1790. Elsevier Science Publishers B. V., Amsterdam, The Netherlands, The Netherlands, 2001. ISBN 0-444-50812-0. URL http://portal.acm.org/citation.cfm?id=778522.778533 Sách, tạp chí
Tiêu đề: Model checking
[6] Dimitra Giannakopoulou and Corina S. Pasareanu. Learning-Based Assume- Guarantee Verification (Tool Paper). Cambridge University Press, 2005 Sách, tạp chí
Tiêu đề: Learning-Based Assume-Guarantee Verification (Tool Paper)
[7] Pham Ngoc Hung, Viet-Ha Nguyen, Toshiaki Aoki, and Takuya Katayama.Assume-guarantee tools for component-based software verification. In Pro- ceedings of the 2010 Second International Conference on Knowledge and Systems Engineering, KSE ’10, pages 172–177, Washington, DC, USA, 2010. IEEE Computer Society. ISBN 978-0-7695-4213-3. doi: http://dx.doi.org/10 Sách, tạp chí
Tiêu đề: Pro-ceedings of the 2010 Second International Conference on Knowledge and SystemsEngineering
[11] Robert M. Keller. Formal verification of parallel programs. Commun. ACM, 19:371–384, July 1976. ISSN 0001-0782. doi: http://doi.acm.org/10.1145/ Sách, tạp chí
Tiêu đề: Commun. ACM
[13] Colin Blundell, Dimitra Giannakopoulou, and Corina S. Pˇasˇareanu.Assume-guarantee testing. SIGSOFT Softw. Eng. Notes, 31, September 2005 Sách, tạp chí
Tiêu đề: SIGSOFT Softw. Eng. Notes
[14] Joshua B. Smith. Practical OCaml (Practical). Apress, Berkely, CA, USA, 2006.ISBN 159059620X Sách, tạp chí
Tiêu đề: Practical OCaml (Practical)
[8] Jeff Magee and Jeff Kramer, 11 2013. URL http://www.doc.ic.ac.uk/ltsa/ Link
[15] SooHyoung Oh. Ocamllex, 2004. URL http://plus.kaist.ac.kr/~shoh/ocaml/ocamllex-ocamlyacc/ocamllex-tutorial/index.html Link
[16] SooHyoung Oh. Ocamlyacc, 2004. URL http://plus.kaist.ac.kr/~shoh/ocaml/ocamllex-ocamlyacc/ocamlyacc-tutorial/ocamlyacc-tutorial Link
[9] Vũ Hồng Long. Xây dựng giao diện cho công cụ agtool. Khoá luận tốt nghiệp đại học, Trường Đại học Công nghệ, ĐHQGHN, 2011 Khác
[10] Đậu Quốc Toản. Chuyển đổi giữa các phương pháp biểu diễn của lts và ứng dụng cho công cụ kiểm chứng phần mềm. Khoá luận tốt nghiệp đại học, Trường Đại học Công nghệ, ĐHQGHN, 2011 Khác

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w