Differences
This shows you the differences between two versions of the page.
| arch:alternativestouml2notationfordomaindrivendesign [2026/08/29 07:53] – Bulk sync migration user | arch:alternativestouml2notationfordomaindrivendesign [2026/08/29 07:59] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Alternatives to UML2 notation for domain driven design ====== | ||
| + | By Chistobaev Daniil (dachistobaev@edu.hse.ru) | ||
| + | |||
| + | ===== Introduction ===== | ||
| + | |||
| + | Domain-Driven Design (DDD) is a software development approach introduced by Eric Evans [[arch: | ||
| + | |||
| + | ===== UML2's Challenges: Alternative Representation Methods ===== | ||
| + | |||
| + | UML2 is a popular tool for designing software. However, it has its challenges. Its wide range of symbols can be confusing for beginners, making it hard to learn quickly. While it's meant to fit many situations, this broad approach can miss specific details important for some projects. Also, because it's so detailed, some developers might spend too much time on minor aspects. Lastly, its complex diagrams can be tough for non-tech folks to grasp, leading to communication gaps between teams. Considering these challenges, it's worth exploring alternative methods of representation. | ||
| + | |||
| + | ===== Alternative Notations ===== | ||
| + | |||
| + | While UML2 offers a comprehensive approach to modeling, it can sometimes be overwhelming, | ||
| + | |||
| + | === Domain-Specific Languages (DSLs) === | ||
| + | |||
| + | Domain-Specific Languages (DSLs)[[arch: | ||
| + | |||
| + | The big benefit of DSLs is that they match how experts in that area think. By using the same concepts and ideas from that domain, DSLs make it easier for developers to talk to each other and to people who are experts in that field. | ||
| + | |||
| + | **Features of DSLs:** | ||
| + | |||
| + | Made for One Thing: DSLs are languages made to do one specific thing really well. They use terms and rules that fit that topic or area perfectly. | ||
| + | |||
| + | Easy for Experts: If you know the topic well, picking up a DSL can feel natural and straightforward. | ||
| + | |||
| + | Less Mistakes: Since DSLs are made for just one thing, there' | ||
| + | |||
| + | **Why Use the DSLs for DDD?** | ||
| + | |||
| + | Shared Language: In DDD, everyone (like coders and business experts) needs to speak the same language. DSLs can help with this because they use terms that fit the business topic. | ||
| + | |||
| + | Clear Business Rules: DSLs let you show business rules clearly, without getting lost in technical details. | ||
| + | |||
| + | Stays on Topic: With DSLs, you can focus on the business without getting distracted by unrelated tech stuff. | ||
| + | |||
| + | Flexible: As you learn more about the business, you can easily tweak or add to the DSL. | ||
| + | |||
| + | === C4 Model === | ||
| + | |||
| + | The C4 Model, which stands for “Context, Containers, Components, and Code [[arch: | ||
| + | |||
| + | **Context**: | ||
| + | |||
| + | **Containers**: | ||
| + | |||
| + | **Components**: | ||
| + | |||
| + | **Code**: The lowest level of abstraction, | ||
| + | |||
| + | **Features of C4 Model:** | ||
| + | |||
| + | Layers: The C4 Model is like a zoom lens. You can look at the big picture (Context) or zoom in to see details (like Code). | ||
| + | |||
| + | Clear Symbols: The C4 Model suggests using certain symbols to represent things like users or parts of the software. This makes diagrams easy to understand. | ||
| + | |||
| + | **Why Use the C4 Model for DDD?** | ||
| + | |||
| + | Setting Boundaries: The Context layer helps you see where the software fits in the bigger picture. | ||
| + | |||
| + | Showing Details: Layers like Containers and Components let you visualize the important bits of the business. | ||
| + | |||
| + | Connecting Everyone: By showing everything from big goals to code details, the C4 Model helps everyone - from business people to coders - understand and talk to each other. | ||
| + | |||
| + | Easy to Update: As you learn more, you can easily change and refine the model. | ||
| + | |||
| + | === ArchiMate === | ||
| + | |||
| + | ArchiMate, developed by The Open Group[[arch: | ||
| + | |||
| + | **Key Features of ArchiMate: | ||
| + | Multi-layered Approach: ArchiMate categorizes its elements across three primary layers - Business, Application, | ||
| + | |||
| + | Standardized Notation: One of the significant benefits of ArchiMate is its standardized notation. Unlike UML2, which is quite vast and generalized, | ||
| + | |||
| + | **Why ArchiMate for DDD?** | ||
| + | |||
| + | For projects that touch upon the broader spectrum of enterprise architecture, | ||
| + | |||
| + | === Event Storming === | ||
| + | |||
| + | Event Storming is a dynamic and collaborative modeling method that emphasizes domain events as its primary tool to understand and map out intricate business domains[[arch: | ||
| + | Key Features of Event Storming: | ||
| + | |||
| + | Everyone Joins In: People from different roles like experts, coders, testers, and business folks come together. | ||
| + | Using Sticky Notes: They use different colored notes to map out events and other details. This makes it easy to see the whole process and find any issues. | ||
| + | |||
| + | Quick and Repeated: Instead of trying to make everything perfect at once, they quickly map out ideas and then keep improving them. It's all about learning and adjusting. | ||
| + | |||
| + | Talking Matters: A big part of Event Storming is the discussions people have. It's not just about the notes but also the insights and ideas they share. | ||
| + | |||
| + | **Why ArchiMate for DDD?** | ||
| + | |||
| + | When you want a deep dive into a project and uncover all its parts, especially the tricky bits, Event Storming is a great matc | ||
| + | |||
| + | ===== Conclusion ===== | ||
| + | |||
| + | The search for efficient domain modeling and communication in DDD projects requires the investigation of UML2 notation alternatives. Although UML2 offers a uniform approach, its complexity frequently overshadows its usefulness. DSLs, the C4 Model, ArchiMate, and event storming are among alternatives that each provide promising ways to encourage efficient domain modeling and more open stakeholder engagement. These alternatives are essential resources for a variety of situations because each one has particular advantages. Personally, I would incline toward the C4 Model due to its structure and emphasis on layered comprehension. The final decision among these would, however, mostly depend on the particular requirements and context of the project at hand. | ||
| + | |||
| + | ===== References ===== | ||
| + | |||
| + | 1. Domain-driven design: рецепт для прагматика [[https:// | ||
| + | |||
| + | 2. On the Relationship between Domain-Driven Design and Domain-Specific Languages [[https:// | ||
| + | |||
| + | 3. Модель C4 [[wp> | ||
| + | |||
| + | 4. Чем полезен ArchiMate аналитику [[https:// | ||
| + | |||
| + | 5. Моделирование микросервисов с помощью Event storming [[https:// | ||
| + | |||
| + | [[arch: | ||
| + | |||
| + | Evans, E. (2003). Domain-Driven Design: Tackling Complexity in the Heart of Software. | ||
| + | |||
| + | [[arch: | ||
| + | |||
| + | Fowler, M. (2010). Domain Specific Languages. | ||
| + | |||
| + | [[arch: | ||
| + | |||
| + | Brown, S. (2018). Software Architecture for Developers: Volume 2. C4Model.com. | ||
| + | |||
| + | [[arch: | ||
| + | |||
| + | The Open Group. (2013). ArchiMate® 3.0 Specification. The Open Group. | ||
| + | |||
| + | [[arch: | ||
| + | |||
| + | Brandolini, A. (2013). Introducing Event Storming. | ||