ساخت نرمافزار دشوارتر از همیشه است. به عنوان یک توسعهدهنده، شما نه تنها باید روندهای تکنولوژیکی در حال تغییر را دنبال کنید، بلکه باید دامنههای کسبوکار پشت نرمافزار را نیز درک کنید. این کتاب عملی مجموعهای از الگوها، اصول و شیوههای اصلی را برای تحلیل دامنههای کسبوکار، درک استراتژی کسبوکار و مهمتر از همه، همسو کردن طراحی نرمافزار با نیازهای کسبوکار آن به شما ارائه میدهد. ولاد خونووف، نویسنده کتاب، به شما نشان میدهد که چگونه این شیوهها منجر به پیادهسازی قوی منطق کسبوکار میشوند و به آیندهنگری طراحی و معماری نرمافزار کمک میکنند. شما رابطه بین طراحی مبتنی بر دامنه (DDD) و سایر متدولوژیها را بررسی خواهید کرد تا اطمینان حاصل کنید که تصمیمات معماری شما نیازهای کسبوکار را برآورده میکنند. همچنین داستان واقعی پیادهسازی DDD در یک شرکت استارتاپی را بررسی خواهید کرد. با این کتاب، یاد خواهید گرفت که چگونه: دامنه کسبوکار یک شرکت را تحلیل کنید تا بفهمید سیستمی که میسازید چگونه با استراتژی رقابتی آن مطابقت دارد. از ابزارهای استراتژیک و تاکتیکی DDD برای معماری راهحلهای نرمافزاری مؤثر که نیازهای کسبوکار را برطرف میکنند، استفاده کنید. درک مشترکی از دامنههای کسبوکاری که با آنها روبرو میشوید، ایجاد کنید. یک سیستم را به زمینههای محدود (Bounded Contexts) تجزیه کنید. کار چندین تیم را هماهنگ کنید. DDD را به تدریج در پروژههای موجود (brownfield projects) معرفی کنید.
اشتراکی

با مرور فصلها، ساختار ، محتوای کتاب را به سرعت بشناسید.
با مرور فصلهای این کتاب میتونی خیلی سریع بفهمی هر بخش چی یاد میده، ساختار کلی چطوره و از کجا باید شروع کنی. هر فصل روی یک مفهوم یا مهارت خاص تمرکز داره و موضوعات اصلیش رو میبینی تا انتخابت آگاهانهتر باشه. چه بخوای کل کتاب رو دنبال کنی، چه فقط یک بخش خاص رو دنبال کنی، این نما کمکت میکنه مسیرت رو پیدا کنی.
متدولوژی طراحی مبتنی بر دامنه (DDD) را میتوان به دو بخش اصلی تقسیم کرد: طراحی استراتژیک و طراحی تاکتیکی. جنبه استراتژیک DDD به پاسخگویی به سوالات «چه چیزی؟» و «چرا؟» میپردازد—اینکه چه نرمافزاری میسازیم و چرا آن را میسازیم. بخش تاکتیکی تماماً در مورد «چگونه» است—اینکه هر جزء چگونه پیادهسازی میشود.
سفر خود را با کاوش الگوها و اصول طراحی استراتژیک در طراحی مبتنی بر دامنه آغاز خواهیم کرد:

تحلیل دامنههای کسبوکار
What Is a Business Domain? • What Is a Subdomain? • Types of Subdomains • Comparing Subdomains • Identifying Subdomain Boundaries • Domain Analysis Examples • Gigmaster • BusVNext • Who Are the Domain Experts? • Conclusion • Exercises
درحال تولید...

کشف دانش دامنه
Business Problems • Knowledge Discovery • Communication • What Is a Ubiquitous Language? • Language of the Business • Scenarios • Consistency • Model of the Business Domain • What Is a Model? • Effective Modeling • Modeling the Business Domain • Continuous Effort • Tools • Challenges • Conclusion • Exercises
درحال تولید...

مدیریت پیچیدگی دامنه
Inconsistent Models • What Is a Bounded Context? • Model Boundaries • Ubiquitous Language Refined • Scope of a Bounded Context • Bounded Contexts Versus Subdomains • Subdomains • Bounded Contexts • The Interplay Between Subdomains and Bounded Contexts • Boundaries • Physical Boundaries • Ownership Boundaries • Bounded Contexts in Real Life • Semantic Domains • Science • Buying a Refrigerator • Conclusion • Exercises
درحال تولید...

یکپارچهسازی زمینههای محدود
Cooperation • Partnership • Shared Kernel • Customer–Supplier • Conformist • Anticorruption Layer • Open-Host Service • Separate Ways • Communication Issues • Generic Subdomains • Model Differences • Context Map • Maintenance • Limitations • Conclusion • Exercises
درحال تولید...
در بخش اول، ما در مورد «چه چیزی» و «چرا» نرمافزار بحث کردیم: شما یاد گرفتید که دامنههای کسبوکار را تحلیل کنید، زیردامنهها و ارزش استراتژیک آنها را شناسایی کنید، و دانش دامنههای کسبوکار را به طراحی زمینههای محدود (Bounded Contexts)—یعنی اجزای نرمافزاری که مدلهای مختلف دامنه کسبوکار را پیادهسازی میکنند—تبدیل کنید.
در این بخش از کتاب، از استراتژی به تاکتیکها میپردازیم: «چگونگی» طراحی نرمافزار:

پیادهسازی منطق کسبوکار ساده
Transaction Script • Implementation • It’s Not That Easy! • When to Use Transaction Script • Active Record • Implementation • When to Use Active Record • Be Pragmatic • Conclusion • Exercises
درحال تولید...

پرداختن به منطق کسبوکار پیچیده
History • Domain Model • Implementation • Building Blocks • Managing Complexity • Conclusion • Exercises
درحال تولید...

مدلسازی بعد زمان
Event Sourcing • Search • Analysis • Source of Truth • Event Store • Event-Sourced Domain Model • Advantages • Disadvantages • Frequently Asked Questions • Performance • Deleting Data • Why Can’t I Just…? • Conclusion • Exercises
درحال تولید...

الگوهای معماری
Business Logic Versus Architectural Patterns • Layered Architecture • Presentation Layer • Business Logic Layer • Data Access Layer • Communication Between Layers • Variation • When to Use Layered Architecture • Ports & Adapters • Terminology • Dependency Inversion Principle • Integration of Infrastructural Components • Variants • When to Use Ports & Adapters • Command-Query Responsibility Segregation • Polyglot Modeling • Implementation • Projecting Read Models • Challenges • Model Segregation • When to Use CQRS • Scope • Conclusion • Exercises
درحال تولید...

الگوهای ارتباطی
Model Translation • Stateless Model Translation • Stateful Model Translation • Integrating Aggregates • Outbox • Saga • Process Manager • Conclusion • Exercises
درحال تولید...
در بخشهای اول و دوم، ابزارهای طراحی مبتنی بر دامنه را برای اتخاذ تصمیمات طراحی استراتژیک و تاکتیکی مورد بحث قرار دادیم. در این بخش از کتاب، از تئوری به عمل میپردازیم. شما یاد میگیرید که طراحی مبتنی بر دامنه را در پروژههای واقعی به کار ببرید.

ابتکارات طراحی
Heuristic • Bounded Contexts • Business Logic Implementation Patterns • Architectural Patterns • Testing Strategy • Testing Pyramid • Testing Diamond • Reversed Testing Pyramid • Tactical Design Decision Tree • Conclusion • Exercises
درحال تولید...

تکامل تصمیمات طراحی
Changes in Domains • Core to Generic • Generic to Core • Supporting to Generic • Supporting to Core • Core to Supporting • Generic to Supporting • Strategic Design Concerns • Tactical Design Concerns • Transaction Script to Active Record • Active Record to Domain Model • Domain Model to Event-Sourced Domain Model • Generating Past Transitions • Modeling Migration Events • Organizational Changes • Partnership to Customer–Supplier • Customer–Supplier to Separate Ways • Domain Knowledge • Growth • Subdomains • Bounded Contexts • Aggregates • Conclusion • Exercises
درحال تولید...

ایونتاستورمینگ
What Is EventStorming? • Who Should Participate in EventStorming? • What Do You Need for EventStorming? • The EventStorming Process • Step 1: Unstructured Exploration • Step 2: Timelines • Step 3: Pain Points • Step 4: Pivotal Events • Step 5: Commands • Step 6: Policies • Step 7: Read Models • Step 8: External Systems • Step 9: Aggregates • Step 10: Bounded Contexts • Variants • When to Use EventStorming • Facilitation Tips • Watch the Dynamics • Remote EventStorming • Conclusion • Exercises
درحال تولید...

طراحی مبتنی بر دامنه در دنیای واقعی
Strategic Analysis • Understand the Business Domain • Explore the Current Design • Modernization Strategy • Strategic Modernization • Tactical Modernization • Cultivate a Ubiquitous Language • Pragmatic Domain-Driven Design • Selling Domain-Driven Design • Undercover Domain-Driven Design • Conclusion • Exercises
درحال تولید...
تاکنون در این کتاب یاد گرفتهاید که چگونه از طراحی مبتنی بر دامنه (Domain-Driven Design) برای طراحی راهحلهای نرمافزاری مطابق با استراتژی کسبوکار و نیازهای یک سازمان استفاده کنید. دیدیم که چگونه ابزارها و شیوههای DDD را برای درک دامنه کسبوکار، طراحی مرزهای اجزای سیستم و پیادهسازی منطق کسبوکار به کار ببریم.
طراحی مبتنی بر دامنه بخش زیادی از چرخه عمر توسعه نرمافزار را پوشش میدهد، اما نمیتواند تمام مهندسی نرمافزار را در بر گیرد. سایر متدولوژیها و ابزارها نقشهای خود را دارند. در بخش چهارم، DDD را در رابطه با سایر متدولوژیها و الگوها مورد بحث قرار میدهیم:

مایکروسرویسها
What Is a Service? • What Is a Microservice? • Method as a Service: Perfect Microservices? • Design Goal • System Complexity • Microservices as Deep Services • Microservices as Deep Modules • Domain-Driven Design and Microservices’ Boundaries • Bounded Contexts • Aggregates • Subdomains • Compressing Microservices’ Public Interfaces • Open-Host Service • Anticorruption Layer • Conclusion • Exercises
درحال تولید...

معماری رویدادمحور
Event-Driven Architecture • Events • Events, Commands, and Messages • Structure • Types of Events • Designing Event-Driven Integration • Distributed Big Ball of Mud • Temporal Coupling • Functional Coupling • Implementation Coupling • Refactoring the Event-Driven Integration • Event-Driven Design Heuristics • Conclusion • Exercises
درحال تولید...

مش داده
Analytical Data Model Versus Transactional Data Model • Fact Table • Dimension Table • Analytical Models • Analytical Data Management Platforms • Data Warehouse • Data Lake • Challenges of Data Warehouse and Data Lake Architectures • Data Mesh • Decompose Data Around Domains • Data as a Product • Enable Autonomy • Build an Ecosystem • Combining Data Mesh and Domain-Driven Design • Conclusion • Exercises
درحال تولید...
16 فصل در حال تولید
مدت زمان خوانش
8:32
نوع کتاب
اشتراکی
شرکت کنندگان
0 نفر
تولید کتاب
۳۱ شهریور ۱۴۰۵