کتاب Domain-Driven Transformation: Modernize Legacy Systems and Mitigate Risk 1st Edition (دگرگونسازی مبتنی بر دامنه: مدرنسازی سیستمهای قدیمی و کاهش ریسک – ویرایش اول) راهنمایی عملی برای سازمانهاست که قصد دارند سیستمهای قدیمی (Legacy) خود را بدون ایجاد اختلال و با کمترین ریسک، مدرنسازی کنند. نویسندگان با تکیه بر اصول Domain-Driven Design (DDD) نشان میدهند چگونه میتوان پیچیدگیهای کسبوکار را به درستی مدلسازی کرد، بخشهای حیاتی سیستم را شناسایی کرد، و با رویکردی تدریجی و ایمن، معماریهای قدیمی را به پلتفرمهای مدرن و قابل توسعه تبدیل نمود.
در ادامه مقدمهای از کتاب Domain-Driven Transformation را از زبان نویسنده شرح خواهیم داد.
مقدمهای بر کتاب Domain-Driven Transformation:
«تمام خانوادههای خوشبخت شبیه هم هستند؛ اما هر خانوادهٔ بدبخت به شیوهٔ خاص خود بدبخت است.» این اصل معروف آنا کارنینا فقط دربارهٔ خانوادهها صدق نمیکند؛ بلکه دربارهٔ تیمهای توسعهٔ نرمافزارهای قدیمی (Legacy) نیز کاملاً کاربرد دارد. هر سیستم نرمافزاری به بیماریهای متفاوتی دچار میشود و به همین دلیل هم برای درمان آنها نیاز به راهکارهای متفاوت داریم. ما در سالهای اخیر در سیستمهای قدیمی—چه مونولیت و چه میکروسرویس—و سازمانهای سازندهٔ آنها، ترکیبی از بیماریهای زیر را مشاهده کردهایم:
- سیستم قدیمی تبدیل به «گلولهای از گلولای» شده است، چون هیچکس وابستگیها را کنترل نکرده و حالا همهچیز به همهچیز متصل است (فصل ۵).
- دانش دامنه در یک مدل دامنهٔ عظیم و درهمتنیده گیر افتاده که بخشهای آن فقط تا حدی با هم سازگارند یا حتی به هم تناقض دارند (مدلهای بدون مرز در فصل ۱۲).
- کد تجاری (Business) و کد فنی با هم مخلوط شدهاند و همین باعث شده جایگزینی تکنولوژیهای منقرضشده یا اضافه کردن قابلیتهای جدید، کاری طاقتفرسا و عظیم شود (فصل ۸).
- افراد در ساختاری سازماندهی شدهاند که برای پیشرفت سریع مناسب نیست (فصل ۹).
روی جلد کتاب Domain-Driven Transformation، تصویر پروانهٔ اطلس را میبینید. درست مثل سیستمهای قدیمی این کتاب، زندگی خود را با چیزی کوچک (تخم) آغاز کرده، سپس به چیزی بزرگ و سنگین (کرم) تبدیل شده، بعد به تودهای حجیم (پیلهٔ ابریشمی) بدل شده و در نهایت به موجودی زیبا که بالهایش را میگشاید و به آیندهای امیدوارکننده پرواز میکند. شباهت دیگر این حشره با سیستمهای قدیمی، اندازهٔ آن است: پروانهٔ اطلس یکی از بزرگترین گونههای شبپره در جهان است با عرض بال ۹ تا ۱۰ اینچ.
در کتاب Domain-Driven Transformation، ما درمانهایی را که طی ۲۰ سال کار با DDD و سیستمهای قدیمی آموختهایم ارائه میکنیم؛ از جمله: ریفکتورینگها، Domain Storytelling، EventStorming، Team Topologies و شاخص بلوغ ماژولاریتی (MMI).
وقتی با این روشها روی پروژههای خود یا مشتریان کار میکنیم، تیم توسعه به آینده امیدوار میشود و انگیزهٔ آنها افزایش مییابد. هرچه فرآیند درمان پیش میرود، کاربران، مدیر پروژه و مدیران هم خوشحالتر میشوند؛ زیرا نرمافزار قدیمیِ سنگین و پرهزینه، پایدارتر و سریعتر قابل تغییر میشود و در نهایت دوباره امکان توسعهٔ قابلیتهای نوآورانه را فراهم میکند.
نکته:
هدف ما در کتاب Domain-Driven Transformation این است که به شما کمک کنیم سیستمهای نرمافزاری خود را به بخشهایی تقسیم کنید که تغییرات در آنها تا حد ممکن محلی و محدود باشد. به این ترتیب، ماژولها دوباره قابل فهم و قابل مدیریت میشوند و تیمهای کوچک و توانمند میتوانند آنها را توسعه دهند.
به همین دلیل، در این کتاب مثالهای کد زیادی خواهید یافت. سیستمهای قدیمی که ما با آنها روبهرو میشویم به زبانهای مختلف (Java، C#، PHP، C++ و…) نوشته شدهاند. ما مثالها را به رایجترین زبان، یعنی Java، نوشتهایم. مثالها آنقدر کوتاه هستند که برنامهنویسان سایر زبانها هم بتوانند بفهمند، و روشهای توضیحدادهشده مستقل از زبان برنامهنویسیاند.
برخی خوانندگان شاید کتابهای دیگر ما—Sustainable Software Architecture (۲۰۱۹) و Domain Storytelling (۲۰۲۲)—را خوانده باشند. این کتاب برای ما ترکیبی منطقی از آن دو و حاصل تجربههای روزمرهٔ ماست. خوانندگان آن دو کتاب، مثالهای دامنهای سینما و لیزینگ خودرو و نگاه معماری ما را دوباره خواهند دید. و البته چیزهای جدید زیادی هم برای کشف وجود دارد 🙂 امیدواریم از این ترکیب لذت ببرید و مشتاقانه منتظر بازخورد شما هستیم!
ساختار کتاب Domain-Driven Transformation
کتاب شامل یک مقدمه، چهار بخش و یک کاتالوگ ریفکتورینگ است.
در مقدمه (فصل ۱)، روش را روی یک سیستم نمونه اعمال میکنیم و تصویری کلی ارائه میدهیم.
بخش اول: مبانی تحول دامنهمحور
با پیچیدگی در توسعه نرمافزار (فصل ۲) شروع میشود و سپس سه موضوع بنیادین را پوشش میدهد: Domain-Driven Design (فصل ۳)، مدلسازی مشارکتی (فصل ۴) و مفاهیم معماری (فصل ۵). هر بخشی که احساس ضعف دارید باید بخوانید. فصل پایانی بخش اول نیز دربارهٔ انتخاب روش صحیح کار است (فصل ۶).
بخش دوم: تحول دامنهمحور در سطح فنی، تاکتیکی و تیمی
نشان میدهد چگونه پایههای سیستم، کد منبع و سازمان توسعه را بهبود دهید:
- تثبیت فنی سیستم قدیمی (فصل ۷ کتاب Domain-Driven Transformation)
- تقویت کد با دانش دامنه از طریق تحول تاکتیکی (فصل ۸)
- و تنظیم ساختار تیم توسعه برای مسیر تحول (فصل ۹)
بخش سوم: تحول دامنهمحور استراتژیک
رویکرد چهارمرحلهای ما برای تجزیهٔ سیستمها را شرح میدهد:
۱) کشف دوبارهٔ دامنه (فصل ۱۰)
۲) مدلسازی معماری هدف مبتنی بر دامنه (فصل ۱۱ کتاب Domain-Driven Transformation)
۳) مقایسهٔ معماری موجود و هدف (فصل ۱۲)
۴) اولویتبندی و اجرای گامهای تحول (فصل ۱۳)
بخش چهارم: جمعبندی
شامل دو فصل است: الگوهای دامنه و تأثیر آنها (فصل ۱۴) و جمعبندی نهایی کتاب و روش (فصل ۱۵).
پیوستها شامل ریفکتورینگهایی هستند که در کتاب ارجاع شدهاند و از روی کاتالوگ آنلاین استخراج شدهاند. این کاتالوگ شامل چهار دسته است:
- ریفکتورینگهای استراتژیک (پیوست B)
- ریفکتورینگهای تاکتیکی پشتیبان استراتژی (پیوست C)
- ریفکتورینگهای اجتماعی–فنی (پیوست D)
- ریفکتورینگهای تاکتیکی تقویتکنندهٔ دانش دامنه (پیوست E)
تحول با کمک هوش مصنوعی
در زمان نگارش کتاب Domain-Driven Transformation، «انقلاب هوش مصنوعی» رخ داد. مدلهای زبانی بزرگ (LLM) بسیاری از حوزهها را متحول کردند—و برنامهنویسی یکی از آنهاست. از آنجا که LLM با زبان کار میکند، و نرمافزارهای قدیمی نیز مجموعهای از زبان هستند، استفاده از LLM برای تحول آنها کاملاً منطقی است. در کتاب، در چند نقطه نشان میدهیم که چگونه هوش مصنوعی میتواند در مسیر مدرنسازی سیستمهای قدیمی کمک کند.
پیشرفتها بسیار سریعاند، و شاید هنگام خواندن این سطور با خود بگویید «آن روزها…» وقتی ببینید ما از ابزارهایی مثل GitHub Copilot و JetBrains AI Assistant و مدلهایی مثل GPT-4o، Gemini 2.0 Flash و Claude 3.7 Sonnet سخن گفتهایم—شاید مدلهای جدید مدتها پیش این کتاب را خوانده باشند!
سرفصلهای کتاب Domain-Driven Transformation:
- Foreword
- Preface
- 1. Introduction: Domain-Driven Transformation in a Nutshell
- I. Fundamentals
- 2. Mastering Complexity
- 3. Domain-Driven Design
- 4. Collaborative Modeling
- 5. Concepts of Software Architecture
- 6. How to Approach the Transformation
- II. Technical, Tactical, and Team-Organizational Domain-Driven Transformation
- 7. Technical Stabilization of Legacy Software
- 8. Strengthening the Source Code with Domain Knowledge
- 9. Improving Team Organization
- III. Strategic Domain-Driven Transformation
- 10. Step 1-Domain Rediscovery
- 11. Step 2-Modeling the Domain-Driven Target Architecture
- 12. Step 3-Alignment of Actual with Target Architecture
- 13. Step 4-Prioritization and Implementation of the Transformation Measures
- IV. Conclusion
- 14. Outlook: Domain Patterns and Their Implementation in Bounded Contexts
- 15. Summarizing Domain-Driven Transformation
- A. Overview of the Catalog of Domain-Driven Refactorings
- B. Strategic Refactorings
- C. Tactical Refactorings That Support Strategic Refactorings
- D. Sociotechnical Refactorings
- E. Tactical Refactorings That Strengthen Domain Knowledge
- Bibliography
- Index
- About the Authors
جهت دانلود کتاب Domain-Driven Transformation میتوانید پس از پرداخت، دریافت کنید.





دیدگاهها
هیچ دیدگاهی برای این محصول نوشته نشده است.