Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 54 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
54
Dung lượng
1,36 MB
Nội dung
Header Page of 113 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ PHẠM NHƯ UYỂN MÔHÌNHHÓAVÀKIỂMCHỨNGCÁCCHƯƠNGTRÌNHPHẦNMỀMHƯỚNGKHÍACẠNH LUẬN VĂN THẠC SỸ CÔNG NGHỆ THÔNG TIN HÀ NỘI - 2016 Footer Page of 113 Header Page of 113 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ PHẠM NHƯ UYỂN MÔHÌNHHÓAVÀKIỂMCHỨNGCÁCCHƯƠNGTRÌNHPHẦNMỀMHƯỚNGKHÍACẠNH Ngành: Công nghệ Thông tin Chuyên ngành: Kỹ thuật Phầnmềm Mã số: 60480103 NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS Trương Ninh Thuận HÀ NỘI - 2016 Footer Page of 113 Header Page of 113 LỜI CAM ĐOAN Tôi xin cam đoan toàn nội dung luận văn tìm hiểu, nghiên cứu, tham khảo tổng hợp từ nguồn tài liệu khác làm theo hướng dẫn người hướng dẫn khoa học Các nguồn tài liệu tham khảo, tổng hợp có nguồn gốc rõ ràng trích dẫn theo quy định Tôi xin chịu hoàn toàn trách nhiệm lời cam đoan Nếu có điều sai trái, xin chịu hình thức kỷ luật theo quy định Hà Nội, tháng 05 năm 2016 Người cam đoan Phạm Như Uyển Footer Page of 113 Header Page of 113 LỜI CẢM ƠN Đầu tiên xin gửi lời cảm ơn sâu sắc tới thầy PGS.TS Trương Ninh Thuận, 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 tận tình hướng dẫn bảo suốt trình thực luận văn tốt nghiệp Tôi xin trân trọng cảm ơn quý thầy cô 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 kiến thức quý báu suốt trình học làm tảng cho thực luận văn Cám ơn anh, chị nghiên cứu sinh bạn học viên Khoa Công nghệ Thông tin Các anh chị bạn giúp đỡ, ủng hộ nhiều đóng góp nhiều ý kiến quý báu, qua đó, giúp hoàn thiện luận văn tốt Mặc dù nỗ lực, cố gắng hẳn luận văn nhiều thiếu sót Tôi mong nhận nhiều ý kiến đánh giá quý, phê bình quý thầy cô, anh chị bạn Một lần xin chân thành cảm ơn! Hà Nội, tháng năm 2016 Phạm Như Uyển Footer Page of 113 Header Page of 113 MUC LỤC MUC LỤC DANH SÁCH CÁCHÌNH VẼ DANH SÁCH CÁC THUẬT NGỮ VÀ KHÁI NIỆM CHƯƠNG 1: ĐẶT VẤN ĐỀ 1.1 Sự cần thiết đề tài 1.2 Nội dung đề tài 1.3 Đóng góp luận văn 10 1.4 Cấu trúc luận văn 10 CHƯƠNG EAOP VÀ EVENT-B 12 2.1 Các đặc điểm lập trìnhhướngkhíacạnh 12 2.1.1 Quản lý concerns hệ thống 15 2.1.2 Phương pháp luận AOP 18 2.1.3 Ưu điểm AOP 19 2.1.4 Nhược điểm AOP 19 2.2 Lập trìnhhướngkhíacạnh dựa kiện 20 2.3 2.2.1 Công cụ EAOP: Kiến trúc thực 21 Event-B 27 2.3.1 Máy ngữ cảnh 27 2.3.2 Sự kiện 30 2.3.3 Phân rã kết hợp 31 Footer Page of 113 Header Page of 113 2.3.4 Công cụ 31 CHƯƠNG 3: MÔHÌNHHÓAVÀKIỂMCHỨNGCÁCPHẦNMỀM LẬP TRÌNHHƯỚNG KHÍA CẠNH 33 3.1 Trình bày EAOP Event-B 33 3.2 Môhìnhhóa hệ thống EAOP sử dụng Event-B 34 3.3 Kiểmchứng thuộc tính hệ thống 34 CHƯƠNG 4: PHƯƠNG PHÁP THỰC NGHIỆM 36 KẾT LUẬN 45 TÀI LIỆU THAM KHẢO 47 PHỤ LỤC 49 Footer Page of 113 Header Page of 113 DANH SÁCH CÁCHÌNH VẼ Hình 1: Môhình ánh xạ từ concern hệ thống sang phương pháp lập trình truyền thống 16 Hình 2: Cácmô đun yêu cầu logging phải nhúng đoạn mã để gọi logging API 17 Hình 3: Giải concern hệ thống bằng phương pháp AOP 18 Hình 4: Các giai đoạn phát triển sử dụng phương pháp AOP 19 Hình 5: Kiến trúc EAOP 20 Hình 6: Ví dụ đơn giản hóa việc thực chươngtrình 22 Hình 7: Cây khíacạnh kiện truyền 25 Hình 8: Cấu trúc máy ngữ cảnh 28 Hình 9: Mối quan hệ thành phần máy ngữ cảnh 28 Hình 10: Cấu trúc máy chi tiết 29 Hình 11: Cấu trúc ngữ cảnh chi tiết 30 Hình 12: Rodin GUI 31 Hình 13: Môhình kiến trúc Rodin 32 Hình 14: Phương pháp môhìnhhóakiểmchứngchươngtrìnhhướngkhíacạnh 37 Hình 15: Lớp Transaction 38 Hình 16: Lớp Exchange 38 Footer Page of 113 Header Page of 113 Hình 17: Khíacạnh updatetr 39 Hình 18: Sự kiện chuyển tiền gửi máy ATM 39 Hình 19: Kết minh chứng 40 Hình 20: Lớp Exchange sửa đổi 40 Hình 21: Event-B đặc tả chươngtrình 42 Hình 22: Đặc tả Event-B khíacạnh 43 Hình 23: Kết thực 43 Hình 24: Kết bảng Statistics 44 Footer Page of 113 Header Page of 113 DANH SÁCH CÁC THUẬT NGỮ VÀ KHÁI NIỆM THUẬT NGỮ AOP KHÁI NIỆM Aspect Oriented Programming – Lập trìnhhướngkhíacạnh Event-based Khíacạnh Oriented EAOP Programming – Lập trìnhhướngkhíacạnh dựa kiện ATM UML Automatic Teller Machine – Máy rút tiền tự động Unified Modeling Language – Ngôn ngữ môhìnhhóa thống Rigorous Open Development RODIN Enviroment for Complex System Công cụ mã nguồn mở dựa tảng Eclipse OOP FSP LTSA Footer Page of 113 Object-orented programming – Lập trìnhhướng đối tượng Finite State Processes – Quá trình hữu hạn trạng thái Labelled Transition System Anlyzer - Công cụ phân tích chuyển hệ thống Header Page 10 of 113 CHƯƠNG 1: ĐẶT VẤN ĐỀ 1.1 Sự cần thiết đề tài Ngày nay, phát triển mạnh mẽ phầnmềm ngày đóng vai trò quan trọng, ứng dụng vào tất lĩnh vực đời sống xã hội đại Làm cho tỷ trọng giá trị phầnmềm hệ thống ngày lớn Tuy nhiên, nhiều hệ thống, lỗi phầnmềm gây hậu đặc biệt nghiêm trọng, không thiệt hại nặng nề mặt kinh tế [14] Có nhiều công trình nghiên cứu tập trung vào kiểmchứngmôhìnhhướngkhíacạnh sử dụng kỹ thuật khác UML [10], kiểmchứngmôhình (model checking) [9], Petri-net [4], B [7] không phù hợp để môhìnhhóakiểmchứng hệ thống dựa kiện Một số công trình nghiên cứu khai thác kí hiệu UML mở rộng kí hiệu UML để cụ thể hóa vấn đề thực thi cắt ngang (crosscutting) Tuy nhiên, nghiên cứu không giải kiểmchứngkhíacạnh chất không hình thức bán hình thức UML Các tác giả Ubayashi Tamai [8] đề xuất phương pháp để kiểmchứngchươngtrình AOP sử dụng môhìnhkiểm tra Phương pháp nhằm vào giai đoạn lập trình ứng dụng môhìnhkiểm tra để có kết đan code lớp khíacạnh Phương pháp đảm bảo xác kiểm chứng, nhiên lại bỏ qua vấn đề kiểmchứngmô đun Điều có nghĩa khó sử dụng phương pháp để xác minh phầnmềm lớn Tác giả Dianxiang Xu [9] đề xuất sử dụng máy trạng thái kiểmchứngchươngtrìnhhướngkhíacạnhCác tác giả chuyển hóa đan môhình lớp môhình không bị ảnh hưởng bởi khíacạnh thành quy trình FSP, mà kiểmchứng bởi môhình LTSA kiểm tra thuộc tính hệ thống muốn có Tuy nhiên, phương pháp cần phải chuyển hóachươngtrìnhkhíacạnh sang môhình trạng thái trước khởi động môhình FSP Tác giả dùng B [7] để kiểmchứng đan khíacạnh Tác giả báo trình bày lớp số khía Footer Page 10 of 113 Header Page 40 of 113 38 Hình 15: Lớp Transaction Lớp exchange mô tả chức chuyển tiền máy ATM minh họahình 16: Hình 16: Lớp Exchange Khíacạnh updatetr mô tả crosscut chươngtrình máy ATM mô tả hình 17: Footer Page 40 of 113 Header Page 41 of 113 39 Hình 17: Khíacạnh updatetr Trong chươngtrình java mô tả máy ATM lớp Exchange lý người lập trình quên không kiểm tra điều kiện rút tiền amount < balance mã thực rút tiền làm cho số dư tài khoản nhỏ không trường hợp rút tiền nhiều số dư tài khoản amount>balance dẫn đến đặc tả thiếu mà áp dụng EAOP vào toán Tuân theo luật, tiến hành môhình hệ thống hướng kiện Event-B Rồi kiểmchứng công cụ Rodin kết không chứng minh điều kiện kích hoạt kiện transfer thiếu mệnh đề grd3: amt sau: E = {withdraw, deposit, transfer}, V = { bal, amount}, balance (balance: số tiền cân bằng tài khoản) amount (số lượng) mà người dùng Footer Page 42 of 113 Header Page 43 of 113 41 muốn rút tiền gửi tiền, C ={ balance > 0, amount > 0} trạng thái yêu cầu bắt buộc, A = { withdraw_act, deposit_act} Tuân theo luật 1, đạt môhình hệ thống hướng kiện Event-B minh họahình 21 (inv2 inv3 xác định biến mà còn chắn ràng buộc chươngtrình luôn thỏa mãn) Có kiện máy tương ứng với kiện chươngtrình withdraw, deposit và transfer MACHINE M VARIABLES balance amount targetAccount sourceAccount INVARIANTS inv1 :balance ∈ ℕ inv2 :amount ∈ ℕ inv3 :balance ≥ inv4 :amount ≥ inv5 :sourceAccount ∈ ℕ inv6 :targetAccount ∈ ℕ EVENTS INITIALISATION ≙ STATUS ordinary BEGIN act1 :balance ≔ act2 :amount≔0 act3 :targetAccount≔0 act4 :sourceAccount≔0 END withdraw ≙ STATUS ordinary WHEN grd1 :amount < balance THEN act1 :balance≔ balance−amount END deposit ≙ Footer Page 43 of 113 Header Page 44 of 113 42 STATUS ordinary ANY amt WHERE grd1 :amt ∈ ℕ THEN act1 :balance≔balance+ amt END transfer ≙ STATUS ordinary ANY amt accountNo WHERE grd1 :amt∈ℕ grd2 :accountNo ∈ℕ grd3 :amt≤balance THEN act1 :balance ≔ balance−amt act2 :targetAccount≔accountNo END END Hình 21: Event-B đặc tả chươngtrình bản Chúng ta tạo khíacạnh để rút tiền gửi phải phí trả phí cho người dụng rút tiền lần Chúng cần thêm biến fee, bonus, bFirst để định lại giá trị tương ứng Trong trường hợp làm mịn kiện withdraw_c, mã hành vi bổ sung balance chuyển đổi thành act1 Sử dụng ProB [6], công cụ kiểm tra môhình Event-B, tìm ví dụ chứng minh biến balance ∈ ℕ Điều có nghĩa vi phạm ràng buộc chươngtrình Để làm cho môhình xác, bổ sung điều kiện kích hoạt kiện withdraw_c bằng cách thêm vào mệnh đề grd3: bonus > fee rằng bonus lớn fee khíacạnh cần kiểm tra điều kiện mã hành vi Sự kiện Footer Page 44 of 113 Header Page 45 of 113 43 mở rộng withdraw_c rút tiền máy ATM đặc tả Event-B khíacạnhmô tả hình 22 sau: withdraw_c ≙ extended STATUS ordinary REFINES withdraw WHEN grd1 :amount < balance grd2 :bFirst=TRUE grd3 :bonus>fee THEN act1 :balance≔balance−amount−fee+bonus END Hình 22: Đặc tả Event-B khíacạnhHình 23 minh họa kết thực soạn thảo công cụ Rodin, sinh kiểmchứng tự động mệnh đề cần chứng minh Hình 23: Kết quả thực hiện Hình 24 minh họa kết trìnhmôhìnhhóakiểmchứng tự động thể qua bảng Statistics, cho thấy toàn ràng buộc chứng minh đảm bảo đặt Footer Page 45 of 113 Header Page 46 of 113 44 Hình 24: Kết quả bảng Statistics Footer Page 46 of 113 Header Page 47 of 113 45 KẾT LUẬN Những đóng góp kết luận văn việc “Mô hìnhhóakiểmchứngchươngtrìnhphầnmềmhướngkhía cạnh”, kết cụ thể sau: Luận văn trình bày kiến thức sở liên quan đến việc toán kiểmchứngphầnmềm cụ thể là: Lập trìnhhướngkhíacạnh (Aspect Oriented Programming – AOP), lập trìnhhướngkhíacạnh dựa kiện (Event-based Aspect Oriented Programming – EAOP) Event-B Luận văn trình bày công cụ hỗ trợ Rodin, công cụ hỗ trợ cho phương pháp hình thức Event-B Luận văn trình bày quy luật môhìnhhóa ứng dụng lập trìnhhướngcạnh hệ thống hướng kiện dùng Event-B Luận văn trình bày môhìnhhóa cách tiếp cận thực tế bằng sử dụng công cụ Rodin để kiểmchứng thuộc tính chươngtrình có còn bảo tồn số thuộc tính sau thực đan chương trình, ràng buộc khác dựa công cụ chứng minh tự động Ưu điểm cách tiếp cận chươngtrình bao gồm khía cạnh, biến ràng buộc môhìnhhóa dễ dàng bằng đặc tả logic Event–B invariants events Do đó, tính đắn hệ thống chứng minh bằng phương pháp hình thức Hơn nữa, cách tiếp cận luận văn gần với thực tế, triển khai công cụ theo ý tưởng để chuyển đổi môhình EAOP từ Event–B sang công cụ Rodin tự động Luận văn minh họa phương pháp môhìnhhóakiểmchứngchươngtrình ATM Lập trìnhhướngkhíacạnh dựa kiện phương pháp tiếp cận mở rộng cho lập trìnhhướngkhíacạnh Lập trìnhhướngkhíacạnh dựa kiện kết hợp ưu điểm Footer Page 47 of 113 Header Page 48 of 113 46 hai lập trìnhhướngkhíacạnh kiến trúc dựa kiện Đề xuất phương pháp, chuyển đổi chươngtrình lập trìnhhướngkhíacạnh dựa kiện sang ngôn ngữ đặc tả Event-B Sử dụng Event-B để sinh mệnh đề cần chứng minh để kiểm tra lại ứng dụng ràng buộc ảnh hưởng bởi khíacạnh Do thời gian nghiên cứu lượng kiến thức có được, nên số vấn đề mà luận văn phải tiếp tục hoàn thiện phát triển thời gian tới như: Tiếp tục phát triển cần phải mở rộng với crosscuts phức tạp vào môhình lập trìnhhướngkhíacạnh dựa kiện Phát triển thử nghiệm cần tiến hành để đánh giá xác lợi ích hạn chế phương pháp tiếp cận Footer Page 48 of 113 Header Page 49 of 113 47 TÀI LIỆU THAM KHẢO [1] Event-B and the Rodin platform http://www.event-b.org, 2012 [2] J.R Abrial Modeling in Event-B: System and software engineering Cambridge University Press, New York, NY, USA 1st edition, 2010 [3] R Douence and M Sudholt A model and a tool for event-based aspect-oriented programming (eaop) Technical Report TR 02/11/INFO Ecole des Mines de Nantes, 2002 [4] L Guan, X Li, and H Hu A petri net-based approach for supporting khíacạnh oriented modeling In Theoretical Apects of Software Engineering, 2008, pages 83-90, June 2008 [5] Holzer, L Ziarek, K Jayaram, and P Eugster Putting events in context: Khía cạnhs for event-based distributed programming In Proceedings of the Tenth International Conference on Aspects-oriented Software Development, AOSD '11, pages 241-252, New York, NY, USA, 2011 ACM [6] O Ligot, J Bendisposto, and M Leuschel Debugging event-b models using the prob disprover plug-in Proceedings AFADL'07, Juni 2007 [7] T N Thuan and N V Ha Using b to verify the weaving of aspects In Software Engineering Conference, 2007 APSEC 2007 14th Asia-Pacifc, pages 199-205, Dec 2007 [8] N Ubayashi and T Tamai Khía cạnh-oriented programming with model checking In Proceedings of the 1st international conference on Aspect-oriented software development, AOSD '02, pages 148-154, New York, NY, USA, 2002 ACM [9] D.-X Xu, O El-Ariss, W.-F Xu, and L.-Z Wang Aspect-oriented modeling and verification with fnite state machines J Comput Sci Technol., 24(5):949961, Sept 2009 [10] J Zhang, Y Chen, and G Liu Modeling Aspect-oriented programming with uml profile In Education Technology and Computer Science, 2009 ETCS '09 First International Workshop on, volume 2, pages 242-245, March 2009 [11] Anh-Hoang Truong, Phuc Dinh Nguyen, Tuyen Luu, Checking implementations of UML 2.0 sequence diagrams Footer Page 49 of 113 Header Page 50 of 113 48 [12] Joseph D Gradecki, Nicholas Lesiecki, Mastering AspectJ Aspects-Oriented Programming in Java - Wiley, edition (March 7, 2003) [13] Ramnivas Landdad AspectJ in Action practical aspect-oriented programming Manning publishing -2004 [14] Visser W, et.al, Model Checking Programs, 15th IEEE International Conference on Automated Software Engineering, 2000 [15] R Douence, P.Fradet, and M Sudholt A framework for the detection and resolution of aspect interactions In Proc of the ACM SIGPLAN/SIGSOFT Conf on Generative Programming and Component Engineering (GPCE), October 2002 [16] R Douence, O Motelet, and M Sudholt A formal definition of crosscuts In Proc of the 3rd Int Conf on Metalevel Architectures and Separation of Crosscutting Concerns, volume 2192 of LNCS Springer Verlag, September 2001 [17] Trịnh Thanh Bình, Trương Anh Hoàng, Nguyễn Việt Hà, Kiểmchứng giao thức tương tác thành phầnchươngtrình đa luồng sử dụng lập trìnhhướngkhía cạnh, Chuyên san Các công trình nghiên cứu, phát triển ứng dụng CNTT-TT, Tạp chí Công nghệ thông tin & Truyền thông, T V-1, S (24), 36-45, 2010 [18] Trịnh Thanh Bình, Trương Ninh Thuận, Nguyễn Việt Hà, Kiểmchứng tuân thủ ràng buộc thời gian ứng dụng phần mềm, Tạp chí Tin học Điều khiển học, T 26, S 2, 173-184, 2010 [19] Trịnh Thanh Bình (2011) Kiểm chứng thành phần Java tương tranh Luận án tiến sỹ, Trường Đại học Công Nghệ, Đại học Quốc Gia Hà Nội, tr 6,7 Footer Page 50 of 113 Header Page 51 of 113 49 PHỤ LỤC Chươngtrình đặc tả Event-B chươngtrình máy ATM MACHINE M VARIABLES balance amount targetAccount sourceAccount INVARIANTS inv1 inv2 inv3 inv4 inv5 inv6 EVENTS :balance ∈ ℕ :amount ∈ ℕ :balance ≥ :amount ≥ :sourceAccount ∈ ℕ :targetAccount ∈ ℕ INITIALISATION ≙ STATUS ordinary BEGIN act1 :balance ≔ act2 :amount≔0 act3 :targetAccount≔0 act4 :sourceAccount≔0 END withdraw ≙ STATUS ordinary WHEN grd1 :amount < balance THEN act1 :balance≔ balance−amount END deposit ≙ STATUS ordinary ANY Footer Page 51 of 113 Header Page 52 of 113 50 amt WHERE grd1 :amt ∈ ℕ THEN act1 :balance≔balance+ amt END transfer ≙ STATUS ordinary ANY amt accountNo WHERE grd1 :amt∈ℕ grd2 :accountNo ∈ℕ grd3 :amt≤balance THEN act1 :balance ≔ balance−amt act2 :targetAccount≔accountNo END END Chươngtrình đặc tả Event-B khíacạnh máy ATM MACHINE M1 REFINES M VARIABLES balance amount targetAccount sourceAccount fee bonus bFirst INVARIANTS inv1 :fee ∈ ℕ inv2 :bonus ∈ ℕ inv3 :bFirst∈ BOOL EVENTS Footer Page 52 of 113 Header Page 53 of 113 51 INITIALISATION ≙ extended STATUS ordinary BEGIN act1 :balance ≔ act2 :amount≔0 act3 :targetAccount≔0 act4 :sourceAccount≔0 act5 :fee ≔ act6 :bonus ≔ END withdraw ≙ extended STATUS ordinary REFINES withdraw WHEN grd1 :amount < balance THEN act1 :balance≔ balance−amount END deposit ≙ extended STATUS ordinary REFINES deposit ANY amt WHERE grd1 :amt ∈ ℕ THEN act1 :balance≔balance+ amt END transfer ≙ Footer Page 53 of 113 Header Page 54 of 113 52 extended STATUS ordinary REFINES transfer ANY amt accountNo WHERE grd1 :amt∈ℕ grd2 :accountNo ∈ℕ grd3 :amt≤balance THEN act1 :balance ≔ balance−amt act2 :targetAccount≔accountNo END withdraw_c ≙ extended STATUS ordinary REFINES withdraw WHEN grd1 :amount < balance grd2 :bFirst=TRUE grd3 :bonus>fee THEN act2 :balance≔balance−amount−fee+bonus END END Footer Page 54 of 113 ... CHƯƠNG 3: MÔ HÌNH HÓA VÀ KIỂM CHỨNG CÁC PHẦN MỀM LẬP TRÌNH HƯỚNG KHÍA CẠNH 33 3.1 Trình bày EAOP Event-B 33 3.2 Mô hình hóa hệ thống EAOP sử dụng Event-B 34 3.3 Kiểm chứng. .. CÔNG NGHỆ PHẠM NHƯ UYỂN MÔ HÌNH HÓA VÀ KIỂM CHỨNG CÁC CHƯƠNG TRÌNH PHẦN MỀM HƯỚNG KHÍA CẠNH Ngành: Công nghệ Thông tin Chuyên ngành: Kỹ thuật Phần mềm Mã số: 60480103 NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS... công trình nghiên cứu tập trung vào kiểm chứng mô hình hướng khía cạnh sử dụng kỹ thuật khác UML [10], kiểm chứng mô hình (model checking) [9], Petri-net [4], B [7] không phù hợp để mô hình hóa kiểm