در این بخش می خواهیم به طور خلاصه به بررسی طراحی دامنه محور یا همان Domain-driven design بپردازیم. DDD در واقع یک رویکرد توسعه نرم افزار است که شامل اصول و قواعدی به منظور طراحی سیستم شی می باشد. نکته ای که وجود دارد آن است که بین واقعیت و اهداف تجاری یک کسب و کار با کد مربوط به اجرا و پیاده سازی برنامه کاربردی مربوطه فاصله وجود دارد و DDD در تلاش است با درک پیچیدگی های منطق تجاری به عنوان واسطی بین آن و کدی که به منظور پیاده سازی سیستم مد نظر به کار برده شده است، عمل کند.
مشابه هر مفهوم دیگر، طراحی دامنه محور نیز مزایا و معایبی دارد که در ادامه به آن ها می پردازیم.
مزایای طراحی دامنه محور
• ارتباط ساده تر: DDD دارای یک زبان مشترک (Ubiquitous Language) است که به کمک آن ارتباط بین متخصصان حوزه کاری و توسعه دهندگان ساده تر می شود. در این زبان مشترک به جای استفاده از اصطلاحات پیچیده فنی از کلمات ساده و روان با تعریف مشخص شده استفاده می گردد.
• انعطاف پذیری بیشتر: از آنجایی که DDD شی گرا است، همه چیز در مورد دامنه یا حوزه کاری مربوطه و شی است. به این ترتیب، کل سیستم را می توان به طور منظم اصلاح و بهبود بخشید.
• دامنه مهم تر از UI/UX است: دامنه یا حوزه کاری اصل موضوع است و برنامه های کاربردی متناسب با حوزه کاری ساخته می شوند. در DDD هم تمرکز بر دامنه است و اینکه محصول نهایی دقیقا کاربرانی را مد نظر قرار دهد که مستقیما به دامنه متصل هستند.
معایب طراحی دامنه محور
• دانش عمیق دامنه مورد نیاز است: با توجه به اینکه معمولا تیم های توسعه دانش خیلی تخصصی در زمینه حوزه کاری کسب وکار ندارند، بنابراین لازم است حداقل یک متخصص دامنه در تیم توسعه باشد به طوریکه ویژگی های دقیق حوزه موضوع اصلی برنامه را درک و تفسیر نماید.
• شامل تمرین های تکراری: طراحی دامنه محور شامل بسیاری از شیوه های تکرار است و یک سری افراد معتقد هستند که این خود یک مزیت است. DDD تشویق به استفاده از یکپارچه سازی مداوم برای ساخت برنامه های کاربردی قوی می کند که به این ترتیب بتوانند در صورت لزوم خود را تطبیق دهند. همه سازمان ها با چنین تکرارهایی راحت نیستند مخصوصا در صورتی که از مدلهای رشد کمتر انعطافپذیر، مانند مدل آبشار در گذشته استفاده می کردند.
• ممکن است برای پروژه های بسیار فنی بهترین عملکرد را نداشته باشد: در واقع می توان گفت طراحی دامنه محور ممکن است بهترین راه حل برای برنامه هایی با منطق کسب وکاری پیچیده باشد ولی پروژه هایی که دارای پیچیدگی های فنی بالا هستند برای کارشناسان حوزه کسب وکار چالش های زیادی ایجاد کنند، بنابراین DDD برای چنین پروژه هایی ممکن است بهترین راه حل نباشد.
نتیجه
طراحی دامنه محور یک رویکرد مهندسی نرم افزار برای حل یک مدل دامنه خاص است که با استفاده از مدل کسب وکار کدهای اجرا را به اصول کلیدی کسب و کار متصل می کند.
مراجع: