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

1- در يكي از جلساتي كه دعوت شده بودم، يك نسخه از كتاب را به يكي از حضار كه آشنايي اندك و قبلي با وي داشتم، هديه كردم. وي اولين پرسشي كه مطرح كرد اين بود كه «آيا منبع كتاب را ذكر كردهايد؟». من به درستي متوجه پرسش وي نشدم و داشتم توضيح نادرستي ميدادم. يكي از حاضران جلسه براي وي شرح داد كه كتاب ترجمه نيست، تأليف است.