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

54 254 0
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

Đ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

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 HÌNH HÓA KIỂM CHỨNG CÁC CHƯƠNG TRÌNH PHẦN MỀM HƯỚNG KHÍA CẠ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 HÌNH HÓA 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 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ÁC HÌNH VẼ DANH SÁCH CÁC THUẬT NGỮ 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 EVENT-B 12 2.1 Các đặc điểm lập trình hướng khía cạ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ình hướng khía cạ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: HÌNH HÓA 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 hình hóa hệ thống EAOP sử dụng Event-B 34 3.3 Kiểm chứ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ÁC HÌNH VẼ Hình 1: 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ác đ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ương trình 22 Hình 7: Cây khía cạ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: hình kiến trúc Rodin 32 Hình 14: Phương pháp hình hóa kiểm chứng chương trình hướng khía cạ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ía cạ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ương trình 42 Hình 22: Đặc tả Event-B khía cạ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Ữ KHÁI NIỆM THUẬT NGỮ AOP KHÁI NIỆM Aspect Oriented Programming – Lập trình hướng khía cạnh Event-based Khía cạnh Oriented EAOP Programming – Lập trình hướng khía cạnh dựa kiện ATM UML Automatic Teller Machine – Máy rút tiền tự động Unified Modeling Language – Ngôn ngữ hình hó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ình hướ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ần mề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ần mềm hệ thống ngày lớn Tuy nhiên, nhiều hệ thống, lỗi phần mề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ểm chứng hình hướng khía cạnh sử dụng kỹ thuật khác UML [10], kiểm chứng hình (model checking) [9], Petri-net [4], B [7] không phù hợp để hình hóa kiểm chứ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ểm chứng khía cạ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ểm chứng chương trình AOP sử dụng hình kiểm tra Phương pháp nhằm vào giai đoạn lập trình ứng dụng hình kiểm tra để có kết đan code lớp khía cạnh Phương pháp đảm bảo xác kiểm chứng, nhiên lại bỏ qua vấn đề kiểm chứng đun Điều có nghĩa khó sử dụng phương pháp để xác minh phần mềm lớn Tác giả Dianxiang Xu [9] đề xuất sử dụng máy trạng thái kiểm chứng chương trình hướng khía cạnh Các tác giả chuyển hóa đan hình lớp hình không bị ảnh hưởng bởi khía cạnh thành quy trình FSP, mà kiểm chứng bởi 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óa chương trình khía cạnh sang hình trạng thái trước khởi động hình FSP Tác giả dùng B [7] để kiểm chứng đan khía cạ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 tả chức chuyển tiền máy ATM minh họa hình 16: Hình 16: Lớp Exchange Khía cạnh updatetr tả crosscut chương trình máy ATM tả hình 17: Footer Page 40 of 113 Header Page 41 of 113 39 Hình 17: Khía cạnh updatetr Trong chương trình java 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 hình hệ thống hướng kiện Event-B Rồi kiểm chứ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 hình hệ thống hướng kiện Event-B minh họa hình 21 (inv2 inv3 xác định biến mà còn chắn ràng buộc chương trình luôn thỏa mãn) Có kiện máy tương ứng với kiện chương trì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ương trình bản Chúng ta tạo khía cạ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 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ương trình Để làm cho 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ía cạ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ía cạnh 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ía cạnh Hình 23 minh họa kết thực soạn thảo công cụ Rodin, sinh kiểm chứ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ình hình hóa kiểm chứ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ình hóa kiểm chứng chương trình phần mềm hướng khí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ểm chứng phần mềm cụ thể là: Lập trình hướng khía cạnh (Aspect Oriented Programming – AOP), lập trình hướng khía cạ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 hình hóa ứng dụng lập trình hướng cạnh hệ thống hướng kiện dùng Event-B  Luận văn trình bày hình hóa cách tiếp cận thực tế bằng sử dụng công cụ Rodin để kiểm chứng thuộc tính chương trì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ương trình bao gồm khía cạnh, biến ràng buộc hình hó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 hình EAOP từ Event–B sang công cụ Rodin tự động  Luận văn minh họa phương pháp hình hóa kiểm chứng chương trình ATM Lập trình hướng khía cạnh dựa kiện phương pháp tiếp cận mở rộng cho lập trình hướng khía cạnh Lập trình hướng khía cạ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ình hướng khía cạnh kiến trúc dựa kiện Đề xuất phương pháp, chuyển đổi chương trình lập trình hướng khía cạ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ía cạ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 hình lập trình hướng khía cạ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ía cạ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ểm chứng giao thức tương tác thành phần chương trình đa luồng sử dụng lập trình hướng khí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ểm chứ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ương trình đặc tả Event-B chương trì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ương trình đặc tả Event-B khía cạ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

Ngày đăng: 25/03/2017, 10:32

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan