ĐẠ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Ệ T
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
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
Trang 3Lờ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
Trang 4Lờ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
Trang 5Tó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ế
Trang 6Bảng từ viết tắt
Từ viết tắt Từ đầy đủ Ý nghĩa
AGTool Assume-Guarantee Tool Công cụ hỗ trợ kiểm chứng
đảm bảo giả định GUI-AGTool Graphical User Interface for
AGTool
Công cụ đồ họa hỗ trợ kiểm 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-tion
Kiểm chứng đảm bảo giả định
LTSA Labeled Transition System
Analyzer
Công cụ kiểm chứng hệ thống 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
Trang 7Mụ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 8M Ụ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 9Danh 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
Trang 10D 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 M 41
Trang 11Tà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 http://portal.acm.org/citation.cfm?id=161477.161479
[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
[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
[5] Dimitra Giannakopoulou, Corina S Pasareanu, and Jamieson M Cobleigh Assume-guarantee verification of source code with design-level
assump-tions In Proceedings of the 26th International Conference on Software
Engineer-ing, ICSE ’04, pages 211–220, Washington, DC, USA, 2004 IEEE Computer Society ISBN 0-7695-2163-0 URL http://portal.acm.org/citation.cfm? id=998675.999426
[6] Dimitra Giannakopoulou and Corina S Pasareanu Learning-Based
Assume-Guarantee 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
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 1109/KSE.2010.18 URL http://dx.doi.org/10.1109/KSE.2010.18
[8] Jeff Magee and Jeff Kramer, 11 2013 URL http://www.doc.ic.ac.uk/
Trang 12Chươ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: http://doi.acm.org/10.1145/ 360248.360251 URL http://doi.acm.org/10.1145/360248.360251
[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 anal-ysis of systems, TACAS’03, pages 331–346, Berlin, Heidelberg, 2003 Springer-Verlag ISBN 3-540-00898-5 URL http://portal.acm.org/citation.cfm? 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: http://doi.acm.org/10.1145/1108768.1123060 URL http://doi.acm.org/10.1145/1108768.1123060
[14] Joshua B Smith Practical OCaml (Practical) Apress, Berkely, CA, USA, 2006.
ISBN 159059620X
[15] SooHyoung Oh Ocamllex, 2004 URL http://plus.kaist.ac.kr/~shoh/ ocaml/ocamllex-ocamlyacc/ocamllex-tutorial/index.html
[16] SooHyoung Oh Ocamlyacc, 2004 URL http://plus.kaist.ac.kr/~shoh/ ocaml/ocamllex-ocamlyacc/ocamlyacc-tutorial/ocamlyacc-tutorial html