- عنوان کتاب: Mastering Domain-Driven Design -Collaborative modeling with domain storytelling, event storming, and context mapping (Annegret Junker)
- نویسنده: Annegret Junker
- حوزه: سیستمهای توکار
- سال انتشار: 2025
- تعداد صفحه: 390
- زبان اصلی: انگلیسی
- نوع فایل: pdf
- حجم فایل: 6.37 مگابایت
نوشتن نرمافزار در تمام مراحل طراحی و پیادهسازی، یک کار چالشبرانگیز است. این چالش تنها در نوشتن کد نیست؛ بلکه در مورد درک یکدیگر نیز هست. توسعهدهندگان باید متخصصان کسبوکار را درک کنند، متخصصان کسبوکار باید معماران نرمافزار را درک کنند، معماران راهحل باید با معماران سازمانی همکاری کنند و غیره. علاوه بر این، مشکلاتی که امروزه در نرمافزار حل میکنیم ذاتاً پیچیده هستند. ما باید با استفاده از طراحی دامنهمحور، همانطور که بیش از بیست سال پیش توسط اریک ایوانز توضیح داده شده است، با این پیچیدگی مقابله کنیم. در همین حال، ما روشها و قالبهای کارگاهی را میشناسیم که به ما امکان میدهند نرمافزار را به روشی بسیار مشارکتی ایجاد و مدرن کنیم. یک فرآیند جامع که بر همکاری و تعامل همه ذینفعان تأکید دارد، از اولین ایدهها تا پیادهسازی رویدادها و APIهای restful، در کتاب ارائه شده است. این کتاب این فرآیند را به عنوان Synergetic Blueprint معرفی میکند و کاربرد آن را با استفاده از مثالهای متعدد مورد بحث قرار میدهد. فصل 1: مقدمهای بر طراحی دامنهمحور – این فصل تاریخچه این رویکرد، پیچیدگی برنامههای نرمافزاری مدرن و نحوه مقابله با این پیچیدگی را مورد بحث قرار میدهد. فصل 2: مقدمهای بر کتابخانه آنلاین نمونه – این فصل یک کتابخانه آنلاین را معرفی میکند که به عنوان مثال در سراسر کتاب برای توضیح مراحل تکی فرآیند طراحی استفاده میشود. فصل ۳: چرا طراحی استراتژیک – این فصل به تأثیر معماری نرمافزار بر یک سیستم و چگونگی دستیابی به استقلال تیمی میپردازد. وابستگیهای سازمانی هنگام صحبت در مورد قانون کانوی مورد بحث قرار میگیرند. این بحث منجر به چگونگی دستیابی به نرمافزار بهتر و معنای نرمافزار بهتر میشود. فصل ۴: زمینه محدود و دامنه – این فصل اصطلاحات دامنه، زیر دامنه، زمینه محدود و تجمیع را معرفی میکند. الگوهای طراحی استراتژیک مورد بحث قرار میگیرند. فصل ۵: داستانسرایی دامنه – این فصل داستانسرایی دامنه را به عنوان یک قالب کارگاهی معرفی میکند. در این فصل داستانسرایی دامنه کتابخانه آنلاین و واژهنامه تصویری آن مورد بحث قرار میگیرد و توصیههایی در مورد نحوه برگزاری کارگاه ارائه میشود. فصل ۶: طوفان رویداد – این فصل خواننده را با قالب کارگاه طوفان رویداد آشنا میکند و نحوه راهاندازی آن را مورد بحث قرار میدهد. مراحل یک کارگاه طوفان رویداد، از یافتن و تثبیت رویدادها تا اختصاص تجمیعها و مدلهای خواندن را به تفصیل توضیح میدهد. فصل ۷: نقشه زمینه – این فصل نقشه زمینه را به عنوان ابزاری برای بحث در مورد نقشه زمینه معرفی میکند و در مورد رابطهای همزمان و ناهمزمان بحث میکند. همچنین تعاریف API و نحوه اضافه کردن رابطها به نقشه زمینه را نشان میدهد. فصل ۸: مروری بر طراحی استراتژیک – این فصل مروری بر بخش استراتژیک طراحی مبتنی بر دامنه ارائه میدهد. این فصل اهمیت طراحی استراتژیک و رابطه بین طراحی و وابستگیهای تیمی را مورد بحث قرار میدهد. این فصل همچنین نکات و ترفندهایی را برای بهکارگیری طراحی استراتژیک در کارهای روزانه ارائه میدهد. فصل ۹: مقدمهای بر طراحی تاکتیکی – این فصل اولین مرور کلی بر بخش تاکتیکی طراحی را ارائه میدهد. این فصل نقش یک مدل در توسعه نرمافزار را مورد بحث قرار میدهد و نحوه تکامل زبان فراگیر را توضیح میدهد. همچنین مروری بر الگوی تاکتیکی طراحی مبتنی بر دامنه ارائه میدهد. فصل ۱۰: تجمیع، موجودیت و شیء مقدار – این فصل به تفصیل موضوع را مورد بحث قرار میدهد و مدلی از کتابخانه آنلاین ارائه میدهد. همچنین مخزن الگوها، هماهنگکننده و کارخانهها را ارائه و مورد بحث قرار میدهد. فصل ۱۱: افشای تجمیعها از طریق APIها – این فصل APIهای همزمان لازم برای یک زمینه محدود و نحوه تعریف آنها را مورد بحث قرار میدهد. همچنین در مورد خواص یک API RESTful و مشخصات آن بحث میکند. این تئوری در عمل با استفاده از کتابخانه آنلاین به عنوان مثال اعمال میشود. فصل ۱۲: افشای رویدادهای دامنه – این فصل در مورد چگونگی افشای رویدادهای دامنه یک زمینه محدود بحث میکند. رویدادها با استفاده از AsyncAPI تعریف میشوند. رویدادهای کتابخانه آنلاین به عنوان مثال استفاده میشوند. علاوه بر این، تعریف خدمات برای رویدادها مورد بحث قرار میگیرد. فصل ۱۳: مشکلات در طراحی تاکتیکی – این فصل به وابستگیهای بین مسئولیتهای تیمی و طراحی تاکتیکی میپردازد. به مشکلات اشاره میکند و نکاتی را در مورد چگونگی اجتناب از آنها ارائه میدهد. فصل ۱۴: استفاده از طراحی مبتنی بر دامنه در یک زمین سبز – این فصل با استفاده از مثال یک مغازه اجاره دوچرخه، مروری جامع بر فرآیند ارائه میدهد. نکاتی در مورد نحوه راهاندازی کارگاهها و یافتن مخاطب مناسب ارائه میدهد. با استفاده از مثال، نحوه مستندسازی نتایج کارگاه و تصمیمات معماری را شرح میدهد. علاوه بر این، این فصل نحوه تکامل یک فرآیند DDD را شرح میدهد. فصل ۱۵: طراحی مبتنی بر دامنه در یک پروژه Brownfield – این فصل با استفاده از مثال یک کتابخانه اجتماعی کلاسیک، فرآیند را در یک پروژه Brownfield مورد بحث قرار میدهد. اولویتبندی قابلیتها و بهکارگیری یک رویکرد گام به گام برای نوسازی لازم را شرح میدهد. این فصل دوباره بر تغییرات سازمانی مورد نیاز تأکید میکند. فصل ۱۶: خلاصه – این فصل خلاصهای از محتوای فصلهای قبلی و توضیحات جامع ارائه میدهد.
Writing software is a challenging task in all phases of design and implementation. It is not alone in writing code; it is about understanding each other. Developers need to understand business experts, business experts need to understand software architects, solution architects need to work with enterprise architects, etc. Moreover, the problems we solve nowadays in software are intrinsically complex. We need to tackle this complexity by applying Domain-Driven Design, as described by Eric Evans over twenty years ago. Meanwhile, we know methodologies and workshop formats that allow us to create and modernize software in a highly collaborative way. A comprehensive process that emphasizes collaboration and engagement of all stakeholders is presented in the book, from the first ideas up to the implementation of events and restful APIs. This book introduces the process as Synergetic Blueprint and discusses its application using multiple examples. Chapter 1: Introduction to Domain-Driven Design – This chapter discusses the history of this approach, the complexity of modern software applications, and how to tackle this complexity. Chapter 2: Introduction to the Example Online Library – This chapter introduces an online library used as an example throughout the book to explain the single steps of the design process. Chapter 3: Why Strategic Design – This chapter discusses the influence of software architecture on a system and how to achieve team independence. Organizational dependencies are discussed when talking about Conway’s law. This discussion leads to how to reach better software and what better software means. Chapter 4: Bounded Context and Domain – This chapter introduces the terms domain, subdomain, bounded context, and aggregate. The patterns in strategic design are discussed. Chapter 5: Domain Storytelling – This chapter introduces domain storytelling as a workshop format. It discusses the domain story of the online library and its visual glossary and gives recommendations on how to conduct a workshop. Chapter 6: Event Storming – This chapter introduces the reader to the event storming workshop format and discusses how to set one up. It explains in detail the steps of an event storming workshop, from finding and consolidating the events to assigning aggregates and reading models. Chapter 7: Context Map – This chapter introduces the context map as a tool for discussing context map and discuss synchronous and asynchronous interfaces. It also shows the API definitions and how to add interfaces to the context map. Chapter 8: Overview of Strategic Design – This chapter gives an overview of the strategic part of Domain-Driven Design. It discusses the importance of strategic design and the relationship between design and team dependencies. The chapter also offers tips and tricks for applying strategic design in daily work. Chapter 9: Introduction to Tactical Design – This chapter gives a first overview of the tactical part of the design. It discusses the role of a model in software development and explains how to evolve the ubiquitous language. It also provides an overview of the tactical pattern of Domain-Driven Design. Chapter 10: Aggregate, Entity, and Value Object – This chapter discusses the topic in detail and provides a model of the online library. It also provides and discusses the patterns repository, orchestrator, and factories. Chapter 11: Exposing Aggregates via APIs – This chapter discusses the necessary synchronous APIs of a bounded context and how to define them. It also discusses the properties of a RESTful API and its specification. The theory is applied in practice using the online library as an example. Chapter 12: Exposing Domain Events – This chapter discusses how to expose the domain events of a bounded context. The events are defined using AsyncAPI. The events of the online library are used as an example. Furthermore, the definition of services is discussed for the events. Chapter 13: Pitfalls in Tactical Design – This chapter discusses the dependencies between team responsibilities and tactical design. It points to pitfalls and gives hints on how to avoid them. Chapter 14: Usage of Domain-Driven Design in a Greenfield – This chapter gives a comprehensive overview of the process using the example of a bike rental shop. It offers hints on how to set up the workshops and find the right audience. Using the example, it describes how to document the workshop results and the architectural decisions. Furthermore, the chapter describes how to evolve a DDD process. Chapter 15: Domain-Driven Design in a Brownfield Project – This chapter discusses the process in a brownfield project using the example of a classic community library. It describes prioritizing the capabilities and applying a step-by-step approach to the necessary modernization. It emphasizes again the required organizational changes.tic Chapter 16: Summary – This chapter summarizes the content of the previous chapters and comprehensively describes the synergetic blueprint process. It gives an overview of strategic and tactical design and how to apply the method to projects.
این کتاب را میتوانید از لینک زیر بصورت رایگان دانلود کنید:
Download: Mastering Domain-Driven Design

نظرات کاربران