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
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.
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 – VẬN DỤNG VÀ THỰC NGHIỆM
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.