{"id":11261,"date":"2022-01-18T19:09:45","date_gmt":"2022-01-19T01:09:45","guid":{"rendered":"https:\/\/threecloud.wpengine.com\/?p=11261"},"modified":"2023-11-21T14:26:46","modified_gmt":"2023-11-21T22:26:46","slug":"business-process-management-the-foundation-for-good-domain-driven-design","status":"publish","type":"post","link":"https:\/\/3cloudsolutions.com\/resources\/business-process-management-the-foundation-for-good-domain-driven-design\/","title":{"rendered":"Business Process Management: the Foundation for Good Domain-Driven Design (DDD)"},"content":{"rendered":"<p>Domain-Driven Design (DDD) has garnered attention within modern software architecture for the past seventeen years, and for good reason. Focusing your design around business problems makes sense. But many organizations make a simple mistake in adopting DDD: making assumptions about the right business problem to focus on. Below, we look at the importance of business process management as the foundation for good design, and dig deeper into one recommended technique for your process management.<\/p>\n<h2>Defining Domain-Driven Design<\/h2>\n<p>Traditionally, software architecture involved small groups of senior developers meeting with an analyst, trying to understand what the business problem was, and then diving deep into the technology to try and solve that problem. This approach was overly focused and reliant on the technology at hand, often resulting in the implementation of an idealist architecture that wasn\u2019t flexible enough to solve problems. To borrow from <a href=\"https:\/\/medium.com\/thethursdaythought\/when-all-you-have-is-a-hammer-everything-looks-like-a-nail-the-einstellung-effect-on-67ee8449f740\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"undefined (opens in a new tab)\">Abraham Maslow\u2019s analogy<\/a>, if the only tool you have is a hammer, everything looks like a nail.<\/p>\n<p>Enter DDD, first introduced in Eric Evan\u2019s book <a href=\"https:\/\/www.amazon.com\/Domain-Driven-Design-Tackling-Complexity-Software\/dp\/0321125215\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"undefined (opens in a new tab)\"><em>Domain-Driven Design: Tackling Complexity in the Heart of Software<\/em><\/a>. DDD proposes that we focus more on the business (aka the domain) and business problems, with some proponents arguing that the architecture should be subordinate to those things. At its core, DDD involves collaboration between developers and domain experts\u2013your software\u2019s customers or users\u2013to address problems.<\/p>\n<h2>The Challenge: Identifying the Right Problem<\/h2>\n<p>DDD can fall short when a similarly collaborative approach isn\u2019t taken to identifying the business problem (or problems) to focus on. Sometimes, teams employ this modern approach to design only to discover in the end that the issue they\u2019ve solved for was not the organization\u2019s most critical problem.<\/p>\n<p>To address this challenge head on and create a strong foundation for DDD, understanding your overall, cross-silo business process is imperative. Your business process should become <em>the<\/em> bounded context. Knowing your business process means more than just knowing how someone in the warehouse packs a box. That\u2019s an activity within a larger process\u2013one that starts when a customer hits the checkout button on your website and continues until he or she receives the product. Processes span departments and encompass different areas of the company. Once you understand and map the current process, you can start to identify problems and opportunities to build a better one.<\/p>\n<h2>Enter Brandolini\u2019s Event Storming Technique<\/h2>\n<p>How can a modern organization go about understanding its own process? <a href=\"https:\/\/www.youtube.com\/watch?v=mLXQIYEwK24\">Event Storming<\/a> is a highly-creative, highly-visual technique for business process management that leverages cross-department collaboration to do exactly that. Plus, it\u2019s holistic approach and principles of collaboration make it a good fit and foundation for Domain-Driven Design.<\/p>\n<p>The Event Storming method, championed by <a href=\"https:\/\/twitter.com\/ziobrando?lang=en\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"undefined (opens in a new tab)\">Alberto Brandolini<\/a>, is focused on first identifying the business process, and then building the architecture around it. Process is always at the center of the world in Event Storming, and everything hangs off of it. In Event Storming, you bring specialists from different areas together to ask why things happen, how to know they happened, how to test them, and what happens if they don\u2019t go as intended. These are your events. You\u2019ll hang these on the process model you\u2019ve put on the wall and make them part of your visual map.<\/p>\n<p>If you read Brandolini\u2019s work on Event Storming and how it\u2019s morphed over the years, you\u2019ll see that it\u2019s begun to blend the ideas of multiple tools into one. It involves user personas as with story-boarding, early identification of key tests from test-driven development, and all of this from a facilitated session similar to process discovery.All of these ideas are important for <a href=\"https:\/\/3cloudsolutions.com\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"undefined (opens in a new tab)\">building modern software and microservices.<\/a> They succeed not because they help us to create better code, but because they do an excellent job of providing information for teams. Together, Event Storming and Domain-Driven Design can give your entire team and third-party partners the context they need to effectively design and build a solution that will solve the business problems at hand. Starting with business process management and a shared understanding of how the business works ensures you\u2019re focused on the right problems from the beginning.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Domain-Driven Design (DDD) has garnered attention within modern software architecture for the past seventeen years,&mldr;<\/p>\n","protected":false},"author":57,"featured_media":11407,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[262],"tags":[],"class_list":["post-11261","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure-strategy-management","topics-blog"],"acf":[],"_links":{"self":[{"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/posts\/11261","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/users\/57"}],"replies":[{"embeddable":true,"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/comments?post=11261"}],"version-history":[{"count":0,"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/posts\/11261\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/media\/11407"}],"wp:attachment":[{"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/media?parent=11261"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/categories?post=11261"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/tags?post=11261"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}