کتاب Domain-Driven Design Tackling Complexity in the Hurt of System
کتاب Domain-Driven Design Tackling Complexity in the Hurt of System در واقع منبع اصلی و سر آغاز جنبش تحت عنوان Domain-Driven Design(DDD) محسوب میشود که در سال ۲۰۰۳ توسط آقای Eric Evans نوشته و منتشر شد. در این کتاب برای اولین بار اصطلاح Domain-Driven Design مطرح شد.
در این کتاب Eric جنبهی دیگری از پیچیدگی در نرمافزار را مطرح و بر آن تاکید کرد. جنبهی مهم و جذاب این کتاب این است که Eric در این کتاب کاملا از تجربهی واقعی خود صحبت میکند و هیچ ابایی از اشاره به تجربهی شکست خورده خود نیز نکرده است.
بخش اول کتاب بر اهمیت مدلسازی دامین به عنوان یک ابزار مهم طراحی و ارتباطی بین متخصصان دامنه و تیم توسعه و سایز افراد درگیر در تولید محصول تمرکز دارد. در فصل دوم کتاب(Communication and the Use of Language) ما با اصطلاح بسیار مهم Ubiquities Language(زبان همگانی) و اهمیت آن آشنا خواهیم شد. از همان ابتدای کتاب Eric بر اهمیت این عنصر مهم در طراجی سیستم و نقش آن در پیچیدگی اشاره میکند. الگوها و مثالهای مختلفی جهت غلبه بر این نوع پیچیدگی که آن را پیچیدگی ذاتی و اساسی میدانیم در بخشهای ابتدایی کتاب آورده شده است. بخش اول شامل فصلهای زیر میباشد:
- فصل اول: Crunching Knowledge
- فصل دوم: Communication and the Use of Language
- فصل سوم: Binding Model and Implementation
بخش دوم کتاب بلاکهای اصلی سازنده Domain Model را معرفی میکند. این بخش شامل عناصر تکنیکال(Tactical DDD) و پیاده سازی مدل دامنه میباشد. در این بخش به جنبههای فنی و تکنیکال و پیادهسازی و با تاکید بر معماری لایهای(Layered Architecture) اشاره میکند. مواردی از جمله Aggregate، Entity، Value Objectو Domain Service و موارد مشابه در این بخش مورد اشاره قرار میگیرد. در فصل پایانی این بخش یعنی فصل هفتم(Using the Language: An Extended Example) یک مثال کامل ارائه شده است که تمامی موارد ارائه شده در فصول قبل را بصورت کامل در بر میگیرد. این بخش شامل فصول زیر میباشد:
- فصل چهارم: Isolating the Domain
- فصل پنجم: A Model Expressed in Software
- فصل ششم: The Life Cycle of a Domain Object
- فصل هفتم: Using the Language: An Extended Example
Eric در بخش سوم کتاب خود به لزوم اهمیت پاسخگویی به تغییرات، مناسب و متناسب با تغییر در نیازمندیها و خواستههای ذینفعان محصول میپردازد. این بخش به عنصر Refactoring در طراحی و پیادهسازی نرمافزار اشاره دارد. Eric از دیدگاه متفاوتی به مقوله Refactoring نگاه میکند و تلاش میکند نشان دهد که توجه به دامین و مسئله و مدل و همچنین زبان فراگیر و جهانی در بدست آوردن بینشها و مفاهیم مهم و جدید در فضای مسئله میتواند این امکان را به ما بدهد که به یک موفقیت و البته موفق بزرگ دست پیدا کنیم. Eric در فصل آخر این بخش ویژگیهایی از یک نوع معماری را نشان میدهد بنام (Supple Design). و اشاره میکند که در سطح پیادهسازی برای اینکه امکان پشتیانی از این تغییرات در فضای سئله را داشته باشیم نیاز میباشد که این سری ویژگیها را در معماری و طراحی خود بکار بگیریم. بخش شامل فصلهای زیر میباشد:
- فصل هشتم: Breakthrough
- فصل نهم: Making Implicit Concepts Explicit
- فصل دهم: Supple Design
- فصل یازدهم: Applying Analysis Patterns
- فصل دوازدهم: Relating Design Patterns to the Model
- فصل سیزدهم: Refactoring Toward Deeper Insight
بخش پایانی کتاب به مباحث استراتژیک(Strategic DDD) اختصاص داده شده است. رویکرد غالب DDD جهت غلبه بر پیچیدگی در فضای مسئله رویکرد تقسیم و غلبه میباشد. بدین معنی که مسئله بزرگ و اصلی به چندین مسئله کوچکتر(Sub Domain) شکسته میشود. در این بخش مفهوم Bounded Context جهت نگاشت Sub Domain به فضای راهحل معرفی میشود. همچنین در این بخش مهمترین الگوهای مورد استفاده برای پیاده سازی DDD در مقیاس بزرگ(برای دامینهای بزرگ دارای چندین Sub-Domain و همچنین سازمانهای دارای چندین تیم نرمافزاری مختلف) مورد بحث و بررسی قرار گرفته شده است. بخش پایانی شامل فصلهای زیر میباشد:
- فصل چهاردهم: Maintaining Model Integrity
- فصل پانزدهم: Distillation
- فصل شانزدهم: Large-Scale Structure
- فصل هفدهم: Bringing the Strategy Together
کتاب شامل ۱۷ فصل میباشد:
- فصل اول: Crunching Knowledge
- فصل دوم: Communication and the Use of Language
- فصل سوم: Binding Model and Implementation
- فصل چهارم: Isolating the Domain
- فصل پنجم: A Model Expressed in Software
- فصل ششم: The Life Cycle of a Domain Object
- فصل هفتم: Using the Language: An Extended Example
- فصل هشتم: Breakthrough
- فصل نهم: Making Implicit Concepts Explicit
- فصل دهم: Supple Design
- فصل یازدهم: Applying Analysis Patterns
- فصل دوازدهم: Relating Design Patterns to the Model
- فصل سیزدهم: Refactoring Toward Deeper Insight
- فصل چهاردهم: Maintaining Model Integrity
- فصل پانزدهم: Distillation
- فصل شانزدهم: Large-Scale Structure
- فصل هفدهم: Bringing the Strategy Together
Reviews
There are no reviews yet.