Đặt vấn đề, mục tiêu, phạm vi và cấu trúc của luận văn. Kiến thức nền tảng: Trình bày các khái niệm cơ bản về kỹ nghệ yêu cầu hướng mô hình (MDE), ngôn ngữ chuyên biệt miền (DSL) và ngôn ngữ mô hình hóa chuyên biệt miền (DSML). Đồng thời, giải thích chi tiết các khái niệm về cú pháp cụ thể, cú pháp trừu tượng và mối quan hệ giữa chúng. Tiếp theo, trình bày quá trình phát triển một DSML.
Cuối cùng, chương sẽ giới thiệu định nghĩa và vai trò của OCL và QVTd. Phương pháp đồng bộ hóa giữa cú pháp trừu tượng va cụ thé: Trình bày các vấn đề cần giải quyết, sau đó giới thiệu phương pháp áp dụng ngôn ngữ chuyên biệt miền để xây dựng cầu nối từ cú pháp cụ thé sang cú pháp trừu tượng của FRSL. Cài đặt và thực nghiệm: Trình bày cách cài đặt phương pháp. Vận dụng phương pháp dé xuất, định nghĩa các luật chuyển từ cú pháp cu thể sang cú pháp trừu tượng của ngôn ngữ đặc tả ca sử dụng FRSL.
Kết luận và hướng phát triển: Tổng kết về đề tài, đưa ra các đề xuất và hướng nghiên cứu tiếp theo cho phương pháp. Chương 2 KIÊN THỨC NEN TANG Chương này cung cấp nên tang lý thuyết về các kỹ thuật, ngôn ngữ, và công cụ hỗ trợ sử dụng trong quá trình thực hiện luận văn. Đầu tiên, luận văn tìm hiểu kỹ nghệ hướng mô hình (MDE), giới thiệu các khái niệm và cấp độ của mô hình hóa. Tiếp theo, luận văn dé cập đến lý thuyết về ngôn ngữ chuyên biệt miền (DSL) cũng như ngôn ngữ mô hình hóa chuyên biệt miền (DSML).
Cuối chương, luận văn mô tả các bước phát triển một ngôn ngữ mô hình hóa chuyên biệt miễn, cùng với các khái niệm liên quan đến ngôn ngữ OCL và QVTd.1 Kỹ nghệ hướng mô hình Kỹ nghệ hướng mô hình (Model-Driven Engineering, MDE) là một phương pháp tiếp cận trong lĩnh vực công nghệ phần mềm, nhằm tạo ra và sử dụng các mô hình để phát triển hệ thống phần mềm [1]. MDE hướng đến việc cải thiện hiệu quả va chất lượng trong quá trình phát triển phần mềm giúp đơn giản hóa và tự động hóa các bước trong quy trình nhằm đáp ứng nhiều mục tiêu khác nhau dựa trên mô hình.1 Tổng quan Mô hình hóa là một khía cạnh quan trọng, trung tâm trong nhiều ngữ cảnh và lĩnh vực khác nhau như vật lý, hóa học, toán học triết học và nhiều lĩnh vực khác, một trong số đó có lĩnh vực phát triển phần mềm. Ngày nay, với sự phát triển nhanh chóng của công nghệ thông tin, các phần mềm đang len lỏi vào hầu hết các lĩnh vực trong đời sống. Cùng với sự phát triển đó, các hệ thống phần mềm cũng biến đổi ngày càng lớn, phức tạp, nhiều thành phần hơn.
Chính vì vậy, mô hình hóa đóng một vai trò quan trọng, nó không chỉ giúp chúng ta hiểu rõ cấu trúc của hệ thống mà còn giúp định rõ các yếu tố quan trọng và mối quan hệ giữa chúng. Nó là công cụ hữu ích để hình dung và dự đoán cách mà hệ thống sẽ hoạt động, giúp tao ra một kế hoạch chi tiết cho quá trình phát triển. Các xu hướng và phương pháp phát triển phần mềm theo hướng tiếp cận xây dựng các mô hình được gọi chung là kỹ nghệ phát triển phần mềm hướng mô hình (Model-Driven Engineering - MDE). Kỹ thuật này áp dụng các ưu điểm của việc mô hình hóa vào phát triển phần mềm.
Có hai khái niệm cốt lõi trong MDE được dé cập trong [1] đó là mô hình (Model) và các phép chuyển đổi mô hình (Transformation). Trước khi đến với công thức tổng quan của MDE, ta sẽ đến với một công thức khá nổi tiếng của Niklaus Wirth: Algorithms + Data Structures = Programs Trong công thức trên, Algorithms đại diện cho các thuật toán, các quy trình để giải quyết một vấn đề cụ thể, trong khi Data Structures là cách dữ liệu được tổ chức và lưu trữ để hỗ trợ các thuật toán này. Sự kết hợp chặt chẽ giữa thuật toán và cấu trúc dữ liệu tạo nên chương trình (Program) giúp cho máy tính hoạt động một cách hiệu quả. Tuy nhiên, trong ngữ cảnh MDE ta tiếp cận với góc nhìn khác trừu tượng hơn khi chương trình máy tính hay còn được hiểu là phần mềm được tạo thành từ hai thành phần là mô hình và phép biến đổi đã nêu ở ý trên, ta có công thức đơn giản như sau: Models + Transformations = Software Từ công thức của Niklaus Wirth, để ra được một chương trình (Program) ta can định nghĩa được các thuật toán và cấu trúc dữ liệu của nó.
Để có thể làm được việc này, ta can sử dụng ngôn ngữ lập trình. Tương tự như vậy trong MDE, để có thể xác định được các mô hình (Models) và phép biến đổi (Transformations) cũng cần phải có các ký hiệu hoặc một loại ngôn ngữ nào đó, ở đây là ngôn ngữ mô hình hoá.2 Mô hình trong phát triển phần mềm Mô hình (Model) được định nghĩa là sự thể hiện của một hệ thống phần mềm ở mức trừu tượng [ỗ], giúp mô tả hoặc thể hiện hệ thống phần mềm hoặc môi trường của nó cho một mục đích nhất định. Một mô hình có thể bao gồm một số biểu đồ trong đó mỗi loại biểu đồ đưa ra một cái nhìn khác nhau về hệ thống được mô tả.0 có 13 loại sơ đồ như sơ đồ ca sử dụng, sơ đồ lớp, v. Trong thực tế, mô hình là một công cụ quan trọng giúp biểu diễn và hiểu rõ cấu trúc, chức năng, và các khía cạnh khác của hệ thống.
Nó không chỉ là một phương tiện giao tiếp hiệu quả giữa các thành viên trong đội phát triển mà còn đóng vai trò quan trọng trong việc đưa ra quyết định thiết kế và 5 triển khai phần mềm. Bằng cách này, mô hình không chỉ hỗ trợ sự đồng thuận giữa các bên liên quan mà còn giúp kiểm soát rủi ro và tối ưu hóa quá trình phát triển. Các mô hình đóng một vai trò quan trọng trong MDE cho nên bước tiếp theo để định nghĩa các mô hình ta cần đến khái niệm về siêu mô hình (meta-model). Siêu mô hình (meta-model) được định nghĩa là sự thể hiện của chính các mô hình đó dưới dạng các phiên bản của một số mô hình trừu tượng hon [I].
Do đó, giống hệt như cách chúng ta định nghĩa một mô hình là sự trừu tượng của các hiện tượng trong thế giới thực, chúng ta có thể định nghĩa siêu mô hình là một sự trừu tượng khác, làm nổi bật các thuộc tính của chính mô hình đó.1| dưới đây là một ví dụ về các mức biểu diễn mô hình trong thực thế. Các đối tượng trong thé giới thực được hiển thị ở mức độ MO, ví dụ trong hình là bộ phim. Sự biểu diễn theo mô hình cao hơn mức MO được hiển thị ở cấp độ M1, trong đó mô hình mô tả khái niệm Video cùng với các thuộc tính của nó là tiêu dé. Meta-metamodel _ <<instanceOf>> | Class ¢° 7 <<instanceOf> > - ~._ <<instanceOf>> , Metamodel ~~” a ` rd ⁄ z“_ <<instanceOf»>> + + + title: String Hình 2.1: Biểu diễn mối quan hệ giữa mô hình và siêu mô hình Siêu mô hình của mô hình M1 được thể hiện ở cấp độ M2 và mô tả các khái niệm được sử dụng 6 M1 để xác định mô hình, cụ thể là lớp (Class), thuộc tinh (Attribute) và thực thể (Instance).
Cấp độ M3 là siêu siêu mô hình (meta-metamodel) xác định các khái niệm được sử dụng tại M2, tập hợp này thu gọn trong khái niệm Lớp duy nhất ở ví dụ. Mặc dù về mặt lý thuyết, ta có thể định nghĩa các cấp độ vô hạn của siêu mô hình (meta-metamodel), nhưng trên thực tế các siêu siêu mô hình có thể được xác định dựa trên chính chúng và do đó, việc vượt quá mức độ trừu tượng này thường không có ý nghĩa gì, hay nói cách khác, không cần thêm các cấp độ siêu mô hình hóa ngoài mức M3, vì chúng sẽ luôn chỉ bao gồm khái niệm lớp (Class). Cuối cùng, chúng ta cần một bộ công cụ thích hợp để biến MDE trở nên khả thi trong thực tế. Đối với lập trình, môi trường phát triển tích hợp (Integrated Development Environment - IDE) cho phép ta xác định các mô hình và các phép biến đổi cũng như các trình biên dịch hoặc trình thông dịch để thực thi chúng và tạo ra các tạo phẩm phần mềm cuối cùng.
Hiện nay có rất nhiều các bộ khung (Framework) có sẵn để thực hiện việc này, một trong số đó có thể kể đến Eclipse Modeling Framework (EMF). EMF cung cấp một cơ sở hạ tầng mạnh mẽ cho việc xây dựng ứng dụng dựa trên mô hình. Sự linh hoạt và tích hợp của EMF giúp nhóm phát triển đơn giản hóa quá trình thiết kế và triển khai hệ thống phần mềm, đồng thời tăng cường khả năng tái sử dụng và hiệu suất của ứng dụng. Điều này làm cho EMF trở thành một lựa chọn tốt cho các dự án chuyển đổi sang mô hình hóa trong ngữ cảnh phát triển phần mềm hiện đại.
Chuyển đổi mô hình Trong công thức được trình bày ở mục|2. | bên cạnh các mô hình, các phép biến đổi mô hình cũng đóng một vai trò vô cùng quan trọng trong MDE, nó cho phép xác định ánh xạ giữa các mô hình khác nhau [T1]. MDE cung cấp các ngôn ngữ thích hợp dé xác định các chuyển đổi mô hình nhằm cung cấp cho các nhà thiết kế các giải pháp tối ưu hóa để chỉ định các quy tắc chuyển đổi. Những ngôn ngữ này có thể được sử dụng để xác định các phép biến đổi mô hình theo các mẫu chuyển đổi thường được áp dụng trên các mô hình theo một số quy tắc so khớp được kiểm tra trên các thành phần mô hình.
Các quy tắc chuyển đổi như vậy có thể được xác định theo các cách tiếp cận khác nhau: việc chuyển đổi có thể được nhà phát triển viết thủ công từ đầu hoặc có thể được xác định là một đặc điểm kỹ thuật đã được tinh chỉnh của một quy tắc hiện có. Ngoài ra, bản thân các phép biến đổi có thể được tạo ra tự động từ một số quy tắc ánh xạ cấp cao hơn giữa các mô hình.