Khung mô hình hoá Eclipse (EMF) [7] là một bộ khung sinh mã mã mạnh mẽ hƣớng đến xây dựng các ứng dụng Java dựa trên định nghĩa các mô hình. Nó đƣợc thiết kế để tạo các mô hình hoá thiết thực và hữu ích cho các lập trình viên Java. EMF là sự thống nhất ba bền tảng quan trọng: Java, XML và UML. Mô hình có thể đƣợc định nghĩa khi sử dụng công cụ mô hình hoá UML, lƣợc đồ XML hoặc thậm chí là các chú thích đơn giản trên giao diện Java. Vì vậy ở đây ngƣời các nhà phát triển chỉ việc xây dựng các mô hình trừu tƣợng và phần còn lại là thực hiện tự động. EMF đƣợc phát hành nhƣ một dự án con của Eclipse vào năm 2003, nhƣng giờ đây nó là nền tảng mô hình hoá tinh vi đằng sau trình phát triển Eclipse và dƣờng nhƣ không thể thiếu trong phát triển hƣớng mô hình [6].
EMF phần lớn là tƣơng thích MDA với chỉ duy nhất sai lệch nhỏ từ một vài tiêu chuẩn. Ví dụ, nền tảng của ngôn ngữ mô hình meta-model của EMF đƣợc biết đến là Ecore. Ecore không giống nhƣng rất sát với Essential MOF (EMOF) đƣợc mô tả trong MOF 2.0 của MDA. EMF thƣờng có thể tải một EMOF meta-model, các ánh xạ và chuyển đổi đƣợc phát triển giữa EMOF và Ecore.
19
Hình 3.1 Khung Eclipse Modeling Framework [8]
EMF đi cùng với các cơ chế tiêu chuẩn dùng cho việc xây dựng meta-model và lƣu lại chúng nhƣ các giao diện có thể lập trình đƣợc, cũng nhƣ mã nguồn và dữ liệu dạng XML. Một khung soạn thảo mô hình (Editor) và khung sinh mã (Generators) cũng đƣợc cung cấp (xem Hình 3.1). EMF đƣợc tích hợp chặt chẽ với Eclipse và khả năng tận dụng kiến trúc và cơ sở hạ tầng của Eclipse hỗ trợ việc tích hợp meta-data riêng rẽ, qua nhiều công cụ trong một hệ sinh thái chung ăn theo Eclipse. Điều này nâng cao mức độ tƣơng tác giữa các công cụ phần lớn tƣơng thích với MDA.
Mô hình đƣợc sử dụng để biểu diễn mô hình trong EMF là Ecore. Ecore chính là một mô hình EMF do đó nó vừa là model, vừa là metamodel thậm chí nó còn là meta- metamodel. Ecore là thành phần cốt lõi của EMF, Ecore đƣợc tạo ra từ một trong ba nguồn: Mô hình UML, lƣợc đồ XML, hoặc ký hiệu Java Interface. Hình 3.2 cho thấy mô hình Ecore sau khi thực thi bởi Java sẽ sinh ra mô hình đích nhƣ đã lựa chọn.
Hình 3.2 Mô hình Ecore và nguồn của nó [6]
Do tiêu chuẩn chuyển đổi mô hình vẫn tiếp tục phát triển và các sản phẩm thu nhận đƣợc đều từ chính việc sinh mã, nên hầu hết các công cụ hiện tại đều tập trung vào sinh mã từ mô hình. Nhìn chung, trên thị trƣờng các công cụ MDA sử dụng EMF vẫn đang trƣởng thành ở cả hai lĩnh vực thƣơng mại cũng nhƣ các dự án mã nguồn mở.
20