در چالش این هفتهی DDD Plus که شمارهی دوم این سری از چالشها است، سراغ مدلسازی در DDD خواهیم رفت. در این شماره یک سناریو پیچیده و جالب را زیر ذرهبین خواهم برد.
⬅جهت مشاهدهی چالش هفتهی قبل اینجا کلیک کنید.
پیشزمینه:
فرض کنید به عنوان توسعهدهنده بر روی یک سیستم ERP مشغول به کار هستید. مفهوم “Product” یک مفهوم پایهای و بسیار مهم در سیستمهای ERP محسوب میشود که بکبن بسیاری از ماژولهای یک سیستمERP را شامل میشود. به عنوان مثال در تمامی ماژولهای فروش، انبار، تامین کالا، تولید، توزین و… مفهوم product نقش بسیار پررنگی بازی میکند. به عنوان مثال سیستم فروش بر پایه فروش محصول سوار شده است. ماژول انبار بر پایه مدیریت موجودی product بنا نهاده شده است. و یا سیستم تامین جهت مدیریت سفارشات و خرید product از تامین کنندگان توسعه داده میشود.
در حقیقت ارتباط این ماژولها بر اساس تمرکز آنها بر مفهوم product میباشد. از همین رو هم این ماژولها از طریق همین مفهوم product با یکدیگر صحبت و تعامل میکنند. ماژول فروش به ماژول انبار برای داشتن اطلاعات دقیق و آنلاین از موجودی کالاها نیازمند است. از طرف دیگر ماژول تامین سطح موجودی کالا در انبار را مانیتور کرده و سعی میکند با ثبت سفارش و تامین به موقع هر کالا، موجودی آن کالا در انبار را همیشه در سطح معینی نگه دارد.
سناریو:
فرض کنید مالک محصول با داستان کاربری زیر سراغتان میآید:
As a Sales Manager, I want the ERP system to provide a comprehensive and streamlined product modeling capability across the Sales, Inventory, and Purchase Order modules, ensuring accurate stock management, pricing consistency, and efficient procurement processes.
صورت مسئله:
- با توجه به سناریو مطرح شده در بالا، product را مدل کنید؟
- مفهوم product در ماژولهای بالا چه ارتباطی با یکدیگر دارند؟
- Single Source of Truth در این سناریو چگونه اعمال میشود؟
- تعریف product در هر کدام از ماژولهای فروش، انبار و خزانه چیست؟
- شرایط پذیرش مستتر در داستان کاربری شامل ensuring accurate stock management و pricing consistency را در این سناریو هندل کنید؟ راهحل خودتون رو تشریح کنید.
خطر اسپویل:
چالش هفتهی بعد، بخش دیگری از سناریوی بالا را زیر زیر ذرهبین قرار خواهد داد!😉