Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 193 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
193
Dung lượng
2,21 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI _ _ PHẠM THỊ QUỲNH KIỂMTRAVÀĐOLƯỜNGDỊCHVỤWEB LUẬN ÁN TIẾN SĨ CÔNG NGHỆ THÔNG TIN HÀ NỘI - 2012 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI _ _ PHẠM THỊ QUỲNH KIỂMTRAVÀĐOLƯỜNGDỊCHVỤWEB Chuyên ngành : Công nghệ phần mềm Mã số : 62.48.10.01 LUẬN ÁN TIẾN SĨ CÔNG NGHỆ THÔNG TIN Hướng dẫn khoa học: PGS.TS Huỳnh Quyết Thắng PGS.TS Nguyễn Thị Tĩnh HÀ NỘI - 2012 LỜI CAM ĐOAN Tôi xin cam đoan công trình nghiên cứu riêng Các kết viết chung với tác giả khác chấp thuận đồng tác giả trước đưa vào luận án.Các số liệu, kết nêu luận án trung thực chưa công bố công trình khác Tác giả luận án Phạm Thị Quỳnh i MỤC LỤC DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT v DANH MỤC HÌNH VẼ vii DANH MỤC BẢNG ix GIỚI THIỆU - Bối cảnh thực luận án - Phương pháp tiếp cận giải vấn đề - Các đóng góp luận án - Bố cục luận án - CHƯƠNG 1: KIẾN THỨC CƠ BẢN THỰC HIỆN LUẬN ÁN - 1.1 Đolường phần mềm - 1.1.1.Các khái niệm liên quan đến đolường phần mềm - 1.1.2 Phân loại độđo phần mềm - 1.1.3 Quy trình xây dựng độđo phần mềm .- 10 1.1.4 Các mô hình chất lượng - 12 1.2 Kiểmtra mô hình phần mềm - 13 1.3 Tổng quan hệ thống hướng dịchvụ - 16 1.3.1 Định nghĩa dịchvụWeb - 17 1.3.2 Điều phối dịchvụWeb - 18 Kết luận chương - 20 CHƯƠNG 2: KIẾN THỨC LIÊN QUAN ĐẾN ĐOLƯỜNG PHẦN MỀM VÀKIỂMTRA TIẾN TRÌNH BPEL - 22 2.1 Xây dựng tập độđo thuộc tính chất lượng phần mềm - 22 2.2 Kiểmtra tiến trình BPEL - 27 Kết luận chương - 28 CHƯƠNG 3: ĐỘĐO CÁC THUỘC TÍNH CHẤT LƯỢNG CỦA DỊCHVỤWEB - 29 3.1 Quy trình xây dựng độđo - 29 3.2 Tập độđođộ phức tạp dựa cấu trúc dịchvụWeb - 32 - ii 3.2.1 Định nghĩa độ phức tạp phần mềm - 32 3.2.2 Các hướng tiếp cận đolườngđộ phức tạp phần mềm trước .- 32 3.2.3 Xây dựng tập độđođộ phức tạp dựa cấu trúc dịchvụWeb - 34 3.2.4 Kiểmtra tính hợp lệ độđo - 37 3.3 Tập độđo tính kết nối dịchvụWeb theo khía cạnh tĩnh động - 40 3.3.1 Định nghĩa tính kết nối - 40 3.3.2 Các độđo tính kết nối trước .- 40 3.3.3 Xây dựng tập độđo tính kết nối dịchvụWeb - 42 3.3.4 Đánh giá tập độđo tính kết nối đề xuất - 51 3.4 Độđo tính gắn kết dịchvụWeb - 56 3.4.1 Khái niệm tính gắn kết (cohesion) .- 56 3.4.2 Ý tưởng độđo tính gắn kết từ trước tới .- 57 3.4.3 Định nghĩa độđo tính gắn kết cho dịchvụWeb - 58 3.4.4 Đánh giá độđo tính gắn kết dịchvụWeb - 61 3.5 Độđo khả tái sử dụng dịchvụWeb - 63 3.5.1 Khái niệm liên quan đến độđo khả tái sử dụng .- 63 3.5.2 Phương pháp xây dựng độđo khả tái sử dụng dịchvụWeb - 65 3.5.3 Thử nghiệm đánh giá - 67 3.6 Mô hình tham chiếu thuộc tính chất lượngdịchvụWeb - 72 3.7 Ví dụ minh họa quy trình sử dụng tập độđo đề xuất - 78 Kết luận chương - 83 CHƯƠNG 4: ĐOLƯỜNGVÀKIỂMTRA TIẾN TRÌNH BPEL - 84 4.1 Xây dựng độđođộ phức tạp mặt cấu trúc tiến trình BPEL - 84 4.1.1 Các nghiên cứu liên quan đến đolường quy trình nghiệp vụ - 85 4.1.2 Xây dựng Framework đánh giá tiến trình BPEL - 86 4.1.3 Chuyển đổi BPEL sang dạng biểu diễn đồ thị - 88 4.1.4 Đánh giá độ phức tạp tiến trình BPEL .- 91 4.2 Kiểmtra tiến trình BPEL - 97 4.2.1 Phương pháp kiểmtra tiến trình BPEL sử dụng SPIN .- 98 - iii 4.2.2 Phương pháp kiểmtra bắt lỗi tiến trình BPEL sử dụng SPIN - 104 4.2.3 Đánh giá phương pháp kiểmtra tiến trình BPEL sử dụng SPIN - 110 Kết luận chương - 112 KẾT LUẬN - 113 TÀI LIỆU THAM KHẢO - 116 DANH MỤC CÁC CÔNG TRÌNH KHOA HỌC ĐÃ CÔNG BỐ CỦA LUẬN ÁN - 123 PHỤ LỤC Phụ lục 1: Cây cấu trúc liệu service AmazonWebServices Phụ lục 2: Ví dụ mô tả cách tính độđo tính kết nối dịchvụ GoogleSearch .2 Phục lục 3: Ví dụ trình tính độđo ChM Phụ lục : Bảng tổng kết giá trị phép đo Phụ lục 5: Tệp WSDL hệ thống thẻ .20 Phụ lục 6: Bảng tổng kết, so sánh kết đo SCB CC ba tập mẫu 43 Phụ lục : Kiểmtra tiến trình LoanApproval .45 Phụ lục 8: Kiểmtra tiến trình Acme Travel có xét đến ngoại lệ 53 iv DANH MỤCKÝ HIỆU VÀ CHỮ VIẾT TẮT Ký hiệu chữ viết tắt cohi,j cohi COMk d(u,v) lengthi N(A, B) M Msg nmessage nmethod nservice ntype OP OPnone complex OPnone input P Par S s ε BPEL CBS CC ChM CpM DC2S DCM DCSS message Giải nghĩa Hệ số gắn kết hai phương thức i j Hệ số gắn kết phương thức i với phương thức khác Độ phức tạp thông điệp thứ k Là chiều dài đường ngắn từ đỉnh u đến đỉnh v đồ thị tạo liên kết dịchvụWeb Chiều sâu cấu trúc liệu thứ i Số liên kết động dịchvụ WebA đến dịchvụ WebB Tập phương thức dịchvụWeb Tập phương thức có dịchvụWeb Số lượng thông điệp có dịchvụWeb Số lượng phương thức có dịchvụWeb Số lượngdịchvụWeb có hệ thống Số lượng kiểu liệu có dịchvụWeb Tên phương thức dịchvụWeb Phương thức tham số kiểu phức Phương thức tham số input Tập tiến trình BPEL Tập tham số phương thức Tên phần mềm hướng dịchvụ Tên dịchvụWeb Tham số tính độ phức tạp hoạt động lặp tiến trình BPEL (ε > 1) Ngôn ngữ thực thi tiến trình nghiệp vụ Business Process Execution Language Kết nối dịchvụ Coupling Between Services Độ phức tạp chu trình Cyclomatic Complexity Độđo tính gắn kết Cohesion Metric Độđo tính kết nối Coupling Metric Mức độ kết nối dịchvụWeb Degree of Coupling between Web Services Độđo tính kết nối liệu Data Coupling Metric Mức độ kết nối tập dịchvụWeb cho trước Degree of Coupling within a given Set of Web Services v Ký hiệu chữ viết tắt DIT FCM GQM LCFG LOC MBC OBC OASIS SCB SCCp SCM SOA SOAD SOAP SPIN SRM TBC UDDI WSDL WSRF Giải nghĩa Chiều sâu thừa kế Depth of Inheritance Tree Nhân tố – Tiêu chuẩn – Độđo Factors/Criteria/Metrics Mục tiêu – Câu hỏi – Độđo Goal/Question/Metric Đồ thị luồng điều khiển gán nhãn Labeled Control Flow Graph Số dòng lệnh Lines Of Code Độ phức tạp dựa thông điệp Message Based Complexity Độ phức tạp dựa phương thức Operation Based Complexity Tổ chức tiêu chuẩn thông tin có cấu trúc tiên tiến Organization for the Advancement of Structured Information Standards Độ phức tạp mặt cấu trúc BPEL Structural Complexity for BPEL Khả tự hoàn thiện tham số thành phần Self-Completeness of Component’sParameter Độđo tính kết nối dấu hiệu Stamp Coupling Metric Kiến trúc hướng dịchvụ Service-Oriented Architecture Phân tích thiết kế hướng dịchvụ Service-Oriented Analysis and Design Giao thức truy nhập đối tượng đơn giản Simple Object Access Protocol Bộ biên dịch ngôn ngữ Promela đơn giản Simple Promela Interpreter Độđo khả tái sử dụng dịchvụ Service’s Reusability Metric Độ phức tạp dựa kiểu liệu Type Based Complexity Mô tả, phát tích hợp chung Universal Description, Discovery and Integration Ngôn ngữ đặc tả dịchvụWebWeb Service Description Language DịchvụWeb thỏa mãn chức Web Service Relevancy Funtion vi DANH MỤC HÌNH VẼ Hình 0.1: Mô hình đolườngkiểmtra theo tầng SOA - Hình 1.1: Kỹ thuật GQM - 12 Hình 1.2: Mô hình FCM - 12 Hình 1.3 Quan hệ thành phần mô hình chất lượng ISO-9126 - 13 Hình 1.4: Quy trình kiểmtra mô hình - 14 Hình 1.5: Bộ kiểmtra mô hình SPIN - 15 Hình 1.6: Mô hình cộng tác thành phần SOA [70] - 17 Hình 1.7: Quan hệ chuẩn dịchvụWeb [70] - 17 Hình 1.8: Quy trình xây dựng thực thi tiến trình BPEL - 19 Hình 3.1: Quy trình xây dựng độđo - 30 Hình 3.2: Tám nguyên tắc thiết kế Thomas Erl - 31 Hình 3.3: Ví dụ xây dựng đồ thị, A, B, C, D dịchvụ - 47 Hình 3.4: Đồ thị ma trận ban đầu - 48 Hình 3.5: Đồ thị ma trận đường chuyển đổi với K=4 - 48 Hình 3.6: Hai hệ thống WS có số nút liên kết DCSS khác - 49 Hình 3.7: Quy trình gửi/nhận thông điệp SOAP [64] - 50 Hình 3.8: Ma trận trọng số - 59 Hình 3.9: Phương pháp xác định độđo tái sử dụng dịchvụWeb - 67 Hình 3.10: Mô hình đánh giá khả tái sử dụng dịchvụWeb - 67 Hình 3.11: Quy trình tính toán độđo - 68 Hình 3.12: Biểu đồ phân bố giá trị độđo SCM - 70 Hình 3.13: Biểu đồ phân bố giá trị độđo ChM - 71 Hình 3.14: Biểu đồ phân bố giá trị độđo SRM - 71 Hình 3.15: Mô hình tham chiếu thuộc tính chất lượngdịchvụWeb - 77 Hình 3.16: Sơ đồ kết nối hệ thống thẻ - 78 Hình 3.17: Đồ thị tương tác dịchvụWeb hệ thống thẻ - 80 Hình 3.18: Đồ thị tương tác dịchvụWeb hệ thống thẻ - 82 - vii Hình 4.1: Mô hình tổng quát Framework - 86 Hình 4.2: Cấu trúc thành phần Core - 87 Hình 4.3: Chuyển đổi BPEL từ định dạng XML sang đồ thị - 88 Hình 4.4: DOT mô tả đồ thị có hướng - 89 Hình 4.5: Biểu diễn nút BPEL-G - 89 Hình 4.6: Một ví dụ tính độ phức tạp hoạt động có cấu trúc - 92 Hình 4.7: Lưu đồ thực trình đo BPEL - 94 Hình 4.8: Đồ thị so sánh độđo SCB CC - 95 Hình 4.9: Tiến trình BPEL Rút tiền hệ thống cũ - 96 Hình 4.10: Quy trình kiểmtra tiến trình BPEL sử dụng SPIN - 98 Hình 4.11: Các thành phần LCFG - 98 Hình 4.12: Nút biểu diễn hoạt động invoke, receive reply - 99 Hình 4.13:Nút biểu diễn hoạt động gán - 99 Hình 4.14:Nút biểu diễn hoạt động - 100 Hình 4.15:Nút biểu diễn hoạt động rẽ nhánh - 100 Hình 4.16:Nút biểu diễn hoạt động lặp - 100 Hình 4.17:Nút biểu diễn hoạt động song song - 101 Hình 4.18: Cấu trúc Bộ quản lý ngoại lệ - 106 Hình 4.19: Ứng xử quản lý ngoại lệ - 109 - viii Phụ lục : Kiểmtra tiến trình LoanApproval Để minh họa cho trình chuyển dịch qua định dạng kiểmtra thuộc tính tiến trình BPEL, luận án sử dụng tiến trình “Loan Approval” [74] Quan sát ban đầu cho thấy tiến trình bao gồm hoạt động thực song song Tuy nhiên, phân tích cách chi tiết, thấy hoạt động có ràng buộc với quan hệ đồng hóa Ví dụ mô tả chi tiết bước trình chuyển dịch sang dạng biểu diễn khác kiểmtra thuộc tính cần thiết tiến trình Bước thứ cần thực biểu diễn tiến trình BPEL dạng đồ thị LCFG Các quy tắc chuyển đổi mô tả phần hai Toàn tiến trình biểu diễn đồ thị LCFG Hoạt động - hoạt động flow biểu diễn gán nhãn sau: Tiếp theo, hoạt động receive – thông tin chung hoạt động có hai nhãn thành phần transitionCondition Hoạt động nhãn nên xuất phát sau nút flow Nút điểm xuất phát hai cung có bổ sung nút điều kiện tương ứng với thành phần transitionCondition - 45 - - 46 - Hoạt động invoke có nhãn hai nhãn Vì vậy, nút biểu diễn hoạt động đích cung receive-to-assess điểm xuất phát cung khác Hai cung có bổ sung thêm nút điều kiện đại diện cho thành phần transitionCondition - 47 - Tiếp theo, hoạt động gán có đích cung assess-to-setMessage nút xuất phát cung setMessage-to-reply Thành phần biểu thức thành phần bao gồm Variable Part - 48 - Hoạt động invoke biểu diễn nút đích cung receive-toapproval cung assess-to-approval Nút điểm xuất phát cung approval-to-reply - 49 - Cuối cùng, hoạt động reply có thành phần Vì vậy, nút biểu diễn hoạt động đích hai cung setMessage-to-reply approval-to-reply Sau nút join thể kết thúc hoạt động song song Và nút stop cho biết kết thúc toàn tiến trình - 50 - Sau xây dựng đồ thị LCFG tiến trình BPEL, bước chuyển đổi sang ngôn ngữ PROMELA Sau kết thực hiện: typedef creditInformationMessage{ short amount }; typedef approvalMessage{ bool accept }; typedef riskAssessmentMessage{ bit level }; chan loanServicePT_IN = [0] of {creditInformationMessage}; chan loanServicePT_OUT = [0] of {approvalMessage}; chan riskAssessmentPT_IN = [0] of {riskAssessmentMessage}; chan riskAssessmentPT_OUT = [0] of {creditInformationMessage}; chan loanApprovalPT_IN = [0] of {approvalMessage}; chan loanApprovalPT_OUT = [0] of {creditInformationMessage}; creditInformationMessage request; riskAssessmentMessage risk; approvalMessage approval; byte result=0; proctype loanApproval(){ loanServicePT_IN ? request; if :: request.amount /*invoke*/ riskAssessmentPT_OUT ! request; riskAssessmentPT_IN ? risk; if :: risk.level == -> /* assign */ approval.accept = true; ::risk.level == -> /* invoke */ loanApprovalPT_OUT ! request; loanApprovalPT_IN ? approval; fi; :: request.amount>=10000 -> /* invoke */ loanApprovalPT_OUT ! request; loanApprovalPT_IN ? approval; fi; /* reply */ loanServicePT_OUT!approval; } proctype customer(){ approvalMessage customer_Receive; creditInformationMessage customer_Send; /*randomize the amount*/ short r; /* pick random value */ - 51 - :: r++ ; /* randomly increment */ :: r ; /* or decrement */ :: break; /* or stop */ od; customer_Send.amount=r; loanServicePT_IN ! customer_Send; loanServicePT_OUT ? customer_Receive; } proctype assessor(){ creditInformationMessage assessor_Receive; riskAssessmentMessage assessor_Send; end: riskAssessmentPT_OUT ? assessor_Receive; /*simulate the risk level*/ bit r; if :: true->r=1; :: true->r=0; fi; assessor_Send.level=r; riskAssessmentPT_IN!assessor_Send; } proctype approver(){ creditInformationMessage approver_Receive; approvalMessage approver_Send; end:loanApprovalPT_OUT?approver_Receive; /*simulate the accept*/ bool r; if :: true->r=true; :: true->r=false; fi; approver_Send.accept=r; loanApprovalPT_IN!approver_Send; } init{ run loanApproval(); run assessor(); run approver(); run customer(); } Cuối cùng, sử dụng kiểmtra mô hình SPIN để kiểmtra thuộc tính tiến trình “Loan Approval” (Spin Version 5.2.4 December 2009) + Partial Order Reduction Full statespace search for: never claim - (none specified) assertion violations + cycle checks - (disabled by -DSAFETY) invalid end states + State-vector 96 byte, depth reached 65561, ••• errors: ••• 1667332 states, stored 65537 states, matched 1732869 transitions (= stored+matched) atomic steps hash conflicts: 959894 (resolved) 218.113 memory usage (Mbyte) unreached in proctype loanApproval - 52 - (0 of 18 states) unreached in proctype customer (0 of 10 states) unreached in proctype assessor (0 of 10 states) unreached in proctype approver (0 of 10 states) unreached in proctype :init: (0 of states) pan: elapsed time 2.69 seconds pan: rate 620518.05 states/second Ngoài thuộc tính trên, người sử dụng đặt câu hỏi dạng biểu thức LTL để kiểmtra tiến trình có thỏa mãn câu hỏi hay không Ví dụ, tiến trình “Loan approval”, câu hỏi đặt “Với hai yêu cầu nhau, xảy trường hợp lúc chấp nhận, lúc bị kiểmtra thêm hay không?” Để trả lời câu hỏi này, khai báo biến result kiểu int Khi tiến trình bắt đầu thực gán result Nếu yêu cầu chấp nhận (tức sau hoạt động gán) giá trị result Nếu yêu cầu bị kiểmtra thêm (tức sau hoạt động invoke approver) giá trị result Ngoài câu lệnh khai báo thay đổi giá trị biến result, toàn câu hỏi mô tả sau: #define accepted (result==1) #define rejected (result==2) !((accepted && rejected)) Kết cho thấy tiến trình Loan Approval thỏa mãn biểu thức LTL Phụ lục 8: Kiểmtra tiến trình Acme Travel có xét đến ngoại lệ Luận án sử dụng ví dụ Acme Travel từ IBM [76] để minh họa cho ý tưởng đề xuất Ngữ cảnh nghiệp vụ ví dụ mô tả sau: Khách hàng gửi lịch trình cho Đại lý Sau kiểmtra lịch trình, gửi yêu cầu đồng thời tới đại lý máy bay, khách sạn thuê xe để đặt chỗ Để đơn giản hóa, luận án bỏ qua dịchvụ đặt thuê xe ví dụ Đại lý chờ xác nhận từ yêu cầu đặt chỗ - 53 - Nếu yêu cầu đặt chỗ chấp nhận, thẻ tín dụng Khách hàng bị ghi nợ Đại lý thông báo cho Khách hàng kết thực giao dịch Giả sử có ba trường hợp xảy lỗi: Trường hợp thứ Khách hàng không hợp lệ Trường hợp thứ hai yêu cầu đặt chỗ bị thất bại Và cuối cùng, lỗi xảy thẻ tín dụng Khách hàng không hợp lệ Từ khía cạnh mô hình tĩnh tiến trình BPEL, xây dựng đồ thị LCFG cho tiến trình cấu trúc đại diện cho Bộ quản lý lỗi Start -partner: customer -portType: itineraryPT -operation: send -Variables: varItinerary Reservation Scope receive -partner: airline -portType: airlinePT -operation: requestTickets -InputVariables: varItinerary -OutputVariables: varTicket -partner: hotel -portType: hotelPT -operation: requestRoom -InputVariables: varItinerary -OutputVariables: varRoom invoke BankAccount Scope invoke invoke reply -partner: bank -portType: bankPT -operation: checkAccount -InputVariables: varItinerary -OutputVariables: accountChecked -partner: customer -portType: itineraryPT -operation: notify -variables: result Stop Đồ thị LCFG tiến trình Acme Travel Từ tệp đặc tả tiến trình Acme Travel, tiếp tục xây dựng Bộ quản lý lỗi cho tiến trình - 54 - Process Itinerary Reservation - FaultName = HasNoSeat - FaultName = HasNoRoom - FaultName = InvalidCustomer Scope2 BankAccount Scope1 Reservation - FaultName = InvalidCredit Cấu trúc Bộ quản lý lỗi tiến trình Acme Travel Sau đó, đồ thị LCFG xây dựng cho tất tiến trình bắt lỗi Do đó, ví dụ cần xây dựng bốn đồ thị LCFG tương ứng với danh sách nút quản lý lỗi Hình sau mô tả hai tiến trình bắt lỗi Reservation Start invoke reply Start -partner: hotel -portType: hotelPT -operation: suggestHoetl -InputVariables: varItinerary -OutputVariables: changedHotel invoke -partner: customer -portType: itineraryPT -operation: change -variables: changedHotel reply Stop -partner: airline -portType: airlinePT -operation: suggestFilight -InputVariables: varItinerary -OutputVariables: changedItinerary -partner: customer -portType: itineraryPT -operation: change -variables: changedItinerary Stop a LCFG bắt lỗi HasNoRoom b LCFG bắt lỗi HasNoSeat Đồ thị LCFG tiến trình bắt lỗi nút Reservation Để phục vụ mục đích phân tích thuộc tính động tiến trình BPEL, ánh xạ đồ thị LCFG sang ngôn ngữ PROMELA mô hình hóa quy trình bắt lỗi PROMELA Bảng sau liệt kê mã lệnh PROMELA tiến trình Acme Travel mà không xét tới việc bắt lỗi proctype Main() { Itinerary varItinerary; Ticket varTicket; Room varRoom; itineraryPT_IN?varItinerary; airlinePT_IN!varItinerary; hotelPT_IN!varItinerary; run ReserveAirline(); run ReserveHotel(); // wait to receive Flight Ticket ::airlinePT_OUT?varTicket-> break; od; // wait to receive an appprociate Room - 55 - ::hotelPT_OUT?varRoom-> break; od; bit accountChecked=0; bankPT_IN!varItinerary.CreditNumber; ::bankPT_OUT?accountChecked-> break; od; bool result; result= (varTicket.accept == 1) && (varRoom.IDRoom != 0) && (accountChecked == 1); itineraryPT_OUT!result; } Chương trình PROMELA tiến trình Khi xem xét tới việc bắt lỗi tiến trình BPEL, vị trí xuất lỗi, cấu trúc unless chèn vào Từ cấu trúc quản lý lỗi, cần ba cấu trúc unless Cấu trúc unless nút Reservation BankAccount lồng cấu trúc unless nút gốc proctype Main() { // Declare necessary variables in here … { itineraryPT_IN?varItinerary; bit varInvalidCustomer=0; if ::varItinerary.IDCustomer==0-> varInvalidCustomer=1; printf("Jump in escape of process\n"); ::else-> varInvalidCustomer=0; fi; airlinePT_IN!varItinerary; hotelPT_IN!varItinerary; { bit varHasNoSeat=0; run ReserveAirline(); ::airlinePT_OUT?varTicket-> if ::varTicket.accept==0-> varHasNoSeat=1; printf("Jump in escape in Scope 1\n"); ::else-> varHasNoSeat=0; fi; break; od; bit varHasNoRoom=0; run ReserveHotel(); - 56 - ::hotelPT_OUT?varRoom-> if ::varRoom.IDRoom==0-> varHasNoRoom=1; printf("Jump in escape in Scope 1\n"); ::else-> varHasNoRoom=0; fi; break; od; } unless { if ::varHasNoSeat==1-> Fault.Name=HasNoSeat; Fault.ID=1; Fault.ParentID=0; Halted=1; goto Stop; ::varHasNoRoom==1-> Fault.Name=HasNoRoom; Fault.ID=1; Fault.ParentID=0; Halted=1; goto Stop; fi; } bit varInvalidCredit=0; { bit accountChecked=0; bankPT_IN!varItinerary.CreditNumber; ::bankPT_OUT?accountChecked-> if ::accountChecked==0-> varInvalidCredit=1; printf("Jump in escape of Scope 2\n"); ::else-> varInvalidCredit=0; fi; break; od; } unless { varInvalidCredit==1-> Fault.Name=InvalidCredit; Fault.ID=2; Fault.ParentID=0; Halted=1; goto Stop; } // Notify the result in here … } - 57 - unless { varInvalidCustomer==1-> Fault.Name=InvalidCustomer; Fault.ID=0; Fault.ParentID=-1; Halted=1; } Stop: channelforErr!Fault; } Cấu trúc unless chương trình PROMELA tiến trình Tiếp theo, Bộ bắt lỗi tiến trình Acme Travel cài đặt PROMELA Như đề cập, ExceptionManager chung thống cho tiến trình BPEL Vì vậy, luận án đề cập tới mã lệnh Catch Catch thay đổi phụ thuộc vào tiến trình BPEL cụ thể Chú ý rằng, tiến trình bắt ngoại lệ ánh xạ sang ngôn ngữ PROMELA tương tự tiến trình proctype Catch() { bit Complete;Err Fault; ::len(channelforFindErr)!=0 -> channelforFindErr?Fault,channelforRespErr; if :: (Fault.ID==0) -> run procInvalidCustomer(); Complete=1; :: (Fault.ID==1 && Fault.Name == HasNoSeat) -> run procHasNoSeat(); Complete=1; :: (Fault.ID==3 && Fault.Name == HasNoRoom) -> run procHasNoRoom(); Complete=1; :: (Fault.ID==2) -> run procInvalidCredit(); Complete=1; :: (Fault.ID==-1)-> printf("None Error\n"); Complete=1; /* Can not catch the Exception at this node Prepare to forward it to its parent node */ :: else -> Complete=0; fi; channelforRespErr!Complete; } ::Complete==1-> break; od; } Cài đặt Catch - 58 - Cuối cùng, luận án sử dụng SPIN để kiểmtra chương trình PROMELA xây dựng Hình cho thấy kết thực SPIN hai trường hợp có bắt ngoại lệ Quá trình kiểmtra tiến trình Acme Travel không xét tới bắt ngoại lệ sử dụng 0.011 giây 2.501 Mbyte Trong đó, xét tới bắt kiện phải sử dụng 0.072 giây 2.539 Mbyte Rõ ràng, khác biệt hai trường hợp không đáng kể Vì vậy, quản lý ngoại lệ không làm cho việc kiểmtra trở nên phức tạp a Tiến trình TravelAgent b Tiến trình TravelAgent chứa bộ bắt ngoại lệ bắt ngoại lệ Kết kiểmtra từ SPIN Ngoài ra, luận án sử dụng SPIN để kiểmtra thuộc tính safety liveness biểu diễn thông qua biểu thức LTL Ví dụ, kiểmtra “bất kỳ xảy ngoại lệ ngoại lệ bắt” []((varInvalidCustomer==1) \/ (varHasNoSeat==1) \/ (varHasNoRoom==1) \/ varInvalidCredit==1)->(Complete==1)) - 59 - ... liên kết dịch vụ Web Chiều sâu cấu trúc liệu thứ i Số liên kết động dịch vụ WebA đến dịch vụ WebB Tập phương thức dịch vụ Web Tập phương thức có dịch vụ Web Số lượng thông điệp có dịch vụ Web Số... 1.7 mô tả chuẩn sử dụng dịch vụ Web Hình 1.7: Quan hệ chuẩn dịch vụ Web[ 70] 1.3.1 Định nghĩadịch vụ Web Dịch vụ Web định nghĩa thông qua ngôn ngữ WSDL[70] Mỗi dịch vụ Web có tệp WSDL công bố... dạng thông điệp trao đổi dịch vụ Web, BPEL - phối hợp dịch vụ Web theo tiến trình nghiệp vụ cụ thể, Trong trình xây dựng hệ thống hướng dịch vụ, tái sử dụng dịch vụ Web nhiệm vụthen chốt Điều