آموزش طراحی دامنه محور تکنیکی Tactical Domain-Driven Design

در این سری آموزشی از وب سایت پرووید قصد داریم در رابطه با Tactical Domain-Driven Design صحبت کنیم. طراحی دامنه محور (Domain-Driven Design) چیست؟طراحی دامنه محور و یا Domain Driven Design یک روش توسعه نرم‌افزار است که تمرکز خود را بر روی توسعه دادن و برنامه نویسی کردن یک Domain Model قرار می‌دهد. یک Domain Model درکی کامل و جامع از فرآیندها و قوانین مربوط به یک حوزه و یا Domain را خواهد داشت. عبارت طراحی دامنه محور و یا Domain Driven Design در ابتدا در سال ۲۰۰۳ توسط آقای Eric Evans در کتاب معروف ایشان، مطرح شد. در این کتاب مجموعه‌ای از الگوهایی که در Domain Driven Design کاربرد دارند را خواهید یافت. پس از مطرح شدن مفهوم Domain Driven Design در کتاب آقای Eric Evans برنامه نویسان و مشارکت کنندگان مختلفی این مفاهیم تئوری را پیاده سازی کردند و دوره‌های آموزشی و کتاب‌های دیگری نیز در این رابطه منتشر شد. طراحی دامنه محور و یا Domain Driven Design اساساً برای سیستم‌های نرم‌افزاری پیچیده که در آن قرار است کدهای بسیار پیچیده و اغلب شلوغ پیاده سازی و سازماندهی بشوند مناسب می باشد. مفاهیم Domain Driven Design را می توان توسط زبان های برنامه نویسی شی گرا پیاده سازی کرد. مفاهیمی از قبیل Bounded Context ها و Aggregate ها و موضوعات مختلف دیگری در کتاب آقای Eric Evans منتشر شده اند که تمامی علاقه مندان به یادگیری مباحث مربوط به Domain Driven Design می بایست آن را مطالعه کنند.طراحی دامنه محور تکنیکی (Tactical Domain-Driven Design) چیست؟طراحی دامنه محور تکنیکی و یا Tactical Domain-Driven Design مجموعه ای از الگوهای طراحی و یا Des gin Pattern هایی هستند که در طراحی سیستم ها با استفاده از Domain-Driven Design مورد استفاده قرار میگیرند. حتی برای سیستم هایی که در آنها از Domain-Driven Design یا طراحی دامنه محور استفاده نکرده اید میتوانید از این الگوهای طراحی و Building Block ها استفاده کنید. در یکی از قسمت های ابتدایی سری آموزشی Domain-Driven Design از وب سایت پرووید خدمت شما عرض کردیم که منظور از کلمه Building Block اجزای تشکیل دهنده یک معماری و یا طراحی میباشد. برای مطالعه آن آموزش از بررسی اجزای تشکیل دهنده طراحی دامنه محور Domain Driven Design استفاده کنید.علاوه بر مفهوم Tactical Design، مفهوم Strategic Domain-Driven Design را نیز داریم. منظور از Strategic Domain-Driven Design مباحث مربوط به مفاهیم انتزاعی میباشد. حال آنکه Tactical Domain-Driven Design بیشتر با کد نویسی سر و کار دارد و با مفاهیمی از قبیل کلاس ها و ماژول ها کار میکند. هدف از Tactical Domain-Driven Design طراحی کردن Domain Model به نحوی است که بتواند به راحتی به کد تبدیل بشود.روند توسعه دادن Domain Model یک روند تکراری و یا اصطلاحاً Iterative میباشد که در آن ترکیبی از Strategic Design و Tactical Design را در کنار یکدیگر خواهیم داشت. به بیان ساده ابتدا کار را با Strategic Design آغاز کرده و سپس کار را با Tactical Design ادامه میدهیم. شکل گرفتن های اساسی Domain Model زمانی اتفاق می افتد که Tactical Design اعمال بشود و این به نوبه خود بر روی Strategic Design نیز تاثیر گذارده و فرایند توسعه دادن Domain Model تکرار میشود. در همین جا توصیه میکنیم که تمامی کسانی که توانایی مناسبی برای خواندن زبان انگلیسی دارند، از این کتاب ها استفاده کنند. امیدواریم که سری اول آموزش Domain-Driven Design از وب سایت پرووید را مطالعه کرده باشید تا بتوانید از مفاهیم مطرح شده در این قسمت نهایت استفاده را ببرید.مخاطبین این دوره آموزشیاین دوره آموزشی برای تمامی افرادی تنظیم شده است که می‌خواهند مباحث مربوط به Domain Driven Design را یاد بگیرند. مباحث مطرح شده در این دوره آموزشی هم می‌تواند برای آن دسته است برنامه نویسانی که هیچ اطلاعاتی در رابطه با Domain Driven Design ندارند مفید باشند و هم برای افرادی که تا حدودی با این مباحث آشنا هستند و حال می‌خواهند در یک آموزش متنی موضوعات مطرح شده در این حوزه را فرا بگیرند.منبع: وبسایت پرووید