Tải bản đầy đủ (.pdf) (12 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (189.25 KB, 12 trang )

ĐẠ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


ĐẠ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

Ngành: Công nghệ thông tin
Chuyên ngành: Kỹ thuật Phần mềm
Mã số: 60480103

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


HÀ NỘI-2015


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ọc
Hù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 trong
hai 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ứu
tạ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 trong
quá 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ững
người luôn kịp thời động viên và giúp đỡ tôi vượt qua những khó khăn trong
cuộ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ông
nghệ phần mềm Toshiba. Phòng thí nghiệm đã tạo điều kiện cho tôi có không
gian để 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

iii



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ưa
từ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ủa
riêng tôi.
Hà Nội, 28 tháng 5 năm 2015
Học viên

Đậu Quốc Toản

iv


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ềm
năng trong việc hỗ trợ kiểm chứng phần mềm hướng thành phần. Thay vì kiểm
chứ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ác
bà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ành
phầ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ạn
chế để 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ương

phá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 sang
FSP. Dựa trên công cụ LTSA của tác giả Jeff Magee, luận văn đã tiến hành tích
hợ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ế.

v


Bảng từ viết tắt
Từ viết tắt
AGTool

Từ đầy đủ
Assume-Guarantee Tool

Ý nghĩa
Công cụ hỗ trợ kiểm chứng
đảm bảo giả định
GUI-AGTool Graphical User Interface for Công cụ đồ họa hỗ trợ kiểm
AGTool
chứng đảm bảo giả định
LTS
Labeled Transition System
Hệ thống dịch chuyển được
gán nhãn
FSP
Finite State Process
Tiến trình hữu hạn trạng thái
MC

Model Checking
Kiểm chứng mô hình
AGV
Assume Guarantee Verifica- Kiểm chứng đảm bảo giả
tion
định
LTSA
Labeled Transition System Công cụ kiểm chứng hệ thống
Analyzer
tương tranh
Ocaml
Objective Caml
Ngôn ngữ lập trình hàm
OCaml
ML
Meta-Language
Siêu ngôn ngữ
LF
Listing Form
Dạng biểu diễn liệt kê của LTS

vi


Mục lục
1

Giới thiệu

1


2

Kiến thức cơ bản

4

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

vii



MỤC LỤC

2.8

2.9

3

4

6

17

2.8.1

Đặc trưng của OCaml . . . . . . . . . . . . . . . . . . . . .

17

2.8.2

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

18

OCamllex và OCamlyacc . . . . . . . . . . . . . . . . . . . . . . . .


23

2.9.1

OCamllex . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23

2.9.2

OCamlyacc . . . . . . . . . . . . . . . . . . . . . . . . . . .

23

AGTool

25

3.1

Giới thiệu AGTool . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25

3.2

Hạn chế của AGTool . . . . . . . . . . . . . . . . . . . . . . . . . .

27


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

Chuyển đổi LF sang FSP . . . . . . . . . . . . . . . . . . . . . . . .


33

4.2.1

Ý tưởng . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

33

4.2.2

Phân tích đánh giá . . . . . . . . . . . . . . . . . . . . . . .

36

4.2

5

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

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

Kết luận

44

Tài liệu tham khảo

46

viii


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

ix


DANH 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

x


Tài liệu tham khảo
[1] Paul C. Jorgensen. Software Testing: A Craftsman’s Approach, Fourth Edition.
CRC Press, Inc., Boca Raton, FL, USA, 4th edition, 2013. ISBN 084937345X.
[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.
274940. URL />[3] Jeff Magee and Jeff Kramer. Concurrency: State Models &Amp; Java Programs,
2nd Edition. John Wiley & Sons, Inc., New York, NY, USA, 2006. ISBN 9780-470-06462-7.
[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 />citation.cfm?id=778522.778533.
[5] Dimitra Giannakopoulou, Corina S. Pasareanu, and Jamieson M. Cobleigh.
Assume-guarantee verification of source code with design-level assumptions. In Proceedings of the 26th International Conference on Software Engineering, ICSE ’04, pages 211–220, Washington, DC, USA, 2004. IEEE Computer

Society. ISBN 0-7695-2163-0. URL />id=998675.999426.
[6] Dimitra Giannakopoulou and Corina S. Pasareanu. Learning-Based AssumeGuarantee Verification (Tool Paper). Cambridge University Press, 2005.
[7] Pham Ngoc Hung, Viet-Ha Nguyen, Toshiaki Aoki, and Takuya Katayama.
Assume-guarantee tools for component-based software verification. In Proceedings 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: />1109/KSE.2010.18. URL />[8] Jeff Magee and Jeff Kramer, 11 2013.
ltsa/.
46

URL />

Chương 6. Kết luận

[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.
[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.
[11] Robert M. Keller. Formal verification of parallel programs. Commun. ACM,
19:371–384, July 1976. ISSN 0001-0782. doi: />360248.360251. URL />[12] Jamieson M. Cobleigh, Dimitra Giannakopoulou, and Corina S. Păsăreanu.
Learning assumptions for compositional verification. In Proceedings of the
9th international conference on Tools and algorithms for the construction and analysis of systems, TACAS’03, pages 331–346, Berlin, Heidelberg, 2003. SpringerVerlag. ISBN 3-540-00898-5. URL />id=1765871.1765903.
[13] Colin Blundell, Dimitra Giannakopoulou, and Corina S. Pˇasˇareanu.
Assume-guarantee testing. SIGSOFT Softw. Eng. Notes, 31, September 2005.
ISSN 0163-5948. doi: URL
/>[14] Joshua B. Smith. Practical OCaml (Practical). Apress, Berkely, CA, USA, 2006.
ISBN 159059620X.
[15] SooHyoung Oh. Ocamllex, 2004. URL />ocaml/ocamllex-ocamlyacc/ocamllex-tutorial/index.html.
[16] SooHyoung Oh. Ocamlyacc, 2004. URL />ocaml/ocamllex-ocamlyacc/ocamlyacc-tutorial/ocamlyacc-tutorial.
html.


47



×