Kiểm tra và đo lường dịch vụ web Kiểm tra và đo lường dịch vụ web Kiểm tra và đo lường dịch vụ web luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp
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ỂM TRA VÀ ĐO LƯỜNG DỊCH VỤ 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ỂM TRA VÀ ĐO LƯỜNG DỊCH VỤ 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 Đo lường phần mềm - 1.1.1.Các khái niệm liên quan đến đo lườ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ểm tra mơ hình phần mềm - 13 1.3 Tổng quan hệ thống hướng dịch vụ - 16 1.3.1 Định nghĩa dịch vụ Web - 17 1.3.2 Điều phối dịch vụ Web - 18 Kết luận chương - 20 CHƯƠNG 2: KIẾN THỨC LIÊN QUAN ĐẾN ĐO LƯỜNG PHẦN MỀM VÀ KIỂM TRA 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ểm tra 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ỊCH VỤ 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ịch vụ 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 đo lườ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ịch vụ Web - 34 3.2.4 Kiểm tra tính hợp lệ độ đo - 37 3.3 Tập độ đo tính kết nối dịch vụ 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ịch vụ 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ịch vụ 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ịch vụ Web - 58 3.4.4 Đánh giá độ đo tính gắn kết dịch vụ Web - 61 3.5 Độ đo khả tái sử dụng dịch vụ 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ịch vụ 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ượng dịch vụ 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: ĐO LƯỜNG VÀ KIỂM TRA 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 đo lườ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ểm tra tiến trình BPEL - 97 4.2.1 Phương pháp kiểm tra tiến trình BPEL sử dụng SPIN .- 98 - iii 4.2.2 Phương pháp kiểm tra bắt lỗi tiến trình BPEL sử dụng SPIN - 104 4.2.3 Đánh giá phương pháp kiểm tra 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ịch vụ GoogleSearch .2 Phục lục 3: Ví dụ q 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ểm tra tiến trình LoanApproval .45 Phụ lục 8: Kiểm tra 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ị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ố lượng phương thức có dịch vụ Web Số lượng dịch vụ Web có hệ thống Số lượng kiểu liệu có dịch vụ Web Tên phương thức dịch vụ Web Phương thức tham số kiểu phức Phương thức khơng 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ịch vụ Tên dịch vụ 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ịch vụ 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ịch vụ 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ịch vụ 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ịch vụ Service-Oriented Architecture Phân tích thiết kế hướng dịch vụ 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ịch vụ 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ịch vụ Web Web Service Description Language Dịch vụ 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 đo lường kiểm tra 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ểm tra mơ hình - 14 Hình 1.5: Bộ kiểm tra 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ịch vụ 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ịch vụ - 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ịch vụ Web - 67 Hình 3.10: Mơ hình đánh giá khả tái sử dụng dịch vụ Web - 67 Hình 3.11: Quy trình tính tố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ượng dịch vụ 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ịch vụ Web hệ thống thẻ - 80 Hình 3.18: Đồ thị tương tác dịch vụ Web hệ thống thẻ - 82 - vii Hình 4.1: Mơ hình tổng qt 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ểm tra 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ểm tra tiến trình LoanApproval Để minh họa cho trình chuyển dịch qua định dạng kiểm tra 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ểm tra 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 Tồ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 – ngồi thơng tin chung hoạt động cịn có hai nhãn thành phần transitionCondition Hoạt động khơng có 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ểm tra mơ hình SPIN để kiểm tra 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 Ngồ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ểm tra 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ểm tra 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ểm tra thêm (tức sau hoạt động invoke approver) giá trị result Ngồi câu lệnh khai báo thay đổi giá trị biến result, tồ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ểm tra 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ểm tra 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ịch vụ đặ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ểm tra 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ó khơng có bắt ngoại lệ Q trình kiểm tra 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ểm tra trở nên phức tạp a Tiến trình TravelAgent khơng có b Tiến trình TravelAgent chứa bộ bắt ngoại lệ bắt ngoại lệ Kết kiểm tra từ SPIN Ngoài ra, luận án sử dụng SPIN để kiểm tra thuộc tính safety liveness biểu diễn thông qua biểu thức LTL Ví dụ, kiểm tra “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