سيبِل: شما براي طراحي نرمافزار چه فرايندي را طي ميكنيد؟ آيا Emacs را به كار ميگيريد و شروع به نوشتن كد ميكنيد و سپس آنها را جابجا ميكنيد تا درست به نظر برسند؟ يا آن كه مداد و كاغذ به دست ميگيريد و روي يك مبل راحتي مينشينيد؟
جاشوا بلاك: چند سال پيش در OOPSLA يك سخنراني داشتم به عنوان «چگونه يك API (رابط برنامه كاربردي) خوب طراحي كنيم و چرا اين كار اهميت دارد» كه نسخههاي گوناگوني از آن در وب وجود دارد. در آنجا به طور مفصل پاسخ اين سوال شما را دادهام.
مهمترين چيز اين است كه بدانيد چه جيزي ميخواهيد بسازيد. به عبارت ديگر، چه مسألهاي را ميخواهيد حل كنيد. از اهميت تحليل نيازها [تحليل نيازمنديها يا requirement analysis] به هيچوجه نبايد غافل شد. بعضيها فكر ميكنند تحليل نيازها يعني اين كه شما پيش مشتري ميرويد و از او ميپرسيد چه ميخواهي؟ و او هم به شما ميگويد كه چه ميخواهد و كار تمام ميشود.
اما اين يك خيال باطل است. اين كار نه تنها به مذاكره و مصالحه نياز دارد بلكه يك فرايند درك متقابل است. بسياري از مشتريان به شما نميگويند مسأله چيست بلكه راه حل را به شما ميگويند. مثلاً يك مشتري ممكن است به شما بگويد «من ميخواهم كه شما اين ويژگيها را به سيستم بيفزاييد.» شما بايد بپرسيد «چرا؟ با اين سيستم چكار ميخواهيد بكنيد؟» و پرسشهايي شبيه اينها. بايد آنقدر عقب و جلو برويد تا بفهميد مشتري واقعاً ميخواهد نرمافزار چه كاري برايش بكند. اينها كارخواستها [مورد كاربرد يا use case] هستند.
به دست آوردن مجموعه خوبي از كارخواستها [موردهاي كاربرد]، مهمترين كاري است كه در اين مرحله ميتوانيد بكنيد. پس از آن كه اين كار را انجام داديد، محكي در دست داريد كه با آن ميتوانيد هر راه حلي را بسنجيد. هر چقدر كه براي انجام صحيح اين مرحله وقت بگذاريد اشكالي ندارد زيرا اگر در اين مرحله دچار اشتباه شويد، ديگر كار تمام است و بقية فرايند توليد نرمافزار، در واقع وقت تلف كردن بيهوده است.
منبع: برنامهنويسان در حال كار، قسمت ششم، نوشته پيتر سيبِل، ترجمه استاد ابراهيم نقيبزاده مشايخ، ماهنامه گزارش كامپيوتر، شماره 194، آذر و دي 89، صفحه 62
جاشوا بلاك(Joshua Bloch) معمار ارشد جاوا در گوگل است.
گزيده:
من اساساً به مرور زمان نسبت به خودم سختگيرتر شدهام و به همين دليل است كه اكنون برنامههاي بهتري مينويسم. شما نبايد عادتهاي بد خودتان را بپذيريد. جاشوا بلاك


مسعود علی اکبرزاده
24 بهمن 1389 در 00:00فکر می کنم تنها راه درک اهمیت تحلیل نیازمندی ها، داشتن تجربیات شکست هایی است که به آن بی توجهی شده است…
————————–
آقای اکیرزاده عزیز
سلام.
امیدوارم که شیرینی پروژه های موفق نیز به این مهم کمک کند.
شاد باشید