ثبت نام دوره جدید DDD و EventSourcing ...
0

چالش پانزدهم DDD Plus

جهت مشاهده‌ی چالش هفته‌ی قبل اینجا کلیک کنید.

پیش‌زمینه:

در این چالش، به دنیای پیچیده مدیریت پروژه‌ها قدم می‌گذاریم. در یک سیستم مدیریت پروژه، اجزای مختلفی مانند پروژه، وظیفه، تیم، کاربر، و منابع وجود دارد. هر کدام از این اجزا می‌توانند به صورت جداگانه مدل‌سازی شوند، اما تعیین مرزهای Aggregate‌ها در این سیستم می‌تواند چالش‌برانگیز باشد، به خصوص زمانی که پروژه‌ها پیچیده و دارای وابستگی‌های متعدد باشند.

سناریو:

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

صورت مسئله:

با توجه به سناریو بالا به سوالات زیر پاسخ دهید:

  • Aggregate پروژه: آیا پروژه یک Aggregate است؟ اگر بله، مرزهای آن کجا قرار می‌گیرد؟ آیا وظایف، تیم، و منابع بخشی از این Aggregate هستند یا Aggregate‌های جداگانه‌ای هستند؟
  • Aggregate وظیفه(Task): آیا وظیفه یک Aggregate است؟ یا یک Entity برای پروژه؟ وابستگی‌های بین وظایف چگونه مدل‌سازی می‌شوند؟
  • وظایفی که مربوط به چند پروژه هستند: چگونه وظایفی مثل برنامه‌ریزی‌های استراتژیک که مربوط به چند پروژه هستند را مدلسازی می‌کنید؟
  • وابستگی‌های بین Aggregate‌ها: چگونه وابستگی‌های بین Aggregate‌های مختلف (مثلاً بین پروژه و وظیفه، یا بین وظیفه و منابع) مدل‌سازی می‌شود؟
  • تغییرات در پروژه: چگونه تغییرات در یک پروژه (مثلاً تغییر در تاریخ تحویل، اضافه شدن یک وظیفه جدید) بر Aggregate‌های دیگر تأثیر می‌گذارد؟
  • عملکرد: چگونه می‌توانیم از نظر عملکرد، اندازه بهینه برای Aggregate‌ها را تعیین کنیم؟
  • قوانین کسب‌وکار: چه قوانین کسب‌وکاری در این سیستم وجود دارد که بر مرزهای Aggregate‌ها تأثیر می‌گذارد؟ مثلاً، آیا یک وظیفه می‌تواند توسط بیش از یک تیم انجام شود؟ آیا یک منبع می‌تواند به چندین پروژه اختصاص داده شود؟

اهداف چالش:

  • درک عمیق‌تر مفهوم Aggregate در سیستم‌های پیچیده با وابستگی‌های متعدد
  • تحلیل یک سناریوی واقعی و تعیین مرزهای مناسب برای Aggregate‌ها در حوزه مدیریت پروژه
  • بررسی تأثیر اندازه و پیچیدگی Aggregate‌ها بر قابلیت نگهداری و توسعه سیستم
  • تقویت مهارت‌های مدل‌سازی دامنه در حوزه‌های با قوانین کسب‌وکار پیچیده

نکات کلیدی:

  • انسجام: آیا تمام اجزای یک Aggregate به هم وابسته هستند و یک واحد منطقی را تشکیل می‌دهند؟
  • تغییرات: آیا تغییرات معمولاً در کل Aggregate رخ می‌دهد یا در اجزای جداگانه آن؟
  • عملکرد: آیا اندازه Aggregate‌ها بر عملکرد سیستم تأثیر می‌گذارد؟
  • قوانین کسب‌وکار: آیا قوانین کسب‌وکار خاصی وجود دارد که مرزهای Aggregate‌ها را مشخص می‌کند؟
ارسال دیدگاه

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