Khuôn mẫu Mô tả
userAction Hoạt động của User display Action Hoạt động hiển thị systemAction Hoạt động của hệ thống displayPin Dữ liệu đầu ra
Với các thành phần trên, tác giả xây dựng các tập quy tắc để chuyển đổi từ mơ hình u cầu sang mơ hình nội dung, điều hướng, xử lý và trình bày với ngơn ngữ ATL, được trình bày chi tiết trong mục tiếp theo.
a) Quy tắc chuyển sang mơ hình nội dung
Mơ hình nội dung được tựđộng lấy từ các mơ hình u cầu bằng cách chuyển đổi Requirements2Content. Kết quả của mơ hình nội dung sau đó được tinh chế bằng cách thêm vào các lớp, các thuộc tính. Chuyển đổi từ mơ hình u cầu sang mơ hình nội dung được thực hiện theo quy trình sau:
Quy trình 5 bước thực hiện chuyển đổi mơ hình yêu cầu sang mơ hình nội dung Bước 1: Đọc mơ hình, lấy biểu đồ Use case.
Bước 2: Thực hiện các quy tắc chuyển đổi Requirement2Content
Bước 3: Đọc từng biểu đồ Activity Diagram
Bước 4: Mỗi biểu đồ Activity, lấy các CentralBufferNode, thực hiện chuyển đổi
CentralBufferNode2Class
Bước 5: Với mỗi CentralBufferNode, thu thập các Pin để chuyển đổi sang Property của ContentClass trong mơ hình Nội dung tương ứng.
Chuyển đổi từ mơ hình u cầu sang mơ hình nội dung được thực hiện dựa trên 06 quy tắc được trình bày chi tiết tại Bảng 2.4.
Bảng 2.4. Quy tắc chuyển đổitừ mơ hình u cầu sang mơ hình nội dung
Tên quy tắc Ý nghĩa của quy tắc
Quy tắc Model
2Package: Chuyển đổi Model của Requirement sang Package của mơ hình Content sao cho package.name =
model.name,package có thuộc tính elements kiểu Object (lớp cha của mọi class) chỉra các đối tượng có trong package, có thể bao gồm Class, Property, Association, Operation, ...
Rule Model 2Package {
from s: Requirement!Model to t: Content!Package ( name <- s.name, elements <- Sequence { s.packagedElement->select(x | x.oclIsTypeOf(Requirement!Actor))- >collect(x | thisModule.Actor2Class(x)), s.packagedElement- >select(x|x.oclIsTypeOf(Requirement!Activity)) ->iterate(e; res:Set(Requirement!CentralBufferNode) = Set {} | res->union( e.elements- >select(x|x.oclIsTypeOf(Require ment!CentralBufferNode))
Tên quy tắc Ý nghĩa của quy tắc ) )->collect(x | thisModule.CentralBufferNode2Class(x)), s.packagedElement- >select(x|x.oclIsTypeOf(Requirement!Generalization)) ->collect(x | thisModule.GeneralizationTransform(x)) } ) }
UseCase2Operation Thực hiện chuyển đổi operation.name = usecase.name
Actor2Class
Actor trong mơ hình Requirêmnt được chuyển đổi thành một ContentClass tương ứng, contentclass.name = actor.name, và contentclass.operations được chuyển đổi từ các usecase mà actor này có liên kết tới, thông qua quy tắc usecase2operation
Pin2Property Các Pin được chuyển đổi sang Property của ContentClass trong mơ hình Nội dung tương ứng
EntralBufferNode2Clas s
Thực hiện chuyển đổi class.name =
centralbuffernode.name trong mơ hình Nội dung
GeneralizationTransfor m
Chuyển đổi thành các quan hệtrên class tương ứng ở mơ hình Content
b) Quy tắc chuyển sang mơ hình điều hướng
Mơ hình điều hướng mơ tả luồng chuyển hướng tương ứng với hành động người sử dụng trong ứng dụng Web. Quá trình điều hướng được thể hiện bằng biểu đồ lớp, ngồi ra cịn có các nút, các liên kết, menu … Mục tiêu của mơ hình điều hướng là xác định khả năng chuyển hướng giữa các mục trong một trang Web hoặc chuyển từ trang này sang trang khác của ứng dụngWeb. Từ mơ hình u cầu được chuyển sang mơ hình điều hướng với quy trình sau:
Quy trình 6 bước thực hiện chuyển đổi mơ hình u cầu sang mơ hình điều hướng
Bước 1: Đọc mơ hình u cầu nguồn, lấy biểu đồ UseCase.
Bước 2: Thực hiện chuyển đổi Model2Package, createHome, Menu.
Bước3: Thực hiện quy tắc ProcessingUseCase2Process Class, BrowsingUseCase
2NavigationClass.
Bước 4: Chuyển đổi các liên kết ở mơ hình Requirement sang các liên kết ở mơ hình Navigation
Bước 5: Duyệt từng biểu đồ activity, nếu số lượng NavigationActions > 1, tạo một
Menu con cho Activity này, thông qua quy tắc CreateSubMenu.
Bước 6: Duyệt từng biểu đồ activity. Nếu activity > 1 navigationAction thực hiện quy tắc NavigationAction2AssociationWithMenu. Nếu activity chỉ có 1 navigationAction, thực hiện quy tắc NavigationAction2Association WithoutMenu
09 quy tắc thực hiện việc chuyển đổi từ mơ hình u cầu sang mơ hình điều hướng được thể hiện chi tiết tại bảng 2.5.
Bảng 2.5. Quy tắc chuyển đổitừ mơ hình u cầu sang mơ hình điều hướng
Tên quy tắc Mơ tả quy tắc
Model2Package: Chuyển đổi Model của
Requirement sang Package của mơ hình Navigation sao cho package.name = model.name,package, có thể bao gồm Home, menu, Assocication, , ... rule Model2Package { from s: Requirement!Model to t: Navigation!Package ( name <- s.name, elements <- Sequence { home, menu, s.packagedElement->select(x | x.oclIsTypeOf(Requirement!BrowsingUs eCase)) - >collect(e|thisModule.BrowsingUseCa se2NavigationClass(e)), s.packagedElement->select(x| x.oclIsTypeOf(Requirement!ProcessingU seCase)) - >collect(e|thisModule.ProcessingUseC ase2ProcessClass(e)), associationHome,
-- activity with > 1 navigation actions -> create activityMenu -> add associations from activityMenu ->
navigationActions.behavior.name s.packagedElement->select(x |
Tên quy tắc Mô tả quy tắc ->select(x|x.elements->select(y | y.oclIsTypeOf(Requirement!Navigat ionAction))->size() > 1) ->collect(x | thisModule.CreateSubMenu(x)), -- add associations to navigationActions, s.packagedElement->select(x | x.oclIsTypeOf(Requirement!Activity)) ->select(x | x.elements->select(y | y.oclIsTypeOf(Requirement!Navigat ionAction))->size() > 1) ->iterate(activity; res : Set(Requirement!Association) = Set {} | --iterate through activity.navigationActions res->union( activity.elements- >select(x | x.oclIsTypeOf(Requireme nt!NavigationAction)) ->collect(x | thisModule.Naviga tionAction2Associ ationWithMenu(x)) ) ), s.packagedElement->select(x | x.oclIsTypeOf(Requirement!Activity)) ->select(x | x.elements->select(x | x.oclIsTypeOf(Requirement!Navigati onAction))->size() = 1) ->iterate(activity; res : Set(Requirement!Association) = Set {} | --iterate through activity.navigationActions
Tên quy tắc Mô tả quy tắc res->union( activity.elements->select(x | x.oclIsTypeOf(Requirement! NavigationAction)) ->collect(x | thisModule.NavigationActio n2AssociationWithoutMenu( x)) ) ), -- extend 2 association s.packagedElement->select(x | x.oclIsTypeOf(Requirement!Extension)) ->collect(x | thisModule.Extend2Assocication(x)), -- included usecases 2 association s.packagedElement->select(x |
x.oclIsTypeOf(Requirement!Include)) ->collect(x |
thisModule.Include2Association(x)),
-- non-extend usecases and non-included usecases 2 association, connect to menu s.packagedElement->select(x | x.oclIsKindOf(Requirement!UseCase)) ->iterate(usecase; res : Set(Requirement!UseCase) = Set {} | If s.packagedElement->select(x | x.oclIsTypeOf(Requirement!Extensio n) or x.oclIsTypeOf(Requirement!Include) ) ->collect(x | x.source.name)- >includes(usecase.name) then res else res->including(usecase)
Tên quy tắc Mô tả quy tắc endif )->collect(x | thisModule.NonExtendOrIncludedUseCas e2Assocication(x)) } ), home: Navigation!Home ( name <- 'Home' ), menu: Navigation!Menu ( name <- 'HomeMenu' ), associationHome: Navigation!Association ( owner <- menu, target <- home ) } BrowsingUseCase2Navig ationClass
Thực hiện chuyển đổi BrowsingUseCase sang NavigationClass.
ProcessingUseCase2Proc essClass
Mỗi Web process use case từ mơ hình u cầu được ánh xạ tới lớp xửlý trong mơ hình điều hướng.
NonExtendUseCase2Asso
cication Tạo các liên kết với HomeMenu.
Extend2Assocication Chuyển liên kết Extend trên biểu đồ ca sử dụng thành Association.
Include2Association Chuyển liên kết Include trên biểu đồ ca sử dụng thành Association.
CreateSubMenu Tạo menu cho NavigationActions >1.
NavigationAction2Associ
ationWithMenu Tạo association với nguồn là Menu tương ứng.
NavigationAction2Associ
ationWithoutMenu Tạo association với nguồn không cùng Menu. c) Quy tắc chuyển sang mơ hình xử lý và trình bày
Như đã trình bày tại mục 2.3 về các quy tắc đã xây dựng để chuyển đổi từ mơ hình u cầu sang mơ hình xử lý và mơ hình trình bày. Tích hợp quy tắc, tác giả đã xây dựng công cụ MTO-Plugin để cải tiến, nâng cao hiệu quả chuyển đổi mơ hình của cơng cụ MagicUWE. Tuy nhiên, các quy tắc này được xây dựng bằng Java chưa phải
bằng ngôn ngữ chuyển đổi chuyên nghiệp. Hơn nữa, công cụ MagicUWE [71] khơng cịn được hỗ trợ bởi MagicDraw [86].
Để tiếp tục phát triển phương pháp UWE cho xây dựng ứng dụng web hướng mơ hình, tác giả sử dụng ATL đểđặc tả 06 quy tắc đã trình bày chi tiết tại mục 2.3 của luận án và bổ sung thêm các quy tắc chuyển đổi từ mơ hình u cầu sang mơ hình nội dung, điều hướng nhằm đảm bảo đầy đủ các quy tắc chuyển đổi từ mơ hình u cầu sang mơ hình nội dung, điều hướng, xử lý và trình bày theo phương pháp UWE. Nghiên cứu đã phát triển cơng cụ UWE-ATL tích hợp các quy tắc, cung cấp đầy đủ cách thức chuyển đổi mơ hình theo phương pháp UWE. Tổng quan phương pháp đề xuất của luận án được mơ tả tại hình 2.25.
Trong nội dung này, nghiên cứu sử dụng các metamodel đề xuất bởi UWE để biểu diễn các khía cạnh khác nhau của ứng dụng web. Phương pháp UWE là một cách tiếp cận kỹ thuật phần mềm nhằm mục đích bao qt tồn bộ vòng đời phát triển ứng dụng Web. Chuyển đổi mơ hình là cách tiếp cận trọng tâm của UWE. Trong đó, một mơ hình là một nguồn được chuyển đổi thành một mơ hình đích. UWE đưa ra 05 mơ hình đại diện cho những thành phần đặc trưng nhất của ứng dụng web [77]. Đặc biệt, các mơ hình được xác định giống như các meta model và các thành phần của mơ hình được biểu diễn bằng ngơn ngữ mơ hình hóa UML.
Tại mục 2.3 của luận án, đã giới thiệu 04 quy tắc chuyển đổi từ mơ hình u cầu sang mơ hình xử lý, tác giảđặc tả lại 04 quy tắc đó bằng ATL tương ứng với 05 quy tắc gồm: lazy rule OutputPin2Property; lazy rule InputPin2Parameter; lazy rule UserAction2ProcessClass; lazy rule SystemAction2ProcessClass; rule Requirement 2Process. Những quy tắc này thể hiện các bước xử lý dữ liệu của ứng dụng Web một cách đầy đủ và thống nhất.
Để chuyển đổi từ mơ hình u cầu sang mơ hình trình bày. Trong mục 2.3.2, tác giảđã đề xuất 02 quy tắc (D2G, P2E). Để mô tả các quy tắc theo ATL, tác giả chia thành 2 nhóm. Nhóm 1 gồm 05 quy tắc: Display2Form; Display2IteratedGroup; Display2 Page; Display2PresentationAlternatives; Display2PresentationGroup để chuyển đổi thành phần display action trong mơ hình u cầu, thành các thành phần tương ứng trong mơ hình trình bày. Chi tiết các thành phần được chuyển đổi thể hiện trong Bảng 2.6.
Bảng 2.6. Thành phần DisplayAction type và Prentation element
Display action type Thành phần giao diện tương ứng
Form InputForm
Group PresentationGroup
Alternatives PresentationAlternatives
Nhóm 2 gồm 06 quy tắc: DisplayPin2Image; DisplayPin2Media; DisplayPin2Text; InteractionPin2FileUpload; InteractionPin2TextInput; InteractionPin2Selection những quy tắc này chuyển đổi các pin thành các thành phần trong mơ hình giao diện tương ứng. Chi tiết các thành phần được chuyển đổi thể hiện trong Bảng 2.7:
Bảng 2.7.Các thành phần tương ứng với Pin type và giao diện
Pin Type Thành phần giao diện tương
ứng Display Pin Text Text Image Picture Media MediaObject Interaction Pin Text InputText Selection Selection File FileUpload
Như vậy, tác giảđã trình bày 15 quy tắc xây dựng mới để chuyển đổi từ mơ hình yêu cầu sang mơ hình nội dung và điều hướng, hoàn thiện 16 quy tắc phát triển từ bài báo đã công bố, được biểu diễn theo ATL. Với 31 quy tắc này, luận án đã hồn thiện xây dựng chuyển đổi từ mơ hình u cầu sang mơ hình nội dung, điều hướng, xử lý và trình bày với ngơn ngữ chuyển đổi mơ hình ATL. Các quy tắc được tích hợp để xây dựng cơng cụ UWE-ATL, được trình bày trong mục 2.4 của luận án.
2.4.3. Kết quả và thảo luận
Đểđánh giá các quy xây dựng được, tác giả áp dụng công cụ UWE-ATL vào bài tốn điển hình Music Portal https://uwe.pst.ifi.lmu.de/exampleMusicPortal.html), rất nhiều nghiên cứu trong lĩnh vực này đã sử dụng để thực nghiệm.
Mục tiêu của ví dụ là, chỉ ra cách sử dụng tất cả các thành phần mơ hình UWE, khi xây dựng các mơ hình ứng dụng web trên cơ sở các quy tắc chuyển đổi ATL. Từ mơ hình u cầu của cổng thơng tin âm nhạc, thông tin được chuyển tựđộng thành các mơ hình nội dung, điều hướng, xử lý và trình bày. Mơ hình yêu cầu bao gồm 2 thành phần cơ bản đó là các biểu đồ ca sử dụng và các biểu đồ activity. Hình 2.22 là biểu đồ ca sử dụng, mơ tả chức năng hệ thống MusicPortal. hình 2.23, cho thấy một biểu đồ hoạt động BuyAlbum được biểu diễn chi tiết, chính xác hơn của ca sử dụng BuyAlbum.
Biểu đồ Activity cho quy trình BuyAlbum [88]
Đểđánh giá các quy tắc ATL, tác giả sử dụng một case study trong bài toán Music Portal là BuyAlbum. Tác giảđã sử dụng biểu đồ usecase của MusicPortal và 01 biểu đồ Activity BuyAlbum, để thực nghiệm việc chuyển đổi sang các mơ hình: Nội dung, điều hướng, xử lý và trình bày, cụ thểnhư sau:
Mơ hình nội dung của ứng dụng web trong UWE khơng khác so với mơ hình nội dung cho phần mềm nói chung. Do đó, tác giả sử dụng các phần tử mơ hình UML tiêu chuẩn như các lớp, các thuộc tính, các liên kết… của mơ hình u cầu để chuyển thành mơ hình nội dung. Việc chuyển đổi sang mơ hình nội dung được thực hiện với mơ hình nguồn là biểu đồ UseCase, được thực hiện bởi các quy tắc chính như: Model2Package, Actor2Class, và UseCase2Operation, GeneralizationTransform:
Mơ hình nội dung của MusicPortal
Các yếu tốcơ bản trong mơ hình điều hướng là các nút điều hướng và các liên kết. Ngoài ra, những thông tin được cung cấp bởi các hành động trong mơ hình u cầu, như tìm kiếm, giao dịch của người dùng, cũng được sử dụng để chuyển đổi tạo các lớp điều hướng hoặc cấu trúc truy cập của mơ hình điều hướng. Trong case study BuyAlbum, quy tắc Model2Package tạo ra package có tên là MusicPortal, để chứa các đối tượng của mơ hình điều hướng. Quy tắc này sinh ra 2 lớp mơ hình điều hướng là Home, HomeMenu, và liên kết giữa HomeMenu và Home. BrowsingUseCase2 NavigationClass tạo ra navigationClassViewAblum từ browsingUseCase tương ứng. Đồng thời, quy tắc NonExtendOrIncludedUseCase2Assocication tạo ra navigation Link, nối ViewAlbumDetails tới HomeMenu. ProcessingUseCase 2ProcessClass sinh ra 2 processClass trong mơ hình từ 2 processingUseCase tương ứng. Các liên kết Extend trên biểu đồ UseCase, được chuyển thành các liên kết tương ứng trên biểu đồ Navigation (hình 2.25)
Với mơ hình xử lý, biểu đồ hoạt động, mơ tả hành vi của lớp xử lý (ProcessClass). Trong đó, User action thể hiện yêu cầu người dùng tương tác với hệ thống, System action mô tả các hành động được thực thi bởi hệ thống. Như vậy, các user action và system action trong mơ hình activity diagram chịu trách nhiệm cho quá trình xử lý dữ liệu trong ứng dụng Web. Trong khi đó, mơ hình luồng xử lý, thể hiện cho khía cạnh động của ứng dụng web. Do đó, mơ hình xửlý được chuyển đổi từ mơ hình u cầu với mỗi user action và system action trong mơ hình activity diagram được chuyển đổi sang một thành phần user action và system action tương ứng trong mơ hình xử lý với quy tắc Requirement2Package tạo package có tên là MusicPortal để chứa các đối tượng của mô hình xử lý. Quy tắc này thực hiện Requirement2Process, bằng việc sử dụng quy tắc UserAction2ProcessClass, để chuyển đổi thành process class, thể hiện cho nhiệm vụ lấy dữ liệu nhập vào từngười sử dụng, với các thuộc tính tương ứng là các Pin và phương thức BuyAlbum() và quy tắc StemAction2ProcessClass, thực hiện chuyển đổi system action với type là “confirmed” thành process class, để xử lý việc xác nhận lại với người sử dụng, trước khi thực hiện xử lý nghiệp vụ là BuyAlbumConfirmation() và InsufficentCreditMessage nếu với type là “NotConfirm” (hình 2.26)
Mơ hình xử lýcủa MusicPortal
Trong UWE profile, display action trong biểu đồ hoạt động đại diện cho thành phần hiển thị giao diện, để hiện thị hoặc nhận các trường thơng tin từngười sử dụng. Do đó, khi chuyển đổi từ mơ hình u cầu sang mơ hình trình bày, thành phần display action được chuyển đổi thành một thành phần chứa các phần tử giao diện (group element). Đồng thời, các thành phần pin của display action cũng được chuyển đổi thành các phân tử giao diện (UI element) như text, textinput … (hình 2.27)
Mơ hình trình bày của MusicPortal
Một ví dụ khác là ứng dụng AddressBook (https://uwe.pst.ifi.lmu.de/examples.html), đã được tác giải thử nghiệm bằng công cụ UWE-ATL. Kết quả chuyển đổi đã được tác giảđối chứng với công cụ MagicUWE, cụ thểnhư sau:
- Với ví dụ MusicPortal
Bảng 2.8. Kết quả chuyển đổi mơ hình Content, Process - ví dụ MusicPortal
Thành phần/công cụ Tiêu chí
Classes Attributes Operations
UWE- ATL Magic- UWE UWE- ATL Magic UWE UWE- ATL Magic UWE Content 4 6 3 2 3 0 Process 1 2 0 0 0 0
Bảng 2.9. Kết quả chuyển đổi mơ hình Navigation - ví dụ MusicPortal
Thành phần/cơng cụ Tiêu chí
NavigationClasses ProcessClass Links
UWE- ATL Magic UWE UWE- ATL Magic UWE UWE- ATL Magic UWE Navigation 3 2 2 2 4 2
Bảng 2.10. Kết quả chuyển đổi mơ hình Presentation - ví dụ MusicPortal Thành phần/cơng cụ Tiêu chí Classes Properties
UWE-ATL MagicUWE UWE-ATL MagicUWE
Presentation 2 2 6 5
- Với ví dụ AddressBook
Bảng 2.11. Kết quả chuyển đổi mơ hình Content, Process - ví dụ AddressBook
Thành phần/cơng cụ Tiêu chí
Classes Attributes Operations
UWE- ATL Magic UWE UWE- ATL Magic UWE UWE-ATL Magic UWE Content 2 5 7 7 4 0 Process 2 3 7 0 1 operations (7