1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận văn thạc sĩ Khoa học máy tính: Áp dụng hệ thống viết lại số hạng để tổ hợp các dịch vụ Web

77 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Áp dụng hệ thống viết lại số hạng để tổ hợp các dịch vụ Web
Tác giả Phạm Trần Thanh Văn
Người hướng dẫn PGS.TS. Quản Thành Thơ
Trường học Đại học Quốc gia Thành phố Hồ Chí Minh
Chuyên ngành Khoa học máy tính
Thể loại Luận văn thạc sĩ
Năm xuất bản 2015
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 77
Dung lượng 1,5 MB

Cấu trúc

  • Chương 1: GIỚI THIỆU (13)
    • 1.1 Lý do chọn đề tài (13)
    • 1.2 Ví dụ minh họa (15)
    • 1.3 Mục tiêu và giới hạn của đề tài (20)
    • 1.4 Phương pháp tiến hành (20)
    • 1.5 Những đóng góp của đề tài (20)
    • 1.6 Cấu trúc của luận văn (21)
  • Chương 2: Tổng quan (23)
    • 2.1 Phân loại các phương pháp tổ hợp (23)
    • 1. Phương pháp tổ hợp bằng tay và tĩnh (24)
    • 2. Phương pháp tổ hợp tự động và tĩnh (25)
    • 3. Phương pháp tổ hợp tự động và động (25)
    • 4. Phương pháp tổ hợp bán tự động, tĩnh hay động (26)
      • 2.2 Các phương pháp tổ hợp hiện nay (26)
    • 1. BPEL (27)
    • 2. Semantic Web (OWL-S) (28)
    • 3. Web Components (29)
    • 4. Petri Nets (31)
    • 5. Model Checking (32)
    • 6. So sánh các phương pháp tổ hợp dịch vụ web (33)
      • 2.3 Hướng tiếp cận của đề tài (34)
  • Chương 3: HỆ THỐNG VIẾT LẠI SỐ HẠNG (36)
    • 3.1 Ví dụ minh họa (36)
    • 3.2 Các khái niệm cơ bản [18] (37)
    • 3.3 Luật viết lại có điều kiện (42)
    • 1. Ví dụ minh họa (42)
    • 2. Các khái niệm (43)
      • 3.4 Sử dụng hệ thống viết lại số hạng để giải quyết các bài toán (44)
  • Chương 4: TỔ HỢP DỊCH VỤ WEB BẰNG HỆ THỐNG VIẾT LẠI SỐ HẠNG (51)
    • 4.1 Chuyển đổi các yêu cầu của dịch vụ web cần tổ hợp dùng hệ thống viết lại số hạng (51)
    • 4.2 Ví dụ minh họa (54)
    • 4.3 Sử dụng Uniform Cost Search để tìm phương pháp tổ hợp tốt nhất (57)
    • 1. Uniform Cost Search ............................................................................... Error! Bookmark not defined. 2. Áp dụng Uniform Cost Search vào quá trình tổ hợp dịch vụ web (58)
  • Chương 5: THỰC NGHIỆM (62)
    • 5.1 Những phương pháp được khảo sát (62)
    • 1. Tạo ra mọi cách tổ hợp có thể có (63)
    • 2. On-The-Fly (64)
    • 3. Hệ thống viết lại số hạng (66)
      • 5.2 So sánh các dịch vụ tổ hợp (67)
      • 5.3 Đánh giá (71)
  • Chương 6: KẾT LUẬN (72)

Nội dung

Nghiên cứu trong luận văn này cung cấp một hướng đi mới: sử dụng phương pháp viết lại số hạng để tự động hóa việc tổ hợp các dịch vụ web... Sau khi đã đặc tả một Petri Nets cho mỗi dịch

GIỚI THIỆU

Lý do chọn đề tài

Ngày nay, khi các nhu cầu trong doanh nghiệp ngày càng tăng trưởng cả về số lượng lẫn chất lượng, việc một doanh nghiệp đầu tư tự phát triển các phần mềm riêng biệt cho công ty trở nên tốn kém, khó mở rộng, phát triển và chia sẻ với các doanh nghiệp bên ngoài Dịch vụ web được tạo ra thỏa mãn các yêu cầu nêu trên:

- Khả năng kết hợp lẫn nhau: các dịch vụ web không nằm trong mỗi doanh nghiệp mà được chia sẻ ra bên ngoài Do đó, chúng có khả năng kết hợp lẫn nhau để thỏa mãn các nhu cầu ngày càng phức tạp của người dùng Hơn thế nữa, dịch vụ web được tổ hợp không phụ thuộc vào ngôn ngữ lập trình, vào hệ điều hành, … Từ đó, việc phát triển một dịch vụ web phức tạp dựa trên các dịch vụ đơn giản, sẵn có được thực hiện một cách dễ dàng hơn

- Khả năng sử dụng: từ kho các dịch vụ mà người dùng có thể tìm được trên mạng, họ có thể tự do lựa chọn dịch vụ mà họ cần, sử dụng ngôn ngữ lập trình hoặc các công cụ để thay đổi dịch vụ đó theo hướng mà họ muốn

- Khả năng triển khai: dịch vụ web được triển khai dựa trên các tiêu chuẩn công nghệ mạng Do đó, việc triển khai sử dụng các dịch vụ web được thực hiện dễ dàng từ bất kỳ nơi đâu có kết nối mạng

Các dịch vụ web trên mạng rất cơ bản, chỉ phục vụ cho các yêu cầu đơn giản Tuy nhiên, yêu cầu của người dùng lại phức tạp, thường phải kết hợp nhiều dịch vụ có sẵn lại với nhau để thực hiện được công việc mong muốn Ví dụ: các dịch vụ có sẵn như: chọn vé máy bay, dịch vụ vận chuyển, chọn khách sạn, … Một người dùng mỗi khi đi du lịch lại cần một dịch vụ phức tạp được tổ hợp từ các dịch vụ trên, giải quyết các vấn đề về thủ tục di chuyển, về việc chọn nơi chốn ở, … thỏa mãn tiêu chí được đặt ra về thời gian, chi phí, …

2 (Các tiêu chí này được gọi là chất lượng dịch vụ) Như vậy, người dùng cần một chương trình tổng hợp được một dịch vụ web phức hợp từ các dịch vụ đã có nhằm thỏa mãn yêu cầu của mình

Hiện nay, rất nhiều giải pháp đã được đưa ra để giải quyết vấn đề trên Tuy nhiên, các giải pháp này còn khá nhiều nhược điểm:

- Các giải pháp này tính toán để có thể đưa ra tất cả các cách kết hợp có thể có để từ đó đưa ra được kết quả tối ưu nhất thỏa yêu cầu người dùng Vì số lượng dịch vụ web hiện nay quá nhiều, phương pháp này rất tốn thời gian và không thích hợp khi số lượng dịch vụ web được cập nhật (vì chương trình phải tính toán lại để đưa ra danh sách mọi sự tổ hợp có thể)

- Các tính toán trên dựa trên khả năng kết hợp của các dịch vụ mà không tính đến các tiêu chí về đặc điểm chất lượng dịch vụ Do đó, giải pháp đưa ra có thể không thỏa mãn nhu cầu của người dùng

- Với nhiều loại chất lượng dịch vụ khác nhau, công thức tính toán chất lượng dịch vụ lại khác nhau Ví dụ: nếu tính theo chi phí dịch vụ thì chi phí của dịch vụ web tổ hợp bằng tổng chi phí các dịch vụ thành phần, nếu tính theo độ sẵn có (availability) thì độ sẵn có của dịch vụ web tổ hợp bằng tích độ sẵn có của các dịch vụ thành phần Các công thức này hiện nay được mô tả riêng khỏi các dịch vụ web và được gán cứng trong source code của chương trình tổ hợp Mỗi khi muốn thay đổi công thức này, người dùng cần phải sửa chúng trong source code và chạy lại chương trình tổ hợp

Giải pháp được đề nghị trong nghiên cứu này dựa trên các luật mô tả dịch vụ web Các luật này có thể mô tả các đặc điểm của dịch vụ web: đầu vào, đầu ra, các thông số về chất lượng dịch vụ, điều kiện để thực hiện Công thức tính toán chất lượng dịch vụ web tổ hợp được mô tả ngay trong đặc tả của luật tương ứng với dịch vụ web đơn cấu tạo nên chúng Chương trình sẽ dựa trên tập luật này để chọn luật phù hợp dựa trên yêu cầu của người dùng Tại bất kỳ thời điểm nào, người dùng vẫn có thể thay đổi đặc tả dịch vụ vào tập luật sẵn

3 có Với phương pháp như trên, chương trình có khả năng tổ hợp dịch vụ web thỏa mãn yêu cầu cho trước và cho phép thay đổi tập luật trong quá trình tính toán.

Ví dụ minh họa

Dưới đây là ví dụ để minh họa việc áp dụng hệ thống viết lại số hạng cho việc tổ hợp các dịch vụ web Mỗi dịch vụ web cơ bản gồm các thành phần: tên dịch vụ, đầu vào (dữ liệu cần thiết để thực hiện dịch vụ), đầu ra (dữ liệu có được sau khi thực hiện dịch vụ) và thông tin về chất lượng dịch vụ (thời gian, chi phí, độ tin cậy, …) Để đơn giản hóa trong ví dụ này cũng như trong toàn bộ đề tài, chúng tôi chỉ dùng thông tin về chi phí thực hiện dịch vụ để mô tả dữ liệu về chất lượng dịch vụ

Tên dịch vụ Đầu vào Đầu ra Chi phí

Xuất bản sách, tác giả nhà xuất bản, thông tin xuất bản

Phí xuất bản đơn hàng, thông tin xuất bản chi phí xuất bản 2$

Vận chuyển đơn hàng, địa chỉ ngày vận chuyển 3$

Tín dụng đơn hàng, thẻ tín dụng thông tin tín dụng, thông tin trả phí

1$ Đặt hàng Thông tin xuất bản Thông tin điện tử 2$ Điện tử Thông tin điện tử Thông tin khách hàng, đơn hàng

Bảng 1.1: Ví dụ các dịch vụ web có sẵn

4 Nhiệm vụ của chương trình là dựa trên yêu cầu của người dùng và bảng dữ liệu các dịch vụ có sẵn để đưa ra thứ tự các dịch vụ web cần có để tổ hợp ra dịch vụ web mới thỏa mãn yêu cầu và tính toán được giá trị của chất lượng dịch vụ của nó

Tên dịch vụ Đầu vào Đầu ra Chi phí

Tổ hợp sách, tác giả, địa chỉ ngày vận chuyển, chi phí xuất bản

Bảng 1.2: Yêu cầu dịch vụ web cần tổ hợp của người dùng Đối với các giải pháp hiện tại, chương trình chưa xét tới yêu cầu của người dùng mà chỉ dựa trên dữ liệu ở Bảng 1.1 để tạo ra mô hình các kết hợp có thể có giữa các dịch vụ web ở Hình 1-1 Trong mô hình này, mỗi dịch vụ web được mô tả bằng một hình chữ nhật có nội dung là tên của dịch vụ Phần văn bản phía trên hình chữ nhật mô tả đầu vào, phần phía dưới mô tả đầu ra của dịch vụ Các đầu vào có font chữ màu đen là các đầu vào có thể được tạo ra từ đầu ra của các dịch vụ trước đó Các đầu vào có font chữ màu đỏ phải được người dùng cung cấp Các dịch vụ được sắp xếp theo thứ tự sao cho các dịch vụ xuất hiện sau có thể được tổ hợp từ các dịch vụ trước đó

5 Hình 1-1: Mô hình tổ hợp các dịch vụ web

Dựa vào mô hình trên, chương trình sẽ tìm tất cả các tổ hợp thỏa mãn yêu cầu của người dùng Trong ví dụ này, để thỏa mãn yêu cầu được mô tả ở Bảng 1.2 , dễ thấy rằng dịch vụ cần được tổ hợp bao gồm: xuất bản, đặt hàng, điện tử, vận chuyển và phí xuất bản Từ kết quả trên, kết hợp với thông tin về chi phí của từng dịch vụ, chương trình sẽ tính được tổng chi phí của dịch vụ tổ hợp:

Giải pháp trên gặp một số khuyết điểm:

- Khi có cập nhật thông tin ở Bảng 1.1 (ví dụ: một dịch vụ mới “Xuất bản điện tử” được tạo ra như Bảng 1.3), chương trình cần phải chạy lại toàn bộ để tạo ra một mô hình tổ hợp mới như ở Hình 1-2 Trong trường hợp này, chương trình tính được một cách tổ hợp dịch vụ mới (“xuất bản điện tử” và “vận chuyển”) cho người dùng lựa chọn

Tên dịch vụ Đầu vào Đầu ra Chi phí

Xuất bản sách, tác giả nhà xuất bản, thông tin xuất bản

Phí xuất bản đơn hàng, thông tin chi phí xuất bản 2$

Vận chuyển đơn hàng, địa chỉ ngày vận chuyển 3$

Tín dụng đơn hàng, thẻ tín dụng thông tin tín dụng, thông tin trả phí

1$ Đặt hàng Thông tin xuất bản Thông tin điện tử 2$ Điện tử Thông tin điện tử Thông tin khách hàng, đơn hàng

Xuất bản điện tử sách, tác giả đơn hàng, chi phí xuất bản 20 $ Bảng 1.3: Dữ liệu khi thêm dịch vụ mới “Xuất bản điện tử”

Hình 1-2: Mô hình khi thêm dịch vụ mới

- Quá trình tổ hợp dịch vụ không tính đến các giá trị của chất lượng dịch vụ: vì thông tin của chất lượng dịch vụ không được khảo sát khi tổ hợp, chương trình không thể loại bỏ các dịch vụ không thỏa mãn yêu cầu của người dùng giúp giảm nhẹ khối lượng tính toán Ví dụ: sử dụng các dữ liệu từ Bảng 1.1, người dùng muốn tìm dịch vụ tổ hợp có giá trị chi phí nhỏ hơn 15$ Ngay từ đầu, dịch vụ “xuất bản điện tử” (có chi phí 20$) đã không thỏa mãn yêu cầu Tuy nhiên, dịch vụ này vẫn được đưa vào trong quá trình tính toán và chỉ được loại ra sau khi chương trình

7 đã đưa ra tất cả các giải pháp có thể cho người dùng Hơn thế nữa, một số cập nhật liên quan đến tính toán các giá trị chất lượng dịch vụ đòi hỏi lập trình viên (không phải người dùng) phải chỉnh sửa source code phần mềm, chạy lại toàn bộ chương trình Việc làm này khiến quá trình tự động hóa tổ hợp gặp gián đoạn Đề tài đưa ra hướng tiếp cận mới, biểu diễn các dịch vụ web dưới dạng các luật suy diễn gồm vế trái và vế phải: vế trái dùng để biểu diễn đầu vào, vế phải mô tả đầu ra của dịch vụ web Các thông tin giá trị chất lượng dịch vụ được chứa ngay trong luật suy diễn này Các thành phần trong từng vế có thể có thông số để mô tả đặc điểm của thành phần Bằng cách này, dữ liệu của Bảng 1.1 được mô tả ở Bảng 1.4:

Tên dịch vụ Luật suy diễn

Xuất bản sách, tác giả, chi phí(x)  nhà xuất bản, thông tin xuất bản, chi phí(x+1) Phí xuất bản đơn hàng, thông tin xuất bản, chi phí(x)  nhà xuất bản, thông tin xuất bản, chi phí (x+2) Vận chuyển đơn hàng, địa chỉ, chi phí(x)  ngày vận chuyển, chi phí(x+3) Tín dụng đơn hàng, thẻ tín dụng, chi phí (x)  thông tin tín dụng, thông tin trả phí, chi phí (x+1) Đặt hàng Thông tin xuất bản, chi phí (x) 

Thông tin điện tử , chi phí (x+2) Điện tử Thông tin điện tử, chi phí (x) 

Thông tin khách hàng, đơn hàng , chi phí (x+3)

Bảng 1.4: Dữ liệu mô tả theo đề tài

Tương tự như các dịch vụ sẵn có, yêu cầu của người dùng cũng được mô tả bằng một luật suy diễn Chương trình không tính toán tất cả các kết hợp có

8 thể có mà dựa trên tình trạng hiện tại và tập luật hiện có để chọn luật áp dụng cho phù hợp đến khi tìm được một tổ hợp thỏa mãn yêu cầu Do đó, tại bất kỳ thời điểm nào, chương trình cũng cho phép cập nhật lại số lượng dịch vụ đang có Hơn thế nữa, thông tin về chất lượng dịch vụ được mô tả ngay trong luật suy diễn nên việc xem xét các dịch vụ không thỏa mãn nhu cầu của người dùng được thực hiện tại từng bước chọn dịch vụ.

Mục tiêu và giới hạn của đề tài

Mục tiêu của đề tài là đưa ra những cơ sở lý thuyết và hướng tiếp cận mới từ đó hình thành nên phương pháp tổ hợp cách dịch vụ web nhằm thỏa mãn các tiêu chí cho trước của người dùng

Trong đề tài này, chúng tôi chỉ tập trung xây dựng chương trình áp dụng hệ thống viết lại số hạng để tổ hợp các dịch vụ web dựa trên các tiêu chí ràng buộc cứng (các ràng buộc về đầu vào và đầu ra), ràng buộc mềm (tiêu chí về chất lượng dịch vụ) Các ràng buộc về thời gian (dịch vụ nào thực hiện cuối cùng, thứ tự giữa các dịch vụ, …) không được giải quyết trong chương trình.

Phương pháp tiến hành

Sau khi thu thập được dữ liệu từ các dịch vụ web thực tế, chúng tôi tiến hành mô tả các dịch vụ web dưới dạng các luật theo đặc tả của chương trình Dựa trên các đặc tả từ tập dịch vụ, chương trình lấy yêu cầu từ người dùng (dưới dạng các luật) để tính toán thứ tự các dịch vụ được dùng cũng như kết quả trong từng bước áp dụng Toàn bộ chương trình được viết bằng ngôn ngữ C#.

Những đóng góp của đề tài

Với những kết quả của quá trình nghiên cứu và hiện thực, chúng tôi đã xây dựng nên một chương trình có khả năng tổ hợp các dịch vụ web sẵn có nhằm

9 thỏa mãn yêu cầu của người dùng Sau đây là những đóng góp chính của đề tài:

- Đưa ra một phương pháp mới để có thể tổ hợp các dịch vụ web sử dụng hệ thống viết lại số hạng Nhờ vào phương pháp này, các thay đổi trên tập dịch vụ web (thêm, bớt các dịch vụ) có thể được thực thi ngay trong quá trình tính toán

- Cho phép các dịch vụ web xác định được khả năng thực thi khi kiểm tra quá trình tổ hợp bằng cách xác định điều kiện của các dịch vụ thông qua giá trị của chất lượng dịch vụ Ví dụ: dịch vụ vận chuyển sẽ không được áp dụng nếu chi phí vượt quá một mức yêu cầu người dùng Đối với các phương pháp khác, điều kiện này chỉ có thể xem xét sau khi đã biết được cách tổ hợp các dịch vụ web

- Cải tiến việc lựa chọn các dịch vụ web: thay vì tạo ra tất cả các mô hình kết hợp có thể có của tất cả các dịch vụ web, chương trình tổ hợp có thể dựa trên các yêu cầu của người dùng để loại bỏ các dịch vụ không thỏa mãn ở từng bước lựa chọn dịch vụ, sử dụng các giải thuật heuristic để tăng tốc quá trình tìm kiếm.

Cấu trúc của luận văn

Trong chương này chúng tôi giới thiệu tổng quan về đề tài cũng như mục tiêu, giới hạn và cách tiến hành Chúng tôi cũng đã đưa ra các đóng góp của đề tài

Phần còn lại của luận văn sẽ được tổ chức như sau:

Chương 2 khảo sát các công trình đã đăng tải có liên quan

Trong Chương 3, chúng tôi sẽ đi sâu vào việc phân tích và diễn giải các kiến thức cần thiết về hệ thống viết lại các số hạng để phục vụ cho việc tổ hợp các dịch vụ web

Chương 4 trình bày chi tiết về ý tưởng xây dựng chương trình tổ hợp các dịch vụ web và đưa ra một case study để minh họa cho chương trình được đề xuất

10 Chương 5 trình bày về cách tạo tập thí nghiệm, kết quả chạy thí nghiệm và đưa ra một số đánh giá về hệ thống

Chương 6 đưa ra kết luận và đề xuất một số hướng phát triển tiếp theo trong tương lai của đề tài

Chương 2: Các nghiên cứu liên quan

Tổng quan

Phân loại các phương pháp tổ hợp

Tổ hợp các dịch vụ web liên quan đến việc kết hợp một số dịch vụ web hiện có lại với nhau để tạo ra một dịch vụ web phức tạp và hữu ích hơn Tổ hợp các dịch vụ web là chủ đề thu hút sự quan tâm của rất nhiều nhà nghiên cứu

Nó cho thấy có rất nhiều vấn đề phức tạp mà chúng ta cần phải giải quyết khi tổ hợp các dịch vụ web đơn giản hiện có lại với nhau [1,2] Một trong những mục tiêu chính của việc tổ hợp dịch vụ web là tái sử dụng các dịch vụ hiện có và kết hợp chúng thành một dịch vụ web phức hợp

Sự đa dạng của các kỹ thuật tổ hợp dịch vụ web có thể được phân loại theo hai cách tiếp cận: tổ hợp theo cú pháp hoặc tổ hợp theo ngữ nghĩa [3] Chúng ta cũng có một cách phân chia khác, đó là các phương pháp tổ hợp tĩnh, nghĩa là các dịch vụ web được tổ hợp trong giai đoạn thiết kế và phương pháp tổ hợp động, nghĩa là các dịch vụ web được tổ hợp trong thời gian chạy, vừa thực thi vừa tổ hợp, kết quả của bước thực thi trước sẽ quyết định việc tổ hợp ở bước sau Kết hợp hai cách phân loại trên ta có tất cả bốn kỹ thuật chính: tổ hợp bằng tay và tĩnh (Manual, Static Composition), tổ hợp tự động và tĩnh

(Automatic, Static Composition), tổ hợp tự động và được thực hiện động lúc chạy (Automatic, Dynamic Composition) và cuối cùng là tổ hợp bán tự động và được thực hiện tĩnh hoặc động (Semi-automatic, Static or Dynamic

Composition) Phương pháp Manual, Static Composition là thuộc nhóm tổ hợp dựa trên cú pháp Ba phương pháp còn lại là thuộc nhóm tổ hợp dựa trên ngữ nghĩa

Chương 2: Các nghiên cứu liên quan

Phương pháp tổ hợp bằng tay và tĩnh

Tổ hợp tĩnh có nghĩa là người dùng phải xây dựng một mô hình tiến trình trừu tượng trước khi bắt đầu các kết hợp [4] Mô hình tiến trình trừu tượng bao gồm một tập hợp các tác vụ và sự phụ thuộc, ràng buộc giữa chúng Mỗi tác vụ có một câu truy vấn được sử dụng để tìm kiếm các dịch vụ web đơn để hoàn thành nhiệm vụ Có hai cách tiếp cận hiện đang được nghiên cứu trong nhóm các phương pháp tổ hợp dịch vụ web tĩnh/ thực hiện bằng tay Hướng tiếp cận thứ nhất đó là Web Services Orchestration [5] Cách tiếp cận này kết hợp các dịch vụ web có sẵn với việc thêm một thành phần đóng vai trò điều phối viên trung tâm có trách nhiệm gọi và kết hợp các dịch vụ web đơn lại với nhau Phương pháp thứ hai được gọi Web Services Choreography [6]

Phương pháp này không sử dụng thành phần điều phối viên trung tâm mà nó thực hiện các tác vụ phức tạp thông qua việc định nghĩa các giao tiếp sẽ được thực hiện bởi các dịch vụ thành phần [7] Trong phương pháp tổ hợp tĩnh, việc tổ hợp các dịch vụ được thực hiện tại thời điểm thiết kế và việc tổ hợp được thực hiện bằng tay, sau khi có lược đồ tổ hợp hoàn chỉnh thì chúng ta mới thực thi lược đồ tổ hợp này để đạt được mục tiêu/ yêu cầu mong muốn

Phương pháp tổ hợp này là không linh hoạt Tuy nhiên, có rất nhiều kỹ thuật tổ hợp bằng tay đã được đề xuất Những kỹ thuật này thường được sử dụng để thiết kế quy trình nghiệp vụ trong các hệ thống quản lý workflow Có một số ngôn ngữ đặc tả lược đồ tổ hợp đã được đề xuất theo hướng tiếp cận này (ví dụ như ngôn ngữ BPEL4WS [8]) Bên cạnh tính không linh hoạt, các kỹ thuật này còn có những hạn chế như chúng thường được sử dụng bởi các nhà phát triển phần mềm chứ không phải bởi người dùng cuối Vì vậy, đây là một trong những điểm hạn chế làm kìm hãm sự phát triển của hướng nghiên cứu này [9]

Chương 2: Các nghiên cứu liên quan

Phương pháp tổ hợp tự động và tĩnh

Tổ hợp tự động là việc tạo ra mô hình tổ hợp và lựa chọn các dịch vụ web một cách tự động dựa trên các yêu cầu của người sử dụng [10] Do các phương pháp tổ hợp bằng tay rất tốn thời gian và khó thực hiện nên việc tổ hợp tự động hoặc bán tự động là một hướng nghiên cứu mới Việc tự động tổ hợp các dịch vụ web ngày càng trở nên cần thiết khi số lượng các dịch vụ web trên internet ngày càng tăng lên nhanh chóng Tự động nghĩa là phương pháp tổ hợp có khả năng tạo ra các mô hình tiến trình trừu tượng một cách tự động và có khả năng xác định đúng dịch vụ cần phải gọi thực thi từ mô hình tiến trình trừu tượng này Để thực hiện việc tổ hợp các dịch vụ web tự động, khái niệm về web ngữ nghĩa đã được đề xuất Ontology được sử dụng như là phương tiện để cung cấp ngữ nghĩa cho các dịch vụ web [9] Tổ hợp các dịch vụ web ngữ nghĩa là một tính năng cải thiện tính linh hoạt của hệ thống Một công cụ kết hợp dịch vụ web tự động sẽ lựa chọn “đúng” dịch vụ web thành phần để xây dựng nên một dịch vụ web tổ hợp phù hợp với các đặc tả yêu cầu của người dùng Khả năng tự động tổ hợp các dịch vụ web để tạo ra một dịch vụ web mới là một trong những tính năng quan trọng của web ngữ nghĩa.

Phương pháp tổ hợp tự động và động

Các dịch vụ web được tổ hợp động (dynamic) [11] có nghĩa là các thành phần của chúng có thể được chọn tự động tại thời gian chạy, dựa trên các yêu cầu cụ thể Hầu hết các kỹ thuật kết hợp tự động là dựa trên giao diện (interface) hoặc dựa trên chức năng (function) Trong việc kết hợp dựa trên giao diện, các thành phần đầu vào (input) và đầu ra (output) trong giao diện của các dịch vụ được sử dụng để tổ hợp Phương pháp này tuy đơn giản nhưng chúng có hạn chế là các chức năng không đảm bảo Trong khi đó, phương pháp kết hợp dựa trên chức năng căn cứ vào các công thức logic mô tả chức năng của các

Chương 2: Các nghiên cứu liên quan

14 dịch vụ, kết hợp với các thông tin về giao diện của dịch vụ sẽ cho kết quả chính xác hơn Hầu hết các phương pháp này đều dựa việc lập kế hoạch của lĩnh vực trí tuệ nhân tạo(AI planning) [11].

Phương pháp tổ hợp bán tự động, tĩnh hay động

Tổ hợp dịch vụ bán tự động khá giống với tổ hợp tự động Tuy nhiên, chúng có sự khác nhau đó là tùy theo các điều kiện khác nhau mà chúng chọn các tiến trình (dịch vụ) khác nhau để đạt được mục tiêu Trong hướng nghiên cứu này, có nhiều phương pháp tổ hợp chỉ mang tính chất gợi ý còn việc chọn dịch vụ cụ thể để thực thi là công việc của người sử dụng

2.2 Các phương pháp tổ hợp hiện nay

Kể từ khi các dịch vụ web ra đời và ngày càng khẳng định thế mạnh của mình so với các phần mềm truyền thống, nhu cầu tổ hợp các dịch vụ web xuất hiện đòi hỏi phải có một ngôn ngữ để mô tả việc tổ hợp này Thế hệ ngôn ngữ đầu tiên bao gồm WSFL (IBM’s Web Service Flow Language) và WSCI (BEA Systems’ Web Services Choreography Interface) [2] WSFL bắt nguồn từ mô hình của ngôn ngữ đặc tả các luồng công việc (workflow): mỗi dịch vụ được gọi tương ứng với một nhiệm vụ (task) của luồng công việc và các luồng dữ liệu, luồng điều khiển được biểu diễn bởi các cung (arc) nối giữa các nhiệm vụ đó [12] WSCI là một ngôn ngữ đặc tả giao diện dựa trên chuẩn XML dùng để mô tả các luồng thông điệp được trao đổi bởi một dịch vụ web với các dịch vụ khác thông qua phương pháp Web Services Choreography

Hình 2-1: Thế hệ đầu tiên của ngôn ngữ tổ hợp dịch vụ web

Chương 2: Các nghiên cứu liên quan

15Bởi vì WSFL và WSCI không phù hợp với các nhu cầu thực tế của việc tổ hợp, các nhà nghiên cứu đã phát triển thế hệ ngôn ngữ thứ hai Các phương pháp phổ biến hiện nay được dùng trong việc tổ hợp các dịch vụ web: BPEL (Business Process Execution Language for Web Services), Semantic Web (OWL-S), Web Components, Petri Nets, Model Checking.

BPEL

BPEL là một ngôn ngữ đặc tả hình thức được sử dụng trong quá trình tự động hóa hoạt động nghiệp vụ Trong BPEL, các thành phần của dịch vụ web được gọi là quá trình (process), các dịch vụ tham gia vào quá trình tổ hợp được gọi là đối tác (partners) và thông điệp trao đổi giữa các dịch vụ web với nhau được gọi là một hoạt động (activity) Một quá trình có thể có chưa nhiều hoạt động Các quá trình được thể hiện trong BPEL dưới dạng các tài liệu XML được cấu trúc một cách chặt chẽ dưới dạng các tương tác đã được chuẩn hóa giữa dịch vụ web với nhau Toàn bộ BPEL được sử dụng để gọi các giao diện (interface) bên ngoài và lấy kết quả trả về thông qua các thông số đầu vào của các giao diện Để có thể thực hiện công việc tổ hợp, BPEL cung cấp các khái niệm: phép gán (assignment) gán giá trị biến vào thông số đầu vào của các giao diện được gọi, phép gọi dịch vụ (invoke) gọi các dịch vụ bên ngoài), điều kiện (condition) được dùng để xác định một dịch vụ có được phép thực hiện hay không [13] Bên cạnh đó, BPEL còn cho phép các dịch vụ có thể thực hiện theo tuần tự (sequence) hoặc song song (flow) giúp linh hoạt hơn trong quá trình tổ hợp

Mô tả quá trình sử dụng BPEL trong thực tế Đầu tiên, một chuyên gia BPEL sử dụng một chương trình thiết kế BPEL (BPEL designer) như một môi trường phát triển tích hợp (IDE) để có thể tạo ra mô hình các quá trình nghiệp vụ Mô hình này là sự sắp xếp các dịch vụ web xác định cách các dịch vụ này liên kết với nhau và thứ tự kết nối giữa chúng Sau đó, dựa trên mô hình này,

Chương 2: Các nghiên cứu liên quan

16 chương trình thiết kế BPEL sẽ tạo ra các file XML mô tả chính xác yêu cầu của chuyên gia BPEL Dựa trên file XML mô tả các quá trình BPEL, bộ phận điều phối viên trung tâm sẽ tạo ra các dịch vụ tổ hợp phù hợp

Hình 2-2: Sử dụng BPEL để tổ hợp các dịch vụ web

Như vậy, phương pháp tổ hợp dịch vụ web sử dụng BPEL được thực hiện theo hướng Manual/ Static.

Semantic Web (OWL-S)

Dịch vụ web là các thành phần phần mềm được đặc tả hoàn chỉnh, có khả năng dùng lại và được sử dụng trên môi trường web với các công nghệ SOAP

(Simple Object Access Protocol) như là một framework dành cho việc liên lạc, WSDL (Web Service Definition Language) và UDDI (Universal Description, Discovery and Intergration) cung cấp cơ chế để tìm thấy các dịch vụ cần thiết Tuy WSDL là ngôn ngữ xuất hiện nhằm đặc tả các công nghệ web hiện tại cũng như các đặc tả cú pháp của các dịch vụ nhưng nó chỉ mô tả được cấu trúc của dữ liệu gửi và nhận trên mạng nhưng lại không thể hiện được ngữ nghĩa của dữ liệu Dịch vụ web ngữ nghĩa (Semantic web services) là sự kết hợp giữa dịch vụ web và web ngữ nghĩa Dịch vụ web ngữ nghĩa

Chương 2: Các nghiên cứu liên quan

17 dùng kỹ thuật OWL-S (Web Ontology Language for Services) để tổ hợp các dịch vụ web lại với nhau

Thông thường, các dịch vụ web được mô tả thông qua các thông số về mặt chức năng (thông số đầu vào, đầu ra,…) trong khi các thông số dịch vụ (chi phí, độ tin cậy, thời gian thực hiện, …) lại được dùng để định nghĩa hành vi của dịch vụ Hơn thế nữa, trong trường hợp có nhiều cách tổ hợp dịch vụ web lại với nhau thì phương pháp kết hợp nào có giá trị chất lượng dịch vụ tốt nhất được ưu tiên sử dụng bởi người dùng Sử dụng dịch vụ web ngữ nghĩa có thể đặc tả dịch vụ web đi kèm với thông tin phi chức năng về chất lượng dịch vụ giúp việc đánh giá các tổ hợp một cách chính xác hơn [14]

Giống như BPEL ở Hình 2-2, cơ chế hoạt động của OWL-S cũng thông qua một điều phối viên trung tâm là một chuyên viên để dùng một môi trường phát triển tích hợp thiết kế nên mô hình đặc tả các dịch vụ web và thực hiện các phương pháp tổ hợp đã xác định sẵn Do đó, OWL-S cũng được thực hiện theo hướng Manual, Static Để tăng cường sức mạnh trong việc tổ hợp các dịch vụ web, OWL-S thường được đưa vào ngôn ngữ Prolog hoặc áp dụng Petri Nets để tự động hóa được quá trình tổ hợp.

Web Components

Với phương pháp sử dụng Web Components, các dịch vụ được xem như là các thành phần dùng để hỗ trợ các nguyên lý phát triển phần mềm như tính dùng lại, tính chuyên biệt hóa và tính mở rộng Ý tưởng chính ở đây là đóng gói các thông tin luận lý của một dịch vụ web tổ hợp vào bên trong một đặc tả lớp (class) dùng để biểu diễn dịch vụ web được tổ hợp Khi đó, các thành phần publish trong interface của một web component có thể được chia sẻ ra bên ngoài cho quá trình tìm kiếm dịch vụ và sử dụng lại [2]

Chương 2: Các nghiên cứu liên quan

18 Hình 2-3 mô tả dịch vụ web tổ hợp từ hai dịch vụ web đơn là B và C Các thông số chức năng của dịch vụ: đầu vào (BCInput), đầu ra (BCOutput) đều được tổng hợp từ các dịch vụ web thành phần

Hình 2-3: Dịch vụ web tổ hợp được đặc tả sử dụng Web Components

Bằng cách sử dụng Web Components, các dịch vụ web tổ hợp có thể được cấu trúc theo hệ thống phân cấp để phục vụ tối đa yêu cầu của người sử dụng

Trong trường hợp này, các dịch vụ web tổ hợp cấp thấp hơn gọi là các WSCAs (Web Service Composition Actions)

Hình 2-4 mô tả dịch vụ web tổ hợp và các WSCAs cho trường hợp tổ hợp 4 dịch vụ: ăn ở, vé máy bay, tour du lịch và thuê xe hơi

Hình 2-4: Web Components mô tả dịch vụ web tổ hợp cho khách du lịch

Chương 2: Các nghiên cứu liên quan

19Tùy theo từng đối tượng khác hang (các mức độ yêu cầu khác nhau) mà chương trình sẽ đưa ra các dịch vụ được tổ hợp cho phù hợp Nếu khách hàng yêu cầu sử dụng cả bốn dịch vụ cùng lúc thì chương trình sử dụng dịch vụ web tổ hợp, khi chỉ cần một trong số các dịch vụ trên thì các WSCAs tương ứng sẽ được cung cấp [15].

Petri Nets

Petri Nets là một kỹ thuật mô hình hóa các tiến trình có ngữ nghĩa hình thức đã được chứng thực Chúng được sử dụng để mô hình và phân tích nhiều loại quá trình bao gồm: giao thức, hệ thống sản xuất và qui trình nghiệp vụ Một

Petri Nets là một đồ thị lưỡng phân (bipartite graph), kết nối và có hướng mà trong đó mỗi node là một place hoặc một transition Các token chiếm giữ các place Khi có ít nhất một token ở một nơi kết nối với một transition, ta bảo rằng transition đó được kích hoạt (enabled) Bất kỳ một transition nào được kích hoạt đều có thể fire (di chuyển một token từ mọi vị trí input) và gửi lại một token ở vị trí output

Hành vi của dịch vụ web thực chất là một tập các thao các có thứ tự riêng phần Do đó, nó có thể dễ dàng được mô tả thông qua một Petri Nets Các thao tác của dịch vụ web được mô tả bằng các transition và trạng thái của dịch vụ được thể hiện bởi các place Các mũi tên giữa các place và transition được sử dụng để xác định các quan hệ Một dịch vụ web được mô hình hóa bằng một Petri Nets có một input place (một place không có đường đi vào) dùng để lấy thông tin vào và một output place (một place không có đường đi ra) để xuất thông tin ra Tại bất kỳ thời điểm nào, một dịch vụ web có thể ở một trong các trạng thái: chưa tạo thực thể (NotInstantiated), sẵn sàng (Ready), đang chạy (Running), tạm dừng (Suspend) hoặc hoàn thành (Completed) Khi một dịch vụ web ở trạng thái sẵn sàng nghĩa là có một token ở vị trí input place tương ứng với nó, còn trạng thái hoàn thành chỉ ra rằng có một token ở

Chương 2: Các nghiên cứu liên quan

20 vị trí output place tương ứng Sau khi đã đặc tả một Petri Nets cho mỗi dịch vụ, phương pháp sử dụng Petri Nets cung cấp hẳn một tập rất đa dạng các phép toán đại số để tổ hợp các dịch vụ web: tuần tự, lặp lại, song song, … Nhờ vào các phép toán đại số này, một tổ hợp dịch vụ web có thể được chứng minh là có tồn tại deadlock hay không, có thể kết thúc trong một số giới hạn các bước hay không Các thao tác này rất có ích cho việc kiểm định các dịch vụ web đã được tổ hợp

Hình 2-5 mô tả việc kết hợp ba dịch vụ web A, B và C lại với nhau theo trình tự: A được thực hiện nối tiếp với khối dịch vụ tổ hợp B song song với C

Hình 2-5: Sử dụng Petri Nets để tổ hợp ba dịch vụ web A, B và C

Model Checking

Model checking là một kỹ thuật được sử dụng để kiểm định chính thức các hệ thống cùng tồn tại và có số trạng thái hữu hạn Các đặc tả hệ thống được trình bày bằng temporal logic (logic xác định các ràng buộc về mặt thời gian: quá trình nào thực hiện đầu tiên, quá trình nào thực hiện cuối cùng, ràng buộc thứ tự trước sau giữa các quá trình, …), sau đó sẽ được duyệt và kiểm tra mô hình để xét xem đặc tả đã cho có được thỏa hay không Kỹ thuật model checking có thể được dùng để tổ hợp các dịch vụ web bằng cách kiểm định tính đúng đắn bên trong một đặc tả của luồng công việc (workflow) [2]

Chương 2: Các nghiên cứu liên quan

So sánh các phương pháp tổ hợp dịch vụ web

Các phương pháp tổ hợp dịch vụ web được đánh giá dựa trên bốn tiêu chí cơ bản:

- Chất lượng dịch vụ: hầu hết các phương pháp đều tập trung vào việc biểu diễn các đặc điểm chức năng (đầu vào, đầu ra, …) mà bỏ qua các đặc điểm về chất lượng của dịch vụ web Chỉ có OWL-S đặc tả thuộc tính này đi kèm với bản thân dịch vụ để hỗ trợ người dùng lựa chọn các dịch vụ được tổ hợp phù hợp với yêu cầu

- Kiểm định: vì BPEL và OWL-S chỉ đóng vai trò như là một ngôn ngữ mô tả cách tổ hợp các dịch vụ nên các phương pháp này không thể thực hiện việc kiểm tra tính đúng đắn của dịch vụ được tổ hợp Dựa trên cơ chế truyền thông điệp và quan hệ giữa các lớp biểu diễn các dịch vụ web, phương pháp Web components dễ dàng kiểm tra tính tương thích cũng như khả năng thỏa mãn yêu cầu tổ hợp của dịch vụ được tổ hợp

Trong khi đó, Petri Nets và Model checking sở hữu một nền tảng đại số vững chắc để có thể kiểm định tính đúng đắn của chương trình

- Tự động tổ hợp: Việc tổ hợp tự động được thực hiện bằng cách: sau khi nhận đặc tả về dịch vụ cần tổ hợp từ người dùng, chương trình sử dụng một phương pháp phù hợp để lựa chọn các dịch vụ phù hợp và kết hợp chúng lại với nhau Trong các phương pháp kể trên, model checking là kỹ thuật có khả năng tổ hợp tự động tốt nhất

- Khả năng áp dụng: đối với BPEL và OWL-S, để có khả năng sử dụng tổ hợp một số lượng lớn các dịch vụ web lại với nhau, các phương pháp này cần có các ký hiệu đồ họa chuẩn cho việc mô hình hóa việc tổ hợp trên các chương trình thiết kế Tuy nhiên, các ký hiệu đồ họa hiện tại vẫn không thể đáp ứng được cấu trúc phức tạp của ngôn ngữ BPEL và

OWL-S Phương pháp Web components có khả năng áp dụng với số lượng lớn các dịch vụ bằng đặc tả lớp Tuy nhiên, do có sự khác biệt giữa đặc tả lớp và chuẩn XML, phương pháp này đòi hỏi nhiều thời gian cho việc so trùng và đồng bộ giữa chúng Khi số lượng dịch vụ web đơn tăng lên, độ phức tạp của công việc tổ hợp sử dụng Petri Nets được nhân lên rất nhiều lần Kỹ thuật Model checking thì không xác

Chương 2: Các nghiên cứu liên quan

22 định được khả năng áp dụng vì phụ thuộc vào loại thông tin cần check cũng như mô hình được sử dụng

Bảng 2.1Bảng 2.1: Bảng so sánh các phương pháp tổ hợp dịch vụ web tóm tắt lại các đặc điểm các phương pháp đã được trình bày về các phương diện: chất lượng dịch vụ, kiểm định, tự động tổ hợp và khả năng áp dụng

Kiểm định Tự động hóa

Bảng 2.1: Bảng so sánh các phương pháp tổ hợp dịch vụ web

2.3 Hướng tiếp cận của đề tài

Mục tiêu của đề tài là đưa ra một phương pháp mới mô tả các đặc điểm chức năng của một dịch vụ web kết hợp với thông tin về chất lượng dịch vụ

Phương pháp này có khả năng tổ hợp tự động một số lượng lớn các dịch vụ web đơn lại với nhau bằng việc đơn giản hóa các đặc tả phức tạp của dịch vụ web và mô tả chúng bằng các luật theo hệ thống viết lại số hạng Phương pháp này cho phép mở rộng sức mạnh của quá trình tổ hợp dịch vụ web hiện tại:

- Mô tả được thông tin về chất lượng dịch vụ đi kèm với các đặc tả về đầu vào, đầu ra của dịch vụ web

- Có cơ chế xác định điều kiện áp dụng dịch vụ

- Áp dụng phương pháp tìm kiếm để tìm được tổ hợp web tốt nhất theo yêu cầu của người dùng

Chương 2: Các nghiên cứu liên quan

23Chúng tôi hy vọng ý tưởng áp dụng phương pháp này sẽ mở ra một mảng nghiên cứu về việc xây dựng một nền tảng toán học để có khả năng thỏa mãn các yêu cầu ngày càng cao của việc tổ hợp các dịch vụ web.

Hệ thống viết lại số hạng

HỆ THỐNG VIẾT LẠI SỐ HẠNG

Ví dụ minh họa

Để có thể hiểu rõ về hệ thống viết lại số hạng, ta khảo sát hệ thống sau

Hệ thống dùng để đặc tả phép cộng của các số tự nhiên bằng cách sử dụng hằng số 0 và hàm s với tập luật [17]: x + 0  x [Luật R1] x + s(y)  s(x+y) [Luật R2] x + y  y + x [Luật R3]

Trong đó, x và y là các biến số

Khi một biểu thức phù hợp với vế trái của một luật, ta có thể viết lại biểu thức đó dưới dạng vế phải Ví dụ: với biểu thức s(s(0)) + 0, nếu thay x bằng s(s(0)) (vì x là biến số nên có thể được thay bằng các biểu thức) thì biểu thức này theo đúng cấu trúc vế trái của luật R1, nên có thể viết lại thành s(s(0)) (vì áp dụng R1, kết quả là x mà x = s(s(0))) Quá trình trên có thể được biểu diễn thành: s(s(0)) + 0  s(s(0)) [R1]

Trong hệ thống này, các số tự nhiên được biểu diễn bằng cách đếm số lượng hàm s trong một số hạng Ví dụ: số 0 được biểu diễn bằng 0, 1 được biểu diễn bằng s(0), 2 được biểu diễn bằng s(s(0))

Phép cộng được thể hiện trong các luật cũng chính là phép cộng hai số tự nhiên Ví dụ: khi thực hiện phép cộng số 1 (được biểu diễn bằng s(0)) và số 2

Hệ thống viết lại số hạng

25 (được biểu diễn bằng s(s(0))), ta tìm cách áp dụng các luật để có thể loại bỏ được tất cả các dấu + trong biểu thức được tạo thành: s(0)+s(s(0))  s(s(0)+s(0)) [R2]  s(s(s(0)+0) [R2]  s(s(s(0))) [R3]

Như vậy kết quả của phép cộng là s(s(s(0))) là biểu diễn của số 3

Ta cũng có thể áp dụng các luật theo một thứ tự khác để ra được kết quả cuối cùng: s(0)+s(s(0))  s(s(0))+s(0) [R3]  s(s(s(0))+0) [R2]  s(s(s(0))) [R1]

Một hệ thống được đặc tả gồm các luật như trên gọi là hệ thống viết lại số hạng Việc tìm hiểu về hệ thống viết lại số hạng liên quan đến cách điều hướng các luật này và các điều kiện để đảm bảo hệ thống luật tạo ra có sức mạnh tính toán bằng với hệ thống phương trình mà nó được tạo ra từ đó[17]

Ta dễ dàng thấy rằng việc tạo ra một dịch vụ web tổ hợp từ các dịch vụ web đơn cũng giống với việc biến đổi một biểu thức chứa các điều kiện đầu vào thành một tổ hợp của các kết quả đầu ra dựa trên một hệ thống phương trình tạo ra được từ đặc tả của các dịch vụ Do đó, áp dụng hệ thống viết lại số hạng, ta có thể giải quyết được việc tổ hợp trên một cách phù hợp.

Các khái niệm cơ bản [18]

Signature: một signature ∑ là một tập các ký hiệu hàm, trong đó mỗi f ∈ ∑ được liên kết với một số không âm n là bậc của f So sánh với khái niệm hàm số trong ngôn ngữ lập trình, signature chính là tập chứa tên các hàm số với bậc của một signature chính là số lượng thông số của hàm số đó.Tập các phần tử có cùng bậc n của ∑ được ký hiệu là ∑(n) Hằng số là tập các phần tử có bậc 0 của ∑: ∑(0) Đối với các dịch vụ web, tùy từng trường hợp mà hằng số hay các hàm được chọn Khi các thành phần dịch vụ web được mô tả là không có thông số (ví dụ: các thông tin về sách, tác giả, đơn hàng, … trong Bảng 1.1) được biểu diễn bằng các hằng số Đối với các thành phần yêu cầu giá trị đầu vào có thể thay đổi ( ví dụ: giá trị về chi phí dịch vụ ở trạng thái hiện tại)

Hệ thống viết lại số hạng

26 được biểu diễn bằng hàm số “chi phí(x)” với giá trị của x được truyền vào trong từng bước áp dụng luật và được cập nhật khi luật đó được áp dụng

Ví dụ: trong hệ thống đã đưa ra ở mục 3.1, tập signature ∑ gồm 2 phần tử 0 và s ∑ = {0,s} Trong đó bậc của 0 bằng 0 và bậc của s bằng 1 (vì s chỉ có thể nhận một thông số): 0 ∈ ∑(0), s ∈ ∑(1)

Term: khái niệm term được xây dựng dựa trên các ký hiệu biến, signature

Cho ∑ là một signature và X là một tập các biến sao cho ∑∩X≠∅ (không thể có ký hiệu nào vừa là biến, vừa thuộc signature được) Tập tất các các term được ký hiệu T(∑, X) được đặc tả một cách đệ quy:

- Tất cả biến đều là term: X ⊂ T(∑,X) Ví dụ: 0, s đều là các term

- Với f thuộc tập signature (f ∈ ∑), nếu t1, t2, … tn đều là các term thì f(t1, t2, … t n ) là một term: f(t 1 , t2, … t n ) ∈ ∑ Ví dụ: s(s(0)), s(0) + 0 đều là các term ( Phép + ở đây là một hàm số có 2 thông số Ta dùng cách viết infix: s(0) + 0 hay vì prefix: +(s(0),0))

Reduction : là một quan hệ nhị phân trên tập hợp T(∑, X) Thay vì viết

(a,b) ∈ , ta thường viết dưới dạng a  b Ví dụ:  = {(x+0, x), (x+ s(y), s(x+y)), (x+y, y+x)} Ta có thể biểu diễn quan hệ trên dưới dạng: {x + 0  x, x + s(y)  s (x+y), x + y  y + x}

- x gọi là khả rút gọn nếu và chỉ nếu tồn tại một giá trị y để mà x  y

- x gọi là ở dạng chuẩn nếu và chỉ nếu x không khả rút gọn

- y gọi là một chuẩn của x nếu và chỉ nếu x  y và y ở dạng chuẩn

- Ví dụ: để minh họa các khái niệm, ta dùng biểu diễn trực quan của 2 cách áp dụng luật để tính s(0) + s(s(0)) ở mục 3.1:

Hệ thống viết lại số hạng

Hình 3-1: Ví dụ minh họa tính khả rút gọn

- s(s(s(0))) ở dạng chuẩn - s(0) + s(0) không ở dạng chuẩn - s(s(s(0))) là một chuẩn của s(s(0) + s(0))

Var(t): là tập các biến số có mặt trong term t Ví dụ: var(0) = {} vì term 0 không có biến số; var (x+s(y)) = {x,y} vì có 3 ký hiệu trong term x+s(y) là x, s và y trong đó s là một hàm số: s ∈ ∑, x và y là biến: x,y ∈ X

Rewrite rule: là một luật có dạng VT  VP sao cho VT không phải là một biến và Var(VT) ⊇ Var(VP) Ví dụ: x + 0  x và x+y  y+x là các rewrite rule; x + y  y + z không phải là một rewrite rule vì Var(VT) = Var (x+y) {x,y}, Var (VP) = Var(y+z) = {y,z}

Hệ thống viết lại số hạng: là một tập hợp gồm các rewrite rule Ví dụ: hệ thống gồm các luật {x + 0  x, x + s(y)  s (x+y), x + y  y + x}, trong đó

∑ = {s,0}, X = {x,y} là một hệ thống viết lại số hạng

Vị trí của term: cho S là một signature, X là một tập các biến ( ∑∩X≠∅) và s, t là các term Tập các vị trí của term s là tập hợp Pos(s) là một chuỗi các số dương được định nghĩa một cách đệ quy:

Hệ thống viết lại số hạng

28 - Nếu s là biến thì Pos(s) = {𝜖} (𝜖 là một ký hiệu dùng để mô tả rằng tập các vị trí của term là tập rỗng)

- Nếu s = f(s1, ,sn) thì Pos(s) = {𝜖} ∪ ⋃ | p ∈ Pos(s i )}

Vị trí của term là một khái niệm rất quan trọng để có khả năng lập trình hóa việc áp dụng một luật lên một subterm của một term cho trước Ví dụ: để biểu diễn s(s(0) + s(0))  s(s(s(0) + 0))) khi áp dụng luật R2: x + s(y)  s(x+y), ta cần phải biết luật này được áp dụng trên subterm nào của term ban đầu (trong trường hợp này là subterm s(0) + s(0) của s(s(0) + s(0))

Vị trí của subterm được biểu diễn trực quan theo hình cây Cây con của một nút sẽ có phần đầu là vị trí của nút cha và nối thêm một số chỉ số thứ tự của nó (ví dụ: nếu nút cha có vị trí là 12 thì nút con đầu tiên của nó có vị trí là 121) Nút gốc có vị trí là 𝜖.Ta có biểu diễn trực quan của term t = s(y) + s(s(x) + 0)

Hình 3-2: Ví dụ minh họa các vị trí của term Pos(t) = { 𝜖, 1, 11, 2, 21, 211, 212, 2111}

- Kích thước của term s ký hiệu |s| là số phần tử của Pos (s) Trong ví dụ trên, |t| = 8 vì Pos(t) có 8 phần tử 𝜖, 1, 11, 2, 21, 211, 212 và 2111

- Với p là một phần tử của Pos(s), subterm của s tại vị trí p, ký hiệu là s|p được định nghĩa đệ qui trên chuỗi số của p như sau: s| 𝜖 = s f(s1, s2,…,sn)|iq = si|q Khái niệm subterm này giúp người lập trình dễ dàng xác định subterm

Hệ thống viết lại số hạng

29 nào của term ban đầu được áp dụng các luật Subterm tại vị trí 𝜖 chính là term ban đầu Subterm tại vị trí iq (với q là một số) là cây con thứ q của si Trong term t đã xác định ở trên, ta có: t2 = s(s(x) + 0) (cây con thứ hai tính từ nút gốc); t21 = s(x) + 0 (cây con thứ nhất của t2)

- Với p là một phần tử của Pos(s), s[t]p là term được tạo ra từ s bằng cách thay thế subterm tại vị trí p bởi t s[t] 𝜖 = t f(s1, , sn)[t]iq = f(s1, , si[t]q, ,sn) Ví dụ: t[s(x)] 21 nghĩa là ta dùng s(x) để thay thế cho subterm t 21 Ta đã biết t21 = s(x) + 0 , do đó khi thay thế s(x) + 0 bằng s(x) ta sẽ được kết quả là s(y) + s(s(x))

Sử dụng khái niệm này, ta có thể đặc tả kết quả của việc áp dụng một luật trên một term cho trước Ví dụ: s(s(0) + s(0))  s(s(s(0) + 0))) khi áp dụng luật R2: x + s(y)  s(x+y) tức là ta thay thế subterm s(0) + s(0) bằng s(s(0) + 0), ta chỉ cần dùng ký hiệu s(s(0) + s(0)) [s(s(0) + 0]

Sự thay thế: với các khái niệm về term, ta vẫn chưa thể xác định được hoàn toàn việc áp dụng một luật trên term cho trước Ví dụ: s(s(0) + s(0))  s(s(s(0) + 0))) khi áp dụng luật R2: x + s(y)  s(x+y) Ta cần phải xác định được một ánh xạ: x thành s(0), y thành 0 thì mới có thể sử dụng luật R2 được Đó cũng chính là khái niệm của sự thay thế (substitution)

Ví dụ minh họa

Với những đặc điểm đã giới thiệu ở mục 3.2, hệ thống viết lại các số hạng vẫn chỉ là một phần nhỏ của first order logic và khả năng biểu diễn vẫn còn hạn chế [18]

Ví dụ: hệ thống viết lại số hạng ở mục 3.1 được mở rộng ra để biểu diễn không chỉ các số tự nhiên mà cả các số âm bằng cách thêm hàm p để mô tả các giá trị âm Như vậy, ∑ = {0,s,p} trong đó 0 là hằng số, s và p là các hàm có một thông số Để có thể biểu diễn giá trị số trong trường hợp có cả hai hàm s và p, hệ thống cần thêm vào ba luật: x + p(y)  p(x+y) [Luật R4] s(p(x))  x [Luật R5] p(s(x))  x [Luật R6]

Như vậy tập luật của toàn bộ hệ thống thành năm luật: x + 0  x [Luật R1] x + s(y)  s(x+y) [Luật R2] x + y  y + x [Luật R3] s(p(x))  x [Luật R4] p(s(x))  x [Luật R5]

Sử dụng năm luật này ta có thể:

- Biểu diễn bất kỳ số nguyên nào Ví dụ: -3 được biểu diễn bằng p(p(p(0))), 2 được biểu diễn bằng s(s(0))

- Tính toán tổng của hai số nguyên bất kỳ Ví dụ: -3 + 2

Hệ thống viết lại số hạng

- p(0) chính là dạng biểu diễn của -1

Câu hỏi: Tìm các luật bổ sungvào tập luật để đặc tả hàm pos(t) xác định xem số t có phải là số dương hay không.Ví dụ: pos(s(0))  true, pos(p(p(0)))  false

Dễ thấy rằng không thể thêm một số hữu hạn các luật để có thể đặc tả được một giá trị cho trước là số dương hay không bởi vì tập các số dương là tập vô hạn Như vậy, với đặc tả hệ thống hiện tại, không thể biểu diễn hàm pos(t) nhận giá trị true khi t là số dương và nhận giá trị false khi t không phải là số dương (khi đó tập ∑ = {0,s,p,pos,true,false})

Bài toán trở nên đơn giản hơn khi hệ thống cho phép xác định điều kiện một luật được áp dụng hay không bằng cách thêm vào các luật: pos(s(0))  true [R’1] pos(x)  true pos(s(x))  true [R’2] pos(0)  false [R’3] pos(x)  false pos(p(x))  false [R’4]

Ví dụ: xác định giá trị của pos(s(p(p(s(p(0)))))) pos(s(p(p(s(p(0))))))  pos(p(s(p(0)))) [R4]  pos(p(0)) [R5]  false [R’4]

Khi áp dụng R’4, phép thay thế được dùng: 𝜎 = {x ↦ 0}nên điều kiện pos(x)

 false trở thành pos(0)  false, điều kiện này được thỏa do [R’3] nên luật R’4 được phép áp dụng để có kết quả false.

Các khái niệm

- Đồng nhất thức: Cho ∑ là một signature và V là một tập các biến vô hạn đếm được sao cho ∑∩X≠∅ Một ∑- đồng nhất thức (hay đơn giản là đồng nhất thức) là một cặp (s,t) ∈ T(∑,V) x T(∑,V) Các đồng nhất thức được viết thành s t

Hệ thống viết lại số hạng

32 - Quan hệ giản lược: Cho E là một tập các ∑-đồng nhất thức Quan hệ giản lược E ⊆ T(∑,V) x T(∑,V) được định nghĩa:

- s  E t nếu và chỉ nếu (l,r) ∈ E, p ∈ Pos(s), 𝜎 ∈ Sub s|p = 𝜎(l) and t s[𝜎(r)]p

- Lần giản lược đầu tiên diễn ra tại vị trí p 1 = 𝜖 với cặ đồng nhất thức đầu tiên và phép thay thế 𝜎1 = {x↦i(e),y↦ e , z ↦ e}

- Lần giản lược thứ hai diễn ra tại vị trí p2 = 1 với đồng nhất thức thứ 3 và phép thay thế 𝜎2= {x ↦e}

- Lần giản lược thứ ba diễn ra ở vị trí p3 = 𝜖 vớ đồng nhất thức thứ hai và phép thay thế 𝜎3= {x ↦e}

3.4 Sử dụng hệ thống viết lại số hạng để giải quyết các bài toán Để sử dụng ngôn ngữ lập trình sử dụng hệ thống viết lại số hạng, chương trình cần phải hiện thực các hàm: (các ví dụ sử dụng các hàm này sẽ dùng hệ thống viết lại số hạng ở mục 3.1) Trong các định nghĩa hàm dưới đây, hằng số cũng được xem là 1 biến

- InDomain(x, s): xác định xem một biến x có thuộc Domain của phép thay thế s hay không Hàm InDomain xét từng cặp thay thế trong s (ví dụ: phép thay thế x ↦ s(0) sẽ được biểu diễn bằng cặp (x, s(0))), nếu cặp nào có phần tử đầu tiên giống x thì hàm sẽ trả về kết quả true, ngược lại thì kết quả là false

- Application(s,x): áp dụng phép thay thế s trên biến x Hàm Application xét từng cặp thay thế trong s, nếu cặp nào có phần tử đầu tiên giống x thì trả về kết quả là phần tử thứ hai Ví dụ: với s= { x ↦ s(0), y ↦ s(s(0)), z ↦ z} thì Application(s, x) trả về kết quả là s(0)

Hệ thống viết lại số hạng

33 Hình 3-3: Các bước thực hiện của hàm Lift(s,t)

- Lift(s,t): áp dụng phép thay thế s trên một term t o Nếu t là một biến, hàm lift dùng hàm InDomain để kiểm tra xem biến này có thuộc Domain của phép thay thế s không

 Nếu biến không thuộc Domain của s thì hàm lift trả về giá trị của biến đó

 Nếu biến thuộc Domain của s, trả về kết quả của hàm Application

 Nếu t không phải là biến thì t có dạng func t (t1, …, t n ), hàm lift áp dụng phép thay thế trên từng subterm để ra được t1’, …, tn’ và trả về kết quả là funct(t1’, …, tn’)

- Occurs(x,t): kiểm tra biến x có là biến của term t hay không o Nếu t là 1 biến, hàm sẽ trả về true nếu t= x; ngược lại trả về false o Nếu t không phải là biến thì t có dạng funct(t1, …, tn) Kết quả của hàm Occurs là phép toán Or của kết quả việc thực hiện hàm Occurs trên từng subterm con của t

Hệ thống viết lại số hạng

34 Hình 3-4: Các bước thực hiện của hàm Rewrite(r,t)

- Rewrite(r,t): áp dụng tập luật r trên term t Một luật VT  VP được biểu diễn bằng cặp (VT, VP) o Nếu tập luật rỗng, báo lỗi o Nếu tập luật có ít nhất một luật, xét luật đầu tiên trong tập luật Dùng hàm match (sẽ đặc tả sau) để kiểm tra xem luật này có khả năng áp dụng trên term t không

 Nếu có khả năng áp dụng, hàm match sẽ trả về một phép thay thế để có thể áp dụng luật đã xét Khi đó, ta sử dụng hàm lift để áp dụng phép thay thế này trên vế phải của luật

 Nếu không có khả năng áp dụng, ta tiếp tục gọi hàm Rewrite trên các luật còn lại của tập luật

- Match(p, t): kiểm tra xem term t có thỏa mãn pattern p hay không Nếu có, trả về phép thay thế phù hợp Hàm Match gọi hàm Matches với hai thông số: thông số thứ nhất là một tập hợp có một phần tử là cặp số (p,t), thông số thứ hai là một tập rỗng

Hệ thống viết lại số hạng

35 Hình 3-5: Các bước thực hiện của hàm Matches(add, ori)

- Matches(add, ori): tạo ra thêm các cặp thay thế mới vào phép thay thế ori bằng cách thêm vào phép thay thế add Hàm Matches báo lỗi nếu không thể hợp nhất được 2 phép thay thế này o Nếu add rỗng, trả về kết quả là phép thay thế ori o Nếu add không rỗng, xét cặp thay thế đầu tiên (l, r):

 Nếu l là một biến x, dùng hàm InDomain để kiểm tra xem biến x có nằm trong Domain của phép thay thế ori không

 Nếu có thì kiểm tra xem r có trùng với kết quả áp dụng phép thay thế ori trên biến x không o Nếu có thì tiếp tục dùng hàm Matches để xét các cặp thay thế còn lại của add (vì phép thay thế này đã tồn tại)

Hệ thống viết lại số hạng

36 o Nếu không thì báo lỗi (vì cặp thay thế đầu tiên của add mâu thuẫn với phép thay thế ori)

 Nếu biến x không nằm trong Domain của ori thì thêm phép thay thế này vào trong phép thay thế ori và áp dụng hàm Matches trên các phép thay thế còn lại của add

 Nếu l là một term t và r là một biến x thì báo lỗi (vì phép thay thế này không hợp lệ)

 Nếu l và r đều có dạng là một hàm của các subterm: l func l (l 1 , … l n ), r = func r (r 1 , …r m )

 Nếu func l và funcr là cùng một hàm (khi đó số lượng thông số phải bằng nhau nên n=m), thay thế cặp (l, r) bằng các cặp (l1, r1), …, (ln, rn) trong add và áp dụng hàm Matches trên phép thay thế add vừa tạo

 Nếu funcl khác funcr thì báo lỗi vì phép thay thế này không hợp lệ

Hình 3-6: Các bước thực hiện của hàm Normal(r,t)

Hệ thống viết lại số hạng

37 - Normal(r,t): trả về dạng chuẩn của term t dựa trên tập luật r o Nếu term t là biến x, hàm trả về chính biến này (vì biến là đã ở dạng chuẩn) o Nếu term t là một hàm func t có các subterm: t1, …, t n , gọi hàm Normal trên các subterm này để được danh sách subterm mới đều đã ở dạng chuẩn: t1’, …, tn’ Gọi u = funct(t1’, …, tn’) Gọi hàm Rewrite(r,u) để biến đổi u theo tập luật r, được kết quả u’ Tiếp tục gọi hàm Normal trên u’ để ra được kết quả cuối cùng (Nếu kết quả của hàm Rewrite(r,u) trả về lỗi thì u chính là kết quả cần tìm) Để hiểu rõ hơn về cách sử dụng hệ thống viết lại số hạng trong lập trình, ta đi vào từng bước phân tích các bước tính toán được giá trị term t = s(0) + s(s(0)) từ hệ thống được mô tả ở mục 3.1 x + 0  x [Luật R1] x + s(y)  s(x+y) [Luật R2] x + y  y + x [Luật R3]

Giá trị của term sẽ được tính toán bằng cách gọi hàm: Normal (r, s(0) + s(s(0))) (Với r là tập luật gồm 3 luật của hệ thống)

TỔ HỢP DỊCH VỤ WEB BẰNG HỆ THỐNG VIẾT LẠI SỐ HẠNG

Chuyển đổi các yêu cầu của dịch vụ web cần tổ hợp dùng hệ thống viết lại số hạng

4.1 Chuyển đổi các yêu cầu của dịch vụ web cần tổ hợp dùng hệ thống viết lại số hạng

Trong chương 3, ta đã tìm hiểu về phương pháp sử dụng hệ thống viết lại số hạng để giải các bài toán khi đưa ra các luật mô tả bài toán đó cùng với đặc tả của vấn đề cần giải quyết Hệ thống dựa trên các luật có sẵn để đưa vấn đề này thành dạng chuẩn mong muốn

Các dịch vụ web gồm 2 thành phần chính: đầu vào (dữ liệu cần thiết để thực hiện dịch vụ) và đầu ra (dữ liệu có được sau khi thực hiện dịch vụ) Đặc điểm này hoàn toàn giống với khái niệm luật trong hệ thống viết lại số hạng: khi một biểu thức phù hợp với vế trái của một luật, ta có thể viết lại biểu thức đó dưới dạng vế phải Mỗi dịch vụ web sẵn có được mô tả bằng một luật trong hệ thống

Việc tổ hợp dịch vụ web là một quá trình tìm ra thứ tự áp dụng các dịch vụ web có sẵn từ một tập các dữ liệu đầu vào đã có để có thể có được tập dữ liệu đầu ra như mong muốn Việc tính toán trên hệ thống viết lại số hạng cũng dựa vào biểu thức cần tính và sử dụng các luật để đưa biểu thức này về dạng chuẩn mà không thể rút gọn lại được nữa Như vậy, tổ hợp dịch vụ web chỉ là một dạng hệ thống viết lại đơn giản trong đó biểu thức cần tính được dựa trên các dữ liệu đầu vào của dịch vụ web cần tổ hợp Việc áp dụng các luật (được xây dựng từ các dịch vụ sẵn có) dừng lại khi các yêu cầu đầu ra của dịch vụ web tổ hợp đã được thỏa mãn

Mỗi dịch vụ web đơn có một giá trị chất lượng dịch vụ (chi phí, thời gian thực hiện, độ tin cậy, …) đi kèm Sau khi áp dụng một dịch vụ web, giá trị chất

Tổ hợp dịch vụ web bằng hệ thống viết lại số hạng

40 lượng dịch vụ ở thời điểm hiện tại sẽ bị thay đổi dựa vào công thức tính dành riêng cho loại chất lượng dịch vụ đó và giá trị trong mô tả của dịch vụ web

Sử dụng hệ thống viết lại số hạng, ta có thể “đính kèm” thông tin này trong đặc tả của mỗi dịch vụ web giúp linh động hóa được phương pháp tính toán giá trị chất lượng của dịch vụ web tổ hợp

Các giá trị đầu vào và đầu ra của dịch vụ web là không thay đổi, ta dùng hằng số để mô tả các thông tin này Để dễ xử lý, chương trình quy định các hằng số được bắt đầu bằng chữ cái in hoa, các biến số và các hàm được bắt đầu bằng chữ cái in thường, các công thức toán học được đặt trong dấu ngoặc vuông (“[“ và “]”) Đối với điều kiện áp dụng dịch vụ (ví dụ: dịch vụ sẽ không được áp dụng nếu tổng chi phí sau khi thực hiện dịch vụ vượt quá một ngưỡng cho trước), thông tin này được đặt ngay cuối đặc tả của dịch vụ web và ngăn cách với phần còn lại bởi dấu “|”

Theo hệ thống viết lại số hạng, vế trái và vế phải của một luật phải là một

Term trong khi đối với dịch vụ web, chúng là những danh sách Ta cần đặc tả một hàm “and” để kết nối các thành phần của danh sách này Hàm này phải chấp nhận số tham số không cố định

Với các đặc điểm trên, dịch vụ web “vận chuyển” trong Bảng 1.1: Ví dụ các dịch vụ web có sẵn được mô tả (Tên của dịch vụ web được ngăn cách với đặc tả của nó bằng dấu “:”)

Tên dịch vụ Đầu vào Đầu ra Chi phí

Vận chuyển đơn hàng, địa chỉ ngày vận chuyển 3$ Đặc tả dịch vụ web trên bằng luật:

VanChuyen:and(DonHang,DiaChi,cost(x))->and(NgayVanChuyen,cost([x+3]))

Tổ hợp dịch vụ web bằng hệ thống viết lại số hạng

41 Trong đó biến x đại diện cho giá trị hiện tại của chi phí dịch vụ web tổ hợp cost([x+3]) cho biết giá trị chi phí sau khi áp dụng dịch vụ “vận chuyển” sẽ được tăng lên 3$ Để chương trình hiểu được hàm cost , người dùng cần đặc tả tất các hàm cần được sử dụng cùng với số thông số tương ứng Với nhu cầu hiện tại, danh sách này chỉ bao gồm các hàm liên quan đến việc tính chất lượng dịch vụ (cost, availability, …) Với việc sử dụng các công thức đại số kết hợp với đặc tả các biến đại diện cho các thông số tính toán giá trị chất lượng dịch vụ, các luật trong hệ thống viết lại số hạng có thể mô tả nhiều công thức toán học phức tạp cho các phương pháp tính giá trị chất lượng dịch vụ (trung bình cộng, trung bình nhân, …)

Tại mỗi bước tính toán, chương trình dựa vào danh sách các đầu vào đang có

Nếu danh sách này chứa các đầu vào của dịch vụ web đang tính, dịch vụ web này có thể được áp dụng Khi đó, đầu ra của dịch vụ web đang xét sẽ được thêm vào cho danh sách các đầu vào ở trạng thái hiện tại, giá trị chất lượng dịch vụ sẽ được cập nhật Quá trình này cứ diễn ra liên tục cho đến khi thỏa mãn điều kiện đầu ra của dịch vụ web cần tổ hợp

Hình 4-1 mô tả các bước cần thực hiện để thực hiện việc tổ hợp các dịch vụ web:

Tổ hợp dịch vụ web bằng hệ thống viết lại số hạng

42 Hình 4-1: Các bước sử dụng hệ thống viết lại số hạng để tổ hợp dịch vụ web

Mọi thông tin về dịch vụ web sẵn có được mô tả thông qua các file XML

Chương trình có chứa bộ Parser, đọc nội dung của các file này và lấy các thông tin cần cung cấp cho quá trình tổ hợp (tên, đầu vào, đầu ra, … của dịch vụ web) Các thông tin về dịch vụ web được lưu thành một danh sách các luật trong chương trình Sau khi nhận đặc tả thông tin của dịch vụ web cần tổ hợp, chương trình sử dụng hệ thống viết lại số hạng vừa tạo để có thể tìm ra thứ tự kết hợp của các trình duyệt web đơn để thỏa mãn yêu cầu tổ hợp Để làm được điều này, dịch vụ web đầu tiên trong danh sách kết hợp phải có tập đầu vào là tập con của tập đầu vào dịch vụ cần tổ hợp, tập đầu ra của dịch vụ web cần tổ hợp phải là tập con của tập đầu ra và tập đầu vào của mọi dịch vụ web nằm trong danh sách kết hợp.

Ví dụ minh họa

Để minh họa quá trình sử dụng hệ thống viết lại luật để tổ hợp dịch vụ web, ta sẽ mô tả các bước tổ hợp các dịch vụ web được liệt kê trong Bảng 1.1

Tổ hợp dịch vụ web bằng hệ thống viết lại số hạng

43 Mỗi dịch vụ web được mô tả thông qua 1 file XML Hình 4-2 trình bày một phần nội dung của file XML của dịch vụ vận chuyển:

Hình 4-2: Nội dung file XML mô tả dịch vụ vận chuyển

Parser đọc thông tin các tag có trong file XML (ví dụ: để lấy thông tin về tên dịch vụ, để lấy đặc tả dịch vụ web, …) Chương trình lấy những thông tin này và chuyển sang dạng biểu diễn của các luật trong hệ thống viết lại số hạng như Hình 4-3:

Hình 4-3: Các dịch vụ web dưới dạng các luật Ở trạng thái ban đầu, chương trình đọc các luật này, bỏ vào trong danh sách các luật và đọc nội dung yêu cầu của dịch vụ web cần tổ hợp để bắt đầu quá trình tạo ra thứ tự kế hợp cần tìm Yêu cầu về dịch vụ web tổ hợp trong Bảng

1.2: Yêu cầu dịch vụ web cần tổ hợp của người dùng được chuyển về dạng luật: and(Author,Book,Address,cost(0))->and(CustomCost,ShippingDate) cost(0) dùng để thể hiện rằng giá trị ban đầu của chi phí dịch vụ web tổ hợp là 0

Tổ hợp dịch vụ web bằng hệ thống viết lại số hạng

44 Quá trình tính toán để tổ hợp các dịch vụ web được thực hiện như sau:

- Các đầu vào (Author, Book, Address) và đầu ra (CustomCost, ShippingDate) của dịch vụ web cần tổ hợp được đọc vào để bắt đầu quá trình tổ hợp Đầu vào dùng là điểm bắt đầu, đầu ra là điều kiện để dừng chương trình Nếu không còn luật nào có khả năng được áp dụng nhưng đầu ra của dịch vụ web tổ hợp vẫn chưa được thỏa mãn thì báo lỗi về cho người dùng

- Trạng thái hiện tại của chương trình được đánh dấu bằng các thông tin đang có và giá trị chất lượng dịch vụ hiện thời Ở trạng thái ban đầu, thông tin đang có là: Author, Book, Address; giá trị chất lượng dịch vụ bằng 0

- Chương trình bắt đầu dò từng luật trong danh sách để xét xem luật hiện tại có khả năng áp dụng không Với dịch vụ Publish:

Thông tin Giá trị chất lượng dịch vụ

Trạng thái hiện tại Author, Book, Address 0 Đầu vào luật đang xét Book, Author x Đầu ra luật đang xét Publisher, PublisherInfo x+1

- Vì trạng thái hiện tại thỏa điều kiện luật nên luật Publish có thể được áp dụng Khi đó, các đầu ra của luật sẽ được thêm vào để cập nhật trạng thái Dựa vào phép thay thế khi so sánh giữa trạng thái hiện tại và luật đang xét (trong trường hợp trên, phép thay thế là x thay bằng 0), giá trị chất lượng dịch vụ được cập nhật thành 1 (Đối với luật có điều kiện, phép thay thế này được áp dụng vào điều kiện để quyết định có cho phép luật hiện tại được áp dụng hay không) Sau khi thêm vào, đầu ra của dịch vụ web tổ hợp vẫn chưa được thỏa nên chương trình tiếp tục với các luật còn lại

Tổ hợp dịch vụ web bằng hệ thống viết lại số hạng

45 - Chương trình xét tới luật tiếp theo: Cost

Thông tin Giá trị chất lượng dịch vụ

Trạng thái hiện tại Author, Book, Address,

- 0 Đầu vào luật đang xét OrderData,

- y Đầu ra luật đang xét CustomCost - y+2

Do điều kiện đầu vào của luật Cost không được thỏa nên luật này không có khả năng áp dụng

- Tiếp tục quá trình trên cho đến khi điều kiện đầu ra của dịch vụ web cần tổ hợp, ta được thứ tự kết hợp của các dịch vụ web:

- Publish  Electronic  Order  Cost  Ship Giá trị chi phí dịch vụ của dịch vụ web tổ hợp là 11.

Sử dụng Uniform Cost Search để tìm phương pháp tổ hợp tốt nhất

Với phương pháp áp dụng hệ thống viết lại luật để tổ hợp dịch vụ web đã trình bày ở mục 4.1, chương trình đọc theo thứ tự các luật được mô tả trong hệ thống để xét khả năng áp dụng của luật này Như vậy, trong trường hợp có nhiều luật có khả năng áp dụng ở trạng thái hiện tại, chương trình luôn áp dụng luật đầu tiên Nếu như luật hiện tại không phải là lựa chọn tốt nhất (khiến cho chi phí dịch vụ không đạt được giá trị nhỏ nhất), kết quả chương trình tạo ra không tối ưu

Hơn thế nữa, trong một số trường hợp, một luật có khả năng áp dụng nhưng lại không nằm trong danh sách kết hợp tốt nhất để thỏa điều kiện của dịch vụ tổ hợp Nếu luật này nằm đầu tiên, với phương pháp đã trình bày, luật này

Tổ hợp dịch vụ web bằng hệ thống viết lại số hạng

46 luôn được áp dụng khiến người dùng phải trả chi phí không cần thiết cho dịch vụ

Ví dụ: ta thêm một dịch vụ Test vào đầu tập luật ở Hình 4-3 Dịch vụ này hoàn toàn thỏa điều kiện của dịch vụ web cần tổ hợp nhưng với chi phí rất cao

Hình 4-4: Thêm dịch vụ Test vào tập luật

Ngay khi xét luật đầu tiên, chương trình sẽ trả về kết quả là dịch vụ Test với chi phí dịch vụ là 20$ trong khi ta có thể đạt được dịch vụ web tổ hợp với chi phí ít hơn rất nhiều là 11$

Phương pháp được trình bày ở mục 4.1 chỉ bảo đảm tìm được dịch vụ web tổ hợp nhưng lại không tìm ra được dịch vụ có chi phí thấp nhất

Phương pháp Uniform Cost Search sẽ được áp dụng vào chương trình để tìm phương án tối ưu nhất của dịch vụ web được tổ hợp.

Uniform Cost Search Error! Bookmark not defined 2 Áp dụng Uniform Cost Search vào quá trình tổ hợp dịch vụ web

Trong các giải thuật tìm kiếm để giải quyết bài toán, một trong những giải pháp tận dụng được các thông tin heuristic để có thể giảm thời gian tìm kiếm là Best First Search Nguyên lý chung của chiến lược này là sử dụng thông tin heuristic để đánh giá các ứng viên trong quá trình tìm kiếm và tiếp tục quá trình tạo ra các ứng viên theo hướng có được thông tin đánh giá cao nhất [19]

Giải thuật Best First Search:

1 Đặt trạng thái ban đầu s vào danh sách tên OPEN

2 Nếu OPEN rỗng, báo lỗi và thoát ra ngoài

Tổ hợp dịch vụ web bằng hệ thống viết lại số hạng

47 3 Bỏ khỏi OPEN một node n mà tại đó giá trị hàm đánh giá f là nhỏ nhất và đặt node này vào CLOSED (f là hàm đánh giá các ứng viên trong quá trình tìm kiếm)

4 Nếu n là node cần tìm, thoát chương trình vào trả về kết quả được chứa trong quá trình lưu vết từ s đến n

5 Mở rộng n, tạo tất cả các node con sau nó và các node con này chứa thông tin để có thể quay ngược lại n

6 Đối với mỗi node con n’ của n: a Tính f(n’) b Nếu n’ không ở trong OPEN và CLOSED, thêm nó vào OPEN

Gán giá trị tính toán được f(n’) cho node n’ c Nếu n’ đã chứa trong OPEN hoặc CLOSED, so sánh f(n’) với giá trị trước đó được gán cho n’ Nếu giá trị mới là nhỏ hơn, thay thế giá trị cũ bằng giá trị này (n’ sẽ trỏ ngược lại n thay vì node cha của nó) Nếu n’ đặt trong CLOSED, bỏ n’ sang OPEN

Uniform Cost Search là một trường hợp đặc biệt của Best First Search, trong đó hàm đánh giá f là tổng giá trị các trọng số tại từng bước cho tới trạng thái hiện tại.[20]

2 Áp dụng Uniform Cost Search vào quá trình tổ hợp dịch vụ web

Với phương pháp Uniform Cost Search được mô tả ở trên, điểm quan trọng nhất là tìm được hàm đánh giá f khi giải quyết một bài toán Điểm mạnh của việc tổ hợp dịch vụ web sử dụng Uniform Cost Search là hàm đánh giá ứng viên f đã tồn tại ngay trong bản thân bài toán tổ hợp Đó chính là hàm tính chi phí dịch vụ web tổ hợp ở vị trí hiện tại Giá trị chi phí càng thấp chứng tỏ trạng thái hiện tại là ứng viên tốt nhất để khảo sát tạo ra các trạng thái tiếp theo

Tổ hợp dịch vụ web bằng hệ thống viết lại số hạng

48 Danh sách OPEN tại trạng thái ban đầu trong giải thuật Uniform Cost Search chính là trạng thái chứa các đầu vào của dịch vụ web cần tổ hợp Tại mỗi bước sử dụng hàm Rewrite, mỗi trạng thái sẽ được chứa thông tin để có thể quay ngược lại trạng thái trước đó đã dẫn tới nó Các luật sẽ không được xét khả năng áp dụng theo thứ tự mà tại mỗi trạng thái, mọi luật đều được xem xét đến, luật nào tạo ra chi phí thấp nhất sẽ được xét trước tiên Quá trình này được tiếp tục cho đến khi trạng thái hiện tại chứa đầu ra của trình duyệt web cần tổ hợp

Ví dụ: đối với trường hợp các dịch vụ web có sẵn được mô tả ở Hình 4-4, dịch vụ web cần tổ hợp vẫn là Bảng 1.2Bảng 1.2: Yêu cầu dịch vụ web cần tổ hợp của người dùng , ta chạy từng bước giải thuật Uniform Cost Search như sau:

3 n = [Author, Book, Address], f(n) = 0 Do OPEN chỉ có một node duy nhất nên node n được chọn và bỏ vào trong CLOSED

4 Vì n không chứa tập đầu ra nên n chưa phải là node cần tìm

5 Quan hệ node cha-con thể hiện ở việc áp dụng được một luật trên trạng thái hiện tại để ra được trạng thái tiếp theo, tức là xét từng luật một trong tất cả các luật Nếu có trên một luật có khả năng áp dụng ở trạng thái hiện tại thì áp dụng tất cả các luật này Ở đây, có 2 luật tương ứng với dịch vụ Test và Publish Như vậy, n có 2 node con là n’ 1 = [Author,

Book, Address, ShippingDate, CustomCost] (sau khi áp dụng dịch vụ Test), n’ 2 = [Author, Book, Address, Publisher, PublisherInfo] (sau khi áp dụng dịch vụ Publish]

6 Vì n’1 và n’2 đều không ở trong 2 tập OPEN, CLOSED nên 2 node này được thêm vào OPEN với f(n’ 1 ) = 20 (giá trị chi phí dịch vụ sau khi áp dụng dịch vụ Test), f(n’ 2 ) = 1 (giá trị chi phí dịch vụ sau khi áp dụng dịch vụ Publish)

Tổ hợp dịch vụ web bằng hệ thống viết lại số hạng

49 7 Quay lại bước 2 (Vì n’2 có giá trị hàm f nhỏ nhất trong tập OPEN nên node này được chọn để xét tiếp)

Quá trình này được lặp đi lặp lại và ta được thứ tự kết hợp của các dịch vụ web là:

- Publish  Electronic  Order  Cost  Ship

- Giá trị chi phí dịch vụ của dịch vụ web tổ hợp là 11

Giá trị chi phí dịch vụ này nhỏ hơn so với dịch vụ Test (có giá trị chi phí là 20) Như vậy, với Uniform Cost Search, chương trình có khả năng chọn ra được cách tốt nhất để tổ hợp dịch vụ web mà không phụ thuộc vào thứ tự xét các luật trong tập luật của hệ thống viết lại số hạng

THỰC NGHIỆM

Những phương pháp được khảo sát

Các phương pháp được dùng để đo thời gian tổ hợp

- Tạo ra tất cả các cách tổ hợp trước khi tìm cách kết hợp các dịch vụ web: phương pháp này được đề xuất bởi Manman Chen và các đồng nghiệp 2 Nhược điểm của phương pháp này là tính linh động, khi một dịch vụ web bị thay đổi, toàn bộ chương trình cần phải chạy lại thì mới tiếp tục tổ hợp được Hơn nữa, thời gian tạo ra mọi tổ hợp có thể có là rất lớn khi số lượng dịch vụ web tăng

- On-The-Fly: đề xuất cách tổ hợp các dịch vụ web bằng cách sử dụng hệ thống chuyển trạng thái được gán nhãn (Labelled Transition System) cho phép các dịch vụ web có thể bị thay đổi trong quá trình thực thi việc tổ hợp

- Viết lại số hạng: biểu diễn các dịch vụ web bằng các luật và sử dụng hệ thống tạo ra từ các dịch vụ web đơn để tìm ra dịch vụ cần tổ hợp

Các trường hợp được khảo sát: dựa trên yêu cầu của việc tổ hợp về

- Ràng buộc cứng (Hard constraints)

1 http://fusion.cs.uni-jena.de/opossum/index.php?action=startextended#about

2 VeriWS: A Tool for Verification of Combined Functional and Non-functional Requirements of Web Service Composition, Manman Chen et al

51 - Ràng buộc mềm (Soft constraints): mỗi trình duyệt web được gắn với một giá trị QoS (Quality of Service) để đánh giá chất lượng của các dịch vụ web (về chi phí, thời gian thực hiện, độ tin cậy, …)

Ba phương pháp trên được giới thiệu thông qua ví dụ tổ hợp 4 dịch vụ web trong Bảng 5.1 để tìm dịch vụ có input là A và output là E:

Tên Input Output Chất lượng dịch vụ

Bảng 5.1: Ví dụ minh họa các phương pháp tổ hợp

(Giả sử công thức tính QoS là: dịch vụ web tổ hợp có QoS bằng tổng cách giá trị QoS thành phần)

Tạo ra mọi cách tổ hợp có thể có

Hình 5-1: Tổ hợp các dịch vụ web bằng cách tạo ra mọi cách tổ hợp có thể có

52 Cách giải quyết ví dụ bằng cách sử dụng phương pháp này được mô tả trong

Hình 5-3 Tập các dịch vụ web đơn được đọc vào và dựa vào đó để xây dựng một sơ đồ biểu diễn mọi cách tổ hợp từ các dịch vụ này Để có thể tổ hợp được dịch vụ mong muốn, chương trình phân tích input và output của dịch vụ đơn và tính toán trên sơ đồ vừa tạo để có thể tìm được các cách tổ hợp phù hợp Trong ví dụ trên, chương trình cho ra kết quả tổ hợp các dịch vụ web theo thứ tự: 1, 2,4 Sau khi biết thứ tự này, chương trình đọc các đặc tả về phương pháp tính giá trị chất lượng dịch vụ và áp dụng các công thức này để tính ra được giá trị chất lượng của dịch vụ web tổ hợp (QoS = 2 + 4 + 3 = 9)

- Chương trình cần tính toán để tạo ra mọi tổ hợp có thể có từ các dịch vụ web đơn Thao tác này tốn thời gian lớn để có thể thực hiện được

Lượng thời gian càng tăng khi số số lượng dịch vụ web đơn càng lớn

- Mỗi khi có cập nhật ở một trong số các dịch vụ web đơn (thay đổi về input, output) hay thêm, xóa các dịch vụ, chương trình phải chạy lại từ đầu để thực hiện việc tổ hợp.

On-The-Fly

Phương pháp On-The-Fly để tổ hợp các dịch vụ web có thể khắc phục được các nhược điểm của phương pháp thứ nhất

Các bước thực hiện việc tổ hợp trong ví dụ được mô tả ở Hình 5-2:

Hình 5-2: Tổ hợp các dịch vụ web sử dụng phương pháp On-The-Fly

53 Phương pháp On-The-Fly đọc tất cả các thông tin về dịch vụ web đơn và dịch vụ cần tổ hợp ở một bước duy nhất Thông tin về giá trị chất lượng dịch vụ (không chứa công thức tính toán giá trị dịch vụ web tổ hợp) được chứa trong từng đặc tả của các dịch vụ web đơn Ở mỗi bước tính toán, chương trình dựa vào đặc điểm của input hiện tại để chọn dịch vụ web đơn phù hợp nhất với dịch vụ web cần tổ hợp Trong trường hợp ví dụ, ở trạng thái ban đầu, tập input hiện có là A (lấy từ dịch vụ web cần tổ hợp) Trong các dịch vụ web hiện có, dịch vụ 1 phù hợp nhất với trạng thái hiện tại, dịch vụ này được đưa vào kết quả tổ hợp và output của nó được thêm vào để thay đổi tập input hiện có Source code của chương trình chứa công thức tính giá trị chất lượng dịch vụ tổ hợp Mỗi khi có một dịch vụ được thêm vào kết quả tổ hợp, giá trị chất lượng dịch vụ được cập nhật dựa trên công thức tính, giá trị chất lượng dịch vụ hiện tại và giá trị chất lượng dịch vụ vừa thêm vào Trong ví dụ trên, sau khi thêm dịch vụ 1, giá trị chất lượng dịch vụ được chọn (2) được cộng vào giá trị hiện tại (0) theo công thức tính toán để ra được giá trị mới (0 + 2 = 2)

Quá trình này được tiếp tục cho đến khi tìm được dịch vụ tổ hợp mong muốn

- Mỗi khi có thay đổi ở một trong số các dịch vụ web đơn (thay đổi về input, output) hoặc thêm dịch vụ mới, chương trình không cần thực thi lại từ đầu mà chỉ cần cập nhật thay đổi này vào tập các dịch vụ web sẵn có và tiếp tục quá trình tính toán để tạo ra dịch vụ web tổ hợp

- Công thức tính toán của giá trị chất lượng dịch vụ được mô tả trong source code của chương trình Do đó, mỗi khi công thức này cần thay đổi (ví dụ: dịch vụ web tổ hợp có giá trị chất lượng dịch vụ bằng tích thay vì tổng các giá trị dịch vụ web thành phần), người dùng cần sửa lại công thức trong source code, chạy lại chương trình để tổ hợp dịch vụ

Hệ thống viết lại số hạng

Nguyên nhân dẫn tới nhược điểm của phương pháp On-The-Fly là không đặc tả được ràng buộc mềm (giá trị chất lượng dịch vụ) đi kèm với các yêu cầu về ràng buộc cứng (input và output) Bằng cách sử dụng hệ thống viết lại luật, tất cả các đặc điểm của một dịch vụ web có thể được mô tả kết hợp lại với nhau

Ví dụ: đặc tả dịch vụ web 1: A, QoS (x) -> B, QoS(x+2)

Quá trình tổ hợp các dịch vụ web của hệ thống viết lại luật (Hình 5-3) tương tự như phương pháp On-The-Fly:

Hình 5-3: Tổ hợp các dịch vụ web sử dụng phương pháp viết lại số hạng

Giá trị chất lượng dịch vụ được mô tả đi kèm với các ràng buộc cứng Tuy nhiên, phương pháp viết lại số hạng cho phép mô tả cả công thức tính vào đặc tả này Bằng cách sử dụng các phép thay thế, chương trình chọn được dịch vụ web phù hợp tại mỗi trạng thái của việc tổ hợp và tìm ra được dịch vụ tổ hợp mong muốn

Với đặc tả trên, các thay đổi trên ràng buộc mềm cũng như ràng buộc cứng đều có thể được cập nhật dễ dàng mà không cần phải thực thi lại chương trình Ví dụ: nếu công thức tính giá trị chất lượng dịch vụ tổ hợp bằng trung bình cộng các dịch vụ thành phần thì dịch vụ web 1 có thể được mô tả: A, QoS (x), num(n) -> B, QoS((x+2)*n/(n+1)), num(n+1)

5.2 So sánh các dịch vụ tổ hợp

Các kết quả thí nghiệm được thực hiện trên một tập các dịch vụ web giống nhau với cùng một yêu cầu về dịch vụ web cần tổ hợp đối với các ràng buộc cứng Khi thực hiện trên ràng buộc mềm, các giá trị QoS được gán ngẫu nhiên cho từng dịch vụ web với các hàm tính giá trị QoS của dịch vụ được tổ hợp từ các dịch vụ web đơn được xác định phù hợp với đặc điểm của loại QoS (Ví dụ: thời gian dịch vụ tổ hợp bằng tổng thời gian các dịch vụ thành phần, độ tin cậy được tính bằng tích các độ tin cậy của các dịch vụ đơn, …) Các phương pháp tổ hợp được so sánh khi tổ hợp 20 dịch vụ web Các dịch vụ web được tổ hợp trong mỗi nhóm được thực hiện theo 10 kịch bản khác nhau và lấy giá trị trung bình để có thể so sánh giữa các phương pháp

Thông tin về 20 dịch vụ web du lịch được khảo sát:

ID Tên Đặc tả Input Output

1 CityCityArrowFigure Trả về hướng dẫn đi đường trên bản đồ để chỉ ra đường đi giữa 2 thành phố

2 City2CityRouteFinder Sử dụng trí tuệ nhân tạo để trả về đường đi tối ưu nhất giữa 2 thành phố

3 AccomodationInfo Trả về thông tin phòng ốc, khách sạn, nhà hàng,

… trong một thành phố của đất nước cho trước

4 CityCountryInfo Trả về thông tin khách sạn của một thành phố trong đất nước và cả thông tin về các tiện ích thể thao

5 HotelInfo Trả về thông tin khách sạn ở một thành phố của đất nước cho trước

6 ActivityNationalPark Trả về thông tin công viên quốc gia phù hợp với một hoạt động cho trước

7 ActivityRuralArea Trả về thông tin vùng nông thôn phù hợp với một hoạt động cho trước

8 ActivityTown Trả về thông tin thị trấn phù hợp với một hoạt động cho trước

9 ActivityUrbanArea Trả về thông tin thành phố phù hợp với một hoạt động cho trước

10 AdventureUrbanArea This service returns urban area for adventure

11 ActivityBeach Trả về thông tin bãi biển phù hợp với một hoạt động cho trước

12 ActivityCity Trả về thông tin thành phố phù hợp với một hoạt động cho trước

13 ActivityDestination Trả về thông tin điểm đến phù hợp với một hoạt động cho trước

14 ActivityFamilyDestination Trả về điểm đến cho gia đình phù hợp với hoạt động cho trước

15 ActivityFarmland Trả về thông tin nông Activity Farmland

57 trại phù hợp với hoạt động cho trước

16 CityAccommodation Trả về thông tin phòng ốc ở một thành phố cho trước

17 CityBedAndBreakfast Trả về thông tin về giường và bữa ăn sáng của một thành phố cho trước

18 CityWeatherfront Trả về nơi có không khí lạnh của một thành phố cho trước

19 CityWeatherSystem Trả về hệ thống thời tiết của một thành phố cho trước

20 HikingTown Trả về thị trấn phù hợp với việc đi bộ đường dài

Thông tin về các dịch vụ web cần tổ hợp:

ID Đặc tả Input Output Mục đích

1 Trả về hướng dẫn đi đường trên bản đồ để chỉ ra đường đi giữa 2 thành phố

City, City2 ArrowFigure Kiểm tra khi dịch vụ web đã tồn tại và nằm đầu tiên

2 Trả về thị trấn phù hợp với việc đi bộ đường dài

Hiking Town Kiểm tra khi dịch vụ web đã tồn tại và nằm cuối cùng

3 Trả về thông tin về các bãi biển trong thành phố phù hợp với hoạt động cho trước

Activity Beach, City Tổ hợp 2 dịch vụ web có cùng tập input có 1 thành phần nằm sát nhau

4 Trả về thông tin về tất cả các đường đi giữa 2 thành phố và đường đi tối ưu sử dụng trí tuệ nhân tạo

City, City2 ArrowFigure, Map Tổ hợp 2 dịch vụ web có cùng tập input có 2 thành phần

5 Trả về thông tin về thị trấn có bãi biển phù hợp với hoạt động cho trước và việc đi bộ đường dài

Activity, Hiking Beach, Town Tổ hợp 2 dịch vụ web có tập input và output hoàn toàn khác nhau

6 Trả về thông tin vùng nông thôn có công viên quốc gia phù hợp với một hoạt động cho trước

Tổ hợp 2 dịch vụ web có cùng tập input có 1 thành phần nằm sát nhau

7 Trả về thông tin về phòng ốc, giường, bữa ăn sáng và hệ thống thời tiết ở một thành phố cho trước

Tổ hợp 3 dịch vụ web có cùng tập input

8 Trả về thông tin về phòng ốc, khách sạn, tiện ích thể thao của một thành phố thuộc đất nước cho trước

Tổ hợp 3 dịch vụ web có tập input khác nhau

9 Trả về thông tin về thành phố có bãi biển phù hợp với hoạt động cho trước và thời tiết ở thành phố đó

Tổ hợp 3 dịch vụ web mà output của dịch vụ web này làm input của dịch vụ kia

10 Sử dụng trí tuệ nhân tạo để trả về đường đi tối ưu nhất giữa 1 thành phố với một thành phố phù hợp với một hoạt động cho trước

Activity, City2 Map Tổ hợp 2 dịch vụ web mà output của dịch vụ web này làm một trong những input của dịch vụ kia

Kết quả so sánh giữa các phương pháp:

Loại ràng buộc Tạo ra mọi cách tổ hợp On-The-Fly Viết lại số hạng

Thời gian (s) Thời gian (s) Thời gian (s)

Phương pháp sử dụng hệ thống viết lại số hạng để tổ hợp các dịch vụ web có nhiều ưu điểm về mặt chức năng so với các phương pháp tổ hợp hiện nay:

- Cho phép các dịch vụ web có thể thay đổi về ràng buộc cứng, ràng buộc mềm trong quá trình tổ hợp

- Cho phép thêm vào, xóa bớt số lượng các dịch vụ web đơn mà không phải chạy lại chương trình

- Thời gian thực thi việc tổ hợp nhanh hơn các phương pháp khác ở cả 2 trường hợp dựa trên ràng buộc cứng hoặc kết hợp cả ràng buộc cứng và ràng buộc mềm

Ngày đăng: 09/09/2024, 15:53

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Hu, Yan, and Hui Wang. “Constraints in web services composition.” Wireless Communications, Networking and Mobile Computing, 2008. WiCOM'08. 4th International Conference on. IEEE, 2008: 1-4 Sách, tạp chí
Tiêu đề: Constraints in web services composition.” "Wireless Communications, Networking and Mobile Computing, 2008. WiCOM'08. 4th International Conference on. IEEE
[2] Nikola Milanovic, Miroslaw Malek. “Current Solutions for Web Service Composition.” IEEE Internet Computing, Volume 8(6), 2004: 51-59 Sách, tạp chí
Tiêu đề: Current Solutions for Web Service Composition.” "IEEE Internet Computing, Volume 8(6)
[4] Rostami, Narges Hesami, Esmaeil Kheirkhah, and Mehrdad Jalali, “Web Services Composition Methods and Techniques: A Review”, International Journal of Computer Science, Engineering & Information Technology, vol. 3(6), 2013 Sách, tạp chí
Tiêu đề: Web Services Composition Methods and Techniques: A Review
[5] J. Sun, Y. Liu, J. S. Dong, G. Pu, and T. H. Tan. “Model-based methods for linking web service choreography and orchestration.” APSEC, 2010: 166–175 Sách, tạp chí
Tiêu đề: Model-based methods for linking web service choreography and orchestration.” "APSEC
[6] H. Foster, S. Uchitel, J. Magee, and J. Kramer. “Ws-engineer: A model-based approach to engineering web service compositions and choreography.” Test and Analysis of Web Services, 2007:87–119 Sách, tạp chí
Tiêu đề: Ws-engineer: A model-based approach to engineering web service compositions and choreography.” "Test and Analysis of Web Services
[7] Antonio Bucchiarone and Stefania Gnesi. “A Survey on Services Composition Languages and Models.” Proceedings of International Workshop on Web Services Modelling and Sách, tạp chí
Tiêu đề: A Survey on Services Composition Languages and Models.”
[8] Wen-Li Dong, Hang Yu, and Yu-Bing Zhang. “Testing BPEL-based Web Service Composition Using High-level Petri Nets.”Proceedings of the 10th IEEE International, 2006: 441-444 Sách, tạp chí
Tiêu đề: Testing BPEL-based Web Service Composition Using High-level Petri Nets.” "Proceedings of the 10th IEEE International
[9] Soheil Hassas Yeganeh, Jafar Habibi, Habib Rostami, and Hassan Abolhassani. “Semantic web service composition testbed.”Computers and Electrical Engineering, vol. 36(5), 2010: 805–817 Sách, tạp chí
Tiêu đề: Semantic web service composition testbed.” "Computers and Electrical Engineering, vol. 36(5)
[10] Yu Qing-mei, Wang Lan and Huang Dong-mei. “Fishery Web Service Composition Method Based on Ontology.” Journal ofIntegrative Agriculture, vol. 11(5), 2012: 792–799 Sách, tạp chí
Tiêu đề: Fishery Web Service Composition Method Based on Ontology.” "Journal of "Integrative Agriculture, vol. 11(5)
[11] Guisheng Fan, Huiqun Yu, Liqiong Chen, and Dongmei Liu. “Petri net based techniques for constructing reliable servicecomposition.” The Journal of Systems and Software, vol. 86(4), 2013: 1089-1106 Sách, tạp chí
Tiêu đề: Petri net based techniques for constructing reliable service composition.” "The Journal of Systems and Software, vol. 86(4)
[12] F. Leymann and W. Altenhuber. “Managing Business Processes as an Information Resource, vol. 33(2).” IBM System Journal, 1994:326–348 Sách, tạp chí
Tiêu đề: Managing Business Processes as an Information Resource, vol. 33(2).” "IBM System Journal
[13] Lin Li, Ming Cheng, Yong Xu, GuoQing Wu and Meng Ting Yuan. “BPEL-basedWeb Service Composition and Case Study.”Journal of simulation, vol. 2(4), 2014: 231-233 Sách, tạp chí
Tiêu đề: BPEL-basedWeb Service Composition and Case Study.” "Journal of simulation, vol. 2(4)
[14] Furkh Zeshan and Radziah Mohamad. “Semantic Web Service Composition Approaches: Overview and Limitations.”International Journal on New Computer Architectures and Their Applications (IJNCAA), vol. 1(3), 2011: 640-651 Sách, tạp chí
Tiêu đề: Semantic Web Service Composition Approaches: Overview and Limitations.” "International Journal on New Computer Architectures and Their Applications (IJNCAA), vol. 1(3)
[16] Rachid Hamadi and Boualem Benatallah. “A Petri Net-based Model for Web Service Composition.” Proceedings of the 14th Australasian database conference, 2003: 191-200 Sách, tạp chí
Tiêu đề: A Petri Net-based Model for Web Service Composition.” "Proceedings of the 14th Australasian database conference
[17] Plaisted, David A. Equational Reasoning and Term Rewriting Systems. New York: Oxford University Press, 1993 Sách, tạp chí
Tiêu đề: Equational Reasoning and Term Rewriting Systems
[18] Franz Baader and Tobias Nipkow. Term rewriting and all that. Cambridge: Cambridge University Press, 1998 Sách, tạp chí
Tiêu đề: Term rewriting and all that
[19] Rina Dechter, Judea Pearl. “Generalized best-first search strategies and the optimality of A*.” Journal of the ACM (JACM) (Journal of the ACM), 1985: 505-536 Sách, tạp chí
Tiêu đề: Generalized best-first search strategies and the optimality of A*
[20] Felner, Ariel. “Dijkstra’s Algorithm versus Uniform Cost Search.” The Fourth International Symposium on Combinatorial Search Sách, tạp chí
Tiêu đề: Dijkstra’s Algorithm versus Uniform Cost Search
[15] Anatoliy Gorbenko, Vyacheslav Kharchenko and Alexander Romanovsky. “On composing Dependable Web Services using Khác

HÌNH ẢNH LIÊN QUAN

Bảng 1.1: Ví dụ các dịch vụ web có sẵn - Luận văn thạc sĩ Khoa học máy tính: Áp dụng hệ thống viết lại số hạng để tổ hợp các dịch vụ Web
Bảng 1.1 Ví dụ các dịch vụ web có sẵn (Trang 15)
Bảng 1.2: Yêu cầu dịch vụ web cần tổ hợp của người dùng - Luận văn thạc sĩ Khoa học máy tính: Áp dụng hệ thống viết lại số hạng để tổ hợp các dịch vụ Web
Bảng 1.2 Yêu cầu dịch vụ web cần tổ hợp của người dùng (Trang 16)
Hình 1-2: Mô hình khi thêm dịch vụ mới - Luận văn thạc sĩ Khoa học máy tính: Áp dụng hệ thống viết lại số hạng để tổ hợp các dịch vụ Web
Hình 1 2: Mô hình khi thêm dịch vụ mới (Trang 18)
Bảng 1.4: Dữ liệu mô tả theo đề tài - Luận văn thạc sĩ Khoa học máy tính: Áp dụng hệ thống viết lại số hạng để tổ hợp các dịch vụ Web
Bảng 1.4 Dữ liệu mô tả theo đề tài (Trang 19)
Hình 2-1: Thế hệ đầu tiên của ngôn ngữ tổ hợp dịch vụ web - Luận văn thạc sĩ Khoa học máy tính: Áp dụng hệ thống viết lại số hạng để tổ hợp các dịch vụ Web
Hình 2 1: Thế hệ đầu tiên của ngôn ngữ tổ hợp dịch vụ web (Trang 26)
Hình 2-2: Sử dụng BPEL để tổ hợp các dịch vụ web - Luận văn thạc sĩ Khoa học máy tính: Áp dụng hệ thống viết lại số hạng để tổ hợp các dịch vụ Web
Hình 2 2: Sử dụng BPEL để tổ hợp các dịch vụ web (Trang 28)
Hình 2-3: Dịch vụ web tổ hợp được đặc tả sử dụng Web Components - Luận văn thạc sĩ Khoa học máy tính: Áp dụng hệ thống viết lại số hạng để tổ hợp các dịch vụ Web
Hình 2 3: Dịch vụ web tổ hợp được đặc tả sử dụng Web Components (Trang 30)
Hình 2-4 mô tả dịch vụ web tổ hợp và các WSCAs cho trường hợp  tổ hợp 4  dịch vụ: ăn ở, vé máy bay, tour du lịch và thuê xe hơi - Luận văn thạc sĩ Khoa học máy tính: Áp dụng hệ thống viết lại số hạng để tổ hợp các dịch vụ Web
Hình 2 4 mô tả dịch vụ web tổ hợp và các WSCAs cho trường hợp tổ hợp 4 dịch vụ: ăn ở, vé máy bay, tour du lịch và thuê xe hơi (Trang 30)
Hình 2-5 mô tả việc kết hợp ba dịch vụ web A, B và C lại với nhau theo trình  tự: A được thực hiện nối tiếp với khối dịch vụ tổ hợp B song song với C - Luận văn thạc sĩ Khoa học máy tính: Áp dụng hệ thống viết lại số hạng để tổ hợp các dịch vụ Web
Hình 2 5 mô tả việc kết hợp ba dịch vụ web A, B và C lại với nhau theo trình tự: A được thực hiện nối tiếp với khối dịch vụ tổ hợp B song song với C (Trang 32)
Bảng 2.1: Bảng so sánh các phương pháp tổ hợp dịch vụ web - Luận văn thạc sĩ Khoa học máy tính: Áp dụng hệ thống viết lại số hạng để tổ hợp các dịch vụ Web
Bảng 2.1 Bảng so sánh các phương pháp tổ hợp dịch vụ web (Trang 34)
Hình 3-1: Ví dụ minh họa tính khả rút gọn - Luận văn thạc sĩ Khoa học máy tính: Áp dụng hệ thống viết lại số hạng để tổ hợp các dịch vụ Web
Hình 3 1: Ví dụ minh họa tính khả rút gọn (Trang 39)
Hình 3-2: Ví dụ minh họa các vị trí của term  Pos(t) = { ?, 1, 11, 2, 21, 211, 212, 2111} - Luận văn thạc sĩ Khoa học máy tính: Áp dụng hệ thống viết lại số hạng để tổ hợp các dịch vụ Web
Hình 3 2: Ví dụ minh họa các vị trí của term Pos(t) = { ?, 1, 11, 2, 21, 211, 212, 2111} (Trang 40)
Hình  3-6: Các bước thực hiện của hàm Normal(r,t) - Luận văn thạc sĩ Khoa học máy tính: Áp dụng hệ thống viết lại số hạng để tổ hợp các dịch vụ Web
nh 3-6: Các bước thực hiện của hàm Normal(r,t) (Trang 48)
Hình 4-2: Nội dung file XML mô tả dịch vụ vận chuyển - Luận văn thạc sĩ Khoa học máy tính: Áp dụng hệ thống viết lại số hạng để tổ hợp các dịch vụ Web
Hình 4 2: Nội dung file XML mô tả dịch vụ vận chuyển (Trang 55)
Hình 5-1: Tổ hợp các dịch vụ web bằng cách tạo ra mọi cách tổ hợp có thể có - Luận văn thạc sĩ Khoa học máy tính: Áp dụng hệ thống viết lại số hạng để tổ hợp các dịch vụ Web
Hình 5 1: Tổ hợp các dịch vụ web bằng cách tạo ra mọi cách tổ hợp có thể có (Trang 63)
Hình 5-3. Tập các dịch vụ web đơn được đọc vào và dựa vào đó để xây dựng  một  sơ đồ biểu diễn mọi  cách  tổ hợp từ các dịch  vụ này - Luận văn thạc sĩ Khoa học máy tính: Áp dụng hệ thống viết lại số hạng để tổ hợp các dịch vụ Web
Hình 5 3. Tập các dịch vụ web đơn được đọc vào và dựa vào đó để xây dựng một sơ đồ biểu diễn mọi cách tổ hợp từ các dịch vụ này (Trang 64)
Hình 5-3: Tổ hợp các dịch vụ web sử dụng phương pháp viết lại số hạng. - Luận văn thạc sĩ Khoa học máy tính: Áp dụng hệ thống viết lại số hạng để tổ hợp các dịch vụ Web
Hình 5 3: Tổ hợp các dịch vụ web sử dụng phương pháp viết lại số hạng (Trang 66)
w