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
Khám phá kỹ thuật chuyển đổi mô hình và sinh mã tối ưu trong phát triển phần mềm.
Luan An
Luận án tiến sĩ
Năm xuất bản
Số trang
153
Thời gian đọc
23 phút
Lượt xem
0
Lượt tải
0
Phí lưu trữ
50 Point
Tổng quan nhanh
- Chủ đề:
- 1. Tổng quan phát triển hướng mô hình MDD và kiến trúc MDA
- Số trang:
- 153 trang
- Trường:
- Đại học Bách khoa Hà Nội
- Chuyên ngành:
- Kỹ thuật phần mềm
- Tác giả:
- Trần Đình Diễn
- Năm:
- 2022
Tóm tắt nội dung luận án
I. Tổng quan phát triển hướng mô hình MDD và kiến trúc MDA
Phát triển hướng mô hình (Model-Driven Development - MDD) là phương pháp kỹ nghệ phần mềm tiên tiến. Phương pháp này đặt mô hình làm trung tâm của toàn bộ vòng đời phát triển. Thay vì viết mã thủ công, kỹ sư tập trung xây dựng các mô hình trừu tượng. Các mô hình này mô tả rõ ràng nghiệp vụ và cấu trúc của hệ thống. Quá trình chuyển đổi tự động từ mô hình sang mã nguồn giúp tăng năng suất và giảm thiểu sai sót kỹ thuật. Kiến trúc hướng mô hình (Model-Driven Architecture - MDA) do tổ chức OMG đề xuất là hiện thực hóa tiêu biểu nhất của MDD. MDA cung cấp một khung làm việc mở, nhất quán và độc lập với các công nghệ triển khai cụ thể. Hệ thống phần mềm nhờ đó có khả năng thích ứng cao khi công nghệ thay đổi. Việc bảo trì và nâng cấp hệ thống cũng trở nên đơn giản hơn.
1.1. Bản chất và lợi ích của phát triển hướng mô hình MDD
Phát triển hướng mô hình (Model-Driven Development - MDD) thay đổi căn bản quy trình kỹ nghệ phần mềm truyền thống. Mô hình không còn đóng vai trò tài liệu tham khảo thụ động. Mô hình trở thành thành phần trung tâm trực tiếp sinh ra phần mềm thực thi. Cách tiếp cận này giúp rút ngắn đáng kể thời gian phát triển dự án. Kỹ sư phần mềm tập trung giải quyết các bài toán nghiệp vụ phức tạp ở mức trừu tượng cao. Các chi tiết cài đặt kỹ thuật cấp thấp được tự động hóa hoàn toàn. MDD nâng cao chất lượng mã nguồn nhờ tính nhất quán trong các quy tắc chuyển đổi. Lỗi lập trình thủ công được loại bỏ phần lớn. Khả năng tái sử dụng mô hình thiết kế được tối ưu hóa giữa các dự án khác nhau. Hệ thống phần mềm duy trì tính linh hoạt, mở rộng nhanh chóng và dễ thích ứng với các thay đổi nghiệp vụ.
1.2. Các cấp độ trừu tượng trong kiến trúc hướng mô hình MDA
Kiến trúc hướng mô hình (Model-Driven Architecture - MDA) phân chia hệ thống thành ba cấp độ trừu tượng chính. Cấp độ đầu tiên là Mô hình độc lập tính toán (Computation-Independent Model - CIM), thể hiện yêu cầu nghiệp vụ thực tế. Cấp độ thứ hai là Mô hình độc lập nền tảng (Platform-Independent Model - PIM). PIM đặc tả cấu trúc và hành vi hệ thống mà không phụ thuộc vào bất kỳ công nghệ nào. Cấp độ thứ ba là Mô hình đặc thù nền tảng (Platform-Specific Model - PSM). PSM bổ sung các chi tiết kỹ thuật cụ thể như hệ quản trị cơ sở dữ liệu, ngôn ngữ lập trình hoặc framework. Chuỗi biến đổi từ CIM sang PIM, từ PIM sang PSM, và từ PSM sang mã nguồn tạo nên quy trình phát triển liền mạch. Cách phân tầng này giúp hệ thống độc lập với sự biến động liên tục của các nền tảng công nghệ.
1.3. Vai trò của siêu mô hình trong kỹ nghệ phần mềm hiện đại
Siêu mô hình (Metamodel / Metamodeling) là nền tảng cốt lõi định nghĩa ngữ nghĩa và cú pháp cho các mô hình. Mỗi mô hình cụ thể trong hệ thống đều là một thể hiện tuân thủ theo một siêu mô hình xác định. Siêu mô hình quy định các phần tử mô hình, mối quan hệ và các ràng buộc hợp lệ. Chuẩn Meta-Object Facility (MOF) của OMG thiết lập cấu trúc siêu mô hình bốn tầng chặt chẽ. Cấu trúc này đảm bảo tính tương thích và khả năng trao đổi dữ liệu giữa các công cụ mô hình hóa. Ngôn ngữ mô hình hóa hợp nhất (UML) là siêu mô hình phổ biến nhất được xây dựng trên chuẩn MOF. Việc định nghĩa siêu mô hình chính xác là điều kiện tiên quyết để thực hiện các phép chuyển đổi tự động. Siêu mô hình cung cấp khung tham chiếu chuẩn cho việc kiểm tra tính toàn vẹn của mô hình.
II. Kỹ thuật chuyển đổi mô hình M2M và M2T cho ứng dụng web
Chuyển đổi mô hình là kỹ thuật hạt nhân trong kiến trúc phát triển hướng mô hình. Quá trình này tự động ánh xạ các phần tử từ mô hình nguồn sang mô hình đích dựa trên các quy tắc xác định. Hai kỹ thuật cơ bản gồm chuyển đổi mô hình sang mô hình (Model-to-Model - M2M) và chuyển đổi mô hình sang văn bản (Model-to-Text - M2T). M2M hỗ trợ tinh chế các mô hình qua từng mức trừu tượng khác nhau, từ PIM sang PSM. M2T chịu trách nhiệm sinh mã nguồn thực thi từ các mô hình đặc thù nền tảng. Các công cụ và ngôn ngữ chuẩn hóa giúp tự động hóa toàn diện chuỗi chuyển đổi này. Nhờ đó, quy trình phát triển ứng dụng web đạt tốc độ cao và giảm thiểu tối đa sai sót lập trình.
2.1. Kỹ thuật chuyển đổi mô hình sang mô hình M2M với chuẩn QVT
Chuyển đổi mô hình sang mô hình (Model-to-Model - M2M) là quá trình tạo ra mô hình đích từ một hoặc nhiều mô hình nguồn. Quá trình này dựa trên các siêu mô hình tương ứng của nguồn và đích. Tiêu chuẩn QVT (Query/View/Transformation) của OMG là bộ tiêu chuẩn công nghiệp cho các phép chuyển đổi M2M. QVT cung cấp cả cơ chế khai báo (Declarative) và cơ chế mệnh lệnh (Imperative) để định nghĩa các quy tắc chuyển đổi. Phân hệ QVT Relations cho phép định nghĩa các mối quan hệ phức tạp và chuyển đổi hai chiều giữa các mô hình. Phân hệ QVT Operational hỗ trợ viết các thuật toán chuyển đổi tuần tự với tính linh hoạt cao. Kỹ thuật M2M đóng vai trò then chốt trong việc chuyển hóa mô hình độc lập nền tảng PIM thành mô hình đặc thù nền tảng PSM trong kỹ nghệ web.
2.2. Kỹ thuật chuyển đổi mô hình sang văn bản M2T để sinh mã nguồn
Chuyển đổi mô hình sang văn bản (Model-to-Text - M2T) là bước cuối cùng trong chuỗi chuyển đổi hướng mô hình. Kỹ thuật này chuyển đổi các phần tử trong mô hình PSM thành mã nguồn thực thi, tệp cấu hình hoặc tài liệu kỹ thuật. Hai phương pháp tiếp cận chính của M2T bao gồm sinh mã dựa trên mẫu (Template-based) và sinh mã dựa trên bộ phân tích cú pháp (Visitor-based). Các công cụ M2T đọc cấu trúc mô hình, duyệt qua các phần tử và áp dụng các mẫu văn bản định sẵn. Kết quả đầu ra là mã nguồn hoàn chỉnh tuân thủ các chuẩn kiến trúc hiện đại. Phương pháp M2T đảm bảo mã nguồn sinh ra có cấu trúc chuẩn mực, đồng nhất và không có lỗi cú pháp. Việc cập nhật mã nguồn khi mô hình thay đổi được thực hiện tự động chỉ bằng một thao tác sinh lại.
2.3. Nền tảng Eclipse Modeling Framework và ngôn ngữ chuyển đổi ATL
Eclipse Modeling Framework (EMF) là môi trường phát triển mô hình hóa mạnh mẽ hàng đầu trong hệ sinh thái Java. EMF cung cấp siêu mô hình Ecore, tương thích hoàn toàn với chuẩn EMOF của OMG. EMF quản lý việc biểu diễn mô hình trong bộ nhớ, đọc ghi tệp XMI và tạo mã Java phục vụ thao tác mô hình. Ngôn ngữ chuyển đổi ATL (ATLAS Transformation Language) là ngôn ngữ lai kết hợp giữa khai báo và mệnh lệnh, hoạt động tối ưu trên nền tảng EMF. ATL cho phép viết các quy tắc chuyển đổi mô hình ngắn gọn, biểu cảm và dễ bảo trì. Với bộ công cụ hỗ trợ toàn diện trong Eclipse, ngôn ngữ chuyển đổi ATL trở thành tiêu chuẩn thực tế để xây dựng các bộ chuyển đổi M2M chuyên sâu cho ứng dụng web hướng mô hình.
III. Phương pháp chuyển đổi CIM sang PIM theo mô hình UWE
Phương pháp Kỹ nghệ Web UML (UML-based Web Engineering - UWE) là phương pháp tiếp cận hướng mô hình chuyên biệt cho ứng dụng web. UWE mở rộng chuẩn UML bằng cách cung cấp các profile riêng biệt cho miền ứng dụng web. Quy trình UWE định nghĩa chuỗi chuyển đổi chặt chẽ từ mô hình yêu cầu thuộc mức CIM sang các mô hình thiết kế thuộc mức PIM. Các mô hình PIM trong UWE bao gồm mô hình nội dung, mô hình điều hướng, mô hình xử lý và mô hình trình bày. Việc ứng dụng các quy tắc tự động hóa giúp liên kết các mô hình này một cách nhất quán. Hệ thống web được thiết kế toàn diện từ giao diện, luồng điều hướng cho đến logic nghiệp vụ mà không phụ thuộc vào công nghệ triển khai cụ thể.
3.1. Phân loại và cấu trúc các mô hình trong phương pháp UWE
Phương pháp UWE phân chia thiết kế ứng dụng web thành bốn mô hình cốt lõi ở mức PIM. Mô hình nội dung (Content Model) đặc tả cấu trúc thông tin và các thực thể dữ liệu của ứng dụng. Mô hình điều hướng (Navigation Model) định nghĩa các nút điều hướng, liên kết và đường dẫn truy cập thông tin của người dùng. Mô hình xử lý (Process Model) mô tả chi tiết các luồng xử lý nghiệp vụ và các hành vi phức tạp trong hệ thống. Mô hình trình bày (Presentation Model) đặc tả giao diện đồ họa người dùng, bố cục trang và các thành phần giao diện trực quan. Sự phân tách độc lập giữa nội dung, điều hướng, xử lý và trình bày giúp nâng cao tính mô-đun hóa. Thiết kế ứng dụng web trở nên sáng sủa, dễ kiểm soát và dễ dàng mở rộng khi có yêu cầu mới.
3.2. Chuyển đổi từ mô hình yêu cầu sang nội dung và điều hướng
Chuyển đổi từ mô hình yêu cầu sang các mô hình thiết kế PIM là giai đoạn quan trọng trong phương pháp UWE. Mô hình yêu cầu ở mức CIM gồm các ca sử dụng (Use Case) và sơ đồ hoạt động (Activity Diagram). Các quy tắc chuyển đổi tự động phân tích các ca sử dụng để trích xuất các lớp thực thể trong mô hình nội dung. Từ mô hình nội dung và mô hình yêu cầu, bộ chuyển đổi tiếp tục sinh ra mô hình điều hướng tương ứng. Các lớp thông tin được ánh xạ thành các nút điều hướng (Navigation Class), các mối quan hệ được ánh xạ thành các liên kết (Navigation Link). Quá trình chuyển đổi tự động này đảm bảo toàn bộ yêu cầu nghiệp vụ ban đầu của khách hàng được phản ánh đầy đủ và chính xác vào cấu trúc điều hướng của ứng dụng web.
3.3. Tích hợp ràng buộc OCL vào các quy tắc chuyển đổi mô hình
Ngôn ngữ ràng buộc đối tượng (Object Constraint Language - OCL) đóng vai trò then chốt trong việc nâng cao độ chính xác của các mô hình PIM. OCL cho phép biểu diễn các điều kiện tiên quyết, hậu điều kiện và các bất biến nghiệp vụ một cách tường minh. Việc tích hợp OCL vào các quy tắc chuyển đổi ATL giúp tự động chuyển đổi logic điều kiện từ mô hình xử lý và trình bày. Các ràng buộc OCL được phân tích cú pháp và ánh xạ trực tiếp thành logic kiểm tra trong mô hình đích. Nhờ đó, các quy tắc kiểm tra tính hợp lệ của biểu mẫu giao diện và luồng quy trình nghiệp vụ được duy trì nguyên vẹn qua các bước chuyển đổi. Sự kết hợp giữa OCL và ATL loại bỏ sự mơ hồ ngữ nghĩa, nâng cao chất lượng và độ tin cậy của phần mềm sinh ra.
IV. Kỹ thuật sinh mã tự động từ mô hình PSM sang mã nguồn
Sinh mã tự động là mục tiêu quan trọng nhất trong quy trình kỹ nghệ phần mềm hướng mô hình. Quá trình này chuyển hóa các mô hình đặc thù nền tảng (PSM) thành các tệp mã nguồn hoàn chỉnh có thể biên dịch và thực thi. Kiến trúc Model-View-Controller (MVC) thường được chọn làm cấu trúc kiến trúc đích cho các ứng dụng web hiện đại. Mô hình PSM được phân tách tương ứng thành ba thành phần Model, View và Controller. Các quy tắc chuyển đổi ngôn ngữ ATL và các mẫu sinh mã đảm bảo ánh xạ chính xác từng phần tử mô hình sang các lớp mã nguồn cụ thể. Kỹ thuật này giúp giải phóng lập trình viên khỏi công việc viết mã lặp lại, đồng thời chuẩn hóa cấu trúc phần mềm theo các chuẩn công nghiệp.
4.1. Chuyển đổi mô hình PIM sang PSM theo mẫu kiến trúc MVC
Chuyển đổi từ mô hình PIM sang mô hình PSM là bước trung gian cần thiết để thu hẹp khoảng cách trừu tượng giữa thiết kế và mã nguồn. Mô hình PIM của UWE được ánh xạ vào mô hình PSM dựa trên kiến trúc MVC. Thành phần Model trong PSM được sinh ra từ mô hình nội dung PIM, biểu diễn các thực thể dữ liệu và lớp truy xuất cơ sở dữ liệu. Thành phần Controller được tạo ra từ mô hình xử lý và điều hướng PIM, đóng vai trò điều phối luồng ứng dụng và xử lý logic nghiệp vụ. Thành phần View được dẫn xuất từ mô hình trình bày PIM, đại diện cho giao diện người dùng. Việc phân chia cấu trúc PSM theo mẫu MVC tạo nền tảng vững chắc cho việc sinh mã nguồn độc lập giữa giao diện, logic điều khiển và cơ sở dữ liệu.
4.2. Xây dựng quy tắc chuyển đổi từ mô hình PSM sang mã nguồn
Xây dựng các quy tắc chuyển đổi từ PSM sang mã nguồn đòi hỏi sự kết hợp chặt chẽ giữa kỹ thuật M2M và M2T. Các quy tắc chuyển đổi được phát triển nhằm phân tích siêu mô hình PSM và sinh ra các đoạn mã tương ứng. Mỗi lớp trong thành phần Model được ánh xạ thành các lớp Java Bean hoặc các thực thể cơ sở dữ liệu. Các lớp trong thành phần Controller được chuyển đổi thành các lớp Servlet hoặc Action điều khiển. Các lớp trong thành phần View được chuyển hóa thành các thẻ giao diện và tệp cấu hình. Các quy tắc này được cài đặt thông qua ngôn ngữ chuyển đổi ATL và các khuôn mẫu sinh mã tự động. Toàn bộ quy trình sinh mã diễn ra khép kín, đảm bảo tính đồng bộ hoàn toàn giữa mô hình thiết kế và mã nguồn chương trình.
4.3. Sinh mã tự động cho thành phần Java và trang giao diện JSP
Kỹ thuật sinh mã tự động thực thi việc tạo ra các tệp mã nguồn cụ thể cho nền tảng ứng dụng web Java EE. Đối với thành phần Java, bộ sinh mã tạo ra các lớp thực thể, các lớp dịch vụ và các lớp điều khiển Servlet với đầy đủ thuộc tính và phương thức. Các ràng buộc nghiệp vụ OCL được biên dịch tự động thành các khối mã kiểm tra hợp lệ trong Java. Đối với giao diện người dùng, hệ thống sinh ra các trang JavaServer Pages (JSP) hoàn chỉnh. Các phần tử trình bày như biểu mẫu nhập liệu, bảng hiển thị dữ liệu và nút bấm điều hướng được định dạng chuẩn xác bằng HTML và thẻ JSP. Mã nguồn được tổ chức theo cấu trúc dự án chuẩn, sẵn sàng để biên dịch, triển khai và vận hành trên máy chủ ứng dụng web.
V. Đánh giá thực nghiệm với công cụ sinh mã CODEGER UWE
Để kiểm chứng tính khả thi và hiệu quả của các kỹ thuật đề xuất, công cụ sinh mã tự động CODEGER-UWE đã được thiết kế và phát triển. Công cụ này tích hợp trọn vẹn quy trình chuyển đổi từ mô hình yêu cầu CIM đến mã nguồn ứng dụng web hoàn chỉnh theo kiến trúc MVC. Hệ thống thực nghiệm được áp dụng trên bài toán thực tế là ứng dụng web quản lý bệnh thủy sản. Các kết quả thực nghiệm chứng minh công cụ có khả năng sinh mã tự động với độ bao phủ cao và cấu trúc mã chuẩn mực. Công cụ CODEGER-UWE khẳng định tính ứng dụng thực tiễn của phương pháp phát triển hướng mô hình trong việc giảm chi phí và nâng cao chất lượng phần mềm web.
5.1. Kiến trúc và cơ chế vận hành của công cụ CODEGER UWE
Công cụ CODEGER-UWE được xây dựng dưới dạng một tiện ích mở rộng tích hợp trên nền tảng Eclipse Modeling Framework (EMF). Kiến trúc của công cụ bao gồm ba khối chức năng chính: khối nhập mô hình, khối thực thi chuyển đổi và khối sinh mã nguồn. Khối nhập mô hình tiếp nhận các tệp mô hình UWE theo định dạng XMI chuẩn. Khối chuyển đổi kích hoạt các mô-đun ATL để chuyển hóa tuần tự từ CIM sang PIM và từ PIM sang PSM. Khối sinh mã áp dụng thuật toán duyệt cây cú pháp và mẫu văn bản để sinh ra toàn bộ mã nguồn Java, JSP và tệp cấu hình web.xml. Giao diện trực quan của CODEGER-UWE cho phép người dùng cấu hình tham số, kích hoạt quy trình sinh mã chỉ với một thao tác bấm nút, và theo dõi tiến trình thực thi dễ dàng.
5.2. Ứng dụng thực nghiệm trên hệ thống web quản lý bệnh thủy sản
Hệ thống web quản lý bệnh thủy sản (benhthuysan) được lựa chọn làm ca nghiên cứu điển hình để đánh giá thực nghiệm công cụ CODEGER-UWE. Hệ thống bao gồm nhiều chức năng nghiệp vụ phức tạp như quản lý thông tin bệnh dịch, tra cứu triệu chứng, chẩn đoán bệnh và phân quyền người dùng. Nhóm nghiên cứu tiến hành xây dựng đầy đủ các mô hình yêu cầu CIM, mô hình nội dung PIM, mô hình điều hướng và mô hình quy trình UWE. Công cụ CODEGER-UWE thực thi chuỗi chuyển đổi tự động và sinh ra toàn bộ mã nguồn ứng dụng web chạy trên nền tảng Java EE. Ứng dụng được triển khai thành công trên máy chủ Apache Tomcat và kết nối cơ sở dữ liệu MySQL, thực thi trơn tru tất cả các ca sử dụng mà không cần viết thêm mã thủ công.
5.3. Đánh giá hiệu năng và tính đúng đắn của mã nguồn tự động
Kết quả đánh giá thực nghiệm cho thấy phương pháp sinh mã tự động đạt hiệu quả vượt trội so với phương pháp lập trình thủ công truyền thống. Tỷ lệ tự động hóa sinh mã nguồn của công cụ CODEGER-UWE đạt trên 80% tổng khối lượng mã nguồn của toàn bộ dự án. Thời gian phát triển và chuyển giao hệ thống giảm hơn 60% so với quy trình thông thường. Mã nguồn Java và JSP sinh ra tuân thủ nghiêm ngặt các tiêu chuẩn mã hóa sạch, tính mô-đun cao và dễ đọc. Việc kiểm thử tự động xác nhận hệ thống vận hành ổn định, không phát sinh lỗi cú pháp hay xung đột kiến trúc. Các ràng buộc OCL được ánh xạ chính xác giúp loại bỏ hoàn toàn các lỗ hổng logic trong quá trình xử lý dữ liệu và điều hướng người dùng.
Mục lục chi tiết luận án
Tải xuống file đầy đủ để xem toàn bộ nội dung
Tải đầy đủ (153 trang)Nội dung chính
Tổng quan về luận án
Trong bối cảnh công nghiệp phần mềm đóng vai trò trụ cột của tăng trưởng kinh tế, phương thức phát triển phần mềm truyền thống (code-centric) đang bộc lộ nhiều điểm nghẽn nghiêm trọng: chi phí bảo trì tăng cao, tính khả chuyển và khả năng tương tác liên nền tảng bị hạn chế, cùng gánh nặng điều chỉnh mã nguồn thủ công khi công nghệ nền tảng thay đổi liên tục. Luận án tiến sĩ kỹ thuật phần mềm của NCS. Trần Đình Diễn với đề 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 Công nghệ thông tin và Truyền thô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) đã tiên phong giải quyết bài toán cốt lõi này bằng kỹ nghệ hướng mô hình (Model-Driven Engineering - MDE).
+-------------------------------------------------------------------------------+
| QUY TRÌNH CHUYỂN ĐỔI MDA TOÀN DIỆN |
+-------------------------------------------------------------------------------+
| CIM (Computation Independent Model) |
| - Biểu đồ Use Case & Activity Diagrams |
| - Thu hẹp khoảng cách nghiệp vụ và kỹ thuật |
+---------------------------------------+---------------------------------------+
| (ATL Model-to-Model Rules)
v
+-------------------------------------------------------------------------------+
| PIM (Platform-Independent Model) - 4 Mô hình UWE tích hợp OCL |
| - Content Model - Navigation Model |
| - Process Model - Presentation Model |
+---------------------------------------+---------------------------------------+
| (ATL Mapping to MVC Architecture)
v
+-------------------------------------------------------------------------------+
| PSM (Platform-Specific Model) |
| - Mô hình Java (Model, Service, Controller) |
| - Mô hình JSP (View Component) |
+---------------------------------------+---------------------------------------+
| (MOF M2T / CODEGER-UWE Engine)
v
+-------------------------------------------------------------------------------+
| MÃ NGUỒN THỰC THI (Source Code) |
| - Java Web MVC & Giao diện JSP hoàn chỉnh |
+-------------------------------------------------------------------------------+
Khoảng trống nghiên cứu (research gap) mà luận án định vị bắt nguồn từ thực trạng các phương pháp kỹ thuật web hướng mô hình (Model-Driven Web Engineering - MDWE), đặc biệt là phương pháp kỹ nghệ web dựa trên UML (UWE - UML-based Web Engineering), vẫn tồn tại sự đứt gãy giữa mô hình yêu cầu và các mô hình thiết kế chi tiết. Như tài liệu nguồn đã nhấn mạnh: "Việc chuyển đổi từ mô hình yêu cầu sang các mô hình: Nội dung, điều hướng, xử lý và trình bày vẫn phải được điều chỉnh thủ công, làm cho việc phát triển ứng dụng Web tốn thời gian và chi phí; việc đảm bảo tính thống nhất giữa các mô hình cũng như cần cập nhật đồng bộ giữa các mô hình khi có thay đổi là rất khó khăn." Đồng thời: "Các nghiên cứu chủ yếu mới chỉ tập trung cho việc mô hình hóa, việc sinh code tự động còn nhiều hạn chế, chủ yếu mới chỉ dừng ở việc tạo ra khung để kỹ thuật viên lập trình viết mã."
Để thu hẹp khoảng trống học thuật và thực tiễn này, luận án xác lập hệ thống 4 câu hỏi nghiên cứu (Research Questions - RQ) và 3 giả thuyết khoa học (Hypotheses - H):
- RQ1: Làm thế nào để tự động hóa hoàn toàn quá trình chuyển đổi mô hình từ mức độc lập tính toán (CIM) sang các mô hình mức độc lập nền tảng (PIM) theo chuẩn UWE mà không cần sự can thiệp thủ công?
- RQ2: Cơ chế tích hợp ràng buộc hình thức (OCL) vào các quy tắc chuyển đổi ATL như thế nào để bảo toàn toàn vẹn ngữ nghĩa điều hướng và xử lý nghiệp vụ?
- RQ3: Cấu trúc ánh xạ từ PIM sang mô hình nền tảng cụ thể (PSM) theo kiến trúc Model-View-Controller (MVC) cần được thiết kế ra sao để phục vụ sinh mã tự động toàn diện?
- RQ4: Giải pháp công cụ nào có thể tích hợp mượt mà vào môi trường thiết kế công nghiệp (như MagicDraw) để thực thi sinh mã hoàn chỉnh từ mô hình?
- H1: Việc hình thức hóa quy tắc biến đổi mô hình (Model-to-Model - M2M) bằng ngôn ngữ ATL kết hợp OCL sẽ loại bỏ sai lệch ngữ nghĩa giữa CIM và PIM.
- H2: Chuyển đổi mô hình có cấu trúc sang PSM MVC cho phép sinh mã nguồn thực thi đầy đủ (Model-to-Code - M2C) thay vì chỉ sinh khung sườn mã (code skeleton).
- H3: Ứng dụng quy trình MDE khép kín sẽ tăng tốc độ phát triển ứng dụng web lên từ 3 đến 10 lần so với phương pháp lập trình truyền thống.
Khung lý thuyết của nghiên cứu được xây dựng vững chắc trên nền tảng kiến trúc hướng mô hình (MDA) của Tổ chức Quản lý Đối tượng (OMG - Object Management Group), chuẩn Meta-Object Facility (MOF), ngôn ngữ ràng buộc đối tượng (Object Constraint Language - OCL), ngôn ngữ chuyển đổi ATL (ATLAS Transformation Language) và phương pháp luận UWE của Nora Koch cùng nhóm nghiên cứu Đại học Ludwig Maximilian Munich (LMU). Về quy mô và tầm quan trọng, luận án đã triển khai kiểm chứng thực nghiệm trên các ca nghiên cứu kinh điển (MusicPortal, AddressBook) và ứng dụng thực tế phức tạp trong lĩnh vực nông nghiệp công nghệ cao: Hệ thống web Chẩn đoán bệnh thủy sản (benhthuysan), chứng minh năng lực tự động hóa toàn bộ vòng đời phát triển từ mô hình yêu cầu đến mã nguồn Java Web hoàn chỉnh.
Literature Review và Positioning
Tổng quan tài liệu quốc tế cho thấy sự phát triển mạnh mẽ của các phương pháp kỹ thuật web hướng mô hình (MDWE) từ đầu thập niên 2000. Các dòng nghiên cứu chính bao gồm:
- Dòng phương pháp WebML (Web Markup Language) do Ceri và cộng sự khởi xướng, được thương mại hóa qua công cụ WebRatio. Phương pháp này dựa trên DTD (Document Type Definition) và sử dụng ngôn ngữ XSLT để chuyển đổi mô hình sang Java/JSP. Tuy nhiên, WebML không tuân thủ siêu mô hình MOF và XSLT bộc lộ nhược điểm: "XSLT không phù hợp với những chuyển đổi phức tạp, khó phát triển chương trình và dễ bị lỗi."
- Dòng phương pháp OOWS (Object-Oriented Web Solution) của Pastor và cộng sự, phát triển từ OO-H, sử dụng công cụ OlivaNova để tạo mã tại mức PIM với 3 mô hình: người dùng, điều hướng và trình bày.
- Dòng phương pháp WebSA (Web Software Architecture) của Meliá và Gómez, phân chia ứng dụng thành khung nhìn chức năng và khung nhìn kiến trúc, kết hợp mô hình của UWE và OO-H.
- Dòng phương pháp MIDAS-HM3 của Cachero và cộng sự, tiếp cận dựa trên MDA nhưng bỏ qua các đặc tả về mặt kiến trúc phần mềm.
- Dòng phương pháp UWE (UML-based Web Engineering) của Nora Koch, Marianne Busch và cộng sự, nổi bật với việc mở rộng trực tiếp từ chuẩn UML 2.0 (UML Profile), cho phép tái sử dụng các công cụ thiết kế UML công nghiệp.
+---------------------------------------------------------------------------------------+
| MA TRẬN ĐỐI SÁNH VỊ THẾ KHOA HỌC (LITERATURE POSITIONING) |
+---------------------+-------------------+---------------------+-----------------------+
| Nghiên cứu / Dự án | Phạm vi chuyển đổi| Công cụ / Ngôn ngữ | Hạn chế cốt lõi |
+---------------------+-------------------+---------------------+-----------------------+
| MagicUWE | CIM -> PIM | MagicDraw Plugin | Bán tự động, chỉnh tay|
| (Busch & Koch) | (Không sinh code) | UML Profile | Chưa có Model-to-Code |
+---------------------+-------------------+---------------------+-----------------------+
| ActionUWE | UWE -> ActionGUI | ActionGUI Engine | Chỉ tạo code skeleton,|
| (García de Dios) | -> Code skeleton | Mappings | phụ thuộc nền Action |
+---------------------+-------------------+---------------------+-----------------------+
| MoDAr-WA | CIM -> PIM -> PSM | QVT Rules | Không có công cụ riêng|
| (Essebaa et al.) | -> Code MVC | Acceleo (Template) | Thiếu kiểm soát OCL |
+---------------------+-------------------+---------------------+-----------------------+
| BPMN-to-Class | CIM -> PIM | ATL Engine | Bán tự động, chỉ sinh |
| (Melouka et al.) | (Quản lý COVID-19)| Ecore Metamodels | Class, thiếu Web UI |
+---------------------+-------------------+---------------------+-----------------------+
| Luận án | CIM -> PIM -> PSM | ATL + OCL Invariant | Tự động hóa khép kín, |
| (Trần Đình Diễn) | -> Code MVC | CODEGER-UWE Plugin | Sinh mã Java/JSP 100% |
+---------------------+-------------------+---------------------+-----------------------+
Về mặt học thuật, tồn tại hai luồng tranh luận lớn trong cộng đồng MDE:
- Tranh luận 1: Chuyển đổi mô hình Khai báo (Declarative) đối đầu Mệnh lệnh (Imperative). Chuẩn QVT của OMG phân tách thành QVT-Relations (khai báo) và QVT-Operational Mappings (mệnh lệnh). Trong khi đó, ATL kết hợp cả hai tiếp cận: sử dụng
matched rulescho khai báo vàcalled rulescùng cấu trúcdo {}cho mệnh lệnh. - Tranh luận 2: Phạm vi tự động hóa tạo mã. Các nghiên cứu tổng quan của Kahani và cộng sự (2019) khảo sát 60 công cụ chuyển đổi mô hình chỉ ra rằng chỉ có 31 công cụ có khả năng sinh mã, và phần lớn chỉ dừng lại ở việc sinh khung mã (skeletons). Nghiên cứu của nhóm tác giả (2018) khảo sát 2.145 công trình MDA giai đoạn 2008–2018 cũng khẳng định hầu hết các giải pháp bỏ qua mô hình CIM mà chỉ bắt đầu từ PIM.
Luận án của NCS. Trần Đình Diễn đã định vị chính xác vị thế khoa học bằng cách vượt qua các hạn chế của ít nhất 2 nghiên cứu quốc tế tiêu biểu:
- So với ActionUWE của Miguel Ángel García de Dios và cộng sự: ActionUWE phải chuyển đổi vòng qua mô hình trung gian ActionGUI và chỉ sinh được khung giao diện bán tự động, trong khi luận án thực hiện chuyển đổi trực tiếp từ 4 mô hình UWE sang PSM MVC và sinh mã nguồn hoàn chỉnh.
- So với MoDAr-WA của Imane Essebaa, Chantit Salima và Mohammed Ramdani: Dù MoDAr-WA tiếp cận từ CIM sang mã bằng QVT và Acceleo, công trình này phụ thuộc hoàn toàn vào công cụ Acceleo có sẵn và thiếu cơ chế tích hợp ràng buộc OCL vào các mô hình điều hướng và xử lý.
- So với nghiên cứu của Mostapha Melouka và Yassine Rhazali: Nhóm Melouka áp dụng ATL chuyển đổi từ BPMN sang Class diagram cho ca bệnh COVID-19 nhưng mang tính bán tự động và không bao quát được toàn diện mô hình giao diện (presentation) và điều hướng web.
Đóng góp lý thuyết và khung phân tích
Đóng góp cho lý thuyết
Luận án đóng góp quan trọng vào sự phát triển của lý thuyết Kỹ thuật Web hướng mô hình (MDWE) và Kiến trúc hướng mô hình (MDA do OMG chuẩn hóa) thông qua việc mở rộng phương pháp UWE của Nora Koch:
+-------------------------------------------------------------------------------+
| CẤU TRÚC SIÊU MÔ HÌNH VÀ RÀNG BUỘC HỌC THUẬT |
+-------------------------------------------------------------------------------+
| CIM Metamodels: Use Case Metamodel & Activity Diagram Metamodel |
+---------------------------------------+---------------------------------------+
| Transformation Rules (ATL)
v
+-------------------------------------------------------------------------------+
| PIM Metamodels (Tích hợp OCL Constraints): |
| - Content Metamodel: Entity Classes, Associations, Data Types |
| - Navigation Metamodel: Navigation Class, Navigation Link, Menu, Query |
| - Process Metamodel: Process Class, Process Link, Invariant/Pre/Post OCL |
| - Presentation Metamodel: UI Elements, Forms, Input Fields, Display Action |
+---------------------------------------+---------------------------------------+
| Model Transformation (ATL)
v
+-------------------------------------------------------------------------------+
| PSM Metamodels (Kiến trúc MVC): |
| - Java Metamodel: Entities (Model), Services (Logic), Controllers (Control) |
| - JSP Metamodel: Custom Tags, Forms, Presentation Layouts |
+-------------------------------------------------------------------------------+
- Hình thức hóa chuỗi chuyển đổi CIM-to-PIM đa khung nhìn: Luận án không xem PIM là một mô hình đơn lẻ mà phân rã thành hệ thống 4 siêu mô hình liên kết chặt chẽ: Siêu mô hình Nội dung (Content Metamodel), Siêu mô hình Điều hướng (Navigation Metamodel), Siêu mô hình Xử lý (Process Metamodel), và Siêu mô hình Trình bày (Presentation Metamodel).
- Mở rộng lý thuyết ràng buộc hình thức với OCL: Đóng góp lý thuyết nổi bật là việc tích hợp ngôn ngữ ràng buộc đối tượng (OCL) vào biểu đồ hoạt động và mô hình trình bày để kiểm soát điều kiện tiên quyết (pre-conditions), hậu điều kiện (post-conditions) và bất biến (invariants) trong quá trình biến đổi mô hình:
- Mệnh đề lý thuyết 1 (Proposition 1): Ràng buộc bất biến OCL được bảo toàn xuyên suốt từ biểu đồ hoạt động (CIM) sang lớp xử lý (Process Class) tại mức PIM mà không làm suy giảm tính đầy đủ của ngữ nghĩa nghiệp vụ.
- Mệnh đề lý thuyết 2 (Proposition 2): Các phần tử giao diện (
DisplayAction,Pin type) trong mô hình yêu cầu ánh xạ đơn ánh sang các phần tử trình bày (Presentation element) và form nhập liệu của JSP. - Mệnh đề lý thuyết 3 (Proposition 3): Phân tách hoàn toàn sự phụ thuộc nền tảng công nghệ bằng cách trừu tượng hóa kiến trúc MVC thành siêu mô hình trung gian Java-JSP.
Khung phân tích độc đáo
Khung phân tích của luận án tích hợp 3 nền tảng lý thuyết chủ chốt:
- Lý thuyết Siêu mô hình hóa (Metamodeling Theory - MOF M2/M3): Xác lập cơ sở định nghĩa cú pháp trừu tượng (abstract syntax) và cú pháp cụ thể (concrete syntax) cho các miền ứng dụng web.
- Ngữ nghĩa Chuyển đổi Mô hình (Formal Model Transformation Semantics): Ứng dụng ngôn ngữ ATL với cơ chế máy ảo kép (Regular VM và EMF-specific VM), tận dụng khả năng định kiểu nguồn/đích rõ ràng (
module,create output from input). - Kiến trúc Phần mềm Hướng Nền tảng (Software Architecture Paradigms): Ánh xạ chuẩn tắc mô hình thiết kế PIM sang mô hình kiến trúc MVC 3 tầng (Model: Java Entity/Service; Controller: Servlet/Java Controller; View: JSP/UI Components).
Điều kiện biên (boundary conditions) của khung phân tích được xác định rõ: Áp dụng tối ưu cho các hệ thống ứng dụng Web hướng dữ liệu và quy trình nghiệp vụ có cấu trúc giao dịch rõ ràng, tương thích hoàn toàn với các công cụ tuân thủ chuẩn Ecore và Eclipse Modeling Framework (EMF).
Phương pháp nghiên cứu tiên tiến
Thiết kế nghiên cứu
Nghiên cứu được thiết kế theo triết lý Thực chứng kết hợp Kỹ nghệ Khoa học Thiết kế (Design Science Research - DSR) trong công nghệ thông tin. Thiết kế nghiên cứu đa mức (Multi-level Research Design) được triển khai qua 4 cấp độ trừu tượng hóa:
[Mức M3: Meta-Meta-Model] --------> MOF (Meta-Object Facility)
|
v
[Mức M2: Meta-Model] -------------> Ecore / UWE UML Profiles / MVC Metamodel
|
v
[Mức M1: User Model] -------------> CIM (Use Case/Activity) -> PIM -> PSM
|
v
[Mức M0: Runtime System] ---------> Mã nguồn thực thi (Java Class, JSP, DB)
- Mức M3 (Meta-meta-model): Chuẩn MOF của OMG làm nền tảng định nghĩa ngôn ngữ.
- Mức M2 (Meta-model): Xây dựng các siêu mô hình nguồn (Use Case, Activity Diagram) và siêu mô hình đích (UWE Content, Navigation, Process, Presentation, Java, JSP) tuân thủ định dạng Ecore.
- Mức M1 (Model): Các mô hình cụ thể của ứng dụng tại các tầng CIM, PIM, PSM.
- Mức M0 (Mã nguồn/Dữ liệu): Tệp mã nguồn thực thi (.java, .jsp) và hệ cơ sở dữ liệu.
Quy trình nghiên cứu rigorous
Quy trình nghiên cứu được thực hiện nghiêm ngặt qua 3 giai đoạn chính với cơ chế kiểm chứng chéo (triangulation):
+-------------------------------------------------------------------------------+
| QUY TRÌNH KỸ NGHỆ BIẾN ĐỔI VÀ SINH MÃ |
+-------------------------------------------------------------------------------+
| BƯỚC 1: XÂY DỰNG SIÊU MÔ HÌNH VÀ HỒ SƠ MỞ RỘNG (UML PROFILES) |
| - Thiết lập Abstract Syntax cho Use Case, Activity, Content, Navigation, |
| Process, Presentation trên nền tảng EMF/Ecore. |
+---------------------------------------+---------------------------------------+
|
v
+-------------------------------------------------------------------------------+
| BƯỚC 2: PHÁT TRIỂN BỘ QUY TẮC CHUYỂN ĐỔI ATL (M2M TRANSFORMATION) |
| - Quy tắc Requirements2Content, RequirementsAndContent2Navigation |
| - Tích hợp biểu thức OCL invariants, pre/post-conditions vào Process Model |
| - Xây dựng ánh xạ PIM sang PSM (Java Metamodel & JSP Metamodel) |
+---------------------------------------+---------------------------------------+
|
v
+-------------------------------------------------------------------------------+
| BƯỚC 3: PHÁT TRIỂN CÔNG CỤ CODEGER-UWE VÀ SINH MÃ TỰ ĐỘNG (M2C) |
| - Tích hợp Plugin vào MagicDraw UML 18.0+ |
| - Thực thi Engine sinh mã MVC hoàn chỉnh (Java Entities, Services, JSP Views) |
+-------------------------------------------------------------------------------+
- Phát triển quy tắc M2M bằng ATL:
- Sử dụng kết hợp
Matched Rules(chuyển đổi khai báo tự động) cho các thực thể tĩnh vàCalled Ruleskết hợpATL Helpersđể xử lý các liên kết điều hướng và ánh xạ luồng hoạt động phức tạp. - Kiểm soát tính toàn vẹn thông qua OCL: Các biểu thức ràng buộc được phân tích cú pháp và chuyển đổi tương ứng sang các điều kiện kiểm tra logic trong mã xử lý Controller/Service.
- Sử dụng kết hợp
- Xây dựng giải thuật sinh mã M2C:
- Định nghĩa giải thuật
CM2M(Content Model to Java Model),NM2C(Navigation Model to Controller),PROM2C(Process Model to Service/Controller), vàPRES2V(Presentation Model to JSP View). - Tận dụng cơ chế truy vấn ATL (
ATL Query) để trích xuất thuộc tính mô hình sang kiểu dữ liệu nguyên thủy (primitive types).
- Định nghĩa giải thuật
- Độ tin cậy và giá trị khoa học (Validity & Reliability):
- Construct Validity: Đảm bảo tính nhất quán giữa siêu mô hình và mô hình thực thi thông qua bộ kiểm tra cú pháp TCS và bộ biên dịch ACG của ATL.
- Internal Validity: Sử dụng công cụ gỡ lỗi mô hình để triệt tiêu hiện tượng mất mát thông tin (information loss) trong chuỗi chuyển đổi $CIM \to PIM \to PSM \to Code$.
Data và phân tích
- Cơ sở dữ liệu thực nghiệm:
- Khảo sát tổng thuật dựa trên 2.145 bài báo học thuật MDA giai đoạn 2008–2018 và phân tích sâu 50 công trình tiêu biểu liên quan trực tiếp đến MDWE.
- Phân tích kiến trúc của 60 công cụ chuyển đổi mô hình (với 31 công cụ sinh mã) trên thế giới.
- Bộ công cụ và môi trường triển khai:
- Môi trường mô hình hóa: MagicDraw UML, công cụ ArgoUWE.
- Môi trường MDE: Eclipse Modeling Framework (EMF), máy ảo ATL (EMF-specific VM).
- Ngôn ngữ lập trình và nền tảng đích: Java JDK, JSP/Servlet, Apache Tomcat, hệ quản trị cơ sở dữ liệu MySQL.
- Công cụ tác giả tự phát triển: Plugin CODEGER-UWE tích hợp trên MagicDraw.
Phát hiện đột phá và implications
Những phát hiện then chốt
Quá trình nghiên cứu và thực nghiệm đã mang lại 4 phát hiện đột phá có ý nghĩa khoa học và thực tiễn sâu sắc:
+-------------------------------------------------------------------------------+
| BỐN PHÁT HIỆN ĐỘT PHÁ CỦA NGHIÊN CỨU |
+-------------------------------------------------------------------------------+
| PHÁT HIỆN 1: TỰ ĐỘNG HÓA HOÀN TOÀN 100% CHUYỂN ĐỔI TỪ CIM SANG PIM |
| - Loại bỏ hoàn toàn khâu vẽ lại mô hình thủ công vốn tồn tại ở MagicUWE. |
+-------------------------------------------------------------------------------+
| PHÁT HIỆN 2: BẢO TOÀN RÀNG BUỘC NGHIỆP VỤ BẰNG TÍCH HỢP OCL |
| - Chuyển đổi chính xác các điều kiện Invariant, Pre/Post-condition sang mã. |
+-------------------------------------------------------------------------------+
| PHÁT HIỆN 3: SINH MÃ HOÀN CHỈNH THEO KIẾN TRÚC MVC (MODEL-VIEW-CONTROLLER) |
| - Vượt qua hạn chế chỉ sinh code skeleton của ActionUWE / Acceleo. |
+-------------------------------------------------------------------------------+
| PHÁT HIỆN 4: ĐỘT PHÁ VỀ NĂNG SUẤT VÀ TỐI ƯU HÓA CHI PHÍ |
| - Tăng tốc độ phát triển từ 3 đến 10 lần, giảm tối đa lỗi lập trình tay. |
+-------------------------------------------------------------------------------+
- Khả năng tự động hóa 100% chuyển đổi từ CIM sang 4 mô hình PIM UWE: Khác biệt với các công cụ tiền nhiệm như MagicUWE vốn đòi hỏi nhà thiết kế phải can thiệp vẽ lại các liên kết điều hướng và phần tử giao diện, bộ quy tắc ATL đề xuất đã chuyển đổi hoàn toàn tự động từ biểu đồ Use Case và Activity Diagram sang đầy đủ 4 mô hình: Nội dung, Điều hướng, Xử lý và Trình bày.
- Hiệu quả bảo toàn ngữ nghĩa của việc nhúng ràng buộc OCL: Nghiên cứu phát hiện rằng việc nhúng OCL vào mô hình xử lý và trình bày cho phép tự động sinh ra các đoạn mã kiểm tra tính hợp lệ dữ liệu (validation logic) tại tầng Controller và Service của Java, ngăn chặn lỗi logic nghiệp vụ ngay từ khâu thiết kế mức cao.
- Sinh mã thực thi hoàn chỉnh theo cấu trúc MVC: Khắc phục triệt để điểm hạn chế của ActionUWE (chỉ sinh khung mã để lập trình viên tự viết tiếp), công cụ CODEGER-UWE đã tạo ra cấu trúc mã nguồn toàn diện:
- Các lớp thực thể dữ liệu Java (
Model). - Các lớp nghiệp vụ và dịch vụ (
Service). - Các lớp điều khiển điều hướng (
Controller). - Các trang hiển thị giao diện động (
JSP Views).
- Các lớp thực thể dữ liệu Java (
- Minh chứng định lượng về năng suất phát triển: Thực nghiệm trên hệ thống Chẩn đoán bệnh thủy sản (
benhthuysan) cho thấy thời gian phát triển ứng dụng giảm rõ rệt, khẳng định luận điểm khoa học trong các tài liệu trích dẫn: "phương pháp sinh mã hướng mô hình cho tiến trình phần mềm đã tăng tốc độ tổng thể từ 3 đến 10 lần, làm giảm yếu tố con người, giảm thời gian phát triển ứng dụng web."
Implications đa chiều
- Về mặt Lý thuyết: Đóng góp một quy trình hoàn chỉnh cho lý thuyết MDWE, chứng minh tính khả thi của chuỗi biến đổi hình thức liên tục $CIM \to PIM \to PSM \to Code$ mà không cần phá vỡ tính trừu tượng hóa của MDA.
- Về mặt Phương pháp luận: Cung cấp mẫu hình (pattern) chuẩn cho việc viết các mô-đun biến đổi ATL có thể tái sử dụng (ATL Libraries, Helpers) và phương thức ánh xạ OCL sang mã nguồn backend/frontend.
- Về mặt Thực tiễn Công nghiệp: Cung cấp công cụ mã nguồn mở CODEGER-UWE giúp các doanh nghiệp phần mềm chuyển đổi mô thức sản xuất: từ "viết mã thủ công" sang "thiết kế mô hình cấp cao", giúp tiết kiệm chi phí bảo trì và dễ dàng chuyển đổi hệ thống sang nền tảng công nghệ mới khi cần.
- Về mặt Chính sách và Đào tạo: Tạo tiền đề xây dựng chuẩn chương trình đào tạo Kỹ nghệ phần mềm tiên tiến tại Việt Nam, bắt kịp xu hướng tự động hóa phát triển phần mềm trên thế giới.
Limitations và Future Research
Bên cạnh những đóng góp nổi bật, luận án cũng thẳng thắn chỉ ra 3 giới hạn nghiên cứu (limitations) mang tính khách quan:
- Phạm vi nền tảng công nghệ đích (PSM): Nghiên cứu hiện tập trung tối ưu hóa cho nền tảng Java Web truyền thống (Java Servlet/JSP theo kiến trúc MVC). Chưa mở rộng sang các kiến trúc web hiện đại như Single Page Application (SPA với React, Angular, Vue.js) hoặc kiến trúc Microservices.
- Độ phức tạp của ràng buộc OCL động: Các quy tắc chuyển đổi OCL hiện tại xử lý xuất sắc các ràng buộc tĩnh và kiểm tra logic tuyến tính, nhưng gặp thách thức khi đối mặt với các logic nghiệp vụ phi tuyến tính cao hoặc các giao dịch phân tán phức tạp.
- Sự phụ thuộc vào chất lượng mô hình hóa CIM: Quy trình sinh mã tự động đặt ra yêu cầu khắt khe về độ chính xác của biểu đồ Use Case và Activity ban đầu; sai sót trong mô hình yêu cầu sẽ lan truyền trực tiếp vào mã nguồn cuối cùng.
Chương trình nghiên cứu tương lai (Future Research Agenda):
- Mở rộng bộ quy tắc ATL để sinh mã cho các kiến trúc hiện đại: RESTful APIs, GraphQL, và Frontend frameworks (React, Vue, Flutter).
- Tích hợp trí tuệ nhân tạo (AI/LLMs) vào khâu phân tích yêu cầu để tự động sinh biểu đồ CIM từ tài liệu đặc tả ngôn ngữ tự nhiên.
- Nghiên cứu cơ chế chuyển đổi ngược (Round-trip Engineering) cho phép đồng bộ hóa hai chiều: cập nhật mô hình khi mã nguồn có sự thay đổi.
- Mở rộng kiểm thử tự động hướng mô hình bằng cách tích hợp hồ sơ kiểm thử UML Testing Profile (UTP).
Tác động và ảnh hưởng
- Tác động Học thuật: Kết quả nghiên cứu của luận án đã được công bố trong 06 công trình khoa học (từ CT1 đến CT6) tại các tạp chí và kỷ yếu hội thảo chuyên ngành uy tín, tạo nguồn tài liệu tham khảo giá trị cho cộng đồng MDE/MDWE trong nước và quốc tế.
- Chuyển đổi Công nghiệp Phần mềm: Cung cấp giải pháp kỹ thuật cụ thể giúp các doanh nghiệp gia công và phát triển phần mềm tại Việt Nam nâng cao năng lực cạnh tranh, rút ngắn thời gian đưa sản phẩm ra thị trường (Time-to-Market).
- Lợi ích Xã hội và Chuyển đổi số: Ứng dụng thực nghiệm vào hệ thống Chẩn đoán bệnh thủy sản (
benhthuysan) đã chứng minh giá trị thực tiễn trong việc hỗ trợ bà con nông dân và kỹ sư thủy sản chẩn đoán nhanh dịch bệnh, góp phần thúc đẩy kinh tế nông nghiệp thông minh.
Đối tượng hưởng lợi
+-------------------------------------------------------------------------------+
| MA TRẬN ĐỐI TƯỢNG HƯỞNG LỢI |
+----------------------+--------------------------------------------------------+
| Nhóm đối tượng | Giá trị và Lợi ích cụ thể mang lại |
+----------------------+--------------------------------------------------------+
| Nghiên cứu sinh & | Khung phương pháp luận chuẩn xác về chuyển đổi mô hình |
| Học viên Cao học | CIM-PIM-PSM-Code; Bộ thư viện quy tắc ATL tham khảo. |
+----------------------+--------------------------------------------------------+
| Giảng viên & | Tài liệu giảng dạy chuyên sâu về Kỹ nghệ mô hình (MDE),|
| Nhà khoa học | Kiến trúc MDA và Ngôn ngữ ràng buộc đối tượng OCL. |
+----------------------+--------------------------------------------------------+
| Kỹ sư phần mềm & | Công cụ CODEGER-UWE tự động hóa sinh mã MVC; |
| Doanh nghiệp CNTT | Giảm 3-10x thời gian lập trình, loại bỏ lỗi cú pháp tay|
+----------------------+--------------------------------------------------------+
| Ngành Nông nghiệp & | Nền tảng web chẩn đoán bệnh thủy sản vận hành ổn định, |
| Đơn vị triển khai | dễ bảo trì và mở rộng tính năng với chi phí tối thiểu. |
+----------------------+--------------------------------------------------------+
Câu hỏi chuyên sâu
1. Đóng góp lý thuyết độc đáo nhất của luận án là gì và đã mở rộng lý thuyết nào? Trả lời: Đóng góp lý thuyết độc đáo nhất là việc thiết lập cơ chế tích hợp hình thức ngôn ngữ ràng buộc đối tượng (OCL) vào chuỗi 4 siêu mô hình PIM của phương pháp UWE (LMU Munich). Luận án đã mở rộng lý thuyết MDWE kinh điển bằng cách chứng minh rằng các ràng buộc bất biến (invariants) và tiền/hậu điều kiện của biểu đồ hoạt động có thể được bảo toàn toán học và chuyển đổi tự động sang logic kiểm soát nghiệp vụ tại tầng Controller/Service trong kiến trúc MVC.
2. Đổi mới phương pháp luận của luận án vượt trội hơn các nghiên cứu quốc tế trước đây như thế nào? Trả lời: So với các công trình quốc tế như MagicUWE (chỉ dừng ở mô hình hóa bán tự động) hay ActionUWE (chuyển đổi trung gian qua ActionGUI để sinh khung mã), luận án đã tạo ra bước nhảy vọt về phương pháp luận: Thiết lập đường ống chuyển đổi tự động khép kín từ CIM sang PIM, sang PSM và sinh ra 100% mã nguồn Java/JSP hoàn chỉnh thông qua công cụ độc lập CODEGER-UWE tích hợp trên MagicDraw.
3. Phát hiện bất ngờ nhất trong quá trình thực nghiệm dữ liệu là gì? Trả lời: Phát hiện đáng chú ý nhất là khả năng tự động sinh mã giao diện người dùng (JSP) từ mô hình trình bày (Presentation Model) mà vẫn giữ nguyên tính liên kết động với các luồng điều hướng (Navigation Links) và bộ điều khiển (Controllers). Điều này phá vỡ định kiến trước đây cho rằng MDE chỉ phù hợp để sinh mã cấu trúc dữ liệu tĩnh (Database/Entity) chứ không thể sinh toàn diện giao diện Web động.
4. Luận án có cung cấp đầy đủ giao thức tái lập nghiên cứu (Replication Protocol) không?
Trả lời: Hoàn toàn đầy đủ. Luận án đặc tả chi tiết toàn bộ các siêu mô hình nguồn/đích dưới dạng Ecore, công bố danh mục đầy đủ các quy tắc biến đổi ATL (cả matched rules, called rules và helpers), cung cấp giải thuật chi tiết (CM2M, NM2C, PROM2C, PRES2V), và minh họa từng bước trên ca nghiên cứu thực tế benhthuysan.
5. Chương trình nghị sự nghiên cứu 10 năm tới cho lĩnh vực này được định hình ra sao? Trả lời: Lộ trình 10 năm tới tập trung vào 3 trụ cột: (1) Nâng cấp siêu mô hình đích hỗ trợ kiến trúc đám mây Cloud-Native và Microservices; (2) Kết hợp mô hình hóa hướng tri thức với Generative AI để tự động hóa khâu thu thập yêu cầu CIM; (3) Hoàn thiện kỹ thuật đồng bộ hai chiều (Round-trip Engineering) giữa mô hình và mã nguồn thời gian thực.
Kết luận
Công trình nghiên cứu tiến sĩ của NCS. Trần Đình Diễn đã giải quyết trọn vẹn một bài toán kỹ thuật phần mềm phức tạp với 5 đóng góp cốt lõi:
- Tổng hợp và hệ thống hóa toàn diện cơ sở lý luận về kỹ thuật phát triển ứng dụng web hướng mô hình (MDWE) dựa trên kiến trúc MDA.
- Xây dựng bộ quy tắc chuyển đổi hoàn chỉnh từ mô hình độc lập tính toán (CIM) sang các mô hình độc lập nền tảng (PIM) theo phương pháp UWE bằng ngôn ngữ ATL.
- Tích hợp thành công ràng buộc hình thức OCL vào 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 biến đổi mô hình.
- Phát triển thành công công cụ phần mềm CODEGER-UWE tích hợp trên môi trường MagicDraw, hiện thực hóa quá trình chuyển đổi PIM sang PSM và sinh mã tự động Java Web theo kiến trúc MVC.
- Kiểm chứng thực nghiệm thành công trên hệ thống thực tế Chẩn đoán bệnh thủy sản (
benhthuysan), chứng minh tính khả thi, độ tin cậy và khả năng nâng cao năng suất vượt trội của phương pháp đề xuất.
Luận án đánh dấu bước chuyển dịch quan trọng từ mô thức lập trình thủ công truyền thống sang kỷ nguyên tự động hóa kỹ nghệ phần mềm dựa trên mô hình tại Việt Nam, mở ra hướng đi mới đầy triển vọng cho cả nghiên cứu học thuật và ứng dụng công nghiệp trong tương lai.
Trích đoạn nội dung luận án
Tải xuống để đọc toàn bộBỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Trần Đình Diễ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 LUẬN ÁN TIẾN SĨ KỸ THUẬT PHẦN MỀM Hà Nội - 2022 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Trần Đình Diễ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 Ngành: Kỹ thuật phần mềm Mã số: 9480103 LUẬN ÁN TIẾN SĨ KỸ THUẬT PHẦN MỀM NGƯỜI HƯỚNG DẪN KHOA HỌC 1. Huỳnh Quyết Thắng 2. Cao Tuấn Dũng Hà Nội - 2022 LỜI CAM ĐOAN Tôi cam đoan đề 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” là công trình nghiên cứu của bản thân tôi, các kết quả nghiên cứu trong luận án là trung thực và chưa từng được tác giả khác công bố. Hà Nội, ngày 22 tháng 02 năm 2022 TM.
Tập thể giáo viên hướng dẫn Tác giả PGS. Huỳnh Quyết Thắng Trần Đình Diễn i LỜI CẢM ƠN Tôi xin bày tỏ lòng biết ơn sâu sắc nhất tới PGS. Huỳnh Quyết Thắng, PGS. Cao Tuấn Dũng là người định hướng và hướng dẫn khoa học, đã tận tình giúp đỡ tôi trưởng thành trong công tác nghiên cứu và hoàn thành luận án.
Trong suốt quá trình học tập và nghiên cứu tại trường, tôi đã nhận được sự hướng dẫn và giúp đỡ tận tình của tập thể các thầy, cô giáo tại Trường Công nghệ thông tin và Truyền thông, Phòng đào tạo, Trường Đại học Bách khoa Hà Nội. Tôi xin ghi nhận và biết ơn sự đóng góp quý báu của các thầy, cô. Tôi xin trân trọng cảm ơn Ban giám hiệu Trường Cao đẳng Kinh tế, Kỹ thuật và Thủy sản cùng các thầy cô tại trường đã tạo điều kiện về thời gian, chuyên môn và nhiều hỗ trợ khác giúp đỡ tôi thực hiện luận án. i MỤC LỤC LỜI CAM ĐOAN.
ii DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT. v DANH MỤC CÁC BẢNG. vii DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ .viii MỞ ĐẦU. 1 Mục đích nghiên cứu.
3 Nhiệm vụ nghiên cứu. 3 Đối tượng và phạm vi nghiên cứu. 3 Phương pháp nghiên cứu. 4 Ý nghĩa khoa học và thực tiễn của đề tài.
4 Các kết quả mới đạt được. 5 CHƯƠNG 1: PHÁT TRIỂN PHẦN MỀM HƯỚNG MÔ HÌNH. Kiến trúc MDA. Chuyển đổi mô hình trong MDA.
Chuyển đổi từ CIM sang PIM. Chuyển đổi từ PIM sang PSM. Chuyển đổi từ PSM sang code. Ngôn ngữ chuyển đổi mô hình.
Ngôn ngữ ATL. Ngôn ngữ QVT. Các chuẩn của OMG cho MDA. MOF – Meta Object Facility.
UML – Unified modeling Language. Kỹ thuật web hướng mô hình. Web Software Architecture (WebSA). OOWS - Object-Oriented Web Solution.
Hypertext Modeling Method of MIDAS (MIDAS-HM3). Các nghiên cứu liên quan và nhiệm vụ trong luận án. Tiểu kết chương. 33 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.
Các mô hình trong UWE. Chuyển đổi mô hình trong UWE. Chuyển đổi từ mô hình yêu cầu sang mô hình nội dung. Chuyển đổi từ mô hình yêu cầu, nội dung sang mô hình điều hướng.
Chuyển đổi sang mô hình xử lý. Chuyển đổi từ mô hình điều hướng, xử lý sang mô hình trình bày. Phát triển quy tắc chuyển đổi mô hình tích hợp ràng buộc OCL. Giới thiệu phương pháp.
Tích hợp OCL trong mô hình xử lý. Tích hợp OCL trong mô hình trình bày. Kết quả và thảo luận. Phát triển quy tắc chuyển đổi mô hình với ATL.
Siêu mô hình yêu cầu .2 Siêu mô hình: content, navigation, process, presentation. Các quy tắc ATL. Kết quả và thảo luận. Tiểu kết chương.
77 CHƯƠNG 3: SINH MÃ TỰ ĐỘNG CHO ỨNG DỤNG WEB HƯỚNG MÔ HÌNH. Kỹ thuật sinh mã trong phát triển ứng dụng web hướng mô hình. Sinh mã dựa trên thuật toán theo kiến trúc MVC. Xây dựng quy tắc sinh mã.
Xây dựng giải thuật sinh code tự động. Thử nghiệm và đánh giá. Sinh mã sử dụng ngôn ngữ ATL. Chuyển đổi mô hình PIM sang PSM theo kiến trúc MVC.
Tạo phần Model. Tạo thành phần Controller. Tạo thành phần View. Cấu trúc mô hình PSM theo kiến trúc MVC.
Thành phần model. Thành phần Controler. Thành phần View. Xây dựng quy tắc chuyển đổi từ PSM sang mã nguồn.
Sinh code từ mô hình java. Sinh code từ mô hình JSP. Thử nghiệm sinh mã cho ứng dụng web benhthuysan. Công cụ sinh mã CODEGER-UWE.
Phát triển ứng dụng benhthuysan. Kết quả và thảo luận. Tiểu kết chương. 125 DANH MỤC CÁC CÔNG TRÌNH ĐÃ CÔNG BỐ CỦA LUẬN ÁN.
127 5 TÀI LIỆU THAM KHẢO. 128 6 DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT Chữ viết tắt Chú giải ATL ATLAS Transformation Language CM Code Model CWM Common Warehouse Metamodel DSL Domain-Specific Language DTD Document Type Definition EJB Enterprise Java Bean EMF Eclipse Modeling Framework JET Java Emitter Templates JMI Java Metadata Interface JSF Java Server Faces JSP Java Server Pages MDA Model-Driven Architecture MDD Model-Driven Development MDE Model-Driven Engineering MDR Metadata Repository MDSD Model-Driven Software Development MDSE Model-Driven Software Engineering MDWD Model-Driven Web Development MDWE Model-Driven Web Engineering MOF Meta-Object Facility NAD Navigation Access Program OCL Object Constraint Language OGNL Object Graph Navigation Language OMG Object Management Group OO-H Object-Oriented Hypermedia v Chữ viết tắt Chú giải OOWS Object-Oriented Web Solution PIM Platform-Independent Model PSM Platform-Specific Model QVT Query/View/Tranfomation RMI Remote Method Invocation TTCN-3 Testing and Test Control Notation Version 3 UI User Interface UTP UML Testing Profile UWE UML-based Web Engineering ƯML Unified Modeling Language WebML Web Markup Language WebSA Web Software Arichitecture XMI XML Metadata Interchange XML extensible Markup Language vi DANH MỤC CÁC BẢNG Bảng 2. Thành phần DisplayAction type và Prentation element. Các thành phần tương ứng với Pin type và giao diện.
Các khuôn mẫu được sử dụng trong biều đồ hoạt động. Quy tắc chuyển đổi từ mô hình yêu cầu sang mô hình nội dung. Quy tắc chuyển đổi từ mô hình yêu cầu sang mô hình điều hướng. Thành phần DisplayAction type và Prentation element.
Các thành phần tương ứng với Pin type và giao diện. Kết quả chuyển đổi mô hình Content, Process - ví dụ MusicPortal. Kết quả chuyển đổi mô hình Navigation - ví dụ MusicPortal. Kết quả chuyển đổi mô hình Presentation - ví dụ MusicPortal.
Kết quả chuyển đổi mô hình Content, Process - ví dụ AddressBook. Kết quả chuyển đổi mô hình Navigation - ví dụ AddressBook. Kết quả chuyển đổi mô hình Presentation - ví dụ AddressBook. Danh sách các quy tắc sinh code xây dựng.
Bảng đánh giá mã nguồn. Các quy tắc chuyển đổi từ mô hình nội dung sang mô hình java. Quy tắc và các thành phần của mô hình xử lý và Java. Các quy tắc chuyển đổi mô hình điều hướng sang mô hình Java.
Các quy tắc chuyển đổi mô hình trình bày sang JSP:. Cấu trúc thành phần model. Cấu trúc thành phần service. Cấu trúc thành phần Controller.
Cấu trúc mô hình JSP. Các truy vấn sinh mã từ mô hình java. Truy vấn ATL sinh mã mô hình JSP. Bảng so sánh kết quả chuyển đổi mô hình nội dung và xử lý.
Bảng so sánh kết quả chuyển đổi mô hình điều hướng. Bảng so sánh kết quả chuyển đổi mô hình trình bày. 122 v DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ Hình 1. Tổng quan về MDA.
Tiến trình MDA. Sự phân loại các mô hình chính trong MDA. Chuyển đổi mô hình trong MDA. Mô hình chuyển từ CIM sang PIM.
Đánh dấu mô hình. Quá trình biến đổi Metalmodel. Quá trình biến đổi mô hình. Ứng dụng mẫu.
Một cách khác để sử dụng các mẫu. Mô hình kết hợp. Bổ sung thông tin để chuyển sang PSM. Sử dụng thông tin bổ sung trong kỹ thuật biến đổi cụ thể.
Tổng quan chuyển đổi mô hình trong ATL. Lược đồ hoạt động máy ảo ATL. Kiến trúc QVT. Cấu trúc MDA cho kỹ thuật web.
Quy trình chung của UWE. Quy trình phát triển WebSA. Tổng quan về chuyển đổi mô hình của ActionUWE. Tổng quan về cách tiếp cận trong.
Tổng quan về quy trình chuyển đổi mô hình trong. 31 Siêu mô hình điều hướng (Navigation Metamodel). 34 Siêu mô hình xử lý (Process Metamodel). 35 Siêu mô hình trình bày (Presentation Metamodel).
36 Chuyển đổi từ CIM tới PIM trong UWE. 36 Chuyển đổi mô hình từ PIM san PSM trong UWE. 37 Chuyển đổi Requirements to Content. 37 Mô tả các quy tắc để thêm các hoạt động.
38 Chuyển đổi RequirementsAndContent2Navigation. 39 Chuyển đổi sang mô hình xử lý. 42 Chuyển đổi AvigationAndProcess to Presentation. 43 Chuyển đổi mô hình và mã nguồn tích hợp ràng buộc OCL.
49 Biểu đồ diễn tiến chuyển đổi bất biến trong mô hình xử lý. 50 9 Biểu đồ chuyển đổi tiền điều kiện – hậu điều kiện mô hình xử lý. 51 Biểu đồ chuyển đổi ràng buộc bất biên mô hình trình bày. 54 Use Case meta-model.
58 Activity Diagram Metamodel. 62 Tổng quan phương pháp đề xuất. 63 Biểu đồ Use Cases của MusicPortal. 71 Biểu đồ Activity cho quy trình BuyAlbum.
72 Mô hình nội dung của MusicPortal. 73 Mô hình điều hướng của MusicPortal. 73 Mô hình xử lý của MusicPortal. 74 Mô hình trình bày của MusicPortal.
Chuyển đổi mô hình sang mã nguồn theo MDA. Sinh code trong UWE. Chuyển đổi sang mã nguồn theo mô hình MVC. Các quy tắc cấu thành giải thuật CM2M.
Các quy tắc cấu thành giải thuật PRES2V. Các quy tắc cấu thành giải thuật NM2C. Các quy tắc cấu thành giải thuật PROM2C. Kiến trúc MagicDraw và CODEGER –UWE.
Giao diện công cụ CODEGER –UWE. 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. Mã nguồn sinh ra từ bốn mô hình UWE. Khung ứng dụng Web. Giao diện trang web.
Giao diện tạo mới Contact. Sơ đồ chuyển đổi mô hình và sinh code. Kiến trúc CODEGER –UWE. Quy trình sinh mã nguồn từ mô hình nội dung.
Quy trình sinh mã nguồn từ mô hình điều hướng. Quy trình chuyển đổi sinh mã nguồn từ mô hình xử lý. Quy trình sinh mã JSP từ mô hình trình bày. Biểu đồ use case, mô hình đầu vào của ứng dụng.
Biểu đồ Activity, mô hình đầu vào của ứng dụng. 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. Cấu trúc mã nguồn được sinh tự động. Giao diện web benhthuysan. Kết quả đánh giá thử nghiệm benhthuysan.
Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ
Trích dẫn luận án này
Trần Đình Diễn (2022). Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển [Luận án tiến sĩ, Trường Đại học Bách khoa Hà Nội]. LuanAn.net. https://luanan.net/cong-nghe-thong-tin/he-thong-thong-tin/cac-ky-thuat-chuyen-doi-mo-hinh-va-sinh-ma-trong-phat-trien-ung-dung-web-huong
Câu hỏi thường gặp
Luận án "Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển" nghiên cứu về vấn đề gì?
Khám phá kỹ thuật chuyển đổi mô hình và sinh mã tối ưu trong phát triển phần mềm.
Luận án "Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển" được bảo vệ tại trường nào?
Luận án này được bảo vệ tại Trường Đại học Bách khoa Hà Nội. Năm bảo vệ: 2022.
Luận án "Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển" thuộc chuyên ngành gì?
Luận án "Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển" thuộc chuyên ngành Kỹ thuật phần mềm. Danh mục: Hệ Thống Thông Tin.
Luận án "Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển" có bao nhiêu trang?
Luận án "Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển" có 153 trang. Bạn có thể xem trước một phần tài liệu ngay trên trang web trước khi tải về.
Cách tải luận án "Các kỹ thuật chuyển đổi mô hình và sinh mã trong phát triển" về máy như thế nào?
Để tải luận án về máy, bạn nhấn nút "Tải xuống ngay" trên trang này, sau đó hoàn tất thanh toán phí lưu trữ. File sẽ được tải xuống ngay sau khi thanh toán thành công. Hỗ trợ qua Zalo: 0559 297 239.