Chuyển đổi từ mô hình yêu cầu sang mô hình nội dung

Một phần của tài liệu (Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình (Trang 49 - 51)

Mục tiêu của mô hình nội dung là xác định các khía cạnh cấu trúc và hành vi của ứng dụng Web. Ngoài các tính năng cấu trúc tĩnh (các thuộc tính và các liên kết) được tham chiếu trong các mô hình điều hướng, mô hình nội dung cũng bao gồm các tính năng hành vi động (hoạt động) được tham chiếu trong các mô hình xử lý.

Theo [1] mô hình nội dung được tự động lấy từ các mô hình yêu cầu bằng cách áp dụng các Requirements2Content (Hình 2.6). Kết quả của mô hình nội dung sau đó được tinh chế bởi nhà phát triển bằng cách thêm vào các lớp, các thuộc tính, liên kết..

Chuyển đổi Requirements2Content tự động sinh ra mô hình nội dung từ mô hình yêu cầu. Dựa trên hai quy tắc sẽ trình bày dưới đây.

Quy tắc ContentClass2ContentClassWithOperations

Quy tắc này ánh xạ mỗi lớp nội dung tới một lớp nội dung cùng với việc thêm operation được tạo bởi quy tắc thứ hai SimpleProcess2Operation. Ở đây, chú ý tới biểu thức ATL:

thisModule.resolveTemp( sp, ‘op’ ) [5]

Biểu thức này cần thiết cho tham chiếu tới một thành phần đặc biệt đích op của quy tắc SimpleProcess2Operation để nối các thành phần nguồn sp. Quy tắc này được biểu diễn thông qua Hình 2.7.

Mô tả các quy tắc để thêm các hoạt động

rule ContentClass2ContentClassWithOperations {

from c : UWE!Class ( c.oclIsTypeOf( UWE!Class ) ) to tc : UWE!Class

(

ownedOperation <- c.ownedOperation->union(

c.useCase->select( uc | uc.o clIsKindOf( UWE!SimpleProcess ) )-> collect( sp | thisModule.resolveTemp( sp, ‘op’ ) ) ),

… ) }

Quy tắc SimpleProcess2Operation

Đối với mỗi xử lý đơn giản trong các mô hình yêu cầu một operation được sinh ra. Tên của các operation được tính toán bằng cách loại bỏ các dấu cách từ tên của các xử lý đơn giản và chuyển đổi ký tự đầu tiên chữ in thường. Các hàm regexReplaceAll (thay thế các chuỗi con bằng việc sử dụng các biểu thức thường) và firstToLower được cung cấp bởi ATL. Một quy tắc type2Return-Parameter được sử dụng để tạo ra giá trị đối số trả về của operation.

rule SimpleProcess2Operation {

from sp : UWE!SimpleProcess

to tsp : UWE!SimpleProcess ( … ), -- target for copying source element op : UWE!Operation

(

name <- sp.name.regexReplaceAll( ' ', '' ).firstToLower(), type <- sp.target,

ownedParameter <- if sp.target.oclIsUndefined() then Sequence {} else Sequence { thisModule.Type2ReturnParameter( sp.target ) endif )

}

Một phần của tài liệu (Luận án tiến sĩ) Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình (Trang 49 - 51)