Tổng quan luận án

Phát triển phần mềm hướng mô hình (Model-Driven Software Development - MDSD) và Kỹ thuật hướng mô hình (Model-Driven Engineering - MDE) là phương pháp tiếp cận sử dụng mô hình làm trọng tâm trong toàn bộ vòng đời phát triển hệ thống phần mềm. Phương pháp này giải quyết các thách thức của phương thức phát triển phần mềm truyền thống như sự phụ thuộc vào nền tảng công nghệ, chi phí điều chỉnh mã nguồn thủ công, tính khả chuyển và khả năng tương tác khi xuất hiện các nền tảng công nghệ mới. Các nghiên cứu thực nghiệm trong lĩnh vực kỹ thuật phần mềm đã chỉ ra rằng việc áp dụng sinh mã tự động từ mô hình giúp tăng tốc độ phát triển tổng thể từ 3 đến 10 lần, giảm thiểu sai sót do thao tác của con người, rút ngắn thời gian xây dựng ứng dụng web và tiết kiệm chi phí bảo trì hệ thống.

Trong số các phương pháp phát triển ứng dụng web hướng mô hình dựa trên Kiến trúc hướng mô hình (Model Driven Architecture - MDA) của Tổ chức Quản lý Đối tượng (OMG), phương pháp Kỹ thuật Web dựa trên UML (UML-based Web Engineering - UWE) do nhóm nghiên cứu tại Đại học LMU (Đức) đề xuất cung cấp quy trình và công cụ mô hình hóa toàn diện dựa trên phần mở rộng của ngôn ngữ UML 2.0. Tuy nhiên, qua quá trình tổng hợp và phân tích tài liệu chuyên ngành, luận án xác định hai khoảng trống nghiên cứu chính tồn tại trong phương pháp UWE:

  1. Quá trình chuyển đổi từ mô hình yêu cầu (Requirements Model) ở mức Mô hình độc lập tính toán (Computation Independent Model - CIM) sang các mô hình ở mức Mô hình độc lập nền tảng (Platform Independent Model - PIM) gồm mô hình nội dung (Content Model), mô hình điều hướng (Navigation Model), mô hình xử lý (Process Model) và mô hình trình bày (Presentation Model) vẫn đòi hỏi sự can thiệp và điều chỉnh thủ công của nhà thiết kế. Điều này làm tăng thời gian, chi phí và gây khó khăn trong việc duy trì tính nhất quán cũng như cập nhật đồng bộ giữa các mô hình khi có thay đổi yêu cầu.
  2. Các công trình công bố trước đây chủ yếu tập trung vào giai đoạn phân tích và mô hình hóa; khâu sinh mã nguồn tự động còn nhiều hạn chế, phần lớn chỉ dừng lại ở việc sinh ra khung mã nguồn (code skeletons) để lập trình viên tự viết mã bổ sung, chưa hỗ trợ sinh mã hoàn chỉnh theo các kiến trúc chuẩn như MVC (Model - View - Controller).

Nhằm giải quyết các hạn chế trên, luận án tiến hành nghiên cứu đề tài: "Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình", chuyên ngành Kỹ thuật phần mềm (Mã số: 9480103), thực hiện tại Trường Đại học Bách khoa Hà Nội dưới sự hướng dẫn của PGS. Huỳnh Quyết Thắng và PGS. Cao Tuấn Dũng.

Mục tiêu nghiên cứu của luận án:

  • Mục tiêu chung: Nghiên cứu kỹ thuật phát triển phần mềm hướng mô hình cho các ứng dụng web, nhằm phát triển bộ quy tắc chuyển đổi mô hình sang mô hình (model-to-model) và mô hình sang mã nguồn (model-to-code) theo phương pháp UWE, cụ thể hóa các quy tắc chuyển đổi bằng việc xây dựng công cụ hỗ trợ phát triển ứng dụng web theo kiến trúc MVC.
  • Mục tiêu cụ thể 1: Tiếp cận kỹ thuật MDE, phát triển bộ quy tắc chuyển đổi từ mô hình mức CIM sang PIM, sang PSM (Platform Specific Model) và sang mã nguồn cho phát triển ứng dụng web hướng mô hình theo phương pháp UWE.
  • Mục tiêu cụ thể 2: Trên cơ sở các quy tắc đã phát triển, xây dựng công cụ sinh mã tự động cho ứng dụng web và thực nghiệm vào bài toán thực tế phát triển ứng dụng web Chẩn đoán bệnh thủy sản (benhthuysan).

Nhiệm vụ nghiên cứu của luận án:

  1. Tổng hợp, phân tích các kỹ thuật phát triển phần mềm hướng mô hình và kỹ thuật phát triển ứng dụng web hướng mô hình như UWE, WebML, WebSA.
  2. Phát triển các quy tắc chuyển đổi mô hình từ CIM sang PIM tích hợp ràng buộc OCL (Object Constraint Language) và ngôn ngữ ATL (ATLAS Transformation Language).
  3. Phát triển các quy tắc và giải thuật sinh mã với ngôn ngữ ATL cho phát triển ứng dụng web hướng mô hình theo phương pháp UWE theo kiến trúc MVC.
  4. Xây dựng công cụ sinh mã tự động CODEGER-UWE cho ứng dụng web theo kiến trúc MVC.
  5. Thực nghiệm và đánh giá tính khả thi, hiệu quả của các đề xuất thông qua việc áp dụng vào các bài toán mẫu điển hình (MusicPortal, AddressBook) và ứng dụng thực tế Chẩn đoán bệnh thủy sản (benhthuysan).

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Vấn đề chuyển đổi mô hình và kỹ thuật sinh mã tự động cho phát triển ứng dụng web theo phương pháp UWE.
  • Phạm vi lý thuyết: Các kiến thức lý thuyết về MDA, siêu mô hình (metamodel) theo chuẩn MOF của OMG, ngôn ngữ UML 2.0, UML Profile, ngôn ngữ ràng buộc OCL, ngôn ngữ chuyển đổi mô hình ATL (cú pháp, máy ảo ATL VM, bộ biên dịch ACG), và các mô hình thành phần trong UWE (Requirements, Content, Navigation, Process, Presentation).
  • Phạm vi thực nghiệm: Xây dựng các quy tắc chuyển đổi mô hình và sinh mã tự động hướng tới kiến trúc MVC với công nghệ Java và JSP; thực nghiệm kiểm chứng trên bài toán thực tế về chẩn đoán bệnh thủy sản tại Việt Nam.

Tổng quan tài liệu và vị trí của luận án

Trong bức tranh tổng thể về Kỹ thuật Web hướng mô hình (Model-Driven Web Engineering - MDWE), các phương pháp tiếp cận được đề xuất nhằm thu hẹp khoảng cách giữa mô hình thiết kế mức cao và mã nguồn cài đặt mức thấp. Luận án đã tổng hợp và phân tích các phương pháp kỹ thuật web hướng mô hình điển hình:

  • WebSA (Web Software Architecture): Tiếp cận dựa trên MDA gồm 4 giai đoạn (Phân tích, Thiết kế độc lập nền tảng PIM, Thiết kế nền tảng cụ thể PSM và Mã chương trình). WebSA phân chia các mô hình thành hai khung nhìn chính: Khung nhìn chức năng (Web Functional Viewpoint) và Khung nhìn kiến trúc (Web Architectural Viewpoint), tích hợp các mô hình từ phương pháp UWE và OO-H.
  • WebML (Web Markup Language): Phương pháp được hỗ trợ bởi công cụ thương mại WebRatio. WebML sử dụng ký hiệu riêng và định nghĩa cấu trúc tài liệu thông qua DTD (Document Type Definition) thay vì siêu mô hình tuân thủ chuẩn MOF. WebML sử dụng ngôn ngữ XSLT (Extensible Stylesheet Language Transformation) để chuyển đổi mô hình sang mã nguồn Java/JSP, tuy nhiên XSLT bị đánh giá là khó phát triển các chuyển đổi phức tạp và dễ phát sinh lỗi.
  • OOWS (Object-Oriented Web Solution): Là sự mở rộng của phương pháp OO-H, bổ sung ba mô hình tại mức PIM gồm mô hình người dùng, mô hình điều hướng và mô hình trình bày, hỗ trợ sinh mã thông qua công cụ OlivaNova.
  • MIDAS-HM3 (Hypertext Modeling Method of MIDAS): Phương pháp phát triển web nhanh dựa trên MDA, phân chia hệ thống theo ba khía cạnh (siêu văn bản, nội dung và hành vi) bằng cách sử dụng các hồ sơ UML mở rộng, tuy nhiên chưa tập trung giải quyết các khía cạnh kiến trúc phần mềm.
  • UWE (UML-based Web Engineering): Phương pháp tiếp cận do Đại học LMU phát triển, có ưu điểm là toàn bộ các mô hình đều là phần mở rộng trực tiếp của UML thông qua cơ chế UML Profile, cho phép tái sử dụng các công cụ thiết kế UML chuẩn. UWE phân chia thiết kế web thành 5 mô hình chuyên biệt: Requirements, Content, Navigation, Process và Presentation.
Phương pháp MDWE Cơ chế siêu mô hình Ngôn ngữ / Công cụ chuyển đổi Công cụ hỗ trợ Mức độ sinh mã
UWE UML Profile / MOF Metamodel ATL, QVT ArgoUWE, MagicUWE, UWE4JSF Khung mã nguồn / Bán tự động
WebSA MOF Metamodel Mẫu chuyển đổi PIM-PIM, PIM-PSM WebSA Toolset Mã nguồn theo nền tảng
WebML XML DTD (không dùng MOF) XSLT WebRatio Java / JSP
OOWS OO-H Profile Quy tắc nội bộ OlivaNova OlivaNova Mã nguồn ứng dụng
MIDAS-HM3 UML Profile Quy tắc khai báo MIDAS CASE Tool Mô hình sang mô hình

Về tình hình nghiên cứu MDA và chuyển đổi mô hình trên thế giới:

  • Theo tổng kết của các tác giả khảo sát giai đoạn 2008–2018 trên 2.145 bài báo, có 50 nghiên cứu chính về MDA tập trung vào 5 lĩnh vực: ứng dụng di động, mô phỏng/xác minh, bảo mật, kỹ thuật web và phát triển giao diện người dùng (GUI). Hầu hết các công trình chỉ khai thác mức mô hình PIM và PSM, bỏ qua mức CIM.
  • Năm 2019, Kahani và cộng sự đã thống kê 60 công cụ chuyển đổi mô hình, trong đó có 31 công cụ hỗ trợ chuyển đổi từ mô hình sang mã nguồn.
  • Marianne Busch và Nora Koch phát triển công cụ MagicUWE (plugin cho MagicDraw) hỗ trợ thiết kế bán tự động theo cấu hình UWE, tuy nhiên vẫn yêu cầu vẽ lại thủ công nhiều thành phần và chỉ dừng lại ở chuyển đổi mô hình sang mô hình (model-to-model), chưa hỗ trợ chuyển đổi sang mã nguồn (model-to-code).
  • Nhóm tác giả Miguel Ángel, García de Dios phát triển công cụ ActionUWE chuyển đổi mô hình UWE sang ActionGUI, sau đó sinh mã bán tự động dạng khung chương trình.
  • Imane Essebaa, Chantit Salima và Mohammed Ramdani phát triển công cụ MoDAr-WA sử dụng các quy tắc QVT để chuyển đổi từ CIM sang PIM, PIM sang PSM và dùng Acceleo để tạo mã MVC từ PSM, tuy nhiên nghiên cứu phụ thuộc vào công cụ Acceleo có sẵn mà không xây dựng công cụ sinh mã chuyên biệt.
  • Mostapha Melouka, Yassine Rhazali, Hadi Youssef đề xuất giải pháp chuyển đổi bán tự động từ CIM sang PIM và PSM bằng ATL kết hợp chuẩn IFML của OMG cho giao diện người dùng.
  • Một số nghiên cứu khác sử dụng ATL để chuyển đổi mô hình quy trình nghiệp vụ BPMN sang sơ đồ lớp UML (như bài toán quản lý bệnh nhân COVID-19 qua bộ chuyển đổi MM1ToME2.atl), hoặc áp dụng MDA cho MVC thuần túy bằng UML chuẩn mà không tích hợp phương pháp UWE.

Tại Việt Nam, các nghiên cứu về phát triển phần mềm hướng mô hình cho ứng dụng web còn rất hạn chế, chủ yếu dừng ở mức tổng hợp lý thuyết trong các khóa luận hoặc đề tài quy mô nhỏ. Luận án lựa chọn giải quyết khoảng trống: thiết lập quy trình chuyển đổi tự động từ CIM sang PIM có tích hợp ngôn ngữ ràng buộc OCL trong UWE, xây dựng bộ giải thuật và phát triển công cụ CODEGER-UWE sinh mã nguồn Java/JSP theo kiến trúc MVC hoàn chỉnh.


Cơ sở lý thuyết và phương pháp nghiên cứu

Cơ sở lý thuyết và các chuẩn công nghệ

Luận án xây dựng trên nền tảng các tiêu chuẩn công nghệ của OMG và các kỹ thuật chuyển đổi mô hình:

  1. Kiến trúc MDA (Model-Driven Architecture):

    • Computation Independent Model (CIM): Mô hình độc lập tính toán, thể hiện yêu cầu nghiệp vụ và môi trường thực thi của hệ thống dưới góc nhìn người dùng/chuyên gia nghiệp vụ mà không chứa chi tiết kỹ thuật phần mềm.
    • Platform Independent Model (PIM): Mô hình độc lập nền tảng, mô tả cấu trúc, hành vi và chức năng của hệ thống mà không phụ thuộc vào công nghệ triển khai cụ thể.
    • Platform Specific Model (PSM): Mô hình nền tảng cụ thể, kết hợp đặc tả PIM với chi tiết kỹ thuật của một nền tảng thực thi (như Java, .NET).
    • Code Model (CM): Mã nguồn thực thi được sinh ra từ PSM hoặc trực tiếp từ PIM thông qua kỹ thuật Model-to-Text (M2T).
  2. Các chuẩn của OMG:

    • MOF (Meta Object Facility): Ngôn ngữ định nghĩa siêu mô hình ở mức M3, cung cấp công cụ và khái niệm nền tảng để đặc tả các siêu mô hình mức M2 (như siêu mô hình UML, CWM).
    • UML 2.0 và UML Profile: Cung cấp ký pháp mô hình hóa hướng đối tượng và cơ chế mở rộng miền thông qua stereotype (<<...>>) và tagged values.
    • OCL (Object Constraint Language): Ngôn ngữ khai báo đặc tả các ràng buộc bất biến (invariants), tiền điều kiện (preconditions) và hậu điều kiện (postconditions) trên các phần tử mô hình UML.
    • QVT (Query/View/Transformation): Chuẩn chuyển đổi mô hình của OMG gồm 3 ngôn ngữ: Relations, Core, Operational Mappings và cơ chế Black Box.
    • CWM (Common Warehouse Metamodel): Chuẩn siêu mô hình tích hợp dữ liệu và kho dữ liệu.
  3. Ngôn ngữ chuyển đổi mô hình ATL (ATLAS Transformation Language):

    • Cấu trúc đơn vị ATL: Gồm ATL Module (chứa Header, phần Import thư viện, Helpers đóng vai trò như các phương thức bổ trợ, và Rules định nghĩa ánh xạ), ATL Query (truy vấn tính toán các giá trị nguyên thủy) và ATL Library (thư viện tái sử dụng).
    • Phân loại quy tắc (Rules): Matched Rules (quy tắc khai báo ánh xạ phần tử nguồn sang phần tử đích) và Called Rules (quy tắc mệnh lệnh được gọi tường minh khi cần khởi tạo phức tạp).
    • Chế độ thực thi: Chế độ Normal (mặc định) và chế độ Refining (tinh chỉnh mô hình).
    • Kiến trúc hệ thống ATL: Bao gồm Core (các giao diện IModel, IReferenceModel, ModelFactory, ILauncher), Trình phân tích cú pháp (Parser TCS), Trình biên dịch (Compiler ACG/ATP tạo mã byte code ASM), và Máy ảo thực thi (ATL VM gồm phiên bản Regular VM và EMF-specific VM thao tác trực tiếp trên Ecore/EObject API của Eclipse Modeling Framework).
+-------------------------------------------------------------------------+
|                              Kiến trúc ATL                              |
+-------------------------------------------------------------------------+
|  [Đơn vị ATL]  -->  [Parser (TCS)]  -->  [Compiler (ACG)]  -->  [ASM File] |
|                                                                    |     |
|                                                                    v     |
|  [Mô hình nguồn (MMa)] ====> [Máy ảo ATL VM (EMF-specific)] ====> [Mô hình đích (MMb)]
+-------------------------------------------------------------------------+

Phương pháp nghiên cứu

Luận án kết hợp hai phương pháp nghiên cứu chính:

  • Phương pháp nghiên cứu lý thuyết: Thu thập, phân tích và hệ thống hóa các cơ sở lý luận về MDE, MDA, các chuẩn OMG, các phương pháp kỹ thuật web MDWE (UWE, WebSA, WebML, OOWS, MIDAS-HM3) và ngôn ngữ chuyển đổi ATL. Từng bước hình thành bộ quy tắc hình thức chuyển đổi mô hình và sinh mã.
  • Phương pháp nghiên cứu thực nghiệm: Cài đặt bộ quy tắc chuyển đổi trên môi trường Eclipse/EMF và ngôn ngữ ATL; xây dựng công cụ CODEGER-UWE; kiểm chứng tính khả thi và độ chính xác của các quy tắc trên các bài toán chuẩn (MusicPortal, AddressBook) và áp dụng triển khai vào bài toán thực tế hệ thống Chẩn đoán bệnh thủy sản (benhthuysan).

Nội dung chính theo từng chương

Chương 1: Phát triển phần mềm hướng mô hình

Chương 1 trình bày tổng quan về nền tảng lý luận của phát triển phần mềm hướng mô hình và kiến trúc MDA:

  1. Kiến trúc MDA và cơ chế chuyển đổi:

    • Phân tích chi tiết ba mức trừu tượng hóa: CIM, PIM và PSM.
    • Phân loại hai dạng chuyển đổi mô hình cốt lõi: Chuyển đổi mô hình sang mô hình (Model-to-Model - M2M) và Chuyển đổi mô hình sang mã nguồn (Model-to-Text / Model-to-Code - M2T).
    • Làm rõ các kỹ thuật biến đổi trong MDA: biến đổi dựa trên đánh dấu mô hình (model marks), biến đổi dựa trên ánh xạ siêu mô hình (metamodel mapping), biến đổi sử dụng mẫu thiết kế (design patterns), mô hình kết hợp, và sử dụng thông tin bổ sung.
    • Chuyển đổi từ PSM sang mã nguồn theo chuẩn MOF M2T dựa trên phương pháp tiếp cận mẫu (template-based) với các vị trí giữ chỗ (placeholders) và biểu thức truy vấn.
  2. Ngôn ngữ chuyển đổi mô hình:

    • Giới thiệu chi tiết ngôn ngữ ATL: cú pháp mô đun, header, helpers, quy tắc khai báo matched rules và quy tắc mệnh lệnh called rules; cơ chế truy vấn ATL Query và thư viện ATL Library; kiến trúc phân lớp của ATL gồm Core, Parser, Compiler và máy ảo ATL VM (Regular VM và EMF-specific VM).
    • Giới thiệu ngôn ngữ chuẩn QVT của OMG gồm ba thành phần: ngôn ngữ Relations (khai báo cấp cao), ngôn ngữ Core (tối giản, làm nền tảng ngữ nghĩa), ngôn ngữ Operational Mappings (bổ sung cấu trúc mệnh lệnh và OCL), cùng cơ chế Hộp đen (Black Box).
  3. Các chuẩn của OMG cho MDA:

    • Trình bày đặc tả MOF (M2/M3), ngôn ngữ UML 2.0, cơ chế mở rộng UML Profile (stereotype và tagged value), ngôn ngữ đặc tả ràng buộc OCL, và siêu mô hình Common Warehouse Metamodel (CWM).
  4. Kỹ thuật Web hướng mô hình (MDWE):

    • Phân tích, so sánh quy trình, ưu điểm và hạn chế của các phương pháp WebSA, WebML (cùng công cụ WebRatio và ngôn ngữ XSLT), OOWS (cùng công cụ OlivaNova), MIDAS-HM3 và phương pháp UWE.
  5. Phân tích các nghiên cứu liên quan:

    • Tổng kết các công trình quốc tế và trong nước, phân tích các hạn chế của MagicUWE, ActionUWE, MoDAr-WA, từ đó xác lập 5 nhiệm vụ nghiên cứu cụ thể của luận án.

Chương 2: Kỹ thuật chuyển đổi mô hình (CIM to PIM) theo phương pháp UWE cho phát triển ứng dụng Web

Chương 2 tập trung xây dựng cơ sở hình thức và bộ quy tắc chuyển đổi từ mức CIM sang PIM theo phương pháp UWE:

  1. Hệ thống các siêu mô hình trong UWE:
    • Mô hình yêu cầu (Requirements Model): Sử dụng Use Case Diagram mở rộng với các stereotype <<Navigation>> (duyệt, xem, tìm kiếm), <<webprocess>> (xử lý nghiệp vụ), <<personalized>> (thích nghi cá nhân hóa).
    • Mô hình nội dung (Content Model): Sử dụng Class Diagram chuẩn mô tả cấu trúc thực thể, thuộc tính và liên kết dữ liệu.
    • Mô hình điều hướng (Navigation Model): Đặc tả không gian điều hướng qua các lớp điều hướng (NavigationClass), lớp xử lý (ProcessClass), liên kết điều hướng (NavigationLink), liên kết xử lý (ProcessLink), các menu và các phần tử truy cập nguyên thủy (Index, GuidedTour, Query).
    • Mô hình xử lý (Process Model): Gồm mô hình cấu trúc xử lý (processClass, processLink) và mô hình luồng xử lý thể hiện bằng Activity Diagram với các hành động người dùng (<<UserAction>>).
    • Mô hình trình bày (Presentation Model): Trừu tượng hóa giao diện người dùng thành các phần tử đồ họa (input form, text, button, collection).
                      [CIM: Mô hình yêu cầu (Use Case, Activity)]
                                         |
                       (Quy tắc chuyển đổi ATL + OCL)
                                         |
     +-------------------+---------------+-------------------+-------------------+
     |                   |                                   |                   |
     v                   v                                   v                   v
[Mô hình Nội dung] [Mô hình Điều hướng]            [Mô hình Xử lý]    [Mô hình Trình bày]
  (Content Model)    (Navigation Model)              (Process Model)    (Presentation Model)
  1. Xây dựng quy tắc chuyển đổi tự động CIM sang PIM bằng ATL:

    • Chuyển đổi từ mô hình yêu cầu sang mô hình nội dung (Requirements2Content): Sử dụng quy tắc ContentClass2ContentClassWithOperations kết hợp hàm giải quyết tạm thời thisModule.resolveTemp và quy tắc SimpleProcess2Operation (sử dụng các hàm xử lý chuỗi regexReplaceAll, firstToLower và type2ReturnParameter).
    • Chuyển đổi từ mô hình yêu cầu và nội dung sang mô hình điều hướng (RequirementsAndContent2Navigation).
    • Chuyển đổi sang mô hình xử lý (Process Model).
    • Chuyển đổi từ mô hình điều hướng và xử lý sang mô hình trình bày (NavigationAndProcess to Presentation).
  2. Tích hợp ràng buộc OCL trong quy tắc chuyển đổi:

    • Phát triển cơ chế chuyển đổi các ràng buộc bất biến (invariants), tiền điều kiện (preconditions) và hậu điều kiện (postconditions) từ biểu đồ hoạt động và ca sử dụng của CIM vào mô hình xử lý và mô hình trình bày PIM, đảm bảo tính toàn vẹn ngữ nghĩa của ứng dụng web.
  3. Thực nghiệm chuyển đổi:

    • Áp dụng kiểm chứng trên hai hệ thống mẫu: Cổng thông tin âm nhạc MusicPortal (với quy trình mua album BuyAlbum) và ứng dụng sổ địa chỉ AddressBook. Kết quả chuyển đổi tự động sang 4 mô hình PIM được tổng hợp qua các bảng số liệu chi tiết.

Chương 3: Sinh mã tự động cho ứng dụng web hướng mô hình

Chương 3 giải quyết giai đoạn chuyển đổi từ PIM sang PSM và sinh mã nguồn thực thi theo kiến trúc MVC:

  1. Xây dựng 4 giải thuật sinh mã cốt lõi:

    • CM2M (Content Model to Model): Chuyển đổi các lớp nội dung trong Content Model thành các lớp thực thể dữ liệu (Java Model classes / JavaBeans).
    • PRES2V (Presentation Model to View): Chuyển đổi các phần tử giao diện trong Presentation Model thành các trang hiển thị JSP (Java Server Pages).
    • NM2C (Navigation Model to Controller): Chuyển đổi các liên kết và luồng điều hướng trong Navigation Model thành các bộ điều khiển điều hướng (Navigation Controllers).
    • PROM2C (Process Model to Controller): Chuyển đổi các lớp xử lý và luồng hoạt động trong Process Model thành các lớp dịch vụ nghiệp vụ (Process Controllers / Services).
  2. Chuyển đổi PIM sang PSM và sinh mã với ATL:

    • Thiết lập cấu trúc mô hình PSM theo chuẩn MVC: Thành phần Model (Java classes, thuộc tính, getter/setter), thành phần Service/Controller (các phương thức xử lý yêu cầu và điều hướng), thành phần View (cấu trúc thẻ JSP, form nhập liệu, bảng dữ liệu).
    • Xây dựng tập hợp các truy vấn ATL (ATL Queries) để xuất trực tiếp các phần tử của mô hình PSM thành tệp mã nguồn Java (.java) và tệp giao diện JSP (.jsp).
Thành phần MVC Mô hình nguồn PIM Giải thuật áp dụng Mô hình trung gian PSM Mã nguồn đích sinh ra
Model Content Model CM2M Java Model Structure Lớp thực thể Java (.java)
Controller Navigation Model & Process Model NM2C, PROM2C Java Controller & Service Structure Servlet / Controller Java (.java)
View Presentation Model PRES2V JSP Model Structure Giao diện web JSP (.jsp)
  1. Phát triển công cụ CODEGER-UWE:

    • Tác giả tích hợp và phát triển công cụ CODEGER-UWE hoạt động phối hợp với môi trường MagicDraw và Eclipse Modeling Framework.
    • Giao diện công cụ tiếp nhận đầu vào là các mô hình UWE (hoặc mô hình CIM), thực thi tự động chuỗi quy tắc ATL và các giải thuật sinh mã để tạo ra toàn bộ cấu trúc dự án web MVC.
  2. Thực nghiệm trên ứng dụng web Chẩn đoán bệnh thủy sản (benhthuysan):

    • Đầu vào hệ thống: Biểu đồ Use Case và biểu đồ Activity của nghiệp vụ chẩn đoán bệnh thủy sản.
    • Tiến trình thực hiện: Chuyển đổi CIM sang 4 mô hình PIM (Content, Navigation, Process, Presentation) -> Chuyển đổi PIM sang mô hình PSM MVC -> Kích hoạt công cụ CODEGER-UWE sinh mã tự động.
    • Kết quả: Hệ thống sinh ra toàn bộ mã nguồn Java (Model, Controller, Service) và các trang JSP (giao diện tra cứu, chẩn đoán, quản lý bệnh thủy sản). Kết quả đánh giá thực nghiệm cho thấy mã nguồn sinh tự động đáp ứng chính xác cấu trúc thiết kế, giảm thiểu tối đa việc phải viết mã thủ công.

Kết quả và những đóng góp mới

Tất cả các kết quả nghiên cứu của luận án đã được công bố qua 8 công trình khoa học (từ CT1 đến CT8) trên các tạp chí và kỷ yếu hội thảo chuyên ngành. Các đóng góp mới của luận án bao gồm:

  1. Về mặt lý luận và phương pháp chuyển đổi mô hình (CIM to PIM):

    • Tổng hợp, hệ thống hóa cơ sở lý thuyết về phát triển phần mềm hướng mô hình và kỹ thuật web hướng mô hình (UWE, WebML, WebSA, OOWS, MIDAS-HM3).
    • Xây dựng và bổ sung bộ quy tắc chuyển đổi mô hình hoàn chỉnh từ mức CIM sang PIM theo phương pháp UWE bằng ngôn ngữ ATL, bao gồm chuyển đổi từ biểu đồ Use Case và Activity Diagram sang 4 mô hình UWE (Content, Navigation, Process, Presentation).
    • Đề xuất giải pháp tích hợp các ràng buộc OCL (bất biến, tiền điều kiện, hậu điều kiện) vào quy tắc chuyển đổi mô hình xử lý và trình bày, đảm bảo tính toàn vẹn ngữ nghĩa xuyên suốt quá trình chuyển đổi.
    • (Công bố liên quan: CT1, CT2, CT3, CT7).
  2. Về mặt kỹ thuật sinh mã và phát triển công cụ (PIM to PSM to Code):

    • Đề xuất phương pháp sinh mã tự động cho ứng dụng web hướng mô hình theo kiến trúc MVC, xây dựng 4 giải thuật chuyển đổi hình thức: CM2M, PRES2V, NM2C và PROM2C.
    • Thiết lập các quy tắc chuyển đổi từ PIM sang PSM và từ PSM sang mã nguồn Java/JSP bằng ngôn ngữ ATL.
    • Phát triển thành công công cụ phần mềm CODEGER-UWE hỗ trợ tự động hóa toàn bộ quy trình sinh mã cho ứng dụng web theo kiến trúc MVC.
    • (Công bố liên quan: CT4, CT5).
  3. Về mặt ứng dụng thực tiễn:

    • Ứng dụng thành công toàn bộ phương pháp, bộ quy tắc chuyển đổi và công cụ CODEGER-UWE vào phát triển ứng dụng web thực tế: Hệ thống Chẩn đoán bệnh thủy sản (benhthuysan).
    • Kiểm chứng tính khả thi và hiệu quả của giải pháp trong việc rút ngắn thời gian phát triển, giảm bớt sự can thiệp thủ công của lập trình viên và nâng cao chất lượng mã nguồn.
    • (Công bố liên quan: CT6, CT8).

Kiến nghị và giải pháp đề xuất:

  • Luận án khuyến nghị các đơn vị phát triển phần mềm web áp dụng quy trình phát triển hướng mô hình dựa trên UWE và ngôn ngữ ATL để chuẩn hóa tài liệu thiết kế từ mức yêu cầu nghiệp vụ (CIM), giảm thiểu chi phí bảo trì và chuyển đổi nền tảng khi công nghệ thay đổi.
  • Đề xuất ứng dụng công cụ CODEGER-UWE vào quy trình sản xuất phần mềm theo kiến trúc MVC nhằm tăng năng suất lao động và giảm thiểu lỗi do con người trong khâu lập trình cài đặt.

Hạn chế và hướng nghiên cứu tiếp

Căn cứ theo nội dung và phạm vi nghiên cứu được trình bày trong văn bản luận án:

  • Hạn chế:

    • Mục tiêu thay thế hoàn toàn 100% việc lập trình bằng mô hình hóa vẫn là thách thức chung của lĩnh vực MDE; các quy tắc chuyển đổi và sinh mã hiện tại tập trung giải quyết các thành phần cấu trúc, luồng điều hướng, giao diện và các xử lý nghiệp vụ chuẩn, trong khi các thuật toán tính toán nghiệp vụ chuyên sâu đặc thù vẫn có thể cần sự tinh chỉnh bổ sung.
    • Công cụ CODEGER-UWE và bộ quy tắc chuyển đổi PIM sang PSM trong luận án hiện tại mới tập trung hỗ trợ nền tảng công nghệ Java (JavaBeans, Servlets/Controllers) và giao diện JSP theo kiến trúc MVC truyền thống.
    • Phạm vi thực nghiệm thực tế mới được triển khai tập trung trên bài toán chẩn đoán bệnh thủy sản (benhthuysan) cùng hai ca nghiên cứu kiểm chứng (MusicPortal và AddressBook).
  • Hướng nghiên cứu tiếp:

    • Tiếp tục hoàn thiện và mở rộng bộ quy tắc chuyển đổi mô hình để hỗ trợ sinh mã tự động cho các nền tảng và framework phát triển web hiện đại khác (như Spring MVC, Java Server Faces - JSF, các nền tảng phía client như Angular, React, hoặc kiến trúc Microservices).
    • Nghiên cứu mở rộng khả năng kiểm tra, xác thực mô hình và tự động hóa việc đồng bộ hóa hai chiều (round-trip engineering) khi có sự thay đổi mã nguồn quay ngược trở lại mô hình.
    • Mở rộng phạm vi thử nghiệm công cụ CODEGER-UWE trên nhiều lĩnh vực ứng dụng nghiệp vụ phức tạp khác trong thực tế.

Giá trị tham khảo

Luận án mang lại giá trị tham khảo khoa học và thực tiễn cho nhiều nhóm đối tượng:

  • Đối với nghiên cứu sinh, học viên cao học và giảng viên chuyên ngành Kỹ thuật phần mềm:

    • Là tài liệu tham khảo có hệ thống về Kỹ thuật hướng mô hình (MDE), Kiến trúc MDA của OMG, các chuẩn siêu mô hình MOF, UML Profile, OCL, QVT và ngôn ngữ chuyển đổi ATL.
    • Cung cấp cơ sở hình thức chi tiết về việc xây dựng siêu mô hình và định nghĩa quy tắc biến đổi mô hình (CIM to PIM) theo phương pháp UWE.
    • Cung cấp phương pháp luận nghiên cứu kết hợp giữa mô hình hóa lý thuyết và thực nghiệm phần mềm.
  • Đối với kỹ sư phần mềm, kiến trúc sư hệ thống và các doanh nghiệp phát triển ứng dụng web:

    • Cung cấp giải pháp kỹ thuật cụ thể (4 giải thuật CM2M, PRES2V, NM2C, PROM2C) để tự động hóa khâu sinh mã MVC từ các mô hình thiết kế UML/UWE.
    • Cung cấp tài liệu hướng dẫn thiết kế mô hình web theo 5 góc nhìn chuẩn của UWE (Requirements, Content, Navigation, Process, Presentation).
    • Cung cấp công cụ CODEGER-UWE làm giải pháp phần mềm hỗ trợ rút ngắn thời gian lập trình và chuẩn hóa cấu trúc mã nguồn dự án.
  • Các phần đáng tham khảo chuyên sâu trong luận án:

    • Mục 1.2 và 1.3 (Chương 1): Đặc tả kỹ thuật về ngôn ngữ ATL (cú pháp, máy ảo, helpers, rules) và các chuẩn OMG (MOF, OCL, QVT).
    • Mục 2.2, 2.3 và 2.4 (Chương 2): Cú pháp và quy tắc ATL chi tiết chuyển đổi từ CIM sang 4 mô hình PIM UWE có tích hợp ràng buộc OCL.
    • Mục 3.2 và 3.3 (Chương 3): Thuật toán và các truy vấn ATL chuyển đổi PIM sang PSM và mã nguồn Java/JSP theo kiến trúc MVC.

Câu hỏi thường gặp

1. Luận án giải quyết những hạn chế cốt lõi nào của phương pháp UWE trong các nghiên cứu trước đây? Luận án giải quyết hai hạn chế lớn: Thứ nhất, tự động hóa quy trình chuyển đổi từ mô hình yêu cầu (CIM) sang các mô hình PIM (Content, Navigation, Process, Presentation) bằng ngôn ngữ ATL có tích hợp ràng buộc OCL, thay vì phải vẽ và điều chỉnh thủ công như các công cụ trước (như MagicUWE). Thứ hai, khắc phục việc chỉ sinh mã khung (skeletons) bằng cách xây dựng giải thuật và công cụ CODEGER-UWE sinh mã nguồn hoàn chỉnh theo kiến trúc MVC.

2. Quá trình chuyển đổi từ CIM sang PIM trong luận án sử dụng các mô hình đầu vào và đầu ra nào? Mô hình đầu vào ở mức CIM gồm Biểu đồ ca sử dụng (Use Case Diagram với các khuôn mẫu <<Navigation>>, <<webprocess>>, <<personalized>>) và Biểu đồ hoạt động (Activity Diagram với khuôn mẫu <<UserAction>>). Mô hình đầu ra ở mức PIM gồm 4 mô hình UWE: Mô hình nội dung (Content Model), Mô hình điều hướng (Navigation Model), Mô hình xử lý (Process Model) và Mô hình trình bày (Presentation Model).

3. Bốn giải thuật sinh mã MVC được xây dựng trong Chương 3 gồm những giải thuật nào và thực hiện chức năng gì? Bốn giải thuật gồm:

  • CM2M: Chuyển đổi Content Model thành các lớp thực thể dữ liệu (Java Model / JavaBeans).
  • PRES2V: Chuyển đổi Presentation Model thành giao diện trang web (JSP View).
  • NM2C: Chuyển đổi Navigation Model thành bộ điều khiển điều hướng (Navigation Controller).
  • PROM2C: Chuyển đổi Process Model thành các lớp xử lý dịch vụ nghiệp vụ (Process Controller / Service).

4. Công cụ CODEGER-UWE được phát triển dựa trên những nền tảng công nghệ nào? Công cụ CODEGER-UWE được xây dựng trên môi trường Eclipse Modeling Framework (EMF), phối hợp với công cụ mô hình hóa MagicDraw, sử dụng ngôn ngữ chuyển đổi mô hình ATL (với bộ biên dịch ACG và máy ảo ATL VM) để thực thi các quy tắc chuyển đổi mô hình và sinh mã nguồn Java/JSP theo kiến trúc MVC.

5. Kết quả nghiên cứu của luận án được kiểm chứng thực tế qua những bài toán nào? Luận án tiến hành kiểm chứng qua hai bài toán mẫu chuẩn thường dùng trong nghiên cứu MDWE là cổng thông tin âm nhạc MusicPortal (quy trình mua album BuyAlbum) và ứng dụng quản lý danh bạ AddressBook, sau đó áp dụng triển khai thực tế vào hệ thống web Chẩn đoán bệnh thủy sản (benhthuysan).


Kết luận

Luận án "Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển ứng dụng web hướng mô hình" của tác giả Trần Đình Diễn đã giải quyết trọn vẹn vấn đề tự động hóa chuyển đổi mô hình và sinh mã nguồn trong kỹ thuật web hướng mô hình theo phương pháp UWE. Tác giả đã xây dựng thành công bộ quy tắc chuyển đổi từ mức CIM sang PIM tích hợp ràng buộc OCL bằng ngôn ngữ ATL, đồng thời phát triển 4 giải thuật chuyển đổi PIM sang PSM theo kiến trúc MVC. Công cụ CODEGER-UWE được phát triển trong luận án đã chứng minh tính hiệu quả và khả thi khi áp dụng thành công vào việc xây dựng ứng dụng web thực tế Chẩn đoán bệnh thủy sản (benhthuysan), đóng góp thiết thực cho sự phát triển của chuyên ngành Kỹ thuật phần mềm.