رای ساخت یک نرم افزار تجاری نباید به هر روشی و هر ترتیبی که شده برنامه را صرفا برای اجرا شدن پیاده سازی کرد چون ما به عنوان تولید کننده آن لازم داریم که گذشت زمان به روزرسانی های متعددی داشته باشیم و باید برنامه را برای سالها توسعه دهیم از این رو سبک کد نویسی Domain Driven Design (DDD) که به اختصار DDD هم شناخته میشود را در این مقاله میخواهم معرفی کنم.’
اصولا ساختارها در همه زبانها قابل اجرا هستند مثل PHP , JAVA و همه زبان ها . اما چرا باید از اصول خاصی تبعیت کنیم؟ همانطور که در بالا گفتم ما نیاز به این داریم که برنامه خودمان را به مرور آپدیت و توسعه دهیم و لذا ساختار مند بودن پروژه امری حیاتی است. در ساختارها ما به نحوه چیدمان CLASS ها بسیار توجه میکنیم و برنامه را بر اساس اصول SOLID هم پیاده سازی میکنیم. شرط به کارگیری توابع را انواع جاهای مختلف در نظر میگیریم و هر کلاس دقیقا یک کار مشخص را انجام میدهد را هم باید داشته باشیم. حتی در چیدمان فایل ها و پوشه ها هم باید توجه داشته باشیم اینها بخشی از DDD هستند. در واقع Domain Driven Design (DDD) کسب و کار و فناوری اطلاعات را نزدیکتر میکند و توسعه نرمافزار را حول داشتن بینش معتبر در مورد فرآیندهای خودکار متمرکز میکند.
کمی بیشتر با یک مثال آشنا شوید : به بیمارستان حیوانات فکر کنید. نمونههایی از کارشناسان حوزه کسبوکار در این مورد، برای مثال، دامپزشک یا دستیار هستند. آنها می توانند اطلاعات عملی زیادی به شما بدهند، قرار ملاقات ها چگونه برنامه ریزی می شوند؟ یا مشتریان چگونه برای واکسیناسیون سالانه حیوان خانگی خود دعوت می شوند؟ نمای کلی درمان با هزینه های مرتبط با آن چگونه است؟ سپس کارشناسان حوزه IT می توانند جنبه فنی را ترسیم کنند. چه سیستم هایی در حال حاضر وجود دارند؟ و مشتریان چگونه وارد می شوند؟ این یک راه عالی برای ایجاد یک نمای کلی مشترک است.
“یک چرخ دنده خاص فقط زمانی خوب کار می کند که از قبل بدانید بقیه دستگاه چگونه کار می کند. همین امر در مورد توسعه نرم افزار نیز صدق می کند.”
جلسه(های) Big Picture (جلسات تحلیل و بررسی نیازمندی ها) متخصصان حوزه کسب و کار و فناوری اطلاعات را گرد هم می آورد و یک چشم انداز را به آنها ارائه می دهد، اما اغلب شاهد بروز بینش های جدید نیز هستیم. یک مثال از یک مسئله رایج در تجارت، ادغام بین سیستم مدیریت اطلاعات محصول (PIM) و فروشگاه اینترنتی است. یک سیستم PIM خوب اطلاعات محصول بدون خطا، ثابت و به روز را در فروشگاه شما تضمین می کند. سپس باید با فرآیندهای مربوط به مدیریت PIM، مدیریت فروشگاه اینترنتی و غنی سازی داده ها سر و کار داشته باشید. داده های PIM نیز باید در فروشگاه منتشر شود. توافقات روشن در مورد اینکه کدام سیستم مسئول چه موضوعی مهم است. به لطف جلسه تصویر بزرگ و گفتگو با همه کارشناسان حوزه درگیر، تنگناها شناسایی می شوند و درک روشنی از فرآیندها ایجاد می شود. نرم افزار بهتر با واقعیت و نیازهای واقعی کاربران واقعی مطابقت دارد.
آنچه Domain Driven Design ارائه می دهد
چگونه یک جلسه تصویر بزرگ در Domain Driven Design ارزشی را برای توسعه نرم افزار ارائه می دهد؟ از نقش ما به عنوان یک شریک دیجیتال، در iO به این صورت به این موضوع نگاه می کنیم:
تجربه مشتری شماره 1: با مدل سازی نرم افزار در اطراف دامنه ها، کاربر در اولویت قرار می گیرد و می توانید سفرهای دیجیتالی سیال ایجاد کنید.
زمان عرضه سریعتر به بازار و کارایی هزینه بهتر: در طول توسعه همیشه با مسائل شناخته شده و پیش بینی نشده مواجه می شوید. هر چه دیرتر مشکلات را شناسایی کنید، هزینه درمان آن بیشتر است. با استفاده از DDD برای گفتگو با کارشناسان حوزه کسب و کار و فناوری اطلاعات در مورد خواسته ها، الزامات، فرآیندها و سفرهای آنها، می توانید حیاتی ترین فرآیندها را برای شرکت در مراحل اولیه شناسایی کنید. با توجه بیشتر به این امر در فرآیند توسعه، توسعه می تواند سریعتر و مقرون به صرفه تر باشد.
درک مشترک: با ایجاد یک زبان واضح که توسط همه متخصصان حوزه استفاده می شود، آنها به گفتگو تبدیل می شوند و می توانند نقاط شروع و علایق یکدیگر را بهتر درک کنند. این میتواند بسیاری از پیچیدگیهای یک پروژه را حذف و ابهام کند.
راه حل های مقیاس پذیر: با بحث در مورد اهداف تجاری با هم، رویدادها و کمپین های احتمالی را می توان از قبل با جزئیات برنامه ریزی کرد. برای مثال، سیستمهایی را میتوان طوری طراحی کرد که بتوانند با اوج بار با کمپینهای Sinterklaas و کریسمس کنار بیایند.
پل بین کسب و کار و فناوری اطلاعات
با طراحی دامنه محور یا DDD ، با تمرکز بر ارزش افزوده، شکاف بین تجارت و فناوری اطلاعات را پر می کنیم. نقشه برداری دقیق از سفرها و فرآیندها از قبل و ایجاد تعاریف بدون ابهام در مورد آنها یک مفهوم بسیار قدرتمند است.
با این کار، تمرکز توسعه برنامه از تمرکز بر یک موضوع فنی کاملاً تعیینشده، به توسعه قابلیتها با ارزش افزوده لازم برای یک مدل تجاری تغییر میکند. این امر DDD را برای چالشهای دیجیتال پیچیدهتر، مانند توسعه راهحلهای سفارشیسازی شده برای پلتفرمها یا گسترش نرمافزار استاندارد، ایدهآل میسازد. این اغلب شامل حوزه های مختلف در سراسر زنجیره می شود، با مهمترین مزیت این است که فرآیندهای توسعه می توانند کارآمدتر اجرا شوند (هزینه).