ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Phạm Thanh Hải NGHIÊN CỨU VỀ ĐẶC TẢ VÀ KIỂM CHỨNG RÀNG BUỘC THỜI GIAN GIỮA CÁC THÀNH PHẦN TRONG CHƯƠNG TRÌNH TƯƠNG TRANH LUẬN VĂN THẠC
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Phạm Thanh Hải
NGHIÊN CỨU VỀ ĐẶC TẢ VÀ KIỂM CHỨNG RÀNG BUỘC THỜI GIAN GIỮA CÁC THÀNH PHẦN TRONG
CHƯƠNG TRÌNH TƯƠNG TRANH
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
Hà Nội - 2015
HÀ NỘI - 2011
Trang 2Lời Cam Đoan
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Phạm Thanh Hải
NGHIÊN CỨU VỀ ĐẶC TẢ VÀ KIỂM CHỨNG RÀNG BUỘC THỜI GIAN GIỮA CÁC THÀNH PHẦN TRONG
CHƯƠNG TRÌNH TƯƠNG TRANH
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: PGS.TS Nguyễn Việt Hà
Hà Nội - 2015
Trang 3LỜI CÁM ƠN
Đầu tiên tôi xin gửi lời cảm ơn sâu sắc tới thầy giáo PGS.TS Nguyễn Việt Hà, bộ môn công nghệ phần mềm, khoa công nghệ thông tin, trường Đại học Công nghệ – Đại học Quốc Gia Hà Nội người đã định hướng đề tài và tận tình hướng dẫn chỉ bảo tôi trong suốt quá trình thực hiện luận văn tốt nghiệp này
Tôi cũng xin trân trọng cảm ơn quý thầy cô trong Khoa Công nghệ thông tin trường Đại học Công nghệ – Đại học Quốc Gia Hà Nội đã tận tình giảng dạy, truyền đạt những kiến thức quý báu trong suốt hai năm học làm nền tảng cho tôi thực hiện luận văn tốt nghiệp này
Tôi cũng xin được cảm ơn các tác giả của các công trình nghiên cứu, tài liệu đã được tôi sử dụng, trích dẫn trong luận văn vì đã cung cấp nguồn tư liệu quý báu và các kiến thức liên quan để tôi thực hiện luận văn
Con xin cảm ơn cha mẹ và gia đình đã sinh ra và nuôi dạy con khôn lớn, luôn bên cạnh động viên và ủng hộ con trên con đường mà con yêu thích và lựa chọn
Cám ơn các bạn học viên cao học Khoa công nghệ thông tin khóa K19 Các bạn đã giúp đỡ và ủng hộ tôi rất nhiều cũng như đóng góp nhiều ý kiến quý báu, qua đó giúp tôi hoàn thiện luận văn tốt hơn
Mặc dù đã rất nỗ lực, cố gắng nhưng chắc hẳn luận văn của tôi vẫn còn nhiều thiếu sót Tôi rất mong nhận được nhiều những ý kiến đánh giá quý, phê bình của quý thầy cô, của anh chị và các bạn
Một lần nữa tôi xin chân thành cảm ơn!
Hà Nội, tháng 11 năm 2015
Phạm Thanh Hải
Trang 4LỜI CAM ĐOAN
Tôi xin cam đoan luận văn tốt nghiệp “Nghiên cứu về đặc tả và kiểm chứng ràng buộc thời gian giữa các thành phần trong chương trình tương tranh” là công trình nghiên cứu của riêng tôi dưới sự hướng dẫn của PGS.TS Nguyễn Việt Hà Các số liệu các 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
Nếu có phát hiện nào về sự gian lận sao chép tài liệu, công trình nghiên cứu của tác giả khác mà không được ghi rõ trong phần tài liệu tham khảo, tôi sẽ chịu hoàn toàn trách nhiệm về kết quả luận văn của mình
Trang 5MỤC LỤC
LỜI CÁM ƠN i
LỜI CAM ĐOAN ii
MỤC LỤC iii
DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT v
DANH SÁCH BẢNG vi
DANH SÁCH HÌNH VẼ vii
Chương 1 Giới thiệu Error! Bookmark not defined 1.1 Bối cảnh Error! Bookmark not defined 1.2 Một số nghiên cứu liên quan Error! Bookmark not defined 1.3 Nội dung nghiên cứu Error! Bookmark not defined 1.4 Cấu trúc luận văn Error! Bookmark not defined Chương 2 Kiến thức cơ sở Error! Bookmark not defined 2.1 Kiểm chứng phần mềm Error! Bookmark not defined 2.1.1 Kiểm chứng hình thức Error! Bookmark not defined 2.1.1.1 Kiểm chứng mô hình Error! Bookmark not defined 2.1.1.2 Chứng minh định lý Error! Bookmark not defined 2.1.2 Kiểm chứng tại thời điểm thực thi Error! Bookmark not defined 2.2 Một số vấn đề trong chương trình tương tranh Error! Bookmark not defined 2.3 Sự tương tranh trong Java Error! Bookmark not defined 2.4 Lập trình hướng khía cạnh Error! Bookmark not defined 2.4.1 Thực thi cắt ngang Error! Bookmark not defined 2.4.2 Điểm nối Error! Bookmark not defined 2.4.3 Hướng cắt Error! Bookmark not defined 2.4.4 Mã hành vi Error! Bookmark not defined 2.4.5 Khía cạnh Error! Bookmark not defined 2.4.6 Cơ chế hoạt động của AspectJ Error! Bookmark not defined 2.5 Kết luận Error! Bookmark not defined.
Trang 6Chương 3 Ràng buộc thời gian giữa các thành phần trong chương trình tương tranh
Error! Bookmark not defined 3.1 Giới thiệu Error! Bookmark not defined 3.2 Bài toán kiểm chứng ràng buộc thời gian giữa các thành phần tương tranh Error! Bookmark not defined.
3.3 Phương pháp đặc tả và kiểm chứng ràng buộc thời gianError! Bookmark not defined.
3.3.1 Mô tả phương pháp Error! Bookmark not defined 3.3.2 Đặc tả ràng buộc thời gian Error! Bookmark not defined 3.3.3 Biểu thức chính quy thời gian Error! Bookmark not defined 3.3.4 Phương pháp sinh mã aspect Error! Bookmark not defined 3.3.4.1 Đọc và phân tích biểu thức chính quy thời gianError! Bookmark not defined.
3.3.4.2 Sinh mã aspect Error! Bookmark not defined 3.4 Kết luận Error! Bookmark not defined Chương 4 Thực nghiệm Error! Bookmark not defined 4.1 Xây dựng công cụ TVG Error! Bookmark not defined 4.1.1 Đọc và phân tích biểu thức chính quy thời gian Error! Bookmark not defined 4.1.2 Sinh mã aspect Error! Bookmark not defined 4.2 Kiểm chứng một số chương trình Error! Bookmark not defined 4.2.1 Kiểm chứng chương trình tuần tự Error! Bookmark not defined 4.2.2 Kiểm chứng chương trình tương tranh Error! Bookmark not defined Chương 5 Kết luận Error! Bookmark not defined Phụ lục Error! Bookmark not defined Phụ lục A Công cụ sinh mã kiểm chứng TVG Error! Bookmark not defined A.1 Giới thiệu Error! Bookmark not defined A.2 Hướng dẫn sử dụng Error! Bookmark not defined A.2.1 Các yêu cầu cài đặt Error! Bookmark not defined A.2.2 Các chức năng chính Error! Bookmark not defined A.2.3 Hướng dẫn thực hiện Error! Bookmark not defined.
Trang 7TÀI LIỆU THAM KHẢO 1 Tiếng Việt 1 Tiếng Anh 1
DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT
Dạng viết tắt Dạng đầy đủ Diễn giải
AOP Aspect Oriented Programming Lập trình hướng khía cạnh CFG Context Free Grammar Văn phạm phi ngữ cảnh
IDE Integrated Development Môi trường pháp triển tích hợp
Environment MCS Method Call Sequence Tuần tự gọi phương thức
OOP Object Oriented Programming Lập trình hướng đối tượng
Trang 8DANH SÁCH BẢNG
Bảng 2.1 - Ánh xạ giữa các loại điểm nối (joinpoint) và hướng cắt (pointcut) tương
ứng Error! Bookmark not defined.
Trang 9DANH SÁCH HÌNH VẼ
Hình 1.1 – Kiểm chứng chương trình mức cài đặt sử dụng lập trình AOP Error! Bookmark not defined.
Hình 2.1 – Ví dụ sử dụng phương thức run Error! Bookmark not defined.
Hình 2.2 – Xung đột các tiến trình trong Java Error! Bookmark not defined.
Hình 2.3 – Sử dụng synchoronized để giải quyết tương tranhError! Bookmark not
defined.
Hình 2.4 – Xử lý cắt ngang trong lập trình OOP Error! Bookmark not defined Hình 2.5 – Xử lý cắt ngang trong lập trình AOP Error! Bookmark not defined Hình 2.6 – Biểu diễn một khía cạnh với mã hành vi trước và sauError! Bookmark not defined.
Hình 2.7 – Cấu trúc cơ bản của một khía cạnh Error! Bookmark not defined.
Hình 3.1 – Mã nguồn một chương trình bao gồm thành phần tuần tự và tương tranh
Error! Bookmark not defined Hình 3.2 – Mô tả quá trình chạy các phương thức Error! Bookmark not defined Hình 3.3 – Phương pháp kiểm chứng ràng buộc thời gian.Error! Bookmark not defined.
Hình 3.4 – Thuật toán đọc biểu thức chính quy thời gian.Error! Bookmark not defined.
Hình 3.5 – Ví dụ một mẫu aspect Error! Bookmark not defined Hình 3.6 – Thuật toán Sinh mã aspect Error! Bookmark not defined Hình 4.1 – Cài đặt công cụ TVG bằng Netbean 7.0.1 Error! Bookmark not defined Hình 4.2 – Một đoạn mã aspect sinh ra từ công cụ TVG.Error! Bookmark not defined.
Hình 4.3 – Pattern kiểm tra từng thành phần trong TREError! Bookmark not defined.
Hình 4.4 – Lớp TimingMethod Error! Bookmark not defined.
Trang 10Hình 4.5 – Quá trình đọc và phân tích biểu thức TRE Error! Bookmark not defined Hình 4.6 – Tạo mã aspect từ các mẫu đã định nghĩa Error! Bookmark not defined Hình 4.7 – Template aspectHead Error! Bookmark not defined Hình 4.8 – Template aspectTail Error! Bookmark not defined Hình 4.9 – Mã nguồn một chương trình tuần tự Error! Bookmark not defined Hình 4.10 – Kết quả thực nghiệm ca kiểm thử đúng chương trình tuần tự Error! Bookmark not defined.
Hình 4.11 – Kết quả thực nghiệm ca kiểm thử sai chương trình tuần tự Error! Bookmark not defined.
Hình 4.12 – Mã nguồn một chương trình tương tranh Error! Bookmark not defined Hình 4.13 – Kết quả thực nghiệm ca kiểm thử đúng chương trình tương tranh Error! Bookmark not defined.
Hình 4.14 – Kết quả thực nghiệm ca kiểm thử sai chương trình tương tranh Error! Bookmark not defined.
Hình A.1 – Giao diện chính của công cụ sinh mã TVG Error! Bookmark not defined Hình A.2 – Đặc tả ràng buộc thời gian các thành phần bằng TREError! Bookmark not defined.
Hình A.3 – Đan mã aspect với mã chương trình Java viết bằng Eclipse Error! Bookmark not defined.
Trang 11TÀI LIỆU THAM KHẢO
Tiếng Việt
[1] Trịnh Thanh Bình, Trương Ninh Thuận, và Nguyễn Việt Hà (2010) Kiểm chứng
sự tuân thủ về ràng buộc thời gian trong các ứng dụng phần mềm Tạp chí Tin học và Điều khiển học, Số 2 : 173-184
Tiếng Anh
[2] A Colyer and A Clement., "Aspect-oriented programming with AspectJ," IBM Syst J., 44(2), 2005, p 301–308
[3] Addison-Wesley (2005), in Aspect-Oriented Software Development, R Filman, T
Elrad, S Clarke and a M Ak¸sit, Eds., Boston
[4] Benveniste A (September 1998), "Safety critical embedded systems design: the
sacres approach," in In Formal Techniques in Real-Time and Fault Tolerant systems, FTRTFT’98 school, Lyngby, Denmark
[5] B Berard, M Bidoit, A Finkel, F Laroussinie, A Petit, L Petrucci and a P Schnoebelen (1999), Systems and software verification : model-checking
Trang 12techniques and tools, New York, NY: Springer-Verlag New York, Inc
[6] B Long, P Strooper and a L Wildman (2007), "A method for verifying concurrent Java components based on an analysis of concurrency failures: Research articles," Concurr Comput : Pract Exper.,19, p 281–294
[7]
C Baier and J.-P Katoen (2008), Principles of Model Checking(Representation and Mind Series), The MIT Press
[8] C Yoonsik and A Perumandla (2005), "A Specifying and checking method call
sequences in JML," in In Software Engineering Research and Practice, CSREA
Press
[9] C Yoonsik and A Perumandla (2007), "Specifying and checking method call
sequences of Java programs," in Software Quality Control
[10] D Dymek and K Leszek (2008), "Estimation of system workload time
characteristic using uml timing diagrams," in In Proceedings of the 2008 Third International Conference on Dependability of Computer Systems, Washington,
DC, USA
[11] E Asarin, Maler and P C a Oded, "Timed regular expressions," Journal of the ACM,, no 49, Journal of the ACM
[12] E Bodden and K Havelund (2010), "Aspect-oriented race detection in Java," IEEE Trans Softw Eng., 36(4), p 509–527
[13] E Bodden (2004), A lightweight LTL runtime verification tool for Java, New York, NY: In Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications, OOPSLA
’04
[14] E Bodden (2005), J-LO - A tool for runtime-checking temporal assertions, Diploma thesis
[15] E Clarke, O Grumberg and a D Long (1994), "Model checking and abstraction," ACM Trans Program Lang Syst., 16(5), pp 1512–1542
[16] E Hilsdale and J Hugunin (2004), "Advice weaving in AspectJ," in In Proceedings of the 3rd international conference on Aspect-oriented software
Trang 13development, New York, NY, USA
[17] E Hajiyev, L Hendren, O d Moor, P Avgustinov, E B.- den, O Lhotak, N Ongkingco, D Sereni, G Sittampalam, J Tibble and a M Verbaere (2006),
"Aspects for Trace Monitoring," vol volume 4262 of Lecture Notes in Computer Science, Springer, In Klaus Havelund, Manuel Nunez, Grigore Rosu, and Burkhart Wolff, editors, Formal Approaches to Testing Systems and Runtime Verification (FATES/RV), p 20–39
[18] e Saddek Bensalem and Doron Peled (2009), Runtime Verification : 9th International Workshop, Grenoble: Selected Papers Springer-Verlag, Berlin, Heidelberg
[19] G Andrews (1991), Concurrent Programming : Principles and Practice, Addison- Wesley
[20] G Hui and J Woo (2007), "Compositional verification of timing constraints for
embedded real-time systems," in In Proceedings of the 6th Conference on WSEAS International Conference on Applied Computer Science, USA
[21] G Holzmann (2003), Spin model checker, the : primer and reference manual, 1st ed., Addison-Wesley Professional
[22] G Kiczales, E Hilsdale, J Hugunin, M Kersten, J Palm and a W G Griswold
(2001), "An Overview of AspectJ," in In ECOOP ’01 : Proceedings of the 15th European Conference on Object-Oriented Programming, London, UK
[23] G Kiczales, J Lamping, A Mendhekar, C Maeda, C Lopes, J m Loingtier and
a J Irwin (1997), Aspect-oriented programming, SpringerVerlag: In ECOOP
[24] I Sommerville (2007), Software Engineering, 9th ed., Addison-Wesley Pulishing Company, p 9780321493750
[25] J.-R Abrial (2006), "Formal methods in industry : achievements, problems, future," Swiss Federal Institute of Technology Zurich, In ICSE, p 761–768
[26] J.-R Abrial (2010), Modeling in Event-B : System and Software Engineering, New York, NY: Cambridge University Press
[27] J.-R Abrial (1996), The B-book : assigning programs to meanings, New York,
Trang 14NY: Cambridge Uni- versity Press
[28] L Yang (2008), "The Automated Translation of Integrated Formal Specifications into Concurrent Programs," PhD thesis, University of Southampton, Southampton
[29] M Ben-Ari (2008), Principles of the Spin Model Checker, 1st ed
[30] Nixon P and Shi L (1996), "Concurrent semantics for structured design
methods," in In Proceedings of the First IFIP TC10 International Workshop on Software Engineering for Parallel and Distributed Systems, London, UK, UK
[31] P Strooper and L Wildman (2007), "Testing Concurrent Java Components," in In Companion to the proceedings of the 29th International Conference on Software Engineering, Washing- ton, DC, USA
[32] S Berezin (2002), Model checking and theorem proving : a unified framework, Pittsburgh, PA: PhD thesis
[33] Wegener J and Grochtmann M (1998), "Verifying timing constraints of real-time systems by meansof evolutionary testing," Real-Time Syst, p 275–298
[34] W Visser, K Havelund, G Brat and a S Park (2000), "Model checking
programs," in In ASE ’00 : Proceedings of the 15th IEEE international conference
on Automated software engineering, Washington, DC, USA
[35] Y Jin (2007), "Formal verification of protocol properties of sequential Java
programs," in In Proceedings of the 31st Annual International Computer Software and Applications, Washington