محمود سواریان
محمود سواریان
خواندن ۴ دقیقه·۵ ماه پیش

Domain storytelling راهکار ارتباط و تعامل موثر در DDD

زمانی که ما شروع به پیاده سازی یک سیستم نرم افزاری میکنیم به این معنی است که احتمالا فضای مسئله (Problem Space) را درک کرده ایم و به طراحی یک مدل برای فضای راه حل (Solution Space) مشغول هستیم.

اغلب چنین اتفاقی نمی افتد و معمولا حتی در زمانی که به عنوان یک مهندس نرم افزار در حال طراحی و پیاده سازی سیستم هستیم باز هم درک درستی از نیاز و مسئله یا شیوه انجام کار در فضای کسب و کار نداریم که معمولا ناشی از موارد زیر می باشد :

  • سوتفاهم ها و ناهمانگی های موجود بین تیم ها و افراد مرتبط شامل کارشناسان دامنه (Business/Domain Experts، Product Managers/Owners) و تیم توسعه (Software Engineers/Developers)
  • نبود مستندات یا توضیحات کافی از نیازمندی های سیستم
  • عدم شفافیت در مسئله و متعاقبا عدم شناسایی دقیق روال های فعلی کسب و کار
  • ضعف در زبان مشترک
  • و ...

همه موارد فوق نهایتا منجر به درک متفاوت و اشتباه از فضای کسب و کار و ارائه یک راه حل اشتباه و در نهایت یک نرم افزار ناکارآمد خواهد شد.

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


It’s developer’s (mis)understanding, not expert knowledge that gets released into production.
Alberto Brandolini
Event Storming Author

کشف دامنه (Domain Discovery)

کشف دامنه یا همان Domain Discovery به فرآیند شناسایی و درک نسبتا عمیق دامنه کسب و کار، شناسایی مفاهیم کلیدی در روال ها، رویدادها و همچنین روابط بین آنها می پردازد.

ابزارها و تکنیک های مختلفی برای این کار تا به امروز معرفی شده اند شامل :

  • Event Storming
  • Context Mapping
  • Domain Storytelling
  • Service Blueprinting
  • Impact Mapping
  • ... .

داستان سرایی دامنه (Domain Storytelling)

در تکنیک Domain Storytelling کارشناسان دامنه و کاربران، تجربیات خود را به شکل داستان و به صورت تعاملی بیان میکنند تا افراد حاضر در تیم ها به درک بهتری از فضای کسب و کار و نیازمندی ها، دست پیدا کنند.

تکنیک Domain storytelling در سال 2018 توسط آقای استفان هوفر و آقای هنینگ شوونتنر معرفی شده است.

استفاده از این تکنیک به صورت مکمل برای سایر تکنیک ها مثل Event Storming نهایتا می تواند منجر به یک مدل سازی بهتر می شود.

توضیحات کاملی این تکنیک در سایت domainstorytelling.org و کتاب

Domain Storytelling A Collaborative, Visual, and Agile Way to Build Domain-Driven Software

که در سال 2021 منتشر شد، وجود دارد که می توانید به آنها رجوع کنید.

در ادامه مقاله به شکلی مختصر به ابعاد مختلف این تکنیک و نحوه برگزاری جلسه و مدل سازی آن پرداخته ام اما قبل از آن خوب است که مختصری از ارتباط این روش با روش Event Storming رو بررسی کنیم.


تکنیک Domain storytelling به عنوان مکمل روش Event Storming

همان طور که پیش تر گفته شد در Domain Storytelling تمرکز بر روایت داستان ها و تجربیات کاربران است ولی در Event Storming تمرکز بر شناسایی رویدادهای کلیدی دامنه (Events) و ترتیب زمانی آنها است.

می توان به شکلی Domain Storytelling را به عنوان یک مرحله پیش نیاز برای Event Storming در نظر گرفت، چرا که در Storytelling افراد با به یک مدل کلی از فرآیندها آشنا می شوند و در این حین با نقش ها و زبان دامنه (Ubiquitous Language) نیز آشنا می شوند، سپس در Event Storming با توجه به دانش نسبی که نسبت به این فرآیند های کسب و کار، زبان دامنه و نقش ها در جلسات Storytelling دست پیدا کرده اند، اکنون به شکل بهتر و سریع تری می توانند رویدادهای دامنه (Events)، Commandها و موجودیت ها را از طریق جلسات Event Storming شناسایی کنند.

همچنین تجربه نشان داده است که یک قصه گوی خوب در جلسات Event Storming می تواند به بهبود ارتباط بین اعضای تیم کمک کند و نسبت به ایجاد زبان فراگیر (Ubiquitous Language) قوی کمک کند، همچنین در صورتی که داستان ها به خوبی بیان شوند بخش های پر چالش در کسب و کار که نیاز به تمرکز بیشتری دارند نیز به شکل ساده تری مشخص می شوند.

نتیجه گیری

استفاده از تکنیک Domain Storytelling در درک و شناخت مسئله با استفاده از بیان تجربیات به شکل قصه گویی و همچنین ساختن یک زبان فراگیر (Ubiquitous Language) بین افراد تیم توسعه و کارشناسان دامنه (Domain Experts) و همچنین افزایش و بهبود تعامل بین این افراد کمک میکند.

ادامه...

در بخش های بعدی این مقاله به ترتیب فرآیند و نحوه برگزاری جلسات Domain Storytelling و Event Storming رو بررسی خواهیم کرد.

کسب کارdddevent storming
software architecture/developer
شاید از این پست‌ها خوشتان بیاید