بررسی Domain Driven Design و رسالت آن در توسعه نرم افزار #2 را در این قسمت از وبسایت آموزش برنامه نویسی پرووید دانلود کنید.

بررسی Domain Driven Design و رسالت آن در توسعه نرم افزار #2

فرض کنید از شما به عنوان برنامه نویس خواسته اند که نرم افزاری را تولید کنید که جایگزین نرم افزار دیگری خواهد شد. نرم افزاری که امکان نگهداری آن وجود ندارد. در واقع شما فاز آخر از سیکل CRAP را انجام می دهید یعنی جایگزینی. در چنین شرایطی احتمال اینکه شما نیز نرم افزاری را تولید کنید که نهایتاً کنار گذاشته شود و امکان نگهداری آن وجود نداشته باشد بسیار بالاست.

تکامل توسعه نرم افزار شکستن سیکل CRAP

پاسخ به این پرسش که سیکل CRAP را چگونه بشکنیم یک موضوع بسیار مهم در روند تکامل نرم افزار و استراتژی‌های طراحی آن است. ما پیش از این در رابطه با نرم افزارهای Table-Driven صحبت کردیم. در این نرم افزارها Logic مربوط به نرم افزار از Entity هایی که درون یک Table هستند استخراج و مشتق می‌شود. در یک نرم افزار من از روش Table-Driven به شدت استفاده کردم و ناگهان متوجه شدم که من هرگز Complexity نرم افزار را از بین نبرده ام. تنها کاری که کرده بودم این بود که Complexity نرم افزار را به Table های انتقال داده بودم و از آنجایی که این نرم افزار پیچیدگی بالایی برای نگهداری داشت بعد از مدتی کنار گذاشته شد و جایگزین شد. در فاز جایگزینی تصمیم گرفتم از نرم افزارهای قابل پیکربندی یا Configurable استفاده کنم. نرم افزار های Configurable نسل بعدی نرم افزار های SAP هستند که پیاده سازی و پیکربندی آنها برای یک کمپانی خاص می تواند دو تا سه سال طول بکشد. واضح است که این روش نیز روش مناسبی برای شکستن سیکل CRAP نبود. روش دیگری که به منظور شکستن سیکل CRAP استفاده می‌شود اصول SOLID در نرم افزار های شی گرا است. اولاً بر اساس اصول SOLID ما ملزم هستیم که Functionality جدید باید توسط کد جدید هندل بشود. به عبارت دیگر برای پیاده‌سازی Functionality جدید ما از نوشتن Patch بر روی کدهایی که موجود هستند استفاده نمی‌کنیم. دوما تغییرات بر روی کدی که از قبل موجود است باید از بقیه نرم افزار Isolated یا تفکیک شده باشد. متأسفانه اعمال اصول SOLID بر روی نرم افزار های بزرگ منجر به افزایش شدید تعداد Object می شود. این افزایش شدید باعث می شود که برنامه نویسانی که جدیدا قصد دارند بر روی پروژه کار کنند دچار ابهام و سردرگمی شوند. اگر بخواهم به طور خلاصه بگویم اغلب استفاده از اصول SOLID پیچیدگی نرم افزار را از بین نمی برد بلکه آن را از Object ها به Architecture منتقل میکند.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *