Domain-Driven Design: Tackling Complexity in the Heart of Software
Rate it:
Open Preview
4%
Flag icon
A feature common to the successes was a rich domain model that evolved through iterations of design and became part of the fabric of the project.
4%
Flag icon
Software development teams facing complex domains can use this framework to approach domain-driven design systematically.
4%
Flag icon
good design can create opportunities to exploit those complex features.
4%
Flag icon
Yet the most significant complexity of many applications is not technical. It is in the domain itself, the activity or business of the user.
4%
Flag icon
1. For most software projects, the primary focus should be on the domain and domain logic. 2. Complex domain designs should be based on a model.
4%
Flag icon
Domain-driven design is both a way of thinking and a set of priorities, aimed at accelerating software projects that have to deal with complicated domains.
4%
Flag icon
These two practices are prerequisites for applying the approach in this book. 1. Development is iterative. Iterative development has
4%
Flag icon
been advocated and practiced for decades, and it is a cornerstone of Agile development methods. There are many good discussions in the literature of Agile development and Extreme Programming (or XP), among them, Surviving Object-Oriented Projects (Cockburn 1998) and Extreme Programming Explained (Beck 1999). 2. Developers and domain experts have a close relationship. Domain-driven design crunches a huge amount of knowledge into a model that reflects deep insight into the domain and a focus on the key concepts. This is a collaboration between those who know the domain and those who know how to ...more
4%
Flag icon
I will use XP as the basis for discussion of the interaction of design and process.
4%
Flag icon
Instead, the Agile processes, such as XP, emphasize the ability to cope with change and uncertainty.
4%
Flag icon
XP process assumes that you can improve a design by refactoring, and that you will do this often and rapidly.
unknown
Are we properly using agile process in development?
5%
Flag icon
A sophisticated approach to domain modeling within the context of an Agile development process will accelerate development.
5%
Flag icon
Part I defines terms and gives an overview of the implications of using the domain model to drive communication and design.
5%
Flag icon
bridging the gap between models and practical, running software.
5%
Flag icon
the kinds of decisions that keep the model and implementation aligned with each other, each reinforcing the other’s effectiveness.
5%
Flag icon
That understanding comes from diving in, implementing an initial design based on a probably naive model, and then transforming it again and again.
5%
Flag icon
This section explores a triad of principles that apply to the system as a whole: context, distillation, and large-scale structure.
5%
Flag icon
Supplemental materials can be found at http://domaindrivendesign.org,
unknown
To-study, with real code example
5%
Flag icon
the biggest gains come when a team joins together to apply a domain-driven design approach and to move the domain model to the project’s center of discourse.
6%
Flag icon
A model is a simplification. It is an interpretation of reality that abstracts the aspects relevant to solving the problem at hand and ignores extraneous detail.
unknown
소프트웨어의 핵심은 도메인 모델을 만드는 것에 있다. 인공지능, 로봇, VR과 같은 것들도 결국엔 Infrastructure 이다. 이러한 Infrastructure들을 늘려가는 것, Domain 모델을 잘 만들어가는 것이 기술 혁신의 목표가 아닐까
6%
Flag icon
That subject area to which the user applies the program
unknown
The domain of the software
6%
Flag icon
the idea that the diagram is intended to convey.
6%
Flag icon
not a matter of making as “realistic” a model as possible. Even in a domain of tangible real-world things, our model is an artificial creation.
unknown
Domain Modeling
6%
Flag icon
The model and the heart of the design shape each other.
6%
Flag icon
The model is the backbone of a language used by all team members.
6%
Flag icon
The model is distilled knowledge.
6%
Flag icon
The heart of software is its ability to solve domain-related problems for its user.
6%
Flag icon
There are systematic ways of thinking that developers can employ to search for insight and produce effective models.
6%
Flag icon
They always involved “nets” and various details about them.
7%
Flag icon
A few months later the PCB engineers had a rich tool that exceeded their expectations.
unknown
Software Engineers are translator between domain model and information system.
7%
Flag icon
Binding the model and the implementation.
7%
Flag icon
Cultivating a language based on the model.
7%
Flag icon
Developing a knowledge-rich model.
7%
Flag icon
Distilling the model.
7%
Flag icon
Brainstorming and experimenting.
7%
Flag icon
They try one organizing idea after another, searching for the simple view that makes sense of the mass.
7%
Flag icon
In the old waterfall method, the business experts talk to the analysts, and analysts digest and abstract and pass the result along to the programmers, who code the software. This approach fails because it completely lacks feedback.
8%
Flag icon
Good programmers will naturally start to abstract and develop a model that can do more work.