Các phương pháp sử dụng role trong phát triển phần mềm

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Mô hình tương tác dựa trên role trong hệ đa agent Luận văn ThS. Công nghệ thông tin 1 01 10 (Trang 41 - 102)

Những nghiên cứu đề cập trên đây đã chứng tỏ rằng role được được sử dụng theo nhiều cách khác nhau với những mục đích khác nhau như cơng cụ mơ hình, phương pháp tương tác hay công cụ thiết kế…Vấn đề chính là trong những ứng dụng này, bản chất của role vẫn chưa được thể hiện đầy đủ và vẫn chưa phát triển được một cơ chế thực sự để quản lý, sử dụng lại role. Role trong các phương pháp trên còn rất nhập nhằng và trừu tượng. Hơn nữa, role mới chỉ được hiểu là kỹ thuật để giải quyết một khía cạnh hoặc một pha của q trình phát triển phần mềm truyền thống như quản lý, thiết kế, mơ hình…Do đó, role trở nên manh mún, khơng kết dính và thống nhất. Vấn đề đặt ra là làm thế nào để tạo được một mơ hình role thống nhất để có thể áp dụng cho tồn bộ vịng đời phát triển phần mềm.

2.2.2. Role trong phát triển phần mềm hướng đối tượng

Qua phần khảo sát một số phương pháp phát triển phần mềm dựa trên role, chúng ta thấy role đã được sử dụng rất phổ biến trong các phương pháp phát triển phần mềm hướng đối tượng.

Năm 1995, Reenskaug [40] áp dụng role để mơ tả các q trình kỹ nghệ phần mềm hướng đối tượng. Một role trong một đặc tả đối tượng được gọi là một kiểu đối tượng. Kiểu đối tượng này là một đặc tả của một tập các đối tượng có các thuộc tính cơng cộng giống nhau. Tất cả các đối tượng phục vụ cùng một mục đích trong cấu trúc các đối tượng cộng tác trong một hoàn cảnh nhất định được coi là đóng cùng một role. Phương pháp này nhấn mạnh vào mơ hình role chứ không phải role và giới thiệu role một cách trực quan. Vấn đề phân tách mối quan tâm là điều chủ yếu mà mơ hình role này xem xét. Họ đã chỉ ra một áp dụng hay của mơ hình role trong việc mơ tả các q trình kỹ nghệ.

Martin Fowler [25] xây dựng phương pháp hướng đối tượng của mình dựa vào các hành vi giống nhau của một nhóm đối tượng. Tất nhiên không phải mọi đối tượng đều giống nhau hết nhưng chắc chắn tồn tại những hành vi giống nhau (các hành vi tương tự này nhóm lại thành cụm hành vi). Thoạt tiên, điều này có vẻ giống như sự thừa kế cổ điển nhưng thực tế lại không phải vậy. Một đối tượng có thể

thuộc nhiều cụm hành vi khác nhau. Ví dụ, một người có thể vừa là khách hàng lại vừa là đại lý. Họ có những hành vi chung trong nhóm khách hàng, đồng thời lại có những hành vi thuộc nhóm đại lý. Role chính là cụm các hành vi giống nhau của một nhóm đối tượng

Năm 2000, Bäumer và các đồng sự đã đề xuất một cách áp dụng role khác trong hệ hướng đối tượng trong đó role được coi như một mẫu phát triển “role object” [6]. Phương pháp này mơ hình một đối tượng dưới dạng nhiều role object khác nhau. Các role object này có thể được thêm vào hoặc bỏ bớt khỏi đối tượng gốc (core object) một cách tự động. Cấu trúc gồm đối tượng gốc và các role object được gọi là một subject. Một subject thường đảm nhận vài role (tức là gồm nhiều role object) và ngược lại, một role object có thể được nhiều subject đảm nhận. Sở dĩ có điều này bởi trên thực tế có thể có hai khách hàng khác nhau lần lượt đóng vai trị người vay và nhà đầu tư. Tuy nhiên, cả hai vai trò nhà đầu tư và người vay này đều có thể được đảm nhiệm bởi chỉ một đối tượng khách hàng.

Một client tương tác với role và các role object theo cách:

 Một client có thể mở rộng các đối tượng gốc với các role. Chúng mô tả các role được yêu cầu bằng các đối tượng đặc tả.

 Mỗi khi client muốn làm việc với đối tượng gốc theo một role nào đó, nó sẽ yêu cầu role tới đối tượng gốc. Nếu đối tượng gốc đang đảm nhiệm role này, nó sẽ trả về cho client. Nếu không, một lỗi được ném ra. Đối tượng gốc không bao giờ tự tạo ra các role object.

Phương pháp này cung cấp cho chúng ta một định hướng khá tốt để thiết kế một hệ đối tượng với khái niệm role. Điều này giúp chúng ta sử dụng lại khái niệm role ở mức mẫu thiết kế. Ngoài ra, một ưu điểm nữa của phương pháp này là role có thể được phát triển dễ dàng và độc lập với nhau, role object có thể được thêm vào hoặc bỏ đi một cách linh động trong thời gian chạy. Ngoài ra, ứng dụng phát triển với phương pháp này cũng được phân tách rõ ràng hơn nhờ sự phân chia rạch ròi giữa các thành phần và role của nó. Tuy nhiên, phương pháp này cũng tồn tại một

số nhược điểm như: các client trở nên phức tạp hơn do phải kiểm tra xem đối tượng có đảm nhận role yêu cầu không, phải mở rộng đối tượng gốc để nó có thể đảm nhiệm được role…Hơn nữa, việc duy trì ràng buộc giữa các role là khá khó khăn.

Trong hệ hướng đối tượng, role đặc biệt được sử dụng nhiều trong UML. Có ba định nghĩa khác nhau về role trong UML [42]:

(1) Role là tên các điểm cuối liên kết : rolename là tên của các vị trí của các quan hệ

(2) Role là các thành phần tham gia cộng tác (slots in collaborations) (3) Role là các lớp động (dynamic classes)

Khái niệm (1) là sự kế thừa của lược đồ quan hệ thực thể. Cơ sở của định nghĩa (1) rất đơn giản : để xác định duy nhất một role, mỗi điểm cuối của một liên kết (giống như mỗi ví trí của một quan hệ trong lược đồ quan hệ thực thể) có thể được gán một rolename và điểm cuối đó được coi là một role – association ends role. Trong khi đó, khái niệm (2) kế thừa các phương pháp hướng đối tượng như OORAM [43] coi một phân lớp (classifier) là một mô tả đầy đủ của các thể hiện (instance) còn role phân lớp là một mơ tả các tính năng cần thiết trong một cộng tác cụ thể, tức là một role phân lớp là một hình chiếu hoặc một góc nhìn của một phân lớp. Định nghĩa (3) được coi là một cách nhìn về role thường thấy trong các phương pháp. Trong đặc tả UML, người ta cịn có nhiều cách sử dụng khái niệm role khác nhau, chẳng hạn role trong trong lược đồ use case hoặc trong biểu đồ trạng thái. Tuy nhiên, những cách sử dụng này đều chỉ là các ví dụ cụ thể của ba định nghĩa đã nêu ở trên.

Khi nghiên cứu kỹ hơn, Steimann [44] nhận thấy các định nghĩa role trong UML ban đầu có rất nhiều vấn đề. Steimann đã đưa ra một số cải tiến để khái niệm role trong UML dễ dùng, đơn giản hơn [43]:

 Lớp giao diện (Interface) và role phân lớp được gộp lại thành một lớp mới có tên Role.

 Liên kết giữa các role phân lớp và phân lớp cơ sở của nó được thay thế bởi một mối quan hệ mới, tên là sản sinh (populates). Quan hệ này kết nối các lớp với role mà thể hiện của nó đảm nhận.

 Điểm cuối liên kết kết nối với role một cách độc quyền, do đó, khơng cần gán tên role cho các điểm cuối liên kết. Nếu có, tên này phải giống như role đã kết nối. Mọi role phải là duy nhất trong một liên kết, tức là khơng có hai điểm cuối của một liên kết có cùng một tên.

 Siêu lớp AssociationEndRole, AssociationRole, Association Generalization được thay thế bởi association overloading.

2.3. Role trong hệ đa agent

2.3.1. Mơ hình role

Như đã trình bày ở phần trước, trong phương pháp hướng đối tượng, role được sử dụng để chỉ một tập hành vi mà một đối tượng có thể áp đặt lên đối tượng khác để làm thay đổi khả năng cũng như hành vi của đối tượng đó. Một số khác thì xem role là một tập các đối tượng hoặc thực thể để nhấn mạnh sự tương đồng giữa role trong chương trình máy tính và trong thế giới thực. Khi áp dụng role vào hệ đa agent, do bản chất của Agent cũng là các đối tượng nên nhiều phương pháp đã kế thừa lại các phương pháp hướng đối tượng và phát triển thêm một số tính năng liên quan đến tương tác. Tuy nhiên, các phương pháp này chưa thể hiện được tính phản ứng cũng như chủ động của Agent. Vì vậy, người ta đã đề xuất ra nhiều cách mơ hình role dành riêng cho hệ đa agent.

Trong số các phương pháp mơ hình role, một số mơ hình role liên quan các dịch vụ của Agent như phương pháp AALADIN [22], ROPE [7]…AALAADIN coi role là sự thể hiện trừu tượng của các dịch vụ Agent trong khi đó phương pháp ROPE định nghĩa role dưới dạng một tập các quyền hạn và dịch vụ. Tương tác được mơ hình bởi đồ thị dịch vụ.

Cách thức mơ hình role phổ biến hơn là dưới dạng các trách nhiệm, quyền hạn, nghĩa vụ, bổn phận…Phương pháp GAIA [51] mơ hình role dưới dạng tập hợp các trách nhiệm (responsibility), quyền hạn (permission), hoạt động (activity) và giao thức (protocol). Tương tác giữa các Agent theo phương pháp GAIA sẽ được điều khiển bởi các giao thức. Yu&Schmid [52] lại đề xuất mơ hình role dưới dạng các quyền và nghĩa vụ. Role cũng được tiếp cận dưới dạng khả năng và trách nhiệm như phương pháp của Haibin Zhu [55]. Phương pháp của Fasli [21] thì định nghĩa role là tập các nghĩa vụ, quyền lợi và cam kết xã hội. Phương pháp BRAIN là một phương pháp đa tầng định nghĩa role bằng các tài liệu XML mô tả role như một tập các khả năng và hành vi.

Tóm lại, role có thể được mơ hình theo nhiều cách khác nhau song nói chung mọi định nghĩa đều muốn thể hiện role ở hai khía cạnh quan trọng nhất. Thứ nhất là những khả năng mà role có thể cung cấp cho Agent đảm nhận nó và có thể được hiểu là các quyền hạn, hoạt động, dịch vụ hay quyền lợi… Thứ hai là những việc role phải thực hiện, xử lý đối với các thành phần bên ngồi, được mơ tả dưới dạng các trách nhiệm, nghĩa vụ…

Theo quan điểm của nhóm Zambonelli et al. [10], role được định nghĩa như sau:

―Role là tập các khả năng, hành vi mong đợi và tri thức mà agent có thể dùng đến khi cần‖.

Các khả năng của một role là tập các hành động mà một agent đảm nhận role đó có thể thực hiện để hồn thành nhiệm vụ của mình. Hành vi được mong đợi là tập các sự kiện mà agent phải quản lý. Điều này dẫn đến hai cái nhìn khác nhau về role: nhìn từ phía mơi trường, role áp đặt các hành vi đã được xác định lên các Agent đảm nhận nó; nhìn từ quan điểm ứng dụng, role cung cấp một tập khả năng mà Agent có thể sử dụng để thực hiện nhiệm vụ của mình.

Hình 2.1. Mơ hình tương tác dựa trên role

Với định nghĩa role như trên, tương tác được mơ hình bởi một cấu trúc ba tầng (Hình 2.1):

 Tầng ứng dụng: biểu diễn bởi các Agent .

 Tầng role: Sử dụng role để cho phép tương tác giữa các Agent với nhau và giữa Agent với môi trường.

 Tầng môi trường: Đây là tầng thấp nhất, có khả năng áp đặt các chính sách cục bộ lên tương tác giữa Agent với Agent và giữa Agent với tài nguyên hệ thống.

Tương tác giữa hai agent có thể được biểu diễn bởi cặp (hành động, sự kiện). Khi một Agent muốn thực hiện một tương tác nào đó, nó chọn thực hiện một trong các hành động có thể của mình. Hành động này sau đó sẽ được chuyển thành sự kiện tương ứng để gửi tới Agent nhận. Tại đây, Agent nhận sẽ xem sự kiện có thuộc

quyền kiểm sốt của nó hay khơng. Nếu có Agent sẽ phát động một hành động để đáp trả, ngược lại sẽ đưa ra cảnh báo lỗi.

Qua cách mơ hình role, chúng ta nhận thấy một số tính chất nổi bật của role như sau:

Role bao gói tất cả các thông tin và khả năng cần thiết để tương tác:

Agent đảm nhận role không cần phải biết chi tiết về môi trường thực thi hiện tại cũng như cách thức thực hiện tương tác trong mơi trường đó.

Khả năng Hành vi Agent Role Khả năng Hành vi Agent Role Nền tương tác Tầng môi trường Tầng role Tầng ứng dụng

Agent chỉ có một nhiệm vụ duy nhất là đăng ký để đảm nhận một role và sử dụng tất cả những gì mà role cung cấp. Khi không cần nữa, Agent lại liên hệ với Agent quản lý role để được giải phóng khỏi role hiện tại.

Role chỉ là tạm thời: Một Agent có thể chỉ đảm nhận role trong một

khoảng thời gian hữu hạn hoặc trong một ngữ cảnh cụ thể nào đó.

Role là tổng quát: Tức là role không gắn chặt với một ứng dụng cụ thể nào.

Nó biểu diễn các đặc trưng chung chung có thể được sử dụng trong nhiều ứng dụng khác nhau.

Role liên quan mật thiết tới ngữ cảnh: Mỗi mơi trường có thể áp đặt các

quy tắc, chính sách cục bộ lên role. Mơi trường cũng có thể cung cấp cho role những khả năng rất riêng và chỉ được sử dụng trong mơi trường đó. Những tính chất trên tạo cho các phương pháp dựa trên role vừa mang tính khái qt đồng thời có thể phát triển theo yêu cầu cục bộ. Role cũng nâng cao tính sử dụng lại của phần mềm do phần mềm sau có thể sử dụng những role đã phát triển hoàn thiện của những phần mềm trước đó như các mẫu thiết kế. Điểm đáng lưu ý hơn cả là role cho phép tách những vấn đề về tương tác khỏi các vấn đề về thuật

toán. Điều này khiến cho việc phát triển agent và role có thể độc lập nhau về mặt

thời gian cũng như phương pháp, làm tăng khả năng phân rã và do đó làm đơn giản hóa q trình phát triển hệ thống.

2.3.2. So sánh role trong hệ đa agent và hướng đối tượng

Qua tìm hiểu về mơ hỉnh role trong các phương pháp hướng đối tượng cũng như hướng agent, chúng ta thấy role trong hai cách tiếp cận này có một số điểm giống cơ bản sau đây:

Role đã bao gói tồn bộ khả năng hoạt động thực sự của Agent cũng như đối tượng: Việc phát triển role có thể được thực hiện độc lập với phát triển

hay các thành phần (component) trong các phương pháp hướng đối tượng và hướng agent.

Cả Agent và đối tượng đều có thể đảm nhận nhiều role khác nhau trong suốt quá trình tồn tại: Ngược lại, một role cũng có thể được nhiều đối

tượng hay agent đảm nhận cùng lúc.

Các dịch vụ, khả năng mà role cung cấp phải được quyết định trong thời gian thiết kế: Người phát triển role sẽ phải quyết định dịch vụ, khả năng

nào một role có thể cung cấp cho agent hay đối tượng từ pha thiết kế. Tuy nhiên, role trong hệ đa agent cũng có một số điểm khác biệt, tiến bộ hơn so với role trong hướng đối tượng:

Role trong hệ hướng đối tượng có phần phức tạp, khó dùng hơn: Chúng ta

có rất nhiều khái niệm role khác nhau trong UML làm cho việc xem xét hệ thống trở nên hết sức khó khăn. Ngược lại, với mỗi phương pháp dựa trên role trong hệ đa agent, role ln có một định nghĩa nhất quán, xuyên suốt.

Khác biệt liên quan đến điều khiển quyền truy cập tới role: Trong hệ

hướng đối tượng, người phát triển role sẽ phải quyết định và thiết đặt quyền truy cập đến role của mình. Ngược lại, trong hệ đa agent, việc thiết kế khả năng, dịch vụ của role là việc quan trọng hơn. Điều khiển truy cập role là công việc của người quản trị cục bộ, người phát triển role hồn tồn khơng phải quan tâm đến điều này.

Như vậy, có thể nói role là một phương pháp mơ hình hết sức hữu ích trong hệ đa agent. Role khơng chỉ góp phần phân hoạch cơng việc trong phát triển phần mềm mà cịn giúp mơ hình một cách đơn giản các thành phần hệ thống, giúp cho việc phát triển phần mềm nhanh chóng, hiệu quả đồng thời hệ thống hoạt động cũng năng suất hơn.

2.3.3. Một số phương pháp mơ hình tương tác dựa trên role

Có nhiều mơ hình tương tác dựa trên role đã được đề xuất, mỗi phương pháp có những ưu nhược điểm và phạm vi ứng dụng riêng. Trong phần này, chúng tôi

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Mô hình tương tác dựa trên role trong hệ đa agent Luận văn ThS. Công nghệ thông tin 1 01 10 (Trang 41 - 102)

Tải bản đầy đủ (PDF)

(118 trang)