طراحی دامنه محور چیست ؟

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

چه کسی از فعالیت های بانک ، اطلاعات کافی دارد؟ معمار نرم افزار؟
خیر. معمار نرم افزار از بانک برای نگهداری از پول هایش استفاده کرده است.
برداشت یک معمار نرم افزار از بانک : امن و در دسترس در مواقع نیاز.

تحلیل گر چطور؟
خیر. یک تحلیلگر می تواند یک موضوع خاص را تجزیه و تحلیل کند، منتها در صورتی که تمامی موارد مورد نیاز را به وی ارائه نماییم.

کد نویس چطور؟
این یکی را فراموش کنید.

پس چه کسی اطلاعات کافی دارد؟ بانکدار. کارکنان بانک با سیستم کار بانک بطور کامل آشنا می باشند. کارکنان و کارشناسان امور بانکی با جزئیات، قوانین و روش های کاری بانک آشنا می باشند به باید ها و نباید ها آگاه می باشند و ترتیب انجام کارها را می دانند. این همان دامنه می باشد.

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

خوب بنابراین ما با دامنه شروع می کنیم و عنوان اینکار طراحی دامنه محور (Domain Driving Design) می باشد. DDD می گوید تمرکز روی دامنه است نه تکتولوژی ، می بایست در مورد فعالیتی که برای آن می خواهیم نرم افزار تولید کنیم یک دید درست داشته باشیم.

DDD رویکردی برای تولید و توسعه ی نرم افزارهای بزرگ با فرآیندها و قوانین زیاد، پیچیده و در حال تغییر می باشد. هسته ی اصلی DDD مجموعه ای از مفاهیم و تکنیک هاست که برای تحلیل دامنه و ساخت یک مدل از روی آن به کار برده می شود. تمرکز و توجه اصلی این رویکرد بر روی توسعه ی این مدل می باشد.

درباره‌ رضا رحیمی

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

جوابی بنویسید

ایمیل شما نشر نخواهد شدخانه های ضروری نشانه گذاری شده است. *

*