I. Tổng quan về phát triển phần mềm tự động hóa dựa trên mô hình thống nhất
Phát triển phần mềm dựa trên mô hình (Model-Based Software Development) là phương pháp then chốt trong kỹ thuật phần mềm hiện đại. Phương pháp này kết hợp hai phương pháp bổ sung: kỹ thuật phần mềm hướng mô hình (MDSE) và thiết kế hướng miền (DDD). MDSE nhằm giải quyết độ phức tạp liên quan đến nền tảng công nghệ. DDD tập trung xử lý độ phức tạp của yêu cầu miền. Cả hai phương pháp đều sử dụng mô hình làm trung tâm trong quy trình phát triển. Luận án tiến sĩ về công nghệ thông tin đề xuất cách tiếp cận thống nhất kết hợp MDSE với DDD. Cách tiếp cận này sử dụng ngôn ngữ đặc thù miền dựa trên annotation (aDSL) nội tại trong ngôn ngữ lập trình hướng đối tượng. Mục tiêu là biểu đạt mô hình miền thống nhất và tự động tạo phần mềm mô-đun từ mô hình đó. Đây là bước tiến quan trọng trong tự động hóa phát triển phần mềm.
1.1. Kỹ thuật phần mềm hướng mô hình MDSE
MDSE là phương pháp kỹ thuật phần mềm sử dụng mô hình làm yếu tố trung tâm trong toàn bộ vòng đời phát triển. Mục tiêu chính của MDSE là xử lý độ phức tạp nền tảng công nghệ. Phương pháp này cho phép nhà phát triển tập trung vào logic nghiệp vụ thay vì chi tiết kỹ thuật. OMG đã đề xuất kiến trúc MDA/MDD làm nền tảng chuẩn cho MDSE. Các mô hình ở mức trừu tượng cao được chuyển đổi tự động thành mã nguồn. Quá trình này giảm thiểu lỗi do con người và tăng năng suất phát triển. MDSE kết hợp với ngôn ngữ đặc thù miền (DSL) mở ra khả năng tự động hóa mạnh mẽ hơn.
1.2. Thiết kế hướng miền DDD trong kỹ thuật phần mềm
II. Phân tích thách thức trong mô hình hóa miền và tự động hóa phát triển
Khi áp dụng DDD trên nền tảng lập trình hướng đối tượng (OOPL), đội ngũ kỹ thuật đối mặt nhiều thách thức thiết kế. Thứ nhất, câu hỏi về thành phần cấu tạo của mô hình miền biểu đạt thực sự thiết yếu vẫn chưa được giải đáp thỏa đáng. Phương pháp DDD hiện tại không xác định rõ các annotation tối thiểu cần thiết. Thứ hai, quy trình xây dựng phần mềm hiệu quả từ mô hình miền cũng thiếu hướng dẫn cụ thể. Các công trình DDD hiện có không chuẩn hóa phần mở rộng thành ngôn ngữ chính thức. Chúng cũng không điều tra cần ngôn ngữ DSL nào để xây dựng mô hình phần mềm hoàn chỉnh. Về mặt mô hình hóa hành vi, DDD truyền thống không xem xét đầy đủ khía cạnh này. Evans trong cuốn sách gốc chỉ đề cập sơ bộ đến sơ đồ tương tác đối tượng. Điều này tạo ra khoảng trống lớn trong quy trình thiết kế mô hình miền toàn diện.
2.1. Thiếu hụt trong xác định mô hình miền biểu đạt thiết yếu
Một vấn đề cốt lõi trong DDD hiện tại là thiếu cơ chế xác định mô hình miền biểu đạt thực sự thiết yếu. Các annotation hiện có trong các công trình DDD mở rộng rất nhiều nhưng không phân loại được mức độ thiết yếu. Đội ngũ kỹ thuật không có tiêu chuẩn rõ ràng để đánh giá tính đầy đủ của mô hình miền. Không có khung thiết kế tối thiểu (minimum design space) cho lớp miền. Điều này dẫn đến mô hình miền quá phức tạp hoặc thiếu thông tin cần thiết. Giải pháp cần một tập annotation được lựa chọn cẩn thận từ các nguồn kỹ thuật phần mềm uy tín.
2.2. Khó khăn trong xây dựng phần mềm mô đun từ mô hình miền
Thách thức thứ hai liên quan đến cách chuyển đổi mô hình miền thành phần mềm mô-đun hoạt động hiệu quả. Quá trình tạo mã tự động từ mô hình miền đòi hỏi kiến trúc phần mềm rõ ràng. Phần mềm cần có tính chất mô-đun hóa để dễ bảo trì và mở rộng. Kiến trúc mô hình phần mềm khái niệm bao gồm ba lớp: mô hình miền ở lõi, lớp mô-đun trung gian và lớp phần mềm ngoài. Việc tái sử dụng cấu hình mô-đun để tạo biến thể khác nhau cũng là vấn đề cần giải quyết. Không có công cụ và ngôn ngữ chuyên biệt, quy trình này trở nên thủ công và dễ lỗi.
III. Giải pháp ngôn ngữ DSL dựa trên annotation và mô hình hóa thống nhất
Luận án đề xuất giải pháp dựa trên hai ngôn ngữ đặc thù miền nội bộ (aDSL) trong OOPL. Ngôn ngữ đầu tiên là DCSL (Domain Class Specification Language), gồm tập annotation biểu đạt ràng buộc cấu trúc và hành vi thiết yếu của lớp miền. DCSL được xây dựng dựa trên không gian thiết kế tối thiểu được lựa chọn từ nhiều nguồn kỹ thuật uy tín. Ngôn ngữ thứ hai là MCCL (Module Configuration Class Language), dùng để thiết kế lớp cấu hình mô-đun trong kiến trúc phần mềm dựa trên mô-đun. Phương pháp mô hình hóa thống nhất (UD) sử dụng DCSL để biểu đạt cả phần tử cấu trúc và hành vi. Ngôn ngữ sơ đồ hoạt động UML được chọn cho mô hình hóa hành vi. Các mẫu mô hình hóa UD được định nghĩa để giải quyết năm luồng hoạt động cốt lõi của UML. Đặc tính bốn thuộc tính mô tả phần mềm xây dựng trực tiếp từ mô hình miền. MCCL cho phép tái sử dụng dễ dàng để tạo biến thể mô-đun khác nhau.
3.1. Ngôn ngữ đặc thù lớp miền DCSL và annotation thiết yếu
DCSL là ngôn ngữ đặc thù miền dựa trên annotation, nội tại trong ngôn ngữ lập trình hướng đối tượng. Ngôn ngữ này bao gồm tập annotation biểu đạt ràng buộc cấu trúc thiết yếu và hành vi thiết yếu của lớp miền. Các annotation được lựa chọn cẩn thận từ nhiều nguồn kỹ thuật phần mềm và kỹ thuật hệ thống uy tín. DCSL xác định không gian thiết kế tối thiểu cho lớp miền. Mỗi annotation đại diện cho một khía cạnh không thể thiếu của mô hình miền. Phương pháp này đảm bảo mô hình miền đầy đủ nhưng không dư thừa. DCSL được tích hợp trực tiếp vào mã nguồn, giảm khoảng cách giữa mô hình và triển khai.
3.2. Phương pháp mô hình hóa thống nhất và kiến trúc mô đun MCCL
Phương pháp mô hình hóa thống nhất (Unified Domain Modelling) sử dụng DCSL cho cả cấu trúc và hành vi. Mô hình hóa hành vi áp dụng ngôn ngữ sơ đồ hoạt động UML với các cấu trúc đặc thù miền. Năm mẫu mô hình hóa UD được định nghĩa để xử lý năm luồng hoạt động cốt lõi. MCCL là aDSL thứ hai, định nghĩa lớp cấu hình mô-đun (MCC) cho kiến trúc mô-đun. Mỗi MCC cung cấp định nghĩa dựa trên lớp cho tập cấu hình mô-đun của một lớp phần mềm. MCC có thể tái sử dụng để tạo biến thể mô-đun khác nhau mà không thay đổi thiết kế lớp mô-đun. Cách tiếp cận này tạo ra phần mềm linh hoạt, dễ bảo trì và mở rộng.
IV. Kết luận và ứng dụng thực tiễn của phát triển phần mềm tự động hóa
Luận án tiến sĩ đóng góp quan trọng cho lĩnh vực phát triển phần mềm tự động hóa. Phương pháp mô hình hóa thống nhất kết hợp MDSE với DDD giải quyết khoảng trống trong kỹ thuật phần mềm hiện đại. Hai ngôn ngữ aDSL là DCSL và MCCL cung cấp công cụ mạnh mẽ cho thiết kế và triển khai. Phần mềm được xây dựng trực tiếp từ mô hình miền với bốn tính chất được đảm bảo. Tính mô-đun hóa cho phép tái sử dụng và tạo biến thể dễ dàng. Bộ công cụ phần mềm được phát triển dưới dạng thành phần trong framework. Framework này tích hợp trình tạo mã cho cả DCSL và MCCL. Kết quả nghiên cứu mở ra hướng ứng dụng rộng rãi trong nhiều lĩnh vực. Các ngành công nghiệp có thể áp dụng để tăng tốc quy trình phát triển phần mềm. Phương pháp này đặc biệt hữu ích cho dự án phức tạp với yêu cầu miền phong phú.