کدنویس تمیز فصل هفتم: تست پذیرش
ابهام تا دیر وقت
راه حل مشکلِ دقت زودرس آن است که دقت را تا حد امکان به تعویق بیندازیم. توسعه دهندگان حرفه ای، یک نیاز را تا زمانی که قرار باشد آن را توسعه دهند، بزرگ نخواهند کرد. با این حال، این میتواند منجر به ناهنجاری دیگری شود: ابهام تا دیروقت. ذی نفعان، اغلب مخالفت میکنند. زمانی که این کار را انجام دهند، ممکن است به جای حل آن، به بحث در مورد اختلافات بپردازند. آن ها راهی را برای بیان الزاماتی که تماماً با آن موافق هستند، پیدا خواهند کرد، بدون اینکه واقعاً اختلاف را حل کنند. یک بار از تام دماکرو شنیدم که میگفت «ابهام در سند الزامات، نشان دهنده بحثی میان ذی نفعان است[1].». البته بحث یا اختلاف نظر نیست که باعث ایجاد ابهام میشود. گاهی اوقات ذی نفعان به سادگی فرض میکنند که خوانندگان متوجه منظورشان هستند.
ممکن است در زمینه آن ها، چیزی کاملاً واضح باشد اما معنی کاملاً متفاوتی برای برنامه نویسی که آن را میخواند، داشته باشد. همچنین این نوع از ابهام میتواند زمانی رخ دهد که مشتریان و برنامه نویسان به صورت رودررو در حال صحبت کردن باشند.
سم (ذی نفع): «خب، حالا نیازه از این فایل های لاگ (گزارش)، بک آپ گرفته بشه.»
پائولا: «باشه، هرچند وقت یک بار؟»
سم: «روزانه»
پائولا: «درسته؛ میخوای کجا ذخیره بشن؟»
سم: «منظورت چیه؟»
پائولا: «آیا میخوای در یک زیر دایرکتوری (sub-directory) خاص ذخیره کنم؟»
سم: «بله این خوبه.»
پائولا: «اسم دایرکتوری را چی بزاریم؟»
سم: «(Backup) چطوره؟»
پائولا: «خیلی خوبه. پس فایل لاگ را هرروز در دایرکتوری Backup ایجاد میکنیم. اما چه زمانی اینکار را انجام بدیم؟»
سم: «هرروز.»
پائولا: «نه منظورم اینه که میخوای چه زمانی از روز نوشته بشه؟»
سم: «هر زمانی.»
پائولا: «ظهر؟»
سم: « در ساعت های معاملاتی نه. نیمه شب بهتره.»
پائولا: «باشه، پس نیمه شب.»
سم: «عالیه، ممنونم!»
پائولا: «عالیه.»
پس ازآن، پائولا به هم گروهی خود، پیتر، درباره این وظیفه میگوید.
پائولا: «خب، ما باید هر شب ساعت ۱۲، یک کپی از فایل لاگ در یک زیر دایرکتوری به نام بک آپ ذخیره کنیم.»
پیتر: «باشه، باید از چه اسمی برای ذخیره فایل استفاده کنیم؟»
پائولا: «log.backup»
پیتر: «متوجه شدم.»
در یک دفتر دیگر، سم تلفنی به مشتری اش میگوید.
سم: «بله فایل های لاگ ذخیره میشن.»
کارل: «خب، این برای ما حیاتی است که هیچ لاگی را از دست ندیم. ما نیاز داریم بتونیم بین تمام فایل های لاگ جست و جو کنیم و حتی فایل های مربوط به ماه ها یا سال های قبل را هم ببینیم، هر وقتی که دچار قطعی برق بشیم، یا رویداد و بحثی داشته باشیم.»
سم: «نگران نباشید، من با پائولا حرف زدم. پائولا لاگ ها را در یک دایرکتوری به نام بک آپ، هر شب ساعت ۱۲ ذخیره میکنه.»
کارل: «باشه، خیلی خوبه.»
احتمال میدهم ابهام را تشخیص داده باشید. مشتری انتظار دارد که تمام فایل های لاگ ذخیره شوند و پائولا به سادگی فکر کرد که آن ها میخواهند فایل لاگ شب قبل را ذخیره کنند. زمانی که مشتری به دنبال لاگ های ارزشمند ماه پیش بگردد، تنها لاگ شب قبل را پیدا خواهد کرد.
در این مورد، پائولا و سم هردو اشتباه کردند. این مسئولیت توسعه دهندگان حرفهای (و ذی نفعان) است که اطمینان حاصل کنند ابهام به کلی از الزامات حذف شده است. این کار سخت است و من تنها یک راه برای انجام آن میشناسم.
ممنون اطلاعت مفید و خوبی بود