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

142 13 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 Mục lục Lời cam đoan Lời cảm ơn Từ viết tắt Danh mục hình vẽ Danh mục bảng biểu Mở đầu 1.1 Bối cảnh 1.2 Một số nghiên cứu liên quan 1.2.1 1.2.2 1.3 Nội dung nghiên cứu 1.4 Cấu trúc luận án Kiến thức sở 2.1 Kiểm chứng phần mềm 2.1.1 2.1.2 2.2 Một số vấn đề chương trình t 2.3 Sự tương tranh Java 2.3.1 2.3.2 2.3.3 2.4 Phương pháp hình thức với Event2.4.1 2.4.2 iii 2.4.3 2.4.4 2.5 Ngơn ngữ mơ hình hóa UML 2.5.1 2.5.2 2.5.3 2.6 Lập trình hướng khía cạnh 2.6.1 2.6.2 2.6.3 2.6.4 2.6.5 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 tranh 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.3 Kết luận Sự đồng thuận hệ thống đa thành phần 4.1 Giới thiệu 4.2 Một số định nghĩa bổ đề 4.3 Phương pháp đặc tả kiểm chứng hệ thống đa thành phần 4.3.1 4.3.2 4.3.3 4.3.4 4.4 Phương pháp kiểm chứng đồng phần mức mã nguồn 4.4.1 4.4.2 4.4.3 4.5 Kết luận iv 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ủ g tương tác 5.3 Phương pháp đặc tả kiểm chứn đặc tả giao thức tương tác 5.3.1 5.3.2 5.3.3 5.3.4 5.4 Thực nghiệm 5.5 Kết luận 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 tranh 6.3 Phương pháp đặc tả kiểm chứn 6.3.1 6.3.2 6.3.3 Thực nghiệm Kết luận 6.4 6.5 A Kết luận 7.1 7.2 Các đóng góp luận án Hướng phát triển Đặc tả ràng buộc thứ tự tiến trình tương tranh A.1 Vấn đề vùng xung đột A.1.1 A.1.2 A.2 Vấn đề cung cấp tiêu thụ A.2.1 A.2.2 A.3 Vấn đề đọc ghi A.3.1 v 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 B.1.1 B.1.2 B.2 Đặc tả phép nhân xâu nhị phân B.2.1 B.2.2 B.3 Đặc tả phép cộng xâu nhị phân B.3.1 B.3.2 B.4 Đặc tả hệ thống đa thành phần t phân B.4.1 Ngữ cảnh hệ thống đ B.4.2 Máy thực thi hệ thống C Công cụ sinh mã kiểm chứng PVG C.1 C.2 vi Giới thiệu Hướng dẫn sử dụng C.2.1 Các yêu cầu C.2.2 C.2.3 Thank you for evaluating AnyBizSoft PDF Splitter A watermark is added at the end of each output PDF file To remove the watermark, you need to purchase the software from http://www.anypdftools.com/buy/buy-pdf-splitter.html Từ viết tắt Dạng viết tắt AOP CTL IPC JMM JML JPF LTL MCS PSM RE TD UML vii Danh sách hình vẽ 1.1 1.2 Kiểm chứng mức thiết kế cài đặt chương trình 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 Biểu đồ biểu diễn giao thức rút tiền hệ th Máy trạng thái biểu diễn giao thức tương tác truy cập 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 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 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 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 Kiểm chứng mã nguồn hệ thống cung cấp-tiêu thụ vớ 5.1 5.2 Sơ đồ hoạt động hệ thống Ví dụ chương trình cài đặt sai viii 6.1 Biểu đồ thời gian giao thức rút tiền 80 6.2 Sinh mã aspect từ đặc tả ràng buộc thời gian 84 6.3 Ví dụ ca kiểm thử sai phương thức withdraw với ràng buộc thời gian thực thi [726082, 143658 ] nano giây 85 C.1 C.2 C.3 C.4 Giao diện cơng cụ sinh mã kiểm chứng PVG 126 Khởi động PVG từ NetBeans 127 Đặc tả giao thức tương tác hàng đợi tương tranh với UML 128 Đặc tả giao thức hàng đợi tương tranh textbox bên trái mã AspectJ sinh bên phải 129 C.5 Lưu mã aspect sinh 130 C.6 Đan xen mã aspect với mã Java Eclipse 131 ix Danh sách bảng 2.1 Chứng minh định lý 2.2 Luật sinh mệnh đề cần chứng minh để bảo toàn bất biến 3.1 Kết chứng minh đặc tả ràng buộc thứ tự tiế tương tranh với RODIN 3.2 Mệnh đề cần chứng minh để bảo toàn bất biến kiện chứng minh tự động 3.3 Mệnh đề cần chứng minh để bảo toàn bất biến kiện chưa chứng minh tự động 4.1 Kết chứng minh đồng thuận hệ thống đa thàn với RODIN 4.2 Mệnh đề cần chứng minh để bảo đảm tính định nghĩa đư kiện BitShiftLeftIf chứng minh tự động 4.3 Mệnh đề cần chứng minh để bảo toàn bất biến kiệ LeftIf chưa chứng minh tự động 5.1 Thực nghiệm kiểm chứng tuân thủ thực thi đặ thức tương tác 6.1 Thực nghiệm kiểm chứng ràng buộc thời gian x act3 : jj := end Event MultiplyWithOneDigit =b when grd1 : jj ≤ size aa then act1 : pp(jj) := digit·aa(jj) act2 : jj := jj+1 end Event MultiplyWithOneDigit result =b when grd1 : jj = size aa+1 then act1 : modr := pp//Get the result end END B.3 B.3.1 Đặc tả phép cộng xâu nhị phân 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 Phụ lục : : : : aa ∈ bb ∈ size size N1 N1 aa bb → → > > axm5 : size aa < size ar axm6 : size bb < size ar axm7 : size ar < size aa+size bb THEOREMS thm1 : ran(aa) =6 ∅ thm2 : ran(bb) =6 ∅ END B.3.2Má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 // Get temprorary result ar // Result of the addition operation carry hh INVARIANTS ac inv1 : inv2 : inv3 : inv4 : EVENTS Initialisation cc ∈ N1 → ar ∈ N1 → hh ∈ N carry ∈ N begin act1 act2 act3 act4 : : : : cc := ∅ ar := ∅ hh := carry := end Event AdditionResult =b when grd1 : hh = size ar+1 then act1 : ar := cc // Get result end Event AdditionIf =b Phụ lục when grd1 : hh ≤ size ar grd2 : hh = size ar∧carry =6 then act1 : cc(hh+1) := end Event AdditionElse =b when grd1 : hh < size ar grd2 : hh =6 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 > Phụ lục axm4 : axm5 : axm6 : axm7 : THEOREMS size bb > size aa < size res size bb < size res numShift < size pp thm1 : ran(aa) =6 ∅ thm2 : ran(bb) =6 ∅ 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 Phụ lục begin act1 act2 act3 act4 act5 act6 : : : : : : ii := jj := slr := ∅ kk := size pp cc := ∅ hh := act7 : act8 : act9 : act10 ppr := ∅ carry := modr := ∅ : res := ∅ end Event Multiply2BinaryNumbers =b when grd1 : ii = size bb+1 then act1 : res := cc end Event MultiplyWithOneDigit =b when grd1 : jj < size aa then act1 : ppr(jj) := bb(ii)·aa(jj) act2 : jj := jj+1 end Event MultiplyWithOneDigit result =b when grd1 : jj < size aa+1 then act1 : modr := ppr act2 : kk := size pp //Activate shiftLeft end Event ShiftLeftIf =b 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 =b when grd1 : kk > 0∧kk ≤ size pp grd2 : kk ≤ numShift then act1 : modr(kk) := act2 : kk := kk−1 end Event ShiftLeftResult =b when grd1 : kk = then act1 : slr := modr act2 : hh := //Activate the addition event end Event AdditionIf =b when grd1 : hh ≤ size res grd2 : hh = size res∧carry 6= then act1 : cc(hh+1) := end Event AdditionElse =b when grd1 : hh ≤ size res grd2 : ¬ (hh = size res∧carry 6= 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 =b when grd1 : hh = size res+1 then act1 : res := cc act2 : jj := act3 : ii := ii+1 end END 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 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 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 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 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 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 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 Thank you for evaluating AnyBizSoft PDF Splitter A watermark is added at the end of each output PDF file To remove the watermark, you need to purchase the software from http://www.anypdftools.com/buy/buy-pdf-splitter.html Thank you for evaluating AnyBizSoft PDF Merger! To remove this page, please register your program! Go to Purchase Now>> AnyBizSoft PDF Merger  Merge multiple PDF files into one  Select page range of PDF to merge  Select specific page(s) to merge  Extract page(s) from different PDF files and merge into one ... 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. .. giảm lỗi phần mềm từ pha thiết cài đặt Các phương pháp kiểm chứng chứng minh định lý (theorem proving) kiểm chứng mơ hình (model checking) ứng dụng thành công để kiểm chứng mơ hình thiết kế phần. .. 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

Ngày đăng: 11/11/2020, 21:44

Từ khóa liên quan

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

Tài liệu liên quan