Tổng quan luận án
Luận án tiến sĩ "A Unified View Approach to Software Development Automation" (Phương pháp tiếp cận khung nhìn hợp nhất cho tự động hóa phát triển phần mềm) được tác giả Lê Minh Đức thực hiện tại Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội, dưới sự hướng dẫn của PGS.TS. Nguyễn Việt Hà và TS. Đặng Đức Hạnh, thuộc chuyên ngành Kỹ thuật Phần mềm (mã số 9480103.01), bảo vệ năm 2020.
Trong sự phát triển của kỹ nghệ phần mềm, phương pháp luận phát triển phần mềm dựa trên mô hình (Model-Based Software Development - MBSD) giữ vai trò trung tâm với hai nhánh chính: Kỹ nghệ phần mềm hướng mô hình (Model-Driven Software Engineering - MDSE) và Thiết kế hướng miền (Domain-Driven Design - DDD). Trong khi MDSE hướng tới mục tiêu chuyển đổi mô hình trên quy mô lớn từ mô hình độc lập nền tảng (PIM) sang mô hình phụ thuộc nền tảng (PSM), DDD tập trung giải quyết độ phức tạp của các yêu cầu miền nghiệp vụ. Phương pháp DDD cung cấp các nguyên lý xây dựng mô hình miền khả thi cho việc triển khai trên ngôn ngữ lập trình hướng đối tượng (OOPL). Tuy nhiên, DDD còn tồn tại các khoảng trống kỹ thuật lớn:
- Thiếu giải pháp xác định những thành phần cấu tạo nên một mô hình miền có mức độ biểu đạt thiết yếu về cả cấu trúc và hành vi.
- Thiếu phương pháp hình thức hóa việc sử dụng ngôn ngữ chuyên biệt miền dựa trên ghi chú (annotation-based DSL - aDSL) trong môi trường OOPL.
- Thiếu quy trình và kỹ thuật sinh tự động (generative techniques) để xây dựng phần mềm có tính mô-đun trực tiếp từ mô hình miền.
Mục tiêu tổng quát của luận án là ứng dụng aDSL (nội tại trong ngôn ngữ OOPL như Java, C#) nhằm đặc tả mô hình miền hợp nhất thiết yếu và tự động hóa quá trình sinh phần mềm hướng mô-đun từ mô hình này, giúp phương pháp DDD trở nên cụ thể và hoàn chỉnh hơn trong môi trường phát triển hướng đối tượng.
Luận án xác định 5 mục tiêu nghiên cứu cụ thể được đánh số như sau:
- Nghiên cứu và thiết kế một mô hình miền hợp nhất (Unified Domain Model - UDM) bao gồm các thành phần thiết yếu cho cả hai khía cạnh mô hình hóa cấu trúc và hành vi.
- Nghiên cứu và đặc trưng hóa phần mềm được xây dựng trực tiếp từ mô hình miền thông qua mô hình phân tầng 4 tính chất (4-property characterisation).
- Nghiên cứu và định nghĩa phương pháp tiếp cận xây dựng phần mềm dạng mô-đun có tính sinh (generative and modular software construction).
- Nghiên cứu và thiết kế các ngôn ngữ aDSL phù hợp cho mô hình miền hợp nhất và cho quá trình xây dựng phần mềm (gồm DCSL và MCCL).
- Hiện thực hóa bộ công cụ hỗ trợ gồm các aDSL và các bộ sinh mã tương ứng, tích hợp trong khung phần mềm jDomainApp.
Đối tượng và phạm vi nghiên cứu:
- Đối tượng nghiên cứu: Các kỹ thuật đặc tả mô hình miền bằng aDSL, cơ chế chuyển đổi mô hình và tự động hóa sinh mã cho các mô-đun phần mềm dựa trên kiến trúc phân tầng.
- Phạm vi không gian và kỹ thuật: Nghiên cứu giới hạn trong không gian ngôn ngữ lập trình hướng đối tượng (OOPL với đại diện chính là Java và C#), chuẩn mô hình hóa UML/OCL của Object Management Group (OMG) với trọng tâm là biểu đồ lớp (class diagram) và biểu đồ hoạt động (activity diagram), cùng kiến trúc hướng mô-đun Model-View-Controller (MVC) và Presentation-Abstraction-Control (PAC).
- Phạm vi dữ liệu thực nghiệm: Các mô hình ứng dụng mẫu CourseMan (quản lý đào tạo) và nghiên cứu điển hình ProcessMan (quản lý quy trình tổ chức thực tế).
Tổng quan tài liệu và vị trí của luận án
Luận án đã tổng quan hệ thống các công trình nghiên cứu thuộc bốn nhóm lĩnh vực chính:
- Kỹ nghệ phần mềm hướng mô hình (MDSE): Các nghiên cứu nền tảng của Kent (2002), Schmidt (2006), Czarnecki (2005) về phát triển phần mềm có tính sinh (GSD); Brambilla và cộng sự (2012, 2017) về tích hợp MDSE vào các quy trình phần mềm; các chuẩn MDA, UML và OCL của OMG (2003, 2014, 2015).
- Thiết kế hướng miền (DDD): Nghiên cứu nền tảng của Evans (2003) và các phát triển tiếp theo của Vernon (2013), Millet và Tune (2015). Tác giả điểm lại 8 mẫu thiết kế DDD gồm: Entities, Value Objects, Services, Modules, Aggregates, Factories, Repositories và Domain Events; các phân tích của Booch (1994) về sự tương thích giữa OOPL và mô hình hóa thế giới thực.
- Ngôn ngữ chuyên biệt miền (DSL và aDSL): Các nghiên cứu của van Deursen và cộng sự (2000), Mernik và cộng sự (2005), Fowler (2010), Voelter (2013), Kosar và cộng sự (2016); lý thuyết meta-modelling của Kleppe (2008); lập trình hướng thuộc tính (Attribute-Oriented Programming - AtOP) của Rouvoy và Merle (2006, 2007); ngôn ngữ đặc tả giao diện hành vi (BISL/JML) của Leavens và cộng sự (2006, 2007); mô hình kiến trúc phân tầng kết hợp DSL của Trujillo và cộng sự (2007).
- Kiến trúc phần mềm phân tầng và hướng mô-đun: Kiến trúc MVC kinh điển của Krasner và Pope (1988), Sommerville (2010); kiến trúc PAC của Coutaz (1987), Buschmann và cộng sự (1996); các khung làm việc DDD hiện hành như Apache Isis (Haywood, 2009), Naked Objects (Pawson, 2004), Sculptor (2011).
| Hướng nghiên cứu trước |
Tác giả & Công trình tiêu biểu |
Giới hạn được chỉ ra |
| MDSE / MDA |
Kent (2002), Schmidt (2006), Brambilla et al. (2017) |
Trọng tâm chủ yếu xử lý độ phức tạp nền tảng kỹ thuật, chưa giải quyết triệt để độ phức tạp của miền nghiệp vụ. |
| DDD kinh điển |
Evans (2003), Vernon (2013) |
Thiếu đặc tả hình thức cho không gian trạng thái; thiếu hỗ trợ mô hình hóa hành vi và tự động hóa sinh phần mềm. |
| DSL bên ngoài (External DSL) |
Fowler (2010), Sculptor (2011) |
Đòi hỏi trình biên dịch riêng biệt, chi phí phát triển cao, khó tích hợp tự nhiên vào nền tảng mã nguồn OOPL. |
| Khung làm việc DDD hiện hành |
Pawson (2004), Haywood (2009) |
Chỉ sử dụng ghi chú rời rạc, chưa hình thức hóa cú pháp và ngữ nghĩa của aDSL, chưa tự động hóa cấu hình mô-đun. |
Khoảng trống luận án lựa chọn giải quyết là thiết lập cầu nối hình thức giữa MDSE và DDD bằng cách định nghĩa các aDSL nội tại trong OOPL, vừa có khả năng biểu diễn không gian thiết kế tối giản của mô hình miền hợp nhất (cấu trúc và hành vi), vừa cung cấp cơ chế khai báo cấu hình mô-đun để sinh tự động mã nguồn phần mềm hoàn chỉnh.
Cơ sở lý thuyết và phương pháp nghiên cứu
Luận án xây dựng trên nền tảng lý thuyết và phương pháp luận hệ thống (System Approach) của Churchman (1968) và Dekkers (2014), kết hợp với quy trình phát triển phần mềm lặp (Larman, 2003; Pressman, 2010):
-
Khung lý thuyết phân tầng và kỹ nghệ meta-model:
- Áp dụng lý thuyết meta-modelling của Kleppe (2008) để định nghĩa ngôn ngữ qua ba mô hình: Mô hình Cú pháp Trừu tượng (Abstract Syntax Meta-model - ASM), Mô hình Cú pháp Cụ thể (Concrete Syntax Meta-model - CSM) và Mô hình Miền Ngữ nghĩa (Semantic Domain Meta-model - SDM).
- Chuẩn hóa ngôn ngữ bằng UML/OCL (OMG, 2014, 2015), sử dụng OCL để đặc tả các ràng buộc bất biến (invariants) và quy tắc ngữ nghĩa tĩnh.
- Nguyên lý lập trình hướng thuộc tính (AtOP) để chuyển đổi các thuộc tính meta thành các annotation trong OOPL.
-
Phương pháp nghiên cứu thực tế:
- Phương pháp thiết kế mô hình: Phân tích các tài liệu kỹ nghệ hệ thống và phần mềm chuẩn để tổng hợp không gian thiết kế tối giản, trích xuất 11 ràng buộc trạng thái thiết yếu và các kiểu hành vi chuẩn cho lớp miền.
- Phương pháp ánh xạ hình thức: Xây dựng quy tắc ánh xạ từ biểu đồ hoạt động UML (UML Activity Diagram) sang các mẫu mô hình miền hợp nhất (UDM patterns) thể hiện bằng DCSL.
- Phương pháp phát triển công cụ: Xây dựng khung phần mềm jDomainApp và quy trình lặp 3 pha DDDAL (DDD with aDSLs): (Pha 1) Xây dựng mô hình miền UDM bằng DCSL; (Pha 2) Sinh phần mềm nguyên mẫu dựa trên MCCL; (Pha 3) Đánh giá và hiệu chỉnh tương tác.
- Phương pháp đánh giá định lượng và thực nghiệm: Sử dụng khung đánh giá độ biểu đạt (Expressiveness framework), đo lường mức độ viết mã (Lines of Code - LOC: max-locs và typical-locs) so sánh với hai khung làm việc DDD tiêu biểu (Apache Isis - ký hiệu AL, Naked Objects - ký hiệu XL), và khung đo lường tính sinh mô-đun (Module Generativity Framework).
-
Nguồn tư liệu và dữ liệu nghiên cứu:
- Dữ liệu chuẩn hóa: Đặc tả kỹ thuật UML 2.5 và OCL 2.4 của OMG, Java Modeling Language (JML).
- Dữ liệu tình huống: Hệ thống CourseMan gồm 12 lớp miền và 5 biến thể luồng hoạt động quản lý đăng ký học phần (sequential, decisional, forked, joined, merged); Nghiên cứu điển hình hệ thống ProcessMan quản lý cơ cấu quy trình tổ chức thực tế.
Nội dung chính theo từng chương
Chương 1: Giới thiệu (Introduction)
Chương 1 thiết lập bối cảnh nghiên cứu về MBSD, phân tích sự bổ trợ giữa MDSE và DDD, đồng thời nêu rõ các thách thức kỹ thuật khi áp dụng DDD vào các ngôn ngữ OOPL. Tác giả sử dụng bài toán quản lý đào tạo CourseMan làm ví dụ động lực xuyên suốt để minh họa 11 loại ràng buộc trạng thái và sự thiếu hụt các phần tử mô hình hóa hành vi trong các lớp miền hiện tại. Chương này công bố phát biểu bài toán nghiên cứu, xác định 5 mục tiêu cụ thể, phác thảo phương pháp tiếp cận hệ thống DDDAL và tóm tắt 5 đóng góp chính của luận án.
Chương 2: Hiện trạng nghiên cứu (State of the Art)
Chương 2 trình bày tổng quan phương pháp luận về MDSE, DSL, kỹ nghệ meta-model với UML/OCL, các mẫu thiết kế DDD, kiến trúc MVC/PAC và meta-model cốt lõi của OOPL. Tác giả phân tích chi tiết cơ chế annotation trong Java và attribute trong C#, chứng minh tính khả thi của việc dùng annotation để xây dựng aDSL nội tại mà không cần trình phân tích cú pháp riêng. Chương này làm rõ các hạn chế của các khung làm việc hiện hành (như Apache Isis, Naked Objects), từ đó định vị sự cần thiết của phương pháp tiếp cận aDSL trong việc hợp nhất cấu trúc và hành vi cho DDD.
Chương 3: Mô hình hóa miền hợp nhất với aDSL (Unified Domain Modelling with aDSL)
Chương 3 định nghĩa ngôn ngữ đặc tả lớp miền DCSL (Domain Class Specification Language) và phương pháp mô hình hóa miền hợp nhất UDM.
Tác giả hệ thống hóa không gian trạng thái của lớp miền thành 11 ràng buộc thiết yếu:
| STT |
Tên ràng buộc thiết yếu |
Mô tả ngữ nghĩa trong DCSL |
| 1 |
Class Immutability |
Lớp bất biến, trạng thái đối tượng không thay đổi sau khi khởi tạo |
| 2 |
Field Mutability |
Thuộc tính có thể thay đổi giá trị trong vòng đời |
| 3 |
Field Optionality |
Thuộc tính bắt buộc hoặc tùy chọn (chấp nhận null hay không) |
| 4 |
Field Length |
Giới hạn độ dài tối đa của chuỗi ký tự |
| 5 |
Field Uniqueness |
Tính duy nhất của giá trị thuộc tính giữa các đối tượng |
| 6 |
Identity Field (id) |
Thuộc tính đóng vai trò định danh cho thực thể |
| 7 |
Auto-generated Field |
Giá trị thuộc tính được sinh tự động bởi hệ thống |
| 8 |
Min Value |
Giá trị nhỏ nhất cho phép của thuộc tính kiểu số |
| 9 |
Max Value |
Giá trị lớn nhất cho phép của thuộc tính kiểu số |
| 10 |
Association Cardinality |
Ràng buộc bản số kết hợp (min, max) giữa các lớp miền |
| 11 |
Inherited Bounds |
Ràng buộc kế thừa và tái định nghĩa miền giá trị thuộc tính |
Về mặt hành vi, DCSL định nghĩa các kiểu hành vi thiết yếu (Essential Behaviour Types) gồm các phương thức khởi tạo (constructors), phương thức truy xuất (getters), phương thức cập nhật (setters), các phương thức xử lý liên kết và kiểm tra tính hợp lệ. Ngữ nghĩa tĩnh của DCSL được đặc tả bằng OCL, ánh xạ sang các bất biến lớp của Java Modeling Language (JML).
Để mô hình hóa hành vi, luận án tích hợp biểu đồ hoạt động UML vào mô hình miền UDM thông qua 5 mẫu mô hình hóa tương ứng với 5 luồng hoạt động cơ bản:
- Mẫu tuần tự (Sequential Pattern): Biểu diễn chuỗi thực thi các hành động nối tiếp nhau.
- Mẫu rẽ nhánh quyết định (Decisional Pattern): Biểu diễn luồng điều kiện với các nút quyết định (decision nodes) và lính canh (guards).
- Mẫu phân nhánh song song (Forked Pattern): Khởi tạo các luồng thực thi đồng thời từ một nút fork.
- Mẫu hội tụ song song (Joined Pattern): Đồng bộ hóa các luồng thực thi đồng thời tại nút join.
- Mẫu gộp luồng (Merged Pattern): Gộp nhiều luồng thay thế về một luồng chung tại nút merge.
Chương 4: Xây dựng phần mềm dựa trên mô-đun với aDSL (Module-Based Software Construction with aDSL)
Chương 4 giải quyết bài toán xây dựng phần mềm tự động từ mô hình UDM. Tác giả đề xuất mô hình đặc trưng hóa phần mềm gồm 4 tính chất dựa trên cấu trúc phân 3 tầng: Lớp miền ở lõi (core domain model), lớp mô-đun trung gian (module layer) và lớp phần mềm ngoài cùng (software layer).
Để mô hình hóa cấu trúc mô-đun và giao diện người dùng dựa trên thể hiện (Instance-based GUI), tác giả đề xuất ngôn ngữ lớp cấu hình mô-đun MCCL (Module Configuration Class Language). Mỗi lớp cấu hình mô-đun (Module Configuration Class - MCC) đóng vai trò đặc tả tường minh các tham số cấu hình cho một lớp mô-đun (chứa thông tin về view, controller, layout, liên kết cha-con) mà không làm thay đổi mã nguồn của lớp miền hay mô-đun cơ sở. Luận án đặc tả cú pháp trừu tượng, quan hệ nhất quán cấu trúc giữa MCC và lớp miền, cùng thuật toán sinh tự động cây cấu hình mô-đun (Configured Containment Tree).
Chương 5: Đánh giá (Evaluation)
Chương 5 trình bày việc hiện thực hóa các đóng góp trong khung phần mềm jDomainApp và tiến hành đánh giá thực nghiệm:
- Nghiên cứu điển hình ProcessMan: Triển khai thành công trên bài toán quản lý quy trình tổ chức, chứng minh tính khả thi và khả năng mở rộng của DCSL và MCCL đối với các hệ thống có cấu trúc dữ liệu và quy trình phức tạp.
- Đánh giá ngôn ngữ DCSL: So sánh định lượng với hai khung làm việc DDD hiện hành là Apache Isis (AL) và Naked Objects (XL):
- Về độ biểu đạt: DCSL hỗ trợ đầy đủ 100% các khía cạnh ràng buộc trạng thái thiết yếu và các mẫu DDD, vượt trội so với AL và XL (hai khung làm việc này thiếu hỗ trợ cho nhiều ràng buộc như auto-generation, inherited bounds, hoặc biểu diễn liên kết trực tiếp).
- Về mức độ viết mã (LOC): Đo lường chỉ số
max-locs và typical-locs cho thấy DCSL giảm đáng kể khối lượng mã nguồn lập trình viên cần viết tay so với AL và XL nhờ cơ chế sinh tự động không gian hành vi (BSpaceGen).
- Đánh giá tính sinh mô-đun (Module Generativity): Đánh giá công cụ sinh mã MCCGen trên các mẫu mô-đun (từ MP1 đến MP4), chứng minh khả năng tái sử dụng cao của các MCC khi tạo các biến thể mô-đun mà không phải lập trình lại thành phần điều khiển hay giao diện.
Chương 6: Kết luận (Conclusion)
Chương 6 tổng kết các kết quả đạt được của luận án, khẳng định việc hoàn thành 5 mục tiêu nghiên cứu đặt ra. Tác giả nhấn mạnh phương pháp tiếp cận aDSL đã giúp hoàn thiện phương pháp luận DDD trên cả hai phương diện: làm cho phương pháp trở nên cụ thể hơn thông qua các giải pháp thực thi trên OOPL và đầy đủ hơn nhờ việc tích hợp mô hình hóa hành vi và tự động hóa sinh mô-đun phần mềm. Chương kết thúc bằng việc đề xuất các hướng phát triển nghiên cứu tiếp theo.
Kết quả và những đóng góp mới
Luận án đã đạt được 5 đóng góp mới về mặt khoa học và kỹ thuật ứng dụng:
- Đề xuất Ngôn ngữ đặc tả lớp miền DCSL: Một aDSL nội tại cho OOPL, cung cấp hệ thống annotation chuẩn hóa để đặc tả đầy đủ 11 ràng buộc không gian trạng thái thiết yếu và các kiểu hành vi thiết yếu của lớp miền, có ngữ nghĩa tĩnh và động được định nghĩa hình thức bằng UML/OCL.
- Đề xuất Phương pháp tiếp cận mô hình hóa miền hợp nhất (UDM): Phương pháp tích hợp thành công các cấu trúc chuyên biệt trạng thái của biểu đồ hoạt động UML vào mô hình miền hướng đối tượng thông qua DCSL, cung cấp 5 mẫu mô hình hóa UDM cho các luồng hoạt động cơ bản (sequential, decisional, forked, joined, merged).
- Đề xuất Mô hình đặc trưng hóa phần mềm 4 tính chất: Khung cấu trúc phân tầng (lõi miền - mô-đun - phần mềm) đóng vai trò hướng dẫn cho việc thiết kế và sinh phần mềm trực tiếp từ mô hình miền.
- Đề xuất Ngôn ngữ lớp cấu hình mô-đun MCCL: Một aDSL chuyên biệt cho phép định nghĩa các lớp cấu hình mô-đun (MCC) độc lập, hỗ trợ tạo các biến thể mô-đun phần mềm và giao diện người dùng tương ứng mà không phải can thiệp sửa đổi mã nguồn mô-đun.
- Xây dựng Khung phần mềm jDomainApp và quy trình DDDAL: Hiện thực hóa toàn bộ các công cụ phân tích DCSL, MCCL, bộ sinh hành vi BSpaceGen, bộ sinh mô-đun MCCGen và công cụ DomainAppTool, cung cấp một môi trường phát triển tự động hóa lặp 3 pha từ mô hình miền đến phần mềm nguyên mẫu.
Kiến nghị và giải pháp đề xuất: Luận án khuyến nghị áp dụng quy trình phát triển lặp DDDAL trong các dự án phần mềm hướng đối tượng; sử dụng aDSL nội tại để duy trì tính nhất quán giữa mô hình thiết kế và mã nguồn thực thi, loại bỏ sự phụ thuộc vào các công cụ biên dịch ngoài phức tạp của MDSE truyền thống.
Hạn chế và hướng nghiên cứu tiếp
Hạn chế được văn bản nêu rõ:
- Phạm vi nghiên cứu của luận án tập trung sâu vào Pha 1 (Mô hình hóa UDM) và bài toán con 2.a của Pha 2 (Xây dựng mô-đun phần mềm từ UDM bằng MCCL). Bài toán con 2.b (tự động hóa hoàn toàn việc kết nối các mô-đun thành phần mềm tổng thể) dù đã được hiện thực hóa trong jDomainApp nhưng chưa được phân tích chi tiết trong nội dung luận án.
- Về mô hình hóa hành vi, nghiên cứu mới tập trung khai thác biểu đồ hoạt động UML (Activity Diagram) với 5 luồng cơ bản, chưa mở rộng sang toàn bộ các biểu đồ hành vi khác của UML như biểu đồ máy trạng thái phức tạp (State Machine Diagram) hoặc biểu đồ tuần tự (Sequence Diagram) trong môi trường phân tán.
Hướng nghiên cứu tiếp theo:
- Hoàn thiện mô hình hình thức cho quá trình tự động hóa tích hợp mô-đun ở cấp độ toàn bộ phần mềm (Pha 2.b).
- Mở rộng phạm vi biểu diễn của DCSL và UDM cho các loại biểu đồ hành vi khác và các bài toán phân tán.
- Nghiên cứu cơ chế thích ứng của DDDAL và jDomainApp cho các kiến trúc phần mềm phân tán hiện đại (như Microservices) và các nền tảng ngôn ngữ lập trình khác.
Giá trị tham khảo
Luận án là tài liệu tham khảo khoa học có giá trị chuyên môn cao đối với:
- Nghiên cứu sinh và học viên cao học ngành Kỹ thuật Phần mềm, Khoa học Máy tính: Tham khảo phương pháp luận kết hợp MDSE với DDD, kỹ thuật đặc tả meta-model bằng UML/OCL, thiết kế ngôn ngữ aDSL nội tại và phương pháp đánh giá định lượng ngôn ngữ phần mềm.
- Giảng viên chuyên ngành Công nghệ Thông tin: Sử dụng làm học liệu tham khảo cho các môn học chuyên sâu về Thiết kế hướng miền (DDD), Kỹ nghệ phần mềm hướng mô hình (MDSE), Kiến trúc phần mềm và Phát triển phần mềm tự động.
- Kiến trúc sư phần mềm và Kỹ sư phát triển: Ứng dụng các mẫu mô hình hóa UDM (Chương 3), cấu trúc lớp cấu hình mô-đun MCCL (Chương 4), cùng mã nguồn và các quy tắc ràng buộc trạng thái để xây dựng các khung ứng dụng doanh nghiệp linh hoạt trên nền tảng Java/C#.
- Các phần đáng tham khảo nhất: Bảng đặc tả 11 ràng buộc trạng thái thiết yếu và 5 mẫu ánh xạ luồng hoạt động UML (Chương 3); Đặc tả cú pháp và thuật toán cấu hình cây mô-đun của MCCL (Chương 4); Các phụ lục A, B, C chứa toàn bộ đặc tả OCL cho meta-model và số liệu thực nghiệm chi tiết.
Câu hỏi thường gặp
1. Ngôn ngữ DCSL do luận án đề xuất giải quyết vấn đề gì trong thiết kế hướng miền (DDD)?
DCSL là một aDSL nội tại cung cấp tập hợp các annotation trong OOPL để chuẩn hóa việc đặc tả không gian trạng thái tối giản (gồm 11 loại ràng buộc như bất biến, bắt buộc, độ dài, tính duy nhất, định danh, miền giá trị và bản số kết hợp) cùng các kiểu hành vi thiết yếu của lớp miền, giúp mô hình miền vừa mang tính biểu đạt cao vừa có khả năng thực thi trực tiếp trên mã nguồn.
2. Mô hình miền hợp nhất (Unified Domain Model - UDM) kết hợp những yếu tố nào?
UDM kết hợp mô hình hóa cấu trúc (sử dụng biểu đồ lớp UML) và mô hình hóa hành vi (sử dụng biểu đồ hoạt động UML) vào trong cùng một mô hình lớp miền duy nhất thông qua DCSL, giải quyết bài toán thiết kế cho 5 dạng luồng hoạt động cơ bản gồm: tuần tự (sequential), rẽ nhánh (decisional), phân nhánh song song (forked), hội tụ song song (joined) và gộp luồng (merged).
3. Ngôn ngữ MCCL hoạt động như thế nào trong kiến trúc phần mềm hướng mô-đun?
MCCL là aDSL dùng để định nghĩa các lớp cấu hình mô-đun (MCC). Mỗi MCC đóng vai trò như một khuôn mẫu đặc tả cấu hình (view, controller, bố cục, quan hệ phân cấp) cho một lớp mô-đun. Thông qua MCC, người phát triển có thể tạo ra các biến thể mô-đun và giao diện khác nhau mà không cần sửa đổi mã nguồn bên trong của mô-đun hay lớp miền.
4. Khung phần mềm jDomainApp và quy trình DDDAL bao gồm những giai đoạn nào?
Quy trình DDDAL (DDD with aDSLs) được hỗ trợ bởi khung jDomainApp gồm 3 pha lặp: (Pha 1) Xây dựng mô hình miền hợp nhất UDM bằng DCSL từ các yêu cầu; (Pha 2) Tự động sinh phần mềm nguyên mẫu dựa trên UDM và các cấu hình MCCL; (Pha 3) Nhóm dự án cùng chuyên gia miền rà soát, đánh giá nguyên mẫu để tiếp tục tinh chỉnh mô hình ở vòng lặp tiếp theo.
5. Kết quả đánh giá thực nghiệm của DCSL so với các khung làm việc DDD hiện hành (như Apache Isis, Naked Objects) đạt được những gì?
Đánh giá thực nghiệm cho thấy DCSL đạt độ bao phủ 100% về các khía cạnh biểu đạt ràng buộc miền và mẫu DDD (vượt trội so với Apache Isis và Naked Objects vốn thiếu hỗ trợ nhiều ràng buộc cấu trúc). Đồng thời, thông qua bộ sinh BSpaceGen, DCSL giúp giảm thiểu đáng kể số dòng mã nguồn viết tay (max-locs và typical-locs) cần thiết để xây dựng ứng dụng.
Kết luận
Luận án của tác giả Lê Minh Đức đã giải quyết thỏa đáng các thách thức cốt lõi của phương pháp Thiết kế hướng miền (DDD) trên nền tảng ngôn ngữ lập trình hướng đối tượng bằng việc đề xuất hai ngôn ngữ aDSL nội tại là DCSL và MCCL. Nghiên cứu đã hợp nhất thành công mô hình hóa cấu trúc và hành vi trong mô hình miền UDM, đồng thời thiết lập cơ chế sinh tự động phần mềm hướng mô-đun thông qua các lớp cấu hình MCC. Hệ thống công cụ được hiện thực hóa trong khung phần mềm jDomainApp và được kiểm chứng thực nghiệm qua nghiên cứu điển hình ProcessMan cùng bài toán CourseMan, chứng minh tính khả thi, tính biểu đạt và hiệu quả tự động hóa trong kỹ nghệ phần mềm.