Connection...
[Architecture design] DDD Experience Sharing (medium)
System design phase (SD)
In the system design phase, the main task is to design the objects of each functional module in the designed system architecture. Generally, UML tools such as "class chart" and "Sequence Chart" are used to design the system. Finally, we will organize the solutions into a system design specification 」. If the requirement analysis stage is to build a skeleton, the system design stage is to fill the flesh and blood work.
From the system analysis stage to the system design stage, it is also an unexpected creation process. The difference is that the system analysis stage is the entire system architecture, and the system design stage is for module objects. At this time, the domain model has played a guiding role. By analyzing and designing Domain Models, you can convert Domain Models into core functional module objects. With this function module as the basis for analysis and design, we can design functional modules in other system architectures. When all functional modules are designed, the entire system design phase is completed.
System design phase (SD)-Module Design
Domain-Driven Development defines a set of patterns used to guide developers and convert Domain Models into functional module objects. For more information about these modes, see domain driven design-Eric Evans. These models can be used to convert the domain models produced in the demand analysis stage into functional module objects, for example.
This function module object obtained after the domain model transformation is not an independent work project. This function module object must also be integrated with use cases, prototype, and other data. It must be fully implemented through the function module object, and the use cases and prototype data should be recorded in interviews with customers. For example, if a use case records the customer's intention to "set the user and which door to use", such abstract descriptions can be found on the functional module object through the object model: 「 the user object has the card ID attribute. Set the card ID attribute to allow the card reader to pass through the card reader hardware. When the card reader hardware senses a card that is accessible, it opens the door for the user to pass .」. When the function module object can pass all use case tests, the correctness of the function module object is verified. Developers can analyze and design functional modules in other system architectures based on the functional module objects with peace of mind. When all functional modules are designed, the entire system design phase is completed.
Implement)
The main task of the "System Practice Stage" is to convert the completed system architecture design into the actually executed program code. Finally, the solution is delivered to the customer.
Basically, as long as the previous several stages are well performed, the system implementation stage is simply based on the diagram. But in fact, problems often occur, such as the actual platform and referenced framework do not support the functions of XX. At this time, we need to revise the decisions and designs made in the previous stages and solve the problems one by one. Finally, the entire software can be completed and delivered to the customer for acceptance.
However, it should be noted that the output solution serves the customer. However, in addition to serving customers, a software system also needs to serve developers. According to relevant research, the life cycle of the software system, the maintenance phase after development, occupies the largest part of the entire software life cycle, and the person responsible for maintenance is the developer. If high-quality program code can be produced, the labor cost required for subsequent maintenance or modification can be greatly reduced, and the workload of developers can be reduced.
Conclusion
Here is the topic "DDD experience sharing". I believe you have some knowledge about the two statements: what is the definition of software development process and how is the definition of domain-driven development. It is also known that the development of software systems is not a creative process, but a result produced by various procedures and methods. But even if you know what to do and how to do it, the most important thing is to do it first. Only by doing this in person will you know what you are doing, and you will be able to master these development technologies.
Reference books
Finally, the DDD experience shared this topic, and many details were not described. Developers interested in these development technologies can refer to the following books and believe they can help developers.
-English books: domain driven design-Eric Evans
-Traditional Chinese books: UML/MDA practice manual for SA-qiu Yuhui
-Simplified books: Software Architecture Design-Wen Yi