- Mastering Microservices with Java 9(Second Edition)
- Sourabh Sharma
- 440字
- 2021-07-02 21:54:47
Domain-driven design fundamentals
An enterprise, or cloud application, solves business problems and other real-world problems. These problems cannot be resolved without knowledge of the domain. For example, you cannot provide a software solution for a financial system such as online stock trading if you don't understand the stock exchanges and their functioning. Therefore, having domain knowledge is a must for solving problems. Now, if you want to offer a solution using software or applications, you need to design it with the help of domain knowledge. When we combine the domain and software design, it offers a software design methodology known as DDD.
When we develop software to implement real-world scenarios offering the functionalities of a domain, we create a model of the domain. A model is an abstraction, or a blueprint, of the domain.
Eric Evans coined the term DDD in his book Domain-Driven Design: Tackling Complexity in the Heart of Software, published in 2004.
Designing this model is not rocket science, but it does take a lot of effort, refining, and input from domain experts. It is the collective job of software designers, domain experts, and developers. They organize information, pide it into smaller parts, group them logically, and create modules. Each module can be taken up inpidually, and can be pided using a similar approach. This process can be followed until we reach the unit level, or when we cannot pide it any further. A complex project may have more of such iterations; similarly, a simple project could have just a single iteration of it.
Once a model is defined and well documented, it can move onto the next stage - code design. So, here we have a software design—a domain model and code design, and code implementation of the domain model. The domain model provides a high level of the architecture of a solution (software/application), and the code implementation gives the domain model a life, as a working model.
DDD makes design and development work together. It provides the ability to develop software continuously, while keeping the design up to date based on feedback received from the development. It solves one of the limitations offered by Agile and Waterfall methodologies, making software maintainable, including design and code, as well as keeping application minimum viable.
Design-driven development involves a developer from the initial stage, and all meetings where software designers discuss the domain with domain experts in the modeling process. It gives developers the right platform to understand the domain, and provides the opportunity to share early feedback of the domain model implementation. It removes the bottleneck that appears in later stages when stockholders wait for deliverables.
- Java程序設(shè)計與開發(fā)
- JSP網(wǎng)絡(luò)編程(學習筆記)
- 基于Java技術(shù)的Web應(yīng)用開發(fā)
- SEO智慧
- 人臉識別原理及算法:動態(tài)人臉識別系統(tǒng)研究
- Web全棧工程師的自我修養(yǎng)
- 深入分布式緩存:從原理到實踐
- 51單片機C語言開發(fā)教程
- Python機器學習:預(yù)測分析核心算法
- 零基礎(chǔ)學HTML+CSS
- Photoshop智能手機APP界面設(shè)計
- 嵌入式Linux C語言程序設(shè)計基礎(chǔ)教程
- Web開發(fā)的平民英雄:PHP+MySQL
- Android嵌入式系統(tǒng)程序開發(fā)(基于Cortex-A8)
- Android開發(fā)權(quán)威指南(第二版)