Kiểm chứng các thành phần java tương tranh

142 47 0
Kiểm chứng các thành phần java tương tranh

Đ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

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Trịnh Thanh Bình KIỂM CHỨNG CÁC THÀNH PHẦN JAVA TƯƠNG TRANH LUẬN ÁN TIẾN SỸ CÔNG NGHỆ THÔNG TIN Hà Nội - 2011 Lời cam đoan Tôi xin cam đoan luận án "Kiểm chứng thành phần Java tương tranh" cơng trình nghiên cứu riêng tơi Các số liệu, kết trình bày luận án hồn tồn trung thực chưa cơng bố cơng trình khác Tơi trích dẫn đầy đủ tài liệu tham khảo, cơng trình nghiên cứu liên quan nước quốc tế Ngoại trừ tài liệu tham khảo này, luận án hồn tồn cơng việc riêng tơi Trong cơng trình khoa học cơng bố luận án, tơi thể rõ ràng xác đóng góp đồng tác giả tơi đóng góp Luận án hồn thành thời gian làm Nghiên cứu sinh 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 Tác giả : Hà Nội : i Lời cảm ơn Trước hết, muốn cảm ơn đến PGS.TS Nguyễn Việt Hà, cán hướng dẫn chính, người trực tiếp giảng dạy hướng dẫn suốt thời gian học cao học, thực luận văn thạc sĩ luận án Một vinh dự lớn cho học tập, nghiên cứu hướng dẫn thầy Tôi trân trọng cảm ơn PGS.TS Nguyễn Ngọc Bình hướng dẫn tận tình khoa học Thầy Tôi gửi lời cám ơn đến TS Trương Ninh Thuận, TS Trương Anh Hồng giúp đỡ Thầy cho đề xuất trao đổi nghiên cứu Tôi bày tỏ cảm ơn đến TS Đặng Văn Hưng, TS Phạm Ngọc Hùng, TS Võ Đình Hiếu, TS Đặng Đức Hạnh, Ths Tơ Văn Khánh, Ths Vũ Quang Dũng giúp đỡ Thầy đóng góp hữu ích cho luận án Tơi trân trọng cảm ơn Bộ môn Công nghệ phần mềm, Khoa Công nghệ thông tin, Phòng Đào tạo Ban giám hiệu trường Đại học Công nghệ tạo điều kiện thuận lợi cho tơi suốt q trình thực luận án Tơi bày tỏ cảm ơn đến Ban giám hiệu Trường Đại học Hải Phòng tạo điều kiện thời gian tài cho tơi thực luận án Tôi muốn cảm ơn đến cán bộ, giảng viên Khoa Toán tin – Trường Đại học Hải Phòng cổ vũ động viên sát cánh bên tơi q trình nghiên cứu Một phần nghiên cứu thực khuôn khổ đề tài nghiên cứu khoa học QGTD 09.02 Đại học Quốc gia Hà Nội Xin cảm ơn trao đổi trợ giúp thành viên đề tài Tôi muốn cảm ơn đến tất người bạn Những người chia sẻ, động viên lúc khó khăn tơi ln ghi nhớ điều Cuối cùng, tơi xin bày tỏ lịng biết ơn vô hạn cha mẹ, vợ gia đình ln ủng hộ, giúp đỡ tơi ii Mục lục Lời cam đoan i Lời cảm ơn ii Từ viết tắt vii Danh mục hình vẽ viii Danh mục bảng biểu x Mở đầu 1.1 Bối cảnh 1.2 Một số nghiên cứu liên quan 1.2.1 Kiểm chứng thiết kế 1.2.2 Kiểm chứng mã nguồn 1.3 Nội dung nghiên cứu 1.4 Cấu trúc luận án 1 3 9 9 10 11 11 12 13 14 15 17 17 17 Kiến thức sở 2.1 Kiểm chứng phần mềm 2.1.1 Kiểm chứng hình thức 2.1.1.1 Kiểm chứng mơ hình 2.1.1.2 Chứng minh định lý 2.1.2 Kiểm chứng thời điểm thực thi 2.2 Một số vấn đề chương trình tương tranh 2.3 Sự tương tranh Java 2.3.1 Mơ hình lưu trữ (JMM-Java Memory Model) 2.3.2 Ngôn ngữ mơ hình hóa cho Java (JML-Java Modeling guage) 2.3.3 Công cụ kiểm chứng mã Java (JPF-Java PathFinder) 2.4 Phương pháp hình thức với Event-B 2.4.1 Máy Ngữ cảnh 2.4.2 Sự kiện iii Lan 2.4.3 Phân rã kết hợp 2.4.4 Sinh mệnh đề cần chứng minh 2.5 Ngôn ngữ mô hình hóa UML 2.5.1 Biểu đồ 2.5.2 Máy trạng thái giao thức 2.5.3 Biểu đồ thời gian 2.6 Lập trình hướng khía cạnh 2.6.1 Thực thi cắt ngang 2.6.2 Điểm nối 2.6.3 Hướng cắt 2.6.4 Mã hành vi 2.6.5 Khía cạnh 2.7 Kết luận Ràng buộc thứ tự tiến trình tương tranh 3.1 Giới thiệu 3.2 Đặc tả kiểm chứng ràng buộc thứ tự tiến trình tương tranh 3.2.1 Mô tả phương pháp 3.2.2 Vùng xung đột 3.2.3 Cung cấp tiêu thụ 3.2.4 Vấn đề đọc-ghi 3.2.5 Kết chứng minh 3.3 Kết luận Sự 4.1 4.2 4.3 đồng thuận hệ thống đa thành phần Giới thiệu Một số định nghĩa bổ đề Phương pháp đặc tả kiểm chứng thiết kế đồng thuận hệ thống đa thành phần 4.3.1 Đặc tả kiến trúc hệ thống 4.3.2 Giao thức 4.3.3 Giao thức song song 4.3.4 Hệ thống đa thành phần thực phép toán tập số nhị phân 4.3.4.1 Mô tả hệ thống 4.3.4.2 Đặc tả hệ thống với Event-B 4.3.4.3 Kết chứng minh 4.4 Phương pháp kiểm chứng đồng thuận hệ thống đa thành phần mức mã nguồn 4.4.1 Mô tả phương pháp 4.4.2 Sinh mã kiểm chứng JPF 4.4.3 Hệ thống cung cấp tiêu thụ 4.5 Kết luận iv 19 20 21 21 22 23 25 26 27 27 28 29 30 31 31 33 33 34 36 41 42 45 46 46 48 50 50 51 53 54 54 55 58 60 60 61 61 62 Sự tuân thủ thực thi đặc tả giao thức tương tác 5.1 Giới thiệu 5.2 Bài toán kiểm chứng tuân thủ thực thi đặc tả giao thức tương tác 5.3 Phương pháp đặc tả kiểm chứng tuân thủ thực thi đặc tả giao thức tương tác 5.3.1 Mô tả phương pháp 5.3.2 Đặc tả giao thức tương tác 5.3.2.1 Biểu thức quy mở rộng cho biểu diễn giao thức tương tác 5.3.2.2 Biểu đồ PSM cho biểu diễn giao thức tương tác 5.3.3 Sinh mã aspect 5.3.4 Đan mã aspect 5.4 Thực nghiệm 5.5 Kết luận 65 65 66 67 67 67 Ràng buộc thời gian thành phần chương trình tương tranh 6.1 Giới thiệu 6.2 Bài toán kiểm chứng ràng buộc thời gian thành phần tương tranh 6.3 Phương pháp đặc tả kiểm chứng ràng buộc thời gian 6.3.1 Mô tả phương pháp 6.3.2 Đặc tả ràng buộc thời gian 6.3.2.1 Biểu thức quy thời gian 6.3.2.2 Biểu đồ thời gian 6.3.3 Sinh mã aspect 6.4 Thực nghiệm 6.5 Kết luận 67 69 70 73 73 76 78 78 79 80 80 81 82 83 84 85 86 Kết luận 88 7.1 Các đóng góp luận án 88 7.2 Hướng phát triển 91 A Đặc tả ràng buộc thứ tự A.1 Vấn đề vùng xung đột A.1.1 Mơ hình khởi tạo A.1.2 Mơ hình làm mịn A.2 Vấn đề cung cấp tiêu thụ A.2.1 Mơ hình khởi tạo A.2.2 Mơ hình làm mịn A.3 Vấn đề đọc ghi A.3.1 Mô hình khởi tạo tiến trình v tương tranh 104 104 104 105 107 107 108 111 111 A.3.2 Mơ hình làm mịn 112 B Đặc tả hệ thống đa thành phần thực phép toán nhị phân116 B.1 Đặc tả phép dịch bit 116 B.1.1 Ngữ cảnh phép dịch bit 116 B.1.2 Máy thực thi phép dịch bit 116 B.2 Đặc tả phép nhân xâu nhị phân với bit 118 B.2.1 Ngữ cảnh phép nhân xâu nhị phân với bit 118 B.2.2 Máy thực thi phép nhân xâu nhị phân với bit 118 B.3 Đặc tả phép cộng xâu nhị phân 119 B.3.1 Ngữ cảnh phép cộng xâu nhị phân 119 B.3.2 Máy thực thi phép cộng hai xâu nhị phân 120 B.4 Đặc tả hệ thống đa thành phần thực phép nhân hai xâu nhị phân 121 B.4.1 Ngữ cảnh hệ thống đa thành phần thực phép nhân hai xâu nhị phân 121 B.4.2 Máy thực thi hệ thống đa thành phần thực phép nhân hai xâu nhị phân 122 C Công cụ sinh mã kiểm chứng PVG C.1 Giới thiệu C.2 Hướng dẫn sử dụng C.2.1 Các yêu cầu C.2.2 Các chức C.2.3 Hướng dẫn thực C.2.3.1 Đặc tả giao thức C.2.3.2 Lưu mã Aspect C.2.3.3 Đan mã aspect vi 125 125 126 126 127 127 127 129 129 Từ 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 CTL Computation Tree Logic Logic tính tốn IPC Interaction Protocol Giao thức tương tác JMM Java memory model Mơ hình lưu trữ Java JML Java modeling language Ngôn ngữ đặc tả cho Java JPF Java PathFinder Công cụ kiểm chứng mã Java LTL Linear Temporal Logic Logic thời gian tuyến tính MCS Multi-Component System Hệ thống đa thành phần PSM Protocol State Machine Máy trạng thái giao thức RE Regular Expression Biểu thức quy TD Timing Diagram Biểu đồ thời gian UML Unified Modeling Language Ngơn ngữ mơ hình hóa thống vii Danh sách hình vẽ 1.1 Kiểm chứng mức thiết kế cài đặt chương trình 1.2 Cấu trúc luận án 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 Kiểm chứng chương trình Java với JPF Cấu trúc tổng quát máy ngữ cảnh Cấu trúc tổng quát kiện Sự phân rã kết hợp Sự kiện sinh mệnh đề chứng minh để bảo toàn bất biến Biểu đồ biểu diễn giao thức rút tiền hệ thống ATM Máy trạng thái biểu diễn giao thức tương tác truy cập sở liệu Dạng trạng thái biểu đồ thời gian Dạng giá trị biểu đồ thời gian Biểu đồ thời gian dạng kết hợp 15 18 19 20 20 22 23 24 25 25 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 Kiến trúc tổng quát đặc tả tương tranh với Event-B Máy truy cập vào vùng xung đột Máy làm mịn để truy cập vào vùng xung đột Giao thức tương tác vấn đề cung cấp tiêu thụ Máy trừu tượng cho vấn đề cung cấp-tiêu thụ Máy làm mịn thứ cho vấn đề cung cấp-tiêu thụ Máy làm mịn thứ hai cho vấn đề cung cấp-tiêu thụ Máy trừu tượng cho vấn đề đọc-ghi Máy làm mịn cho vấn đề đọc-ghi Đặc tả kiện producer mơ hình khởi tạo làm mịn 35 35 36 37 38 39 40 41 43 44 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 Sự kết hợp máy trừu tượng ngữ cảnh Giao thức biểu diễn UML Giao thức song song biểu diễn UML Đặc tả phép dịch bit UML Máy ngữ cảnh hệ thống Đặc tả kiện ShiftLeftIf thành phần bitshift Phương pháp kiểm chứng đồng thuận mức mã nguồn Kiểm chứng mã nguồn hệ thống cung cấp-tiêu thụ với JPF 50 52 53 55 57 59 60 63 5.1 Sơ đồ hoạt động hệ thống 68 5.2 Ví dụ chương trình cài đặt sai 74 viii 6.1 Biểu đồ thời gian giao thức rút tiền 6.2 Sinh mã aspect từ đặc tả ràng buộc thời gian 6.3 Ví dụ ca kiểm thử sai phương thức withdraw buộc thời gian thực thi [726082, 143658 ] nano giây C.1 C.2 C.3 C.4 80 84 với ràng 85 Giao diện cơng cụ sinh mã kiểm chứng PVG Khởi động PVG từ NetBeans Đặc tả giao thức tương tác hàng đợi tương tranh với UML Đặc tả giao thức hàng đợi tương tranh textbox bên trái mã AspectJ sinh bên phải C.5 Lưu mã aspect sinh C.6 Đan xen mã aspect với mã Java Eclipse ix 126 127 128 129 130 131 117 Phụ lục //Result of the shift left slr kk INVARIANTS inv4 : ppr ∈ N1 → inv2 : slr ∈ N1 → inv3 : kk ∈ N EVENTS Initialisation begin act1 : ppr := ∅ act2 : slr := ∅ act3 : kk := size pp end Event ShiftLeft result = when grd1 : kk = then act1 : slr := ppr end Event ShiftLeftIf = when grd1 : kk > grd2 : kk > numShift then act1 : ppr(kk) := ppr(kk−numShift) act2 : kk := kk−1 end Event ShiftLeftElse = when grd1 : kk > grd2 : kk ≤ numShift then act1 : ppr(kk) := act2 : kk := kk−1 end END 118 Phụ lục B.2 Đặc tả phép nhân xâu nhị phân với bit B.2.1 Ngữ cảnh phép nhân xâu nhị phân với bit An Event-B Specification of MultiDigitctx Creation Date: 13 Oct 2010 @ 10 :44 :57 AM CONTEXT MultiDigit CONSTANTS aa digit size aa size modr AXIOMS axm1 : axm2 : axm3 : axm4 : axm5 : aa ∈ N → digit ∈ N size aa > size modr > size modr ≥ size aa THEOREMS thm1 : ran(aa) = ∅ END B.2.2 Máy thực thi phép nhân xâu nhị phân với bit An Event-B Specification of MultiDigitmch Creation Date: 13 Oct 2010 @ 11 :15 :17 AM MACHINE MultiDigitMchine SEES MultiDigitctx VARIABLES pp modr jj // Final result INVARIANTS inv1 : modr ∈ N1 → inv2 : pp ∈ N1 → inv3 : jj ∈ N EVENTS Initialisation 119 Phụ lục begin act1 : modr := ∅ act2 : pp := ∅ act3 : jj := end Event MultiplyWithOneDigit = when grd1 : jj ≤ size aa then act1 : pp(jj) := digit·aa(jj) act2 : jj := jj+1 end Event MultiplyWithOneDigit result = when grd1 : jj = size aa+1 then act1 : modr := pp //Get the result end END B.3 Đặc tả phép cộng xâu nhị phân B.3.1 Ngữ cảnh phép cộng xâu nhị phân An Event-B Specification of Sumctx Creation Date: 14 Oct 2010 @ 09 :12 :11 AM CONTEXT Sumctx CONSTANTS aa bb size aa size bb size ar AXIOMS axm1 : axm2 : axm3 : axm4 : aa ∈ N1 → bb ∈ N1 → size aa > size bb > 120 Phụ lục axm5 : size aa < size ar axm6 : size bb < size ar axm7 : size ar < size aa+size bb THEOREMS thm1 : ran(aa) = ∅ thm2 : ran(bb) = ∅ END B.3.2 Máy thực thi phép cộng hai xâu nhị phân An Event-B Specification of Summch Creation Date: 14 Oct 2010 @ 09 :12 :04 AM MACHINE Summch SEES Sumctx VARIABLES cc // Get temprorary result ar // Result of the addition operation carry hh INVARIANTS inv1 : inv2 : inv3 : inv4 : cc ∈ N1 → ar ∈ N1 → hh ∈ N carry ∈ N EVENTS Initialisation begin act1 : act2 : act3 : act4 : cc := ∅ ar := ∅ hh := carry := end Event AdditionResult = when grd1 : hh = size ar+1 then act1 : ar := cc end Event AdditionIf = // Get result 121 Phụ lục when grd1 : hh ≤ size ar grd2 : hh = size ar∧carry = then act1 : cc(hh+1) := end Event AdditionElse = when grd1 : hh < size ar grd2 : hh = size ar∧carry = then act1 : cc(hh) := (aa(hh)+bb(hh)+carry)mod2 act2 : carry := (aa(hh)+bb(hh)+carry)/2 act3 : hh := hh+1 end END B.4 Đặc tả hệ thống đa thành phần thực phép nhân hai xâu nhị phân B.4.1 Ngữ cảnh hệ thống đa thành phần thực phép nhân hai xâu nhị phân An Event-B Specification of Masctx Creation Date: 14 Oct 2010 @ 11 :39 :32 AM CONTEXT Masctx CONSTANTS aa bb size aa size bb size res size pp numShift AXIOMS axm1 : aa ∈ N1 → axm2 : bb ∈ N1 → axm3 : size aa > 122 Phụ lục axm4 : axm5 : axm6 : axm7 : size bb > size aa < size res size bb < size res numShift < size pp THEOREMS thm1 : ran(aa) = ∅ thm2 : ran(bb) = ∅ END B.4.2 Máy thực thi hệ thống đa thành phần thực phép nhân hai xâu nhị phân An Event-B Specification of Masmch Creation Date: 14 Oct 2010 @ 11 :39 :36 AM MACHINE Masmch SEES Masctx VARIABLES ii jj cc res ppr kk modr slr hh carry INVARIANTS inv1 : ii ∈ N inv2 : jj ∈ N inv3 : cc ∈ N1 → inv4 : res ∈ N1 → inv5 : ppr ∈ N1 → inv6 : kk ∈ N inv7 : modr ∈ N1 → inv8 : slr ∈ N1 → inv9 : hh ∈ N inv10 : carry ∈ N EVENTS Initialisation 123 Phụ lục begin act1 : ii := act2 : jj := act3 : slr := ∅ act4 : kk := size pp act5 : cc := ∅ act6 : hh := act7 : ppr := ∅ act8 : carry := act9 : modr := ∅ act10 : res := ∅ end Event Multiply2BinaryNumbers = when grd1 : ii = size bb+1 then act1 : res := cc end Event MultiplyWithOneDigit = when grd1 : jj < size aa then act1 : ppr(jj) := bb(ii)·aa(jj) act2 : jj := jj+1 end Event MultiplyWithOneDigit result = when grd1 : jj < size aa+1 then act1 : modr := ppr act2 : kk := size pp //Activate shiftLeft end Event ShiftLeftIf = when grd1 : kk > 0∧kk ≤ size pp grd2 : kk > numShift then act1 : modr(kk) := modr(kk−numShift) act2 : kk := kk−1 Phụ lục end Event ShiftLeftElse = when grd1 : kk > 0∧kk ≤ size pp grd2 : kk ≤ numShift then act1 : modr(kk) := act2 : kk := kk−1 end Event ShiftLeftResult = when grd1 : kk = then act1 : slr := modr act2 : hh := //Activate the addition event end Event AdditionIf = when grd1 : hh ≤ size res grd2 : hh = size res∧carry = then act1 : cc(hh+1) := end Event AdditionElse = when grd1 : hh ≤ size res grd2 : ¬ (hh = size res∧carry = 0) then act1 : cc(hh) := (cc(hh)+slr(hh)+carry)mod2 act2 : carry := (cc(hh)+slr(hh)+carry)/2 act3 : hh := hh+1 end Event AdditionalResult = when grd1 : hh = size res+1 then act1 : res := cc act2 : jj := act3 : ii := ii+1 end END 124 Phụ lục C Công cụ sinh mã kiểm chứng PVG C.1 Giới thiệu PVG - Protocol Verification Generator công cụ sinh mã kiểm chứng AspectJ từ đặc tả biểu đồ UML biểu thức quy Mã kiểm chứng sau đan với chương trình Java để kiểm chứng tuân thủ chương trình đặc tả Hiện PVG hỗ trợ kiểm chứng tuân thủ chương trình so với đặc tả giao thức tương tác thành phần (thứ tự thực phương thức lớp thành phần) Hoặc ràng buộc thời gian thành phần chương trình tương tranh Trong đó, giao thức tương tác đặc tả máy trạng thái giao thức, biểu đồ UML biểu thức quy mở rộng Ràng buộc thời gian đặc tả biểu đồ thời gian UML biểu thức quy 125 126 Phụ lục Hình C.1 – Giao diện cơng cụ sinh mã kiểm chứng PVG C.2 C.2.1 Hướng dẫn sử dụng Các yêu cầu Môi trường thực thi Java JRE phiên 1.5 cao hơn, Download địa http://java.sun.com Cơng cụ PVG Download địa : http://www.mediafire.com/?uz9sw1u9gl0hez7 Để khởi động công cụ PVG hệ điều hành Window cần nhắp đúp chuột vào file có phần mở rộng jar Trong Unix, sử dụng lệnh : java –jar PVG.jar PVG khởi động cách import mã nguồn từ mơi trường phát triển tích hợp IDE NetBeans hay Eclipse (có thể Download Netbeans, Eclipse địa http://netbeans.org/downloads/, http://www.eclipse.org/downloads/) sau chạy file ProtocolGeneratorApp.java (Hình C.2) Giao diện công cụ PVG sau khởi động Hình C.1 127 Phụ lục C.2.2 Các chức Phiên cơng cụ PVG gồm bốn chức (Hình C.1) – Open XMI : Đọc đặc tả từ biểu đồ UML biểu đồ máy trạng thái giao thức, biểu đồ biểu đồ thời gian, – Write protocol : Đặc tả trực tiếp giao thức tương tác ràng buộc thời gian biểu thức quy file dạng txt, – Generate Aspect : Sinh mã aspect từ đặc tả trên, – Save Aspect : Lưu mã aspect dạng file có phần mở rộng *.aj, file đan với chương trình Java để kiểm chứng tuân thủ chương trình đặc tả Hình C.2 – Khởi động PVG từ NetBeans C.2.3 Hướng dẫn thực C.2.3.1 Đặc tả giao thức Giả sử giao thức tương tác hàng đợi tương tranh (Concurrent Queue - CQ) với bốn phương thức cài đặt cho phép gọi lúc luồng Phụ lục 128 cung cấp Producer đẩy phần tử vào hàng đợi, nhiều luồng Consumer thao tác với phần tử hàng đợi (Hình 3.4 , Chương 5) Giao thức đặc tả máy trạng thái giao thức UML Hình C.3 Hình C.3 – Đặc tả giao thức tương tác hàng đợi tương tranh với UML Hình C.4 mơ tả giao thức tương tác hàng đợi tương tranh mã aspect sinh Trong đó, với phương thức đặc tả giao thức mã aspect sinh chứa biến trạng thái, pointcut tương ứng Trước phương thức thực câu lệnh before( ) pointcut kiểm tra trạng thái tiền điều kiện mà phải thỏa mãn Sau phương thức thực xong câu lệnh after( ) pointcut kiểm tra mệnh đề hậu điều kiện biến trạng thái gán trạng thái phương thức Mỗi có vi phạm giao thức hàm getSourceLocation() getSignature() aspect sinh thơng báo xác vị trí phương thức gọi gây vi phạm Một trạng thái đặc biệt ST START aspect sinh tương ứng với trạng thái phương thức thực giao thức Khi phương thức cuối giao thức thực 129 Phụ lục trạng thái gán trạng thái đặc biệt để bảo đảm giao thức kiểm chứng Hình C.4 – Đặc tả giao thức hàng đợi tương tranh textbox bên trái mã AspectJ sinh bên phải C.2.3.2 Lưu mã Aspect Sau sinh mã AspectJ từ đặc tả nó, chức save cho phép người sử dụng lưu lại mã aspect sinh file riêng để đan với chương trình Java cần kiểm chứng Các file có phần mở rộng *.aj, theo định dạng ngơn ngữ lập trình hướng khía cạnh với AOP (Hình C.5) C.2.3.3 Đan mã aspect AspectJ cho phép đan xen mã aspect với chương trình Java ba mức khác : mức mã nguồn, mã bytecode thời điểm nạp chương trình chương trình gốc chuẩn bị thực Đan mức mã nguồn, AspectJ nạp mã aspect Java mức mã nguồn (.aj java), sau thực biên dịch để sinh 130 Phụ lục Hình C.5 – Lưu mã aspect sinh mã đan xen bytecode, dạng class Đan xen mức mã bytecode, AspectJ dịch lại sinh mã dạng class từ các mã aspect Java biên dịch dạng (.class) Đan xen thời điểm nạp chương trình (load time weaving), mã aspect Java dạng class cung cấp cho máy ảo Java (JVM) Khi JVM nạp chương trình để chạy, nạp lớp AspectJ thực đan mã chạy chương trình Ví dụ đan xen mức mã nguồn eclipse NetBeans (Hình C.6) thực câu lệnh – Yêu cầu : – Mã nguồn : file chương trình nguồn (chương trình cần kiểm chứng) *.java file chứa mã aspect sinh dạng *.aj – Thiết lập môi trường : – PATH : /bin – CLASSPATH : /lib/aspectjrt.jar – Thực : – Dịch đan xen : – ajc ConcurrentQueueJ.java ConcurrentQueueA.aj 131 Phụ lục Hình C.6 – Đan xen mã aspect với mã Java Eclipse – Chạy kiểm tra : – aj ConcurrentQueueJ hoặc, – java ConcurrentQueueJ ... trình Java tương tranh Tuy nhiên phương pháp chưa kiểm chứng tương tác (giao thức tương tác) tiến trình (thành phần) tương tranh nhằm bảo đảm tính quán liệu chia sẻ liệu đầu vào-đầu Sự tương. .. pháp kiểm chứng tuân thủ cài đặt chương trình tương tranh so với đặc tả giao thức tương tác Chương trình bày phương pháp kiểm chứng ràng buộc thời gian thành phần song song chương trình tương tranh. .. phương pháp kiểm chứng phần mềm phương pháp kiểm chứng hình thức kiểm chứng thời điểm thực thi chương trình 2.1.1 Kiểm chứng hình thức 2.1.1.1 Kiểm chứng mơ hình Phương pháp kiểm chứng mơ hình (model

Ngày đăng: 01/08/2020, 21:03

Mục lục

  • Lời cam đoan

  • Lời cảm ơn

  • Từ viết tắt

  • Danh mục các hình vẽ

  • Danh mục các bảng biểu

  • 1 Mở đầu

    • 1.1 Bối cảnh

    • 1.2 Một số nghiên cứu liên quan

      • 1.2.1 Kiểm chứng thiết kế

      • 1.2.2 Kiểm chứng mã nguồn

      • 1.3 Nội dung nghiên cứu

      • 1.4 Cấu trúc luận án

      • 2 Kiến thức cơ sở

        • 2.1 Kiểm chứng phần mềm

          • 2.1.1 Kiểm chứng hình thức

            • 2.1.1.1 Kiểm chứng mô hình

            • 2.1.1.2 Chứng minh định lý

            • 2.1.2 Kiểm chứng tại thời điểm thực thi

            • 2.2 Một số vấn đề trong chương trình tương tranh

            • 2.3 Sự tương tranh trong Java

              • 2.3.1 Mô hình lưu trữ (JMM-Java Memory Model)

              • 2.3.2 Ngôn ngữ mô hình hóa cho Java (JML-Java Modeling Language)

              • 2.3.3 Công cụ kiểm chứng mã Java (JPF-Java PathFinder)

              • 2.4 Phương pháp hình thức với Event-B

                • 2.4.1 Máy và Ngữ cảnh

                • 2.4.2 Sự kiện

                • 2.4.3 Phân rã và kết hợp

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

Tài liệu liên quan