Các phƣơng pháp này dùng để chuyển đổi một mô hình nguồn sang một mô hình đích. Cả hai mô hình có thể thuộc cùng một metamodel hoặc khác metamodel. Việc chuyển đổi có thể giữ nguyên thông tin hoặc làm mất thông tin từ mô hình nguồn. Trong MDA việc chuyển đổi mô hình sang mô hình là cần thiết để lấp đầy khoảng trống giữa PIM và PSM.
3.1.2.1 Hướng tiếp cận định dạng trực tiếp.
Hƣớng tiếp cận này cung cấp bộ API dùng để định dạng mô hình. Nhà phát triển phải tự cài đặt các luật chuyển đổi. API thông thƣờng là một framework hƣớng đối tƣợng, ngôn ngữ sử dụng chuyển đổi là các ngôn ngữ lập trình thông dụng nhƣ Visual Basic, Java. Một khó khăn khi dùng hƣớng tiếp cận này là các ngôn ngữ lập trình đƣợc thiết kế cho nhiều mục đích nên việc lập trình chuyển đổi sẽ tốn rất nhiều thời gian.
3.1.2.2 Hướng tiếp cận dựa trên quan hệ.
Ý tƣởng chính của hƣớng tiếp cận này là xác định kiểu của thành tố nguồn và thành tố đích của một quan hệ, sau đó sử dụng ràng buộc đặc tả quan hệ này. Hƣớng tiếp cận này dùng lập trình logic để hiện thực các ràng buộc trên do đặc tính tìm kiếm, truy ngƣợc và khớp của nó ví dụ nhƣ Fprolog trong Mercury. Tất cả các hƣớng tiếp cận quan hệ đều chuyển đổi hai chiều. Mô hình nguồn và mô hình đích phải tách biệt.
3.1.2.3 Hướng tiếp cận dựa vào chuyển đổi đồ thị.
Hƣớng tiếp cận này bao gồm các luật chuyển đổi từ một mẫu hình nguồn sang một mẫu hình đích. Mẫu hình có thể đƣợc xác định bằng cú pháp cụ thể hoặc ở cú pháp trừu tƣợng của mô hình MOF. Luật chuyển đổi sử dụng cú pháp trừu tƣợng có thể hoạt động trên mô hình bất kỳ có cùng metamodel. Khi một mẫu hình nguồn đƣợc khớp, nó sẽ đƣợc thay thế bởi mẫu hình đích. Các thuộc tính của các thành tố trong mô hình đích có thể đƣợc tính toán sử dụng các phép toán logic.
3.1.2.4 Hướng tiếp cận hướng cấu trúc.
Hƣớng tiếp cận này bao gồm hai giai đoạn: giai đoạn một tạo ra cấu trúc phân cấp của mô hình đích, giai đoạn hai xác định giá trị cho các thuộc tính và tham chiếu trong mô hình đích. Một ví dụ về hƣớng tiếp cận này là OptimaJ. OptimaJ cung cấp một framework bằng Java mà ngƣời dùng có thể thừa kế để định nghĩa các luật chuyển đổi. Luật chuyển đổi đƣợc cài đặt bằng một hàm với tham số đầu vào là kiểu thành tố nguồn và kết quả trả về là đối tƣợng đại diện thành tố mô hình đích.
3.1.2.5 Hướng tiếp cận lai.
Hƣớng tiếp cận này kết hợp từ hai trong số các hƣớng tiếp cận ở trên, điển hình là ATL [12]. Luật chuyển đổi ATL bao gồm tập hợp các biến và có thể ràng buộc để
18
chọn lọc các thành tố ở mô hình nguồn. Một luật đơn giản trong ATL dùng để chuyển đổi các đối tƣợng thuộc lớp Author trong mô hình MMAuthor thành các đối tƣợng lớp Person trong mô hình MMPerson với name và surname lấy từ Author:
rule Author{ from a : MMAuthor!Author to p : MMPerson!Person{ name <- a.name, surname <- s.surname } }