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 soft
Trang 1Vietnam National University, Hanoi
VNU University of Engineering and Technology
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trang 3Vietnam National University, Hanoi
VNU University of Engineering and Technology
Trang 5ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
LÊ MINH ĐỨC
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
Chuyên ngành: Kⱞ⚠ỹ thuật Phần mềm
Mã số: 9480103.01
LUẬN ÁN TIẾN SĨ NGÀNH CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC:
1 PGS TS Nguyễn Việt Hà 2Z TS Đặng Đức Hạnh
Trang 6Hà Nội – 2020
Trang 7I hereby declare that the materials presented in this dissertation are my own work, conducted under the supervision of Assoc Prof., Dr Nguyen Viet Ha and Dr Dang Duc Hanh, at the Faculty of Information Technology, University of Engineering and Technology, Vietnam National University, Hanoi All the research data and results presented in this dissertation are authentic and (to the best of my knowledge) have not previously been published in any academic publications by other authors.
Le Minh Duc
Trang 8An important software engineering methodology that has emerged over the past twenty years
is model-based software development At the heart of this methodology lies twocomplementary methods: model-driven software engineering (MDSE) and domain-drivendesign (DDD) While the aim of MDSE is ambitiously broad, DDD’s goal is more modest anddirect but not less important – to apply model-based engineering techniques to tackle thecomplexity inherent in the domain requirements The state-of-the-art DDD method includes aset of principles for constructing a domain model that is feasible for implementation in a targetprogramming language However, this method lacks the solutions needed to address thefollowing 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 e ectively construct a software from this model Theffectively construct a software from this model Thedissertation aims to address these limitations by using annotation-based domain-specificlanguage (aDSL), which is internal to OOPL, to not only express an essential and unifieddomain 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.
Trang 9Third, 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 softwarearchitecture 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
di erent variants of the same module class, without having to change the module class design.ffectively construct a software from this model TheFifth, 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 e ectiveness of using MCCL in module- ffectively construct a software from this model The 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 e ectively apply the method in ffectively construct a software from this model The OOPL platforms On the other hand, the method is more complete with solutions for the design aspects that were not originally included.
Trang 10Tó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
Trang 11kỹ 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
23 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
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
Trang 12I would first like to thank my supervisors, Assoc Prof Nguyen Viet Ha and Dr Dang DucHanh, for their instructions and guidance throughout my research and the development ofthis dissertation I would also like to thank all the teachers at the Faculty of InformationTechnology (University of Engineering and Technology, Hanoi) for the very kind supportthat I have received throughout my research study at the department
I am deeply grateful for my home university (Hanoi University) for providing the PhDstudentship 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 thefinancial support that I have additionally received from the MOET’s 911 fund and theNAFOSTED project (grant number 102.03-2015.25), led by Assoc Prof 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.
Trang 131.1 Problem Statement 3
1.1.1 Motivating Example 3
1.1.2 Domain-Driven Design Challenges 5
1.1.3 Research Statement 7
1.2 Research Aim and Objectives 7
1.3 Research Approach 8
1.4 Dissertation Structure 12
2 State of the Art 13 2.1 Background 13
2.1.1 Model-Driven Software Engineering 13
2.1.2 Domain-Specific Language 15
2.1.3 Meta-Modelling with UML/OCL 17
2.1.4 Domain-Driven Design 22
2.1.5 Model-View-Controller Architecture 27
2.1.6 Comparing and Integrating MDSE with DDD 28
2.1.7 A Core Meta-Model of Object-Oriented Programming Language 29
2.1.8 Using Annotation in MBSD 33
Trang 142.2 Domain-Driven Software Development with aDSL 35
2.2.1 DDD with aDSL 36
2.2.2 Behavioural Modelling with UML Activity Diagram 36
2.2.3 Software Module Design 40
2.2.4 Module-Based Software Architecture 41
2.3 Summary 45
3 Unified Domain Modelling with aDSL 46 3.1 Introduction 46
3.2 DCSL Domain 47
3.2.1 Essential State Space Constraints 47
3.2.2 Essential Behaviour Types 48
3.3 DCSL Syntax 49
3.3.1 Expressing the Pre- and Post-conditions of Method 56
3.3.2 Domain Terms 57
3.4 Static Semantics of DCSL 57
3.4.1 State Space Semantics 58
3.4.2 Behaviour Space Semantics 64
3.4.3 Behaviour Generation for DCSL Model 68
3.5 Dynamic Semantics of DCSL 71
3.6 Unified Domain Model 72
3.6.1 Expressing UDM in DCSL 73
3.6.2 UD Modelling Patterns 76
3.7 Summary 87
4 Module-Based Software Construction with aDSL 88 4.1 Introduction 88
4.2 Software Characterisation 89
4.2.1 An Abstract Software Model 90
4.2.2 Instance-based GUI 91
4.2.3 Model reflectivity 92
4.2.4 Modularity 92
4.2.5 Generativity 94
Trang 154.3 Module Configuration Domain 95
4.3.1 One Master Module Configuration 95
4.3.2 The ‘Configured’ Containment Tree 95
4.3.3 Customising Descendant Module Configuration 96
4.4 MCCL Language Specification 97
4.4.1 Specification Approach 97
4.4.2 Conceptual Model 98
4.4.3 Abstract Syntax 104
4.4.4 Concrete Syntax 110
4.4.5 Semantics 114
4.5 MCC Generation 114
4.5.1 Structural Consistency between MCC and Domain Class 114
4.5.2 MCCGEN Algorithm 116
4.6 Summary 118
5 Evaluation 119 5.1 Implementation 119
5.1.1 UD Modelling 119
5.1.2 Module-Based Software Construction 121
5.2 Case Study: ProcessMan 122
5.2.1 Method 122
5.2.2 Case and Subject Selection 122
5.2.3 Data Collection and Analysis 123
5.2.4 Results 123
5.3 DCSL Evaluation 127
5.3.1 Evaluation Approach 127
5.3.2 Expressiveness 129
5.3.3 Required Coding Level 132
5.3.4 Behaviour Generation 133
5.3.5 Performance Analysis 134
5.3.6 Discussion 134
5.4 Evaluation of Module-Based Software Construction 135
5.4.1 Module Generativity Framework 135
Trang 165.4.2 M P1 : Total Generativity 137
5.4.3 M P2 – MP 4 138
5.4.4 Analysis of MCCGen 143
5.4.5 Discussion 144
5.5 Summary 144
6 Conclusion 145 6.1 Key Contributions 146
6.2 Future Work 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 164
B.2 Two MCCs of ModuleEnrolmentMgmt 167
C DCSL Evaluation Data 171 C.1 Expressiveness Comparison Between DCSL and the DDD Frameworks 171
C.2 Level of Coding Comparison Between DCSL and the DDD Frameworks 173
Trang 17aDSL Annotation-Based DSL, page 36
ASM Abstract Syntax Meta-model, page 17
AtOP Attribute-Oriented Programming, page 35
BISL Behaviour Interface Specification Language, page 35
CSM Concrete Syntax Meta-model, page 17
DCSL Domain Class Specification Language, page 51 DDD Domain-Driven Design, page 22
DDDAL DDD with aDSLs, page 8
DSL Domain-Specific Language, page 15
JML Java Modelling Language, page 36
MCC Module Configuration Class, page 99
MCCL Module Configuration Class Language, page 99
MDA Model-Driven Architecture, page 13
MDD Model-Driven Development, page 13
MDE Model-Driven Engineering, page 13
MDSE Model-Driven Software Engineering, page 13
Trang 18MVC Model-View-Controller, page 27
OCL Object Constraint Language, page 18
OOPL Object-Oriented Programming Language, page 29
PIM Platform-Independent Model, page 14 PSM Platform-Specific Model, page 14
SDM Semantic Domain Meta-model, page 17 UDM Unified Domain Model, page 76
UML Unifield Modelling Language, page 18 UML/OCL UML made precise with OCL, page 18
Trang 19List of Figures
1.1 A partial domain model of CourseMan 3
1.2 An overview of DDDAL (with an emphasis on phases 1 and 2) 9
2.1 The essential ASM of UML (synthesised from seven meta-models of UML [57]) 18
2.2 The OCL expression meta-model (Adapted from §8.3 [56]) 20
2.3 A UI class of the domain class Student (Source: [45]) 28
2.4 The UML-based ASM of OOPL 30
2.5 The meta-model of UML activity modelling language (Adapted from §15.2.2
of the UML specification [57]) 38
2.6 The UML activity models of five basic variants of the CourseMan’s ment management activity 39
enrol-2.7 The MOSA model of CourseMan 43
2.8 A ModuleEnrolmentMgmt’s view containing a child ModuleStudent’s view 44
3.1 The abstract syntax model of DCSL 50
3.2 A DCSL model for a part of the CourseMan domain model 55
3.3 (A: Left) The UML activity and class models of a CourseMan software variant that handles the enrolment management activity; (B: Right) The UDM that results 75
3.4 The sequential pattern form (top left) and an application to the enrolment management activity 77
3.5 The sequential pattern form view of enrolment management activity 78
3.6 The decisional pattern form (top left) and an application to the enrolment management activity 79
3.7 The decisional pattern form view of enrolment management activity 80
Trang 203.8 The forked pattern form (top left) and an application to the enrolment
man-agement activity 81
3.9 The forked pattern form view of enrolment management activity 82
3.10 The joined pattern form (top left) and an application to the enrolment
man-agement activity 83
3.11 The joined pattern form view of enrolment management activity 84
3.12 The merged pattern form (top left) and an application to the enrolment
man-agement activity 85
3.13 The merged pattern form view of enrolment management activity 86
4.1 A detailed view of DDDAL’s phase 2 with software module construction 89
4.2 An abstract UML-based software model: (core layer) domain model, (middle
layer) module and (top layer) software 90
4.3 The GUI of CourseMan software prototype generated by jDomainApp: (1)
main window, (2-4) the UDM’s GUI for EnrolmentMgmt, Student, and
Enrolment 91
4.4 The CM of MCCL 98
4.5 (A-shaded area) The transformed CM (CMT ); (B-remainder) Detailed design of the 105
The annotation-based ASM
4.7 The view of a (stand-alone) ModuleStudent object 111
4.8 The customised view of ModuleEnrolmentMgmt (as configured in Listing 4.2) 113
5.1 A partial CourseMan’s GUI that is generated by DomainAppTool 121
5.2 ProcessMan’s domain model 124
5.3 A partial MCC Model for process structure 125
5.4 The view of ModuleEnrolmentMgmt of the software in Figure 5.1 138
5.5 An example CourseMan software that has substantially been customised 141
A.1 Utility class ExprTk 158
A.2 Utility class Tk 160
Trang 21List of Tables
2.1 Meta-mapping between OOPL and UML/OCL 33
3.1 The essential state space constraints 48
3.2 The essential behaviour types 49
3.3 Well-formedness constraints of DCSL 59
3.4 The boolean state space constraints of DCSL 60
3.5 The non-boolean state space constraints of DCSL 63
3.6 The core structural mapping rules 67
3.7 Translating Domain Field properties into JML’s class invariants 72
4.1 Mapping from CM to CMT 107
5.1 The expressiveness aspects and domain properties of interest 128
5.2 (A-left) Comparing DCSL to DDD patterns; (B-right) Comparing DCSL to AL and XL 130
5.3 (A-left) Summary of max-locs for DCSL, AL and XL; (B-right) Summary of typical-locs for DCSL, AL and XL 132
5.4 BSpaceGen for CourseMan 133
5.5 Module pattern classification 135
5.6 Module generativity values of two CourseMan’s modules in M P2– M P4 140
C.1 Comparing the expressiveness of DCSL to AL, XL 171
C.2 Comparing the max-locs of DCSL to AL, XL 173
C.3 Comparing the typical-locs of DCSL to AL, XL 174
Trang 22Chapter 1
Introduction
There is no doubt that an important software engineering research area over the last twodecades is what we would generally call model-based software development (MBSD) –the idea that a software can and should systematically be developed from abtractions,
a.k.a models, of the problem domain MBSD brings many important benefits, including
ease of problem solving and improved quality, productivity and reusability Perhaps a mostvisible and novel software engineering development that falls under the MBSD umbrella ismodel-driven software engineering (MDSE) [9, 16, 38, 67] Another more modest anddirect development method is domain-driven design (DDD) [22, 62, 75]
Very early on, Czarnecki [ 16 ] stated that MDSE is a type of generative software devel-opment (GSD) The key benefits of MDSE are to significantly improve reusability and pro-ductivity in producing software for di erent implementation platforms These ffectively construct a software from this model The are basically achieved by constructing the high-level (platform-independent) software models before-hand and then very e ciently, typically with the help of proven fficiently, typically with the help of proven automated techniques and tools, applying these models to a new platform to generate the software for it This application step makes extensive use of reusable assets, including software frameworks, components, architectures and models [ 16 ].
While the MDSE’s goal is ambitiously broad and encompassing, DDD [22] focuses morespecifically on the problem of how to e ectively use models to tackle the complexity inherent inffectively construct a software from this model Thethe domain requirements DDD’s goal is to develop software based on domain models that notonly truly describe the domain but are technically feasible for implementation According toEvans [22], object-oriented programming language (OOPL) is especially suited for use withDDD This is not surprising, given that Booch [8] had ealier pointed out two
Trang 23main reasons why OOPL would result in domain models that are inherently expressive and feasible First, object naturally represents the (abstract) entities that are conceived to exist in real-world domains Second, the construct of object used in OOPL is also a basic construct of high-level analysis and design modelling languages that are used to conceptualise and analyse the domain.
The domain model, which is primarily studied under DDD and a type of model engineered
in MDSE, is in fact the basis for specifying what had been called in the language engineeringcommunity as domain-specific language (DSL) [74] The aim of DSL is to express the domainusing concepts that are familiar to the domain experts A key requirement in DSL engineering
is to enable the domain experts and the technical team to focus on building the domain model,not having to worry about the technicality of language design
A type of DSL, called annotation-based DSL (aDSL) [ 25 , 54 ], appears to satisfy
this requirement aDSL is an application of the annotation feature of modern OOPLs in DSL engineering Before this, however, annotation (called attribute in
C# [ 33 ]) was used in attribute-oriented programming (AtOP) [ 12 , 13 ] to express meta-attributes and in behaviour interface specification language (BISL) [ 32 ] to define the specification structure A key benefit of aDSL is that it is internal to the host OOPL and thus does not require a separate syntax specification This helps significantly reduce development cost and increase ease-of-learning.
In fact, simple forms of aDSL have been used quite extensively in both DDD and MDSE communities In DDD, annotation-based extensions of OOPLs have been used to develop software frameworks (e.g [ 17 , 60 ]) that support the development of not only the domain model but the final software The design rules
in these models are expressed by a set of annotations In MDSE, annotation sets are used to construct platform-specific models of software [ 4 , 76 , 77 , 78 ].
Our initial research started out with an MBSD-typed investigation into a practical problem of how to improve the productivity of object-oriented software development [ 8 ,
43 , 49 , 51 ] using a Java-based design language for the domain model [ 44 ] and a software architectural model [ 45 ] Placing these works in the context of DDD, MDSE and aDSL have given us an opportunity to advance our research to tackle a broader and more important problem concerning the DDD method for object-oriented software.
Trang 24Figure 1.1: A partial domain model of CourseMan.
Our motivating example is a course management problem domain (abbr CourseMan), which
describes a compact, yet complete, domain that includes both structural and behavioural aspects.Figure 1.1 shows a partially completed CourseMan domain model expressed in the form of a UMLclass diagram [57] Notationwise, in this dissertation, when it is necessary
Trang 25to highlight the type of model element we will use a/an/the with name of the element type to refer to a particular element, and the plural form of this name to refer to a collection of elements Further, we will use normal font for high-level concepts and fixed font for domain-specific and technical concepts.
The bottom part of Figure 1.1 shows four classes and two association classes of Man Class Student represents the domain concept Student, who registers to study in anacademic instituition Class CourseModule represents the Course Modules1 that are o eredffectively construct a software from this model The
Course-by the institution Class ElectiveModule represents a specialised type of CourseModule ClassSClass represents the student class type (morning, afternoon, or evening) for students tochoose Association class SClassRegistration captures details about the many-manyassociation between Student and SClass Finally, association class Enrolment captures detailsabout the many-many association between Student and CourseModule
The top part of Figure 1.1 (the area containing a star-like shape with this label
“?”) shows six other classes that are intended to capture the design of an activity called enrolment management We know some design details (the attributes shown in the figure) and the following description about the six classes We will give more details about the activity later in Chapter 2
– HelpRequest: captures data about help information provided to students.– Orientation: captures data about orientation programs for newly-registered students.– Payment: captures data about payment for the intuition fee that a student needs to make.
– Authorisation: captures data about the decision made by an enrolment o cer con-fficiently, typically with the help of provencerning whether or not to allow a student to undertake the registered course modules
– EnrolmentApproval: captures data about the decision made by the enrolment
o cer concerning a student’s enrolment fficiently, typically with the help of proven
– EnrolmentMgmt: represents the enrolment management activity This activity involves registering Students, enrolling them into CourseModules and registering them into SClasses In addition, it allows each Student to raise a HelpRequest.
1 we use class/concept name as countable noun to identify instances
Trang 261.1.2 Domain-Driven Design Challenges
Let us now outline the key challenges facing domain modelling in DDD and software opment from the domain model Understanding these challenges leads us to formulate a set ofopen issues for the research statement that we tackle in this dissertation
devel-Essential Constraints
The UML note boxes in Figure 1.1 shows examples of 11 kinds of constraints concerning class,field and association These constraints appear frequently in real-world domain models [34,
48 , 49 , 57 ] We describe these constraints below:
23Class Payment is immutable, i.e all objects of this class are immutable 24Field Student.name is mutable, i.e its value can be changed.
25Student.name is not optional, i.e its value must be specified for each object 26Student.name does not exceed 30 characters in length.
27Student.name is not unique, i.e its value may duplicate among objects 28Student.id is an id field.
29Student.id is auto, i.e its value is automatically generated.
30The minimum value of CourseModule.semester is 1.
31The maximum value of CourseModule.semester is 8.
32 The association constraint, e.g with respect to the enrols-in association, a Student is enrolled in zero or no more than 30 CourseModules, and a CourseModule is enrolled in by zero or more Students.
33 The minimum value of CourseModule.semester in ElectiveModule is 3.
These constraints are primitive in the sense that they are applied independently to
a single model element (e.g class Student and Student.id) The key design questions
concerning these constraints are: (i) are they essential to real-world domain models? and (ii) how do we represent these constraints in the domain model using an aDSL?
Trang 27Essential Behaviour Types
When we consider constraints in designing the domain model, we are e ectively constrainingffectively construct a software from this model Thethe state space of each domain class in the model For this state space, two orthogonal design
questions that can be raised are: (i) what are the essential types of behaviour that operate on
a constrained state space? and (ii) how do we specify the behaviour types directly in each
domain class, in such a way that can help capture the relationship with the state space?Let us take class Student in Figure 1.1 as an example Given the constrained state space that is structured around the class and its two attributes (id and name), what are
the essential operations that must be defined for this class? More specifically, is the constructor Student(Student, String) shown in the figure su cient for creating Student fficiently, typically with the help of proven objects that the software needs? What are the basis for defining the other three operations of the class, namely getId, setName and getName? Are there any other essential operations that we need to add to this class?
Regarding to modelling the behaviour type, how do we specify the behaviours
of, say, the constructor Student(Student, String) and the operations setName and
getName so that they make explicit the connections to the attribute Student.name?
Clearly, such connections help validate the essentiality of the behaviours, while making the design of Student easier to comprehend.
Software Construction from the Domain Model
Software construction from the domain model requires this model to essentially support bothstructural and behavioural modelling elements UML [57] includes three behavioural modellinglanguages: state machine and interaction and activity diagrams The first challenge is how tofactor in the domain model the behavioural modelling structure (e.g activity class and activitygraph structure of an activity)? For the CourseMan example in Figure 1.1, for instance, how do
we define the activity class EnrolmentMgmt and the activity graph structure of the concernedactivity? This would cover the area labelled ‘?’ in the figure
Another challenge with software construction is what software architecture can besuitable and how to use it to e ectively construct software from the domain model? Thisffectively construct a software from this model Thechallenge needs to be addressed in the context of a well-accepted fact that softwareconstruction can not be fully automated [26] The generally accepted position is that aGUI-based tool is employed to assist the development team in the construction process
Trang 28The constructed software plays two important roles First, it is used during domain model development to enable the development team to iteratively and interactively build the domain model As discussed in [ 22 ], this phase is central to DDD For the CourseMan example, for instance, the software would need to present a GUI that truly reflects the domain model structure Further, it should support partially completed models, such as the one shown in Figure 1.1 , and should evolve with the model as it is updated through the development iterations Second, the software is reused during production software development to quickly develop the production-quality software For instance, the production-quality CourseMan software would be constructed not only from the finalised domain model but from the software components (e.g architectural components, view layouts and view fields) that were used during the development of the domain model.
1.1.3 Research Statement
23 is a design method that tackles the complexity that lies at the heart of software velopment However, in the context of the challenges presented above, we argue that thereare still important open issues concerning the object-oriented problem domains that need to beaddressed These issues fall into two main areas: domain modelling and softwaredevelopment from the domain model First, the domain model does not define the essentialstructural elements and lacks support for behavioural modelling Second, there has been noformal study of how aDSL is used in DDD This is despite the fact that annotation is beingused quite extensively in implementations of the method in the existing DDD softwareframeworks Third, there has been no formal study of how to construct software from thedomain model In particular, such a study should investigate generative techniques (similar tothose employed in MDSE) that are used to automate software construction
In this dissertation, we aim to address the issues mentioned in the research statement above
by formally using aDSL to not only construct an essential and unified domain model butgeneratively construct modular software from this model We claim that attaining this aimwould help make the DDD method not only more concrete but more complete for object-
Trang 29oriented software development purposes On the one hand, the method would become more concrete with specific solutions that help the technical team e ectively ffectively construct a software from this model The apply the method in the OOPL platforms On the other hand, the method would become more complete with solutions for the design aspects that were not originally included We organise our research with the following objectives:
0 To investigate and design a unified domain model that includes the essential elements for both the structural and behavioural modelling aspects.
1 To investigate and characterise the software that is constructed from the domain model This should include properties that are specific to software construction with DDD
2 To investigate and define a generative and modular software construction approach
3 To investigate and design suitable aDSL(s) for the unified domain model and for software construction.
4 To implement a support tool, which includes the aDSL(s) and their generators.
We take the view that software is a system and apply the system approach [14, 19] to bothengineer the software and to tackle the stated research problem Churchman [14] genericallydefines system as “ a set of parts coordinated to accomplish a set of goals” This definitionmeans that system refers to both object and abstract construct of the human mind [19]
First, to engineer complex software requires a software engineering approach, which,according to Dekkers [19], is a type of system engineering approach A complex software isone whose behaviour and interaction between the software components are initially not well-defined A main characteristic of the system engineering approach for such software is that it
is broken down into stages, which are performed in a disciplined manner to build the system
We adapt the iterative software engineering method [43, 70] to define an enhanced DDDmethod, shown in Figure 1.2 and which we call DDD with aDSLs (DDDAL)
In principle, DDDAL consists of three phases that are performed in sequence and eratively All three phases are supported by a software framework named jDomainApp 2
it-2 paper 5 listed in the Publicationssection
Trang 30Figure 1.2: An overview of DDDAL (with an emphasis on phases 1 and 2).
Phases 1 and 2 are the two key phases of the method and are depicted in Figure 1.2 with
more details The elements that are drawn using dashed lines in the figure are not within the
research scope of this dissertation Conceptually, phase 1 takes as input the (typicallyincomplete) structural and behavioural requirements from the domain experts and produce asoutput a domain model, called UDM The purpose of phase 2 is to generate a softwareprototype that reflects the domain model in such a way that the project team can, in phase 3,intuitively review the model, the software and the associated requirements The subsequentiterations repeat at phase 1 with an update on the domain model The process is stoppedwhen the domain model satisfies the requirements From here, it is used to develop theproduction software The generated software prototype is reusable for this development.Consequently, our research approach in this dissertation is a system meta-approach,whose aim is to define a subset of elements for the first two phases of DDDAL We considerthese two phases as two sub-problems of our research problem (defined in Section 1.1), whichare tackled by carrying out the research objectives (defined in the previous section) We willdiscuss in more detail below our research approach for tackling these two sub-problems
Trang 31Sub-Problem 1: Unified Domain Modelling with aDSL
This sub-problem is tackled by performing the research objectives 1, 4 and 5 We conduct
a literature survey on the essential structural and behavioural features of the domain classand apply modelling and abstraction [19] to construct a unified domain model (UDM) that incorporates both types of features We call the process for constructing UDM UD
modelling In the spirit of DDD, we encourage but do not force the use of any high-level
modelling languages for expressing the input requirement sets In our method, thedesigner works closely with the domain expert to map the input requirements, togetherwith any accompanied high-level models, to the UDM and expresses this UDM in anaDSL This collaboration is performed iteratively with the help of a GUI-based softwareprototype that is constructed directly from the UDM We design the structural aspect of theUDM using UML class diagram and the behavioural aspect using UML activity diagram
We choose UML activity diagram because it has long been demonstrated to be expert-friendly [20] and that it is tightly linked to the other two UML behavioural diagrams(state machine and interaction diagram [57]) To express UDM, we propose an aDSL
domain-named Domain Class Specification Language (DCSL) We apply modelling to specify DCSL and implement this language as part of the jDomainApp framework We evaluate
DCSL in terms of expressiveness, required coding level and constructibility
Sub-Problem 2: Module-Based Software Construction with aDSL
This sub-problem is addressed by performing the objectives 2, 3, 4 and 5 It consists of two
smaller problems: (2.a) to construct the software modules from the UDM and (2.b) to construct
software from these modules We perform a literature survey on DDD, DDD frameworks andsoftware design properties We then characterise a software in terms of four essential
properties We focus primarily on tackling problem (2.a) We conduct a literature survey on
modular software development and adopt a module-based software architecture to explicitlymodel software in terms of a set of modules Software modules are instantiated from moduleclasses The core component of each module class is a domain class To automaticallyconstruct the module class, we focus on the module configurations and capture their design in
a module configuration class (MCC) We then apply modelling and abstraction to specify an aDSL, named Module Configuration Class Language (MCCL), to express the MCCs We
implement MCCL as a component of the jDomainApp framework and evaluate module-based
Trang 32software construction with MCCL.
The jDomainApp framework has an implementation for the sub-problem (2.b) However, we do not discuss sub-problem (2.b) in detail in this dissertation.
Contributions
We summarise below five main contributions of our dissertation that concern the two problems presented above As the contributions will show, the term “unified view” in thedissertation’s title refers to our aDSL-centric view of automated software construction from
sub-the domain model: (i) domain model is expressed using an aDSL, named DCSL; (ii)
software module construction is automated by using another aDSL, named MCCL
Unified domain modelling with aDSL:
0 Domain Class Specification Language (DCSL): an aDSL for designing domain class in the domain model It consists in a set of annotations that express the
essential structural constraints and essential behaviour of domain class.
0 A unified domain modelling approach: uses DCSL to construct a unified domain
model that incorporates state-specific modelling elements of UML activity diagram
Module-based software construction with aDSL:
fi A 4-property software characterisation: to provide a structured guidance for
the construction of software from the domain model.
fl Module Configuration Class Language (MCCL): an aDSL for designing the
config-uration classes for software modules Each of these classes serves as
a template for creating the configurations of a module class.
adoption of our overall DDDAL method in real-world software projects, we implement
DCSL, MCCL and the associated generators as components in the jDomainApp softwareframework
Trang 331.4 Dissertation Structure
This dissertation is organised into 6 chapters that closely reflect the stated contributions In Chapter 2 , we systematically present the background knowledge concerning the concepts, methods, techniques and tools that are most relavant to the research problem and necessary for explaining our contributions in the rest of this dissertation We also highlight the limitations of the existing DDD method and the works concerning the use of aDSL with MDSE and DDD.
In Chapter 3 , we describe our contributions concerning UD modelling Taking the view that domain class design is the basis for UDM construction, we first specify DCSL for expressing the essential structural and behavioural features of the domain class We then use DCSL to define UDM After that, we present a set of generic UD modelling patterns that can be applied to construct UDMs for real-world domains.
In Chapter 4 , we explain our contributions concerning module-based software construc-tion We first set the software construction context by defining a software characterisation scheme We then specify MCCL for expressing the MCCs and present a generator for generating the MCCs.
In Chapter 5 , we present an evaluation of our contributions We first describe an imple-mentation of the research contributions as components in the jDomainApp framework We then describe a real-world software development case study which we have developed using the implemented components After that, we present two evaluations: one is for DCSL and the other is for module-based software construction.
In Chapter 6, we conclude the dissertation with a summary of the research problem, thecontributions that we made and the impacts that these have on advancing the DDD method
We also highlight a number of ideas and directions for future research in this area
Trang 34Chapter 2
State of the Art
In this chapter, we present a methodological study of the literatures that are relevant tothis dissertation We have two main objectives The first objective is to gather authoritativeguidance for and to define the relevant foundational concepts, methods, and techniques.The second objective is to identify significant, unresolved issues that can be addressed inour research In particular, we highlight the limitations of the existing DDD method and theworks concerning the use of aDSL with MDSE and DDD
We begin in this section with a review of the relevant background concepts, methods andtechniques concerning MDSE, DDD and OOPL In particular, we highlight the role of aDSL(which is derived from OOPL) as the underlying theme that connects MDSE and DDD
2.1.1 Model-Driven Software Engineering
Historically, model-driven software engineering (MDSE) evolves from a general system engineering method called model-driven engineering (MDE) MDE in turn was invented
on the basis of model-driven architecture (MDA) [55] Early works, especially by Kent et
al [38] and Schmidt [67], use the term MDE A recent book by Brambilla et al [9] definesMDSE as a more specialised term In particular, they relate MDSE to a form of MDE andhighlights the di erences between the latter and two other related terms (MDA and ffectively construct a software from this model The model- driven development (MDD)) that are also commonly used in the literature Basically,
Trang 35MDD is smaller in scope than MDE (the letter ‘D’ means development, while ‘E’ means engineering) MDA, on the other hand, is a particular realisation of MDD by the Object Management Group (OMG) 1
Since our aim in this dissertation is to study the development of software systems,
we will limit our focus to just MDSE Before reviewing the related work, let us clarify
the meaning of two basic and related terms: domain and domain model We adopt the
following recent definition of both terms from Brambilla et al [ 9 ].
Definition 2.1 Domain (a.k.a problem domain) is a field of expertise that needs to be
examined to solve a problem Domain model is the conceptual model of the domain
The work by Kent et al [38] serves as a good light-weight introductory background forMDSE, not only because of the timing of its publication but because it broadly covers MDEand does so on the basis of an initial draft specification of the MDA by OMG They define MDA
as “ an approach to IT system specification that separates the specification of systemfunctionality from the specification of the implementation of that functionality on a specifictechnology platform” [55] This means that the same system model of the functionality can beapplied to di erent implementation platforms The two types of specification in the aboveffectively construct a software from this model The
definition are represented by two types of model: platform-independent model (PIM) (the system functionality) and platform-specific model (PSM) (the platform).
MDA defines four types of model transformations between PIM and PSM and suggests
that, to ease maintenance, these transformations be automated as much as possible The firstmodel transformation type is PIM-to-PIM, which is used for design refinement The secondtype is PIM-to-PSM, which is for realising PIM in a particular platform The third type is PSM-to-PSM, which is for platform model refinement The fourth type is PSM-to-PIM, which is forreverse engineering PIMs from PSMs of an existing platform
Next, Kent et al suggest that meta-modelling be used to specify the languages that are
used to express models This is attractive because it e ectively reuses MDE to define itself Affectively construct a software from this model The
meta-model is a model that expresses the shared structure of a set of related models Among
the key points about modelling are: (i) language definitions are just models (called models) with mappings defined between them, (ii) meta-modelling can be used to specify the abstract and concrete syntax, and the semantics of a language and (iii) meta-modelling is
meta-achievable with an object-oriented modelling language (e.g MOF [58])
23 http://www.omg.org
Trang 36Schmidt [67] both reinforces the work by Kent et al and discusses another importantcontribution of MDE to software development He argues that MDE had a potential for
addressing the abstraction gap problem, through e ective domain modelling This prob-ffectively construct a software from this model Thelem arised from a fact that software languages were primarily concerned with the solutionspaces and, thus, were inadequate for e ectively expressing the domain concepts.ffectively construct a software from this model The
Schmidt next states that MDE technologies should be developed to use domain-specific
defined through meta-modelling) to construct models and transformation engine and
generator to auto-matically produce other software development artefacts from the
models Before Schmidt, Czarnecki [16] also stated that MDA/MDD is a form of generativesoftware development We will discuss DSL shortly in Section 2.1.2
More recently, Brambilla et al [9] has studied MDSE as a method and how it is applied
to engineering software They define MDSE as “ a methodology for applying theadvantages of modelling to software engineering activities” The key concepts that MDSE
entails are models and transformations (or “manipulation operations” on models) This
definition then serves as the basis for integrating MDSE into four well-known softwaredevelopment processes MDSE may be integrated into the traditional developmentprocesses (such as waterfall, spiral, and the like) by making models the primary artefactsand by using model transformation techniques to automate (at least partially) the activitesthat are performed within and at the transition between di erent phases.ffectively construct a software from this model The
MDSE can also be integrated into agile, domain-driven design (DDD) and test-driven
development processes Within the scope of this dissertation, we are interested in theintegration capability of MDSE into DDD We will discuss this capability in Section 2.1.6
2.1.2 Domain-Specific Language
In general, DSL [40, 50, 74] is a software language that is specifically designed for expressingthe requirements of a problem domain, using the conceptual notation suitable for the domain
An important benefit of DSL is that it raises the level of abstraction of the software model to the
level suitable for the domain experts and thus help them participate more actively andproductively into the development process Despite the fact that di erent DSLs are designedffectively construct a software from this model Thefor di erent domains, they share some underlying properties that can be used to classify them.ffectively construct a software from this model The
DSLs can be classified based on domain [39] or on the relationship with the target
Trang 37(a.k.a host) programming language [25, 50, 74] From the domain’s perspective, DSLs areclassified as being either vertical or horizontal DSL [39] A vertical DSL, a.k.a business-
oriented DSL, targets a bounded real-world domain For example, course management is
a real-world domain of CourseMan and the completed domain model of the one shown inFigure 1.1 would form the domain model of a vertical DSL for expressing this domain
In contrast, a horizontal DSL (a.k.a technical DSL) targets a more technical domain,
whose concepts describe the patterns that often underlie a class of vertical domains whichshare common features Examples of horizontal DSLs include Structured Query Language(SQL), used for writing executable queries for relational databases, and Hypertext Mark-
up Language (HTML), used for writing the source code of web pages
Regarding to the relationship with the host language [25, 40, 50, 74], DSLs areclassified as being internal or external In principle, internal DSL has a closer relationshipwith the host language than external DSL A typical internal DSL is developed using eitherthe syntax or the language tools of the host language In contrast, a typical external DSLhas its own syntax and thus requires a separate compiler to process
in [ 39 ] The work in [ 39 ] proposes two variants of the meta-modelling process: for vertical DSLs, it is the domain modelling process (discussed in detail in [ 25 ]); for horizontal DSLs, it is a pattern-based modelling process.
In practice, one of the very early works [77, 78] had experimented with combining MDSEand DSL in a layered, service-oriented architecture, named SMART-Microsoft A key feature ofthis work is that it defines a framework for identifying and combining the DSLs that form
Trang 38a complete software model More specifically, this entails a 3-step development
method: (i) determine the application architecture, (ii) develop the DSLs that fit this architecture and (iii) combine the DSLs by defining transformations between them In
this method, the DSLs are designed to address di erent parts of the architecture and ffectively construct a software from this model The each DSL is used to create not one monolithic model but multiple partial models.
2.1.3 Meta-Modelling with UML/OCL
As discussed above, meta-modelling is a modelling approach that is applied to defining DSL.More generally, Kleppe [39] suggests that meta-modelling is applicable to any softwarelanguage This includes both DSL and general purpose language (e.g Java [28] and C# [33])
In meta-modelling, a language specification consists in three meta-models and the
rela-tions between them The first meta-model describes the abstract syntax and is called abstract
syntax meta-model (ASM) The second meta-model describes the concrete syntax and is
called concrete syntax meta-model (CSM) The third meta-model describes the semantics and is called semantic domain meta-model (SDM) According to Kleppe [39], the ASMdescribes the conceptual structure that exists in the language’s domain, while the CSM de-scribes the linguistic structure that helps present the conceptual structure to a pre-determinedpopulation of language users The SDM makes clear the semantic structure of the concepts.Technically, if we consider the Kleppe’s view that a (modelling or programming) language is a
set of mograms (a mogram is either a model or a program (resp.) written in the language) then
SDM describes “ what happens in the computer when a mogram of the language isexecuted” Here, “what happens in the computer” is defined based on a representation of thecomputer’s run-time This representation must allow for a precise description of the run-timestate when a mogram is executed
As a general modelling approach, there are a variety of meta-modelling languages that can
be applied A de facto language is Unifield Modelling Language (UML) [57] UML consists in
a family of languages, one of which is UML class diagram This language, which we will refer
to in this dissertation as class modelling language, is made more precise when combined with the Object Constraint Language (OCL) [56] This combination forms an enriched
language, which we will generally refer to in this dissertation as UML/OCL In fact, UML/OCL
is used in the UML specification itself [56] to define the abstract syntaxes of the languages inthe UML family Later in Section 2.2.2, we will discuss an example of
Trang 39how UML/OCL is used to specify the activity modelling language.
In the remainder of this section, we present an essential review of UML/OCL Our focus is
on the abstract syntax of a core meta-modelling structure of UML/OCL The meta-conceptsthat form this structure will be used later in this dissertation to define aDSLs The informalsemantics of the meta-concepts are given in [56, 57] In the spirit of meta-modelling, we adoptthe approach used in the UML specification to use UML/OCL to define itself Specifically, wefirst construct the ASM of UML and introduce very briefly the graphical syntax After that, wediscuss OCL and, as an example, explains how OCL is used to express some syntax rules ofthe ASM We conclude with a brief review of the approaches for specifying SDM
The Essential ASM of UML
Figure 2.1: The essential ASM of UML (synthesised from seven meta-models of UML [57])
The essential ASM for UML consists of the following meta-concepts: Class, Attribute,Association, Association End, Operation, Parameter, Association Class andGeneralisation This ASM, which is shown in Figure 2.1, su ces for our research purposefficiently, typically with the help of proven
in this dissertation A meta-concept is represented in the figure by a labelled rectangle Arelationship between two meta-concepts is represented by a line segment that connectsthe two corresponding rectangles On the one hand, the ASM is derived from acombination of the core structures of seven relevant UML meta-models presented in theUML specification [57] On the other hand, it adds two new, more specialised, meta-concepts (Attribute and Association End) for modelling the class structure
Trang 40The referenced meta-models come from the following sections of the UML specification:
– Abstract syntax of the root (foundational) concepts of UML (see §7.2.2 2 )– Abstract syntax of Classifiers (the base concept of UML’s classification) (see §9.2.2)– Abstract syntax of Feature which includes the Parameter concept (see §9.4.2)
– Abstract syntax of Property and the related concepts (see §9.5.2)
– Abstract syntax of Operation and the related concepts (see §9.6.2)
– Abstract syntax of Class – a type of Classifier – and the related concepts (see §11.4.2)
– Abstract syntax of Association and the related concepts (see §11.5.2)
To ease look-up, we label each key element of the ASM with the section reference, within whose meta-model the element is defined For instance, meta- concept Class is defined in the meta-model of §11.4.2.
The ASM presented in Figure 2.1 includes two new meta-concepts: Attribute andAsso-ciation End These meta-concepts, whose rectangles are filled in gray, are sub-types
of the meta-concept Property We use the two meta-concepts to di erentiate betweenffectively construct a software from this model Theproperties that are attributes and those that serve as association ends of associations.The former participate in the containment relationship between Class and Attribute, whilethe latter participate in the containment relationship between Association and AssociationEnd Further, Class has a containment relationship with Association
The Essential OCL
According to the OCL specification [56], OCL is a user-friendly, typed, formal language forconstructing expressions on UML models OCL expressions are side-e ect-free and each hasffectively construct a software from this model The
a type Typical examples of OCL expressions are invariants and queries over a UML model.The OCL specification consists in two packages: type (§8.2) and expression (§8.3) The
former defines the valid types for the expressions in the latter In the type package, all OCL
types are derived from Classifier3 (see UML specification §9.2.2) Two core OCL types
2 we use the symbol § to denote sections in the UML specification
3 we use fixed font here to be consistent with the OCL’s notation style below