Kiến trúc ATL

Một phần của tài liệu Tìm hiểu và vận dụng ngôn ngữ chuyển đổi mô hình trong phát triển phần mềm (Trang 44)

Kiến trúc ATL bao gồm:

Phần lõi (Core): mô tả khái niệm ATL theo một cách trừu tượng

Bộ phân tích (Parser) và bộ biên dịch (Compiler)

Máy ảo (Virtual Machines) cho phép thực thi chuyển đổi

Môi trường phát triển: bao gồm trình soạn thảo, trình gỡ lỗi, dựa trên các thành phần đề cập ở trên.

Hình 2.7- Kiến trúc ATL [12]

Máy ảo ATL VM nằm giữa trình biên dịch ATL và các frameworks được sử

dụng (EMF, MDR) cho phép mô đun hóa. Do đó các thay đổi trên ngôn ngữ

ATL chỉ liên quan đến trình biên dịch ATL.

Phần lõi (Core)

a)

Hình dưới đây mô tả phần lõi ATL và cách tương tác với các công cụ như

Hình 2.8- Phần lõi ATL [12]

IModel là một biểu diễn phù hợp của mô hình phù hợp cho chuyển đổi ATL. Nó cung cấp các phương thức để tìm kiếm các phần tử, tạo mới, vv...

Giao diện IReferenceModel mở rộng IModel và là một phiên bản cụ thể của

IModel mà tượng trưng cho siêu mô hình. Nó định nghĩa các hoạt động dành

riêng cho siêu mô hình mà hữu ích cho chuyển đổi ATL.

ModelFactory dành riêng cho tạo mô hình và mô hình tham chiếu.

Giao diện IInjector, IExtractor cung cấp một cách để nạp và lưu mô hình

được tạo tử trước bởi modelFactory

Giao diện ILauncher dành riêng cho cài đặt bởi máy ảo ATL: nó định nghĩa

các phương thức để tham số hóa và khởi động một chuyển đổi.

Dịch vụ (services): Để đơn giản hóa việc sử dụng phần lõi ATL và giảm

trùng lặp mã nguồn, 2 dịch vụđược cung cấp: CoreService và LauncherService

Các lớp tiện ích đều cung cấp một cách thức để nhìn vào các phần mở rộng hay bộ nhớ cục bộ cho cài đặt Core.

LauncherService cho phép gọi một chuyển đổi từ tập các biến giống như bản

đồ đường dẫn và bản đồ của tên mô hình: nó có liên quan chặt chẽ tới cấu hình và các tác vụ như cho phép gọi chuyển đổi trên các máy ảo.

Máy ảo ATL

b)

Máy ảo ATL VM là bộ thông dịch byte code mà quản lý kiểu phân cấp của

OCL và ATL. Hình dưới đây mô tả hoạt động của ATL VM (adsbygoogle = window.adsbygoogle || []).push({});

Hình 2.9- Lược đồ hoạt động máy ảo ATL [12]

Trong quá trình khởi tạo ATL VM, mọi hoạt động đều được đăng ký vào Map. Lớp ExecEnv chứa môi trường thực thi ảo, giúp xử lý với các sơ đồ hoạt

động mà đăng ký các hoạt động được sử dụng bởi chuyển đổi. Nó chứa tất cả

thông tin được sử dụng khi thực thi như mô hình và được tạo lại cho mỗi thực thi. Các hoạt động được thực thi tuần tự, theo khung thời gian và phụ thuộc vào kiểu.

Tại thời điểm này có hai cài đặt của ATL VM.

Regular VM: phiên bản đầu tiên của máy ảo ATL. Sự cài đặt là trừu

tượng từ framework quản lý mô hình được sử dụng và sử dụng Model

Handlers. Model Handlers bao gồm một lớp trừu tượng dành riêng cho

truy cập mô hình. Truy cập này được thực hiện bởi hai lớp: ASMModelet ASMModelElement. ATL chứa ba trình điều khiển bổ sung tương ứng

với Model Handlers khác nhau: EMF, MDR, UML2 Cách cài đặt máy ảo này vẫn được sử dụng trong ATL, bởi vì nó liên kết chặt chẽ với một số

bộ phận. Nhưng Regular VM có rất nhiều vấn đề về hiệu suất, đặc biệt là vì kiến trúc xử lý mô hình.

EMF-specific VM: Đây là sự định nghĩa lại của Regular VM, qua đó

giải quyết rất nhiều vấn đề hiệu suất bằng cách tránh đóng gói EObjects.

API của nó cho phép xem xét trực tiếp tài nguyên EMF như mô hình và

loại bỏ sự phức tạp như làm trước đây trong máy ảo thường xuyên.

Ngôn ngữ ASM là một loại ngôn ngữ assembly, phù hợp với xử lý mô hình.

Mức độ thấp của ASM cho phép dễ dàng mô đun hóa với mục đích để cung cấp khả năng quản lý mô hình dễ dàng hơn. Định dạng tập tin hiện tại cho ASM là

XML. Do đó nó cho phép không quan tâm đến bất kỳ cú pháp và chỉ tập trung

vào bytecode. Một tập tin ASM chỉ chứa tên và hằng chuỗi. Không có tham chiếu tới Ecore. Những vấn đềđó được giải quyết bằng cách cấu hình khởi động

và AMMA Megamodel, với một tên ràng buộc.

Bộ phân tích

c)

Phân tích ATL được thực hiện bằng cách sử dụng phân tích cú pháp quy

định tại TCS, mà kết quả đầu ra một mô hình ATL phù hợp với metamodel ATL. Sau đó, một chuyển đổi ATL- WFR (thông dịch bởi engine) tạo ra một mô hình vấn đề. Mô hình này sản xuất lỗi thông dịch bởi trình biên tập và dịch ra các dấu hiệu, có thể nhìn thấy trên các tập tin ATL trên mỗi biên dịch

Bộ biên dịch

d)

Hai phiên bản của trình biên dịch ATL có sẵn: năm 2004 và 2006. Phiên bản

năm 2006 của ATL biên dịch sử dụng ACG. Phiên bản 2004 sử dụng ATP

(phiên bản trước của ACG). ACG (ATL VM Code Generator) là một DSL

hướng biên dịch, mà dự định để tạo ra một trình biên dịch hướng tới ATL VM. (adsbygoogle = window.adsbygoogle || []).push({});

Một trình biên dịch được mô tả với ACG tạo các file ASM và chứa mô tả về

được biên dịch. Vì vậy đầu vào của loại trình biên dịch là một mô hình mô tả nội dung của một tập tin biên dịch (ví dụ, một tập tin ATL).

Một tập tin ACG, khi biên dịch, nhìn qua mô hình đầu vào sử dụng một mẫu thiết kế khách. ACG được nạp: một tập tin ACG.acg tồn tại và mô tả các trình biên dịch ACG. Từ một tập tin ACG mô tả chính xác các chỉ lệnh ASM, các tập

tin ACG.acg là khá đơn giản. Biểu đồ sau đây đặt ACG trong nền tảng AMMA.

Hình 2.10- Lược đồ ACG [12]

2.4 Tổng kết chương

Chương này trình bày tổng quan về các phương pháp sinh mã nguồn Java

hiện nay, cùng với việc đi sâu vào việc mô hình hóa ngôn ngữ Java và ngôn ngữ

chuyển đổi mô hình ATL. Với ý tưởng xây dựng Java như là một ngôn ngữ mô

hình hóa nhóm nghiên cứu đã thu hẹp khoảng cách giữa ngôn ngữ mô hình hóa

và ngôn ngữ Java. Qua đó, Java có thể được xử lý như là một ngôn ngữ mô hình

hóa và có thể tích hợp hoàn toàn vào MDSD như các ngôn ngữ mô hình hóa

CHƯƠNG 3 – VN DNG VÀ THC NGHIM

Trong chương này, tác giả sẽ tập trung vào vận dụng các kết quả nghiên cứu

trong các chương trên để vận dụng vào bài toán sinh mã nguồn Java từ mô hình

nguồn UML.

Một phần của tài liệu Tìm hiểu và vận dụng ngôn ngữ chuyển đổi mô hình trong phát triển phần mềm (Trang 44)