Amir Mokarchi
Amir Mokarchi
خواندن ۲ دقیقه·۴ ماه پیش

ملاحظات طراحی در Domain Model

مدل، همیشه یک نمایش ساده‌شده از واقعیت است که بسته به هدفی که داریم، سطح جزئیاتش متفاوت می‌شود. مثلا یه ماکت ساختمان را در نظر بگیرید. این ماکت نشان میدهد که ساختمان چقدر فضا اشغال می‌کند، چند طبقه دارد، ولی نشان نمیدهد که سیم‌کشی داخلی یا سیستم تهویه چطور کار می‌کند.

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

مدل دامنه‌ای باید بخش‌هایی از دامنه را که برای حل مشکل مهم هستن نمایش بدهد. اضافه کردن اطلاعات اضافی باعث پیچیدگی بی‌مورد و افزایش هزینه‌ی توسعه می‌شود.

مدل دامنه‌ای فقط باید به مسئله‌ای که قرار است حل شود مربوط باشد، نه چیزهای جانبی.

چند تفاوت مهم بین مدل دامنه‌ای و مدل داده‌ای

  • مدل دامنه‌ای (Domain Model) بر روی رفتارها و قوانین کسب‌وکار تمرکز دارد در حالی که مدل داده‌ای (Data Model) بر روی ذخیره‌سازی داده‌ها تمرکز دارد.
  • مدل دامنه‌ای (Domain Model) تعاملات بین مفاهیم و فرآیندها رو نمایش می‌دهد در حالی که مدل داده‌ای (Data Model) ارتباط بین جداول و فیلدهای دیتابیس را نمایش می‌دهد.
  • مدل دامنه‌ای (Domain Model) برای ارتباط بین تیم‌ها استفاده می‌شود در حالی که مدل داده‌ای (Data Model) برای طراحی دیتابیس استفاده می‌شود.
  • مدل دامنه‌ای (Domain Model) با EventStorming ساخته می‌شود اما مدل داده‌ای (Data Model) با ERD (Entity-Relationship Diagram) ساخته می‌شود.

طراحی مدل دامنه‌ای یک فرآیند تکاملی است. ما نمی‌توانیم از ابتدا یک مدل بی‌نقص داشته باشیم، ولی یک سری اصول هست که به ما کمک میکنه:

۱. از EventStorming برای کشف رویدادهای کلیدی استفاده کنید

  • قبل از هر چیز، باید Big Picture EventStorming رو اجرا کنیم تا درک بهتری از دامنه پیدا کنیم.
  • سپس باید ، Design-Level EventStorming را انجام دهیم تا روی جزئیات بیشتر تمرکز کنیم.

۲. مدل را ساده ولی دقیق طراحی کنید

  • مفاهیم پیچیده رو شکسته و به مدل‌های کوچک‌تر تقسیم کنید.
  • از Ubiquitous Language استفاده کنید که همه افراد تیم متوجه مدل شوند.

۳. مدل رو با استفاده از Aggregates، Entities و Value Objects بسازید

۴. رفتارها و فرآیندها را در مدل نمایش بدهید

  • تمرکز فقط روی داده‌ها نباشد! باید مشخص کنیم که هر بخش از سیستم چطور عمل می‌کند و چه قوانینی دارد.

۵. مدل را تست کنید و اصلاح کنید

  • بعد از طراحی اولیه، باید مدل را در عمل تست کنیم و مشکلاتش رو پیدا کنیم.
  • مهم‌ترین چیز این است که مدل، نیازهای واقعی کسب‌وکار را پوشش دهد.

چطور از EventStorming به طراحی مدل برسیم؟

  • با استفاده از Big Picture EventStorming میتوان فرآیندهای اصلی را پیدا کرد.
  • رویدادهای دامنه‌ای(Domain Events) را تحلیل کنید تا رفتارها و قوانین مشخص شوند.
  • موجودیت‌ها (Entities)، مقدارها(Value Objects) و Aggregates ر تعریف کنید.
  • مدل را ابتدا روی کاغذ یا Whiteboard بررسی کنید و سپس در کد پیاده‌سازی کنید.
  • تمرکز فقط روی داده‌ها نباشد، بلکه رفتارهای مهم دامنه‌ای را هم در مدل لحاظ کنید.
domain model
A software engineer
شاید از این پست‌ها خوشتان بیاید