کشف دانش #
برای طراحی یک راهحل نرمافزاری مؤثر، ما باید حداقل یه دانش ابتدایی را از حوزه کسب و کار، درک کنیم. همانطور که در فصل 1 بحث کردیم، این دانش متعلق به متخصصان دامنه ی کسب و کار است: وظیفه آنها تخصص و درک تمام پیچیدگیهای حوزه کسب و کار خودشان است. به هیچ وجه نباید ما، (نمیتوانیم)، متخصصان آن حوزه کسب و کار شویم. با این حال، برای ما خیلی مهم است که متخصصان دامنه را درک کنیم و از همان اصطلاحات کسب و کاری و بیزینسی استفاده کنیم که آنها استفاده میکنند.
برای اثربخش بودن یک نرم افزار، باید اون نرمافزار تا حد زیادی به شیوهی تفکر متخصصان دامنه درباره مسئله - یعنی مدلهای ذهنی آنها - شباهت زیادی داشته باشد. بدون درک از مسئله بیزینس و استدلال پشت نیازها، راهحلهای ما محدود به “ترجمه” نیازهای بیزینس به سورس کد خواهند بود. حالا اگر ما نیازمندی های خیلی مهم و حیاتی بیزینس را از دست بدیم، چه اتفاقی خواهد افتاد؟ و یا اینکه نیازمندی هایی که ما بدست آورده ایم یک مفهوم بیزینسی را شرح ندهد، آن وقت چه اتفاقی خواهد افتاد؟ و یا مهم تر اینکه با ترجمه نیازمندی های بیزینسی ما نتوانستیم یک مدلی درست کنیم که بتواند نیازمندی های آینده را پشتیبانی کند، چه اتفاقی خواهد افتاد؟
همانطور که البرتو براندولینی گفته است، توسعه نرمافزار یک فرآیند یادگیری است و کار کردن روی کد در واقع تاثیرات جانبی این فرایند است. موفقیت یک پروژه نرمافزاری به اثربخشی اشتراک دانش بین متخصصان دامنه و مهندسان نرمافزار بستگی دارد. ما باید مسئله را درک کنیم تا بتوانیم آن را حل کنیم.
اشتراک اثربخش دانش بین متخصصان دامنه و مهندسان نرمافزار نیاز به ارتباط موثر دارد. بیایید به موانع رایج در ارتباطات موثر در پروژههای نرمافزاری نگاهی بیندازیم.