Luận án Tiến sĩ Công nghệ Thông tin - Tiếp cận thống nhất phát triển phần mềm tự động hóa dựa trên thiết kế hướng miền

Trường đại học

Đại học Bách khoa Hà Nội

Chuyên ngành

Công nghệ thông tin

Người đăng

Ẩn danh

Thể loại

Luận án tiến sĩ
188
0
0

Phí lưu trữ

45 Point

Tóm tắt

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ú.

4.1. Bộ công cụ phần mềm và framework triển khai

4.2. Ứng dụng và hướng phát triển tương lai

22/04/2026

Trích đoạn nội dung tài liệu

Abstract An important software engineering methodology that has emerged over the past twenty years is model-based software development. At the heart of this methodology lies two complementary methods: model-driven software engineering (MDSE) and domain-driven design (DDD). While the aim of MDSE is ambitiously broad, DDD’s goal is more modest and direct but not less important – to apply model-based engineering techniques to tackle the complexity inherent in the domain requirements. The state-of-the-art DDD method includes a set of principles for constructing a domain model that is feasible for implementation in a target programming language. However, this method lacks the solutions needed to address the following important design questions facing a technical team when applying DDD in object oriented programming language (OOPL) platforms: (i) what constitues an essentially expressive domain model and (ii) how to effectively construct a software from this model. The dissertation aims to address these limitations by using annotation-based domain-specific language (aDSL), which is internal to OOPL, to not only express an essential and unified domain model but generatively construct modular software from this model. First, we propose an aDSL, named domain class specification language (DCSL), which consists in a set of annotations that express the essential structural constraints and the essential behaviour of a domain class. We carefully select the design features from a number of authoritative software and system engineering resources and reason that they form a minimum design space of the domain class. Second, we propose a unified domain (UD) modelling approach, which uses DCSL to express both the structural and behavioural modelling elements. We choose UML activity diagram language for behavioural modelling and discuss how the domain-specific constructs of this language are expressed in DCSL. To demonstrate the applicability of the approach we define the UD modelling patterns for tackling the design problems posed by five core UML activity flows. Third, we propose a 4-property characterisation for the software that are constructed directly from the domain model. These properties are defined based on a conceptual layered software model that includes the domain model at the core, an intermediate module layer surrounding this core and an outer software layer. Fourth, we propose a second aDSL, named module configuration class language (MCCL), that is used for designing module configuration classes (MCCs) in a module-based software architecture. An MCC provides an explicit class-based definition of a set of module con- figurations of a given class of software modules. The MCCs can easily be reused to create different variants of the same module class, without having to change the module class design. Fifth, we develop a set of software tools for DCSL, MCCL and the generators associated with these aDSLs. We implement these tools as components in a software framework, named jDomainApp, which we have developed in our research. To evaluate the contributions, we first demonstrate the practicality of our method by applying it to a relatively complex, real-world software construction case study, concerning organisational process management. We then evaluate DCSL as a design specification lan- guage and evaluate the effectiveness of using MCCL in module-based software construction. We focus the latter evaluation on module generativity. We contend that our contributions help make the DDD method more concrete and more complete for software development. On the one hand, the method becomes more concrete with solutions that help effectively apply the method in OOPL platforms. On the other hand, the method is more complete with solutions for the design aspects that were not originally included. Tóm tắt Trong vòng hai thập kỷ gần đây, phương pháp luận phát triển phần mềm dựa trên mô hình nổi lên là một phương pháp luận quan trọng trong kỹ nghệ phần mềm. Ở trung tâm của phương pháp luận này có hai phương pháp có tính bổ trợ nhau là: 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 mang một mục tiêu rộng và khá tham vọng thì mục tiêu của DDD lại khiêm tốn và thực tế hơn, đó là tập trung vào cách áp dụng các kỹ thuật của kỹ nghệ dựa trên mô hình để giải quyết sự phức tạp vốn có trong yêu cầu miền. Phương pháp DDD hiện tại bao gồm một tập các nguyên lý để xây dựng một mô hình miền ở dạng khả thi cho triển khai viết mã trên một ngôn ngữ lập trình đích. Tuy nhiên phương pháp này còn thiếu các giải pháp cần thiết giúp giải đáp hai câu hỏi quan trọng mà người phát triển phần mềm thường gặp phải khi áp dụng DDD vào các nền tảng ngôn ngữ lập trình hướng đối tượng (object oriented programming language (OOPL)): (i) những thành phần nào cấu tạo nên một mô hình miền có mức độ diễn đạt thiết yếu? và (ii) xây dựng một cách hiệu quả phần mềm từ mô hình miền như thế nào? Luận án này đặt mục đích khắc phục hạn chế trên của DDD bằng cách sử dụng ngôn ngữ chuyên biệt miền dựa trên ghi chú (annotation-based domain-specific language (aDSL)), được phát triển trong OOPL, để không chỉ biểu diễn một mô hình miền hợp nhất thiết yếu mà còn để xây dựng phần mềm có tính mô-đun từ mô hình miền này. Thứ nhất, luận án đề xuất một aDSL, tên là ngôn ngữ đặc tả lớp miền (domain class specification language (DCSL)), bao gồm một tập các ghi chú để biểu diễn các ràng buộc cấu trúc thiết yếu và các hành vi thiết yếu của lớp miền. Tác giả đã cẩn thận lựa chọn các đặc trưng thiết kế từ một số nguồn tài liệu học thuật có uy tín về kỹ nghệ phần mềm và kỹ nghệ hệ thống và lập luận rằng các đặc trưng này tạo thành một không gian thiết kế tối giản cho lớp miền. Thứ hai, luận án đề xuất một phương thức tiếp cận mô hình hóa miền hợp nhất, trong đó sử dụng DCSL để biểu diễn các thành phần mô hình hóa cấu trúc và hành vi. Luận án đã chọn ngôn ngữ biểu đồ hoạt động UML cho mô hình hóa hành vi và trình bày cách biểu diễn các đặc trưng chuyên biệt trạng thái của ngôn ngữ này bằng DCSL. Để chứng tỏ tính thực tiễn của cách tiếp cận, luận án định nghĩa một tập mẫu mô hình hóa miền hợp nhất cho các bài toán thiết kế liên quan trực tiếp đến năm luồng hoạt động UML cơ bản. Thứ ba, luận án đề xuất một mô tả đặc điểm gồm bốn tính chất cho phần mềm được xây dựng trực tiếp từ mô hình miền. Bốn tính chất này được định nghĩa dựa trên mô hình khái niệm phần mềm dạng phân lớp, bao gồm mô hình miền ở lớp lõi, một lớp mô-đun trực tiếp bao quanh lớp lõi và một lớp phần mềm ở ngoài. Thứ tư, luận án đề xuất một aDSL thứ hai, tên là ngôn ngữ lớp cấu hình mô-đun (module configuration class language (MCCL)), dùng để thiết kế các lớp cấu hình mô-đun (module configuration classes (MCCs)) trong một kiến trúc phần mềm dựa trên mô-đun. Mỗi MCC cung cấp một định nghĩa dạng lớp cho một tập các cấu hình mô-đun của một lớp mô-đun. Các MCC có thể dễ dàng sử dụng lại để tạo ra các biến thể của một lớp mô-đun mà không cần sửa thiết kế bên trong của mô-đun. Thứ năm, luận án phát triển một bộ công cụ dành cho DCSL, MCCL và các bộ sinh mã của các ngôn ngữ này, dưới dạng các thành phần của một phần mềm khung, tên là JDOMAINAPP. Để đánh giá các kết quả trên, luận án trước hết trình diễn tính thực tiễn của phương pháp bằng cách áp dụng vào một trường hợp nghiên cứu tương đối phức tạp về phát triển phần mềm, liên quan đến quản lý quy trình tổ chức. Tiếp theo, luận án đánh giá DCSL từ khía cạnh một ngôn ngữ đặc tả và đánh giá hiệu quả việc sử dụng MCCL trong xây dựng mô-đun phần mềm một cách tự động. Chúng tôi cho rằng, các đóng góp của luận án giúp phương pháp DDD trở nên cụ thể và đầy đủ hơn. Một mặt, phương pháp trở nên cụ thể hơn với các giải pháp giúp áp dụng một cách hiệu quả vào các nền tảng OOPL. Mặt khác, phương pháp trở nên đầy đủ hơn với các giải pháp cho các khía cạnh thiết kế chưa được xem xét tới. Acknowledgement I would first like to thank my supervisors, Assoc. Nguyen Viet Ha and Dr. Dang Duc Hanh, for their instructions and guidance throughout my research and the development of this dissertation. I would also like to thank all the teachers at the Faculty of Information Technology (University of Engineering and Technology, Hanoi) for the very kind support that I have received throughout my research study at the department. I am deeply grateful for my home university (Hanoi University) for providing the PhD studentship and a gracious teaching arrangement, that has enabled me to have the time to complete the required course works and research. I am also very grateful for the financial support that I have additionally received from the MOET’s 911 fund and the NAFOSTED project (grant number 102.25), led by Assoc. Nguyen Viet Ha. I would also like to thank all of my colleagues and fellow PhD students for the many meaningful and entertaining discussions. Last but not least, I wish to thank my family for the sacrifices that they have made and for all the love and encouragement that they have given me during my PhD study. Contents Glossary v List of Figures vii List of Tables ix 1 Introduction 1 1.2 Domain-Driven Design Challenges .2 Research Aim and Objectives . 12 2 State of the Art 13 2.1 Model-Driven Software Engineering .2 Domain-Specific Language .3 Meta-Modelling with UML/OCL .4 Domain-Driven Design .5 Model-View-Controller Architecture .6 Comparing and Integrating MDSE with DDD .7 A Core Meta-Model of Object-Oriented Programming Language .8 Using Annotation in MBSD .2 Domain-Driven Software Development with aDSL .1 DDD with aDSL .2 Behavioural Modelling with UML Activity Diagram .3 Software Module Design .4 Module-Based Software Architecture . 45 3 Unified Domain Modelling with aDSL 46 3.1 Essential State Space Constraints .2 Essential Behaviour Types .1 Expressing the Pre- and Post-conditions of Method .4 Static Semantics of DCSL .1 State Space Semantics .2 Behaviour Space Semantics .3 Behaviour Generation for DCSL Model .5 Dynamic Semantics of DCSL .6 Unified Domain Model .1 Expressing UDM in DCSL .2 UD Modelling Patterns . 87 4 Module-Based Software Construction with aDSL 88 4.1 An Abstract Software Model .2 Instance-based GUI .3 Model reflectivity .3 Module Configuration Domain .1 One Master Module Configuration .2 The ‘Configured’ Containment Tree .3 Customising Descendant Module Configuration .4 MCCL Language Specification .1 Specification Approach .1 Structural Consistency between MCC and Domain Class .2 Module-Based Software Construction .2 Case Study: ProcessMan .2 Case and Subject Selection .3 Data Collection and Analysis .3 Required Coding Level .4 Evaluation of Module-Based Software Construction .1 Module Generativity Framework .4 Analysis of MCCGen . 147 Bibliography 150 Appendices A Helper OCL Functions for DCSL’s ASM 158 B MCCL Specification 164 B.1 Library Rules of the MCCL’s ASM .2 Two MCCs of ModuleEnrolmentMgmt . 167 C DCSL Evaluation Data 171 C.1 Expressiveness Comparison Between DCSL and the DDD Frameworks .2 Level of Coding Comparison Between DCSL and the DDD Frameworks .

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ