![]() But on a conceptual level, we must be aware that we have two different contexts in play, sometimes they're different enough to prevent developers from doing mistakes, but sometimes the difference might be subtle. ![]() This issue is often resolved by partitioning the name space by adding some prefix to the class name (be it the name itself or part of the package). ![]() This is probably the simplest case of ambiguity we can run into when modeling our applications: same term, with two different context dependent meanings. A somewhat trivial case of ambiguity: the term Account might mean something very different according to the context it's used in The corresponding model, as shown in Figure 2, will then be something completely different.įigure 2. But, in the context of web applications, the term account has a very different meaning, related to authentication and user credentials. Talking about banking, an account is some kind of a logical "container for money" we'll then expect the corresponding class to have attributes such as balance, account number, and so on. In our application, the domain term Account might refer to different concepts. We'll probably use this application to manage the banking accounts, stocks, and savings, to track the budget and expenses, and so on. Let's suppose we're working on a web-based Personal Finance Management Application (PFM). Some words have different meaning depending on the context they’re used in. Let's start with a simple example where the ambiguity might happen at the terminology level. We'll eventually discover that this definition is rather precise, describing exactly what a context is, but to get a glimpse of that we probably need a few concrete examples. It doesn't say much about expected size, shape or other characteristics of a context. Which might sound rather vague at first read. "The setting in which a word or a statement appears that determines its meaning" In Domain Driven Design, a Context is defined as: Using the same term, with a very precisely and unambiguously defined meaning, spanning from discussions with the domain expert to the code level, assures that everybody in the team shares the same vision about the domain and the software. Even so, the traditional DDD approach could not be applied blindly to an indefinitely large domain model without compromising the conceptual integrity of the model.Īs shown in Figure 1, the key role of Ubiquitous Language in DDD is to act like an integrity check for our model. In such a place, typical DDD elements such as Entities, Value Objects and Aggregates deliver an emerging order to a complex domain model. This is crucial for creating a safe harbor where high quality design can thrive and deliver its benefits.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |