عضو کانال تلگرام ما شوید.

Domain driven design یا DDD چیست؟

Domain driven design یا DDD چیست؟
Domain driven design یا DDD چیست؟

Domain driven design  یا DDD چیست؟

طراحی دامنه محور (DDD) یک رویکرد طراحی نرم افزار است که بر مدل سازی نرم افزار برای مطابقت با یک دامنه با توجه به ورودی کارشناسان آن دامنه تمرکز دارد. از نظر برنامه نویسی شی گرا به این معنی است که ساختار و زبان کد نرم افزار (نام کلاس ها، روش های کلاس، متغیرهای کلاس) باید با دامنه تجاری مطابقت داشته باشد. به عنوان مثال، اگر نرم افزاری برنامه های وام را پردازش کند، ممکن است کلاس هایی مانند LoanApplication و Customer و روش هایی مانند AcceptOffer و Withdraw داشته باشد. DDD پیاده سازی را به یک مدل در حال تکامل متصل می کند. طراحی دامنه محور بر روی اهداف زیر پیش بینی شده است:

  • قرار دادن تمرکز اولیه پروژه بر روی حوزه اصلی و منطق دامنه
  • پایه گذاری طرح های پیچیده بر روی مدلی از دامنه
  • آغاز یک همکاری خلاقانه بین متخصصان فنی و حوزه برای اصلاح مکرر یک مدل مفهومی که به مشکلات حوزه خاصی می‌پردازد.

انتقادات از طراحی دامنه محور استدلال می کند که توسعه دهندگان معمولاً باید مقدار زیادی از انزوا و کپسوله سازی را برای حفظ مدل به عنوان یک ساختار خالص و مفید اجرا کنند. در حالی که طراحی دامنه محور مزایایی مانند قابلیت نگهداری را فراهم می کند، مایکروسافت آن را فقط برای دامنه های پیچیده ای که مدل مزایای واضحی در فرمول بندی درک مشترک از دامنه ارائه می دهد، توصیه می کند. این اصطلاح توسط اریک ایوانز در کتاب خود با همین عنوان که در سال 2003 منتشر شد، ابداع شد.

 

Domain driven design یا DDD چیست؟

بررسی اجمالی طراحی دامنه محور

طراحی دامنه محور تعدادی از مفاهیم و شیوه های سطح بالا را بیان می کند. اهمیت اولیه دامنه است، حوزه موضوعی که کاربر یک برنامه را برای آن اعمال می کند، دامنه نرم افزار است. دامنه یک نرم افزار بر زمینه آن حاکم است، محیطی که در آن یک کلمه یا عبارت ظاهر می شود که معنای آن را تعیین می کند. از این رو، توسعه‌دهندگان یک مدل دامنه می‌سازند: سیستمی از انتزاع‌ها که جنبه‌های انتخابی یک دامنه را توصیف می‌کند و می‌تواند برای حل مشکلات مربوط به آن دامنه استفاده شود. هدف این جنبه‌های طراحی دامنه محور، تقویت زبان فراگیر است، به این معنی که مدل دامنه باید زبان مشترکی را تشکیل دهد که متخصصان دامنه برای توصیف نیازمندی‌های سیستم، کاربران تجاری، حامیان مالی و توسعه‌دهندگان مشترک هستند. در طراحی دامنه محور، لایه دامنه یکی از لایه های رایج در معماری چند لایه شی گرا است.

 

انواع مدل های قابل تشخیص طراحی دامنه محور

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

مدل ها را می توان توسط یک موجود ریشه به یکدیگر متصل کرد تا به یک مجموعه تبدیل شود. اشیاء خارج از مجموع اجازه دارند ارجاعاتی به ریشه داشته باشند اما به هیچ شیء دیگری از مجموع نمی توانند ارجاع دهند. ریشه کل، سازگاری تغییرات در کل را بررسی می کند. برای مثال، رانندگان مجبور نیستند هر چرخ خودرو را به صورت جداگانه کنترل کنند: آنها به سادگی ماشین را می‌رانند. در این زمینه، خودرو مجموعه ای از چندین شی دیگر (موتور، ترمز، چراغ های جلو و غیره) است.

 

کار با مدل ها در طراحی دامنه محور

در طراحی دامنه محور، ایجاد یک شی اغلب از خود شی جدا می شود. به عنوان مثال، یک مخزن، یک شی با روش هایی برای بازیابی اشیاء دامنه از یک فروشگاه داده (مانند پایگاه داده) است. به طور مشابه، یک کارخانه یک شی با روش هایی برای ایجاد مستقیم اشیاء دامنه است. هنگامی که بخشی از عملکرد یک برنامه از نظر مفهومی به هیچ شیئی تعلق ندارد، معمولاً به عنوان یک سرویس بیان می شود.

 

طراحی دامنه محور و ارتباط با ایده های دیگر

اگرچه طراحی دامنه محور ذاتاً با رویکردهای شی گرا مرتبط نیست، اما در عمل از مزایای چنین تکنیک هایی بهره می برد. اینها شامل موجودیت‌ها یا ریشه‌های مجموع به‌عنوان گیرنده‌های فراخوانی دستورات/روش، کپسوله‌سازی حالت در ریشه‌های اصلی و در سطح معماری بالاتر، زمینه‌های محدود می‌شود. در نتیجه، طراحی دامنه محور اغلب با اشیاء ساده قدیمی جاوا و اشیاء ساده قدیمی CLR مرتبط است. در حالی که جزئیات پیاده‌سازی فنی، به ترتیب مختص جاوا و دات‌نت فریم‌ورک است، این عبارات منعکس‌کننده دیدگاه رو به رشدی هستند مبنی بر اینکه اشیاء دامنه باید صرفاً با رفتار تجاری دامنه تعریف شوند، نه با چارچوب فناوری خاص‌تر.

به طور مشابه، الگوی اشیاء برهنه معتقد است که رابط کاربری به سادگی می تواند بازتابی از یک مدل دامنه به اندازه کافی خوب باشد. نیاز به رابط کاربری که بازتاب مستقیم مدل دامنه باشد، طراحی یک مدل دامنه بهتر را مجبور خواهد کرد. طراحی دامنه محور بر سایر رویکردهای توسعه نرم افزار تأثیر گذاشته است. برای مثال، مدل‌سازی دامنه خاص، طراحی مبتنی بر دامنه است که با زبان‌های دامنه خاص اعمال می‌شود. طراحی دامنه محور به طور خاص به استفاده از یک زبان دامنه خاص نیاز ندارد، اگرچه می تواند برای کمک به تعریف یک زبان خاص دامنه و پشتیبانی از مدل سازی چندگانه دامنه خاص استفاده شود. به نوبه خود، برنامه‌نویسی جنبه‌محور، فاکتورگیری نگرانی‌های فنی (مانند امنیت، مدیریت تراکنش، ورود به سیستم) را از یک مدل دامنه آسان می‌کند و به آن‌ها اجازه می‌دهد صرفاً روی منطق تجاری تمرکز کنند.

 

مهندسی و معماری مدل محور

در حالی که طراحی دامنه محور با مهندسی و معماری مدل محور سازگار است، هدف پشت این دو مفهوم متفاوت است. معماری مدل محور بیشتر به ترجمه یک مدل به کد برای پلتفرم های فناوری مختلف می پردازد تا تعریف مدل های دامنه بهتر. با این حال، تکنیک‌های ارائه‌شده توسط مهندسی مدل محور (برای مدل‌سازی دامنه‌ها، ایجاد زبان‌های خاص دامنه برای تسهیل ارتباط بین کارشناسان و توسعه‌دهندگان دامنه،…) طراحی مبتنی بر دامنه را در عمل تسهیل می‌کند و به متخصصان کمک می‌کند تا از آنها بهره بیشتری ببرند. مدل ها. به لطف تبدیل مدل مهندسی مدل محور و تکنیک های تولید کد، مدل دامنه می تواند برای تولید سیستم نرم افزاری واقعی که آن را مدیریت می کند استفاده شود.

برای امتیاز به این نوشته کلیک کنید!
[کل: 1 میانگین: 5]