دانش دامنه یا Domain Knowledge به دانش مرتبط با حوزهای که نرمافزار در اون کار میکنه اشاره میکنه. مثلاً اگه دارید یک سیستم معاملات مالی طراحی میکنید، باید درباره معاملات مالی اطلاعات داشته باشید. بدون این دانش، نمیتوانید به درستی مشکلات کاربران را درک کنید یا حتی زبانشان را بفهمید.
اما، مگر نمیشود از مشخصات یا اسناد فنی استفاده کرد؟ چرا باید درباره دامنه چیزی بدانیم؟
مشخصات و اسناد فقط بخشی از اطلاعات را بیان میکنند. ولی اگر دانش دامنه نداشته باشید:
نمیتوانید به درستی با کاربران صحبت کنید، چون اصطلاحاتشان رو نمیفهمید.
اعتماد بین شما و مشتری سختتر شکل میگیرد.
ممکن است فقط همان چیزی را که در سند نوشته شده است، بسازید، ولی راهحل واقعی که مشکل را حل میکند، را پیدا نکنید.
وقتی دانش دامنه داشته باشید، مکالمه با کاربران مفیدتر میشود. در نهایت وقتی شما به زبانشان صحبت میکنید و مشکلاتشان را میفهمید، بیشتر به شما اعتماد میکنند.
چطور دانش دامنه به دست بیاریم؟
با همکاری مؤثر میتوانیم دانش لازم را کسب کنیم. چند روش اصلی برای به دست آوردن دانش دامنه وجود دارد:
مکالمات (Conversations):رایجترین روش است. در جلسات یا گفتگوهای رسمی و غیررسمی از کاربران سوال بپرسد. باید خوب گوش بدهید و سوالهای دقیق بپرسید تا اطلاعات مفید بگیرید.
مشاهده (Observation):این روش خیلی قدرتمند است. باید از پشت میز بلند شوید و ببینید کاربران چطور کار میکنند. مثلاً به انبار، هتل یا دفتر معاملات سر بزنید. به کارهایی که انجام میدهند دقت کنید. Jeff Patton در یکی از سخنرانیهاش مثالهای خوبی در این مورد دارد.
داستانسرایی دامنه (Domain Storytelling):این روش توسط Stefan Hofer و همکارانش معرفی شده است. از تصاویر ساده، فلشها و کمی متن برای توضیح تعاملات درون دامنه استفاده میکند. این روش آسان و نیاز به توضیحات پیچیده ندارد.
و EventStorming:این روش توسط Alberto Brandolini ابداع شده است و از Post-it Notes و یک رول کاغذ استفاده میکند. در کارگاههای EventStorming، شرکتکنندهها اتفاقات گذشته (Events) را روی یادداشتهای چسبان مینویسند و در روی دیوار به ترتیب زمانی میچسبانند. این روش به کشف فرآیندها، فعالیتها و حتی ابهامات کمک میکند.
چالشهای یادگیری دانش دامنه
افراد در دامنه خودشان سالها کار میکنند و متخصص میشوند. یادگیری این دانش برای ما که توسعهدهنده هستیم، زمانبر است. بهعلاوه:
گاهی دانش در سازمان پراکنده است.
ممکن است بعضی افراد اطلاعات اشتباه داشته باشند یا بخشی از دانش شان نادیده گرفته شده باشد.
چطور دانش دامنه خوب را تشخیص بدیم؟
باید با افراد مختلف از بخشهای مختلف سازمان صحبت کنیم. از مدیران تا کارمندهای سطح پایینتر گرفته. هر کسی یک بخش از پازل را دارد. وظیفه ما این است که این تکهها را کنار هم بگذاریم.