اهميت تحليل نيازمندي‌هاي نرم‌افزار(software requirements analysis)

  • یوسف مهرداد بی‌بالان

سيبِل: شما براي طراحي نرم‌افزار چه فرايندي را طي مي‌كنيد؟ آيا Emacs را به كار مي‌گيريد و شروع به نوشتن كد مي‌كنيد و سپس آن‌ها را جابجا مي‌كنيد تا درست به نظر برسند؟ يا آن كه مداد و كاغذ به دست مي‌گيريد و روي يك مبل راحتي مي‌نشينيد؟

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

گزيده:
من اساساً به مرور زمان نسبت به خودم سخت‌گيرتر شده‌ام و به همين دليل است كه اكنون برنامه‌هاي بهتري مي‌نويسم. شما نبايد عادت‌هاي بد خودتان را بپذيريد. جاشوا بلاك

تجربه با ترجمه فرق دارد

  • یوسف مهرداد بی‌بالان

نوشته دوست و استاد عزیزم علی آقای عبداللهی در وبلاگ ميزند باران به شيشه بهانه‌اي شد تا سپاس بي‌پايان خود و دوستانم را نثارشان كنم. اگر نبود کمک ایشان، بي‌شك انتشار كتاب با دشواري فراواني همراه مي‌شد.

«١۵٠٠ جلد از کتاب روش کاربردی تحلیل نیازمندی ‌های نرم افزار تالیف دوستان عزیزم اقایان یوسف مهرداد بی بالان، مظفر ایراف و پویا شهبازیان را خریده ام تا یک جلدش را ١۵٠٠ بار بخوانم.
کتاب در باره اولین فاز از تولید نرم افزار یعنی نیاز سنجی است. برای تولید هر نرم افزار اولین قدم این است که بدانیم نرم افزار چه کاری برایمان انجام دهد. یعنی نیاز سنجی.

مسلم است که نیازسنجی خوب پایه و اساس خوبتری است برای نرم افزار خوب و هر چه این نیاز سنجی بخوبی دیده شده باشد، نرم افزار خوبتر و کامل تر است و دردسرهای ناشی از نگهداری و پشتیبانی نرم افزار نیز کمتر است.

البته نیازها در حین توسعه و بهره برداری از نرم افزار ممکن است دستخوش تغییرات شوند که معمولا” در یک چرخه دائمی منجر به تغییر مستندات نیازسنجی، تحلیل، طراحی و پیاده سازی و … میشوند.

برای ما که وقت کمتری برای شرکت در کلاس داریم خواندن چنین کتابهایی که حاصل تحربیات عملی و اموزشی دوستان فعال در این زمینه هاست غنیمت است.

من ١۵٠٠ جلد از کتاب روش کاربردی تحلیل نیازمندی ‌های نرم افزار را خریده ام تا یک جلد آنرا ١۵٠٠ بار بخوانم و ١۴٩٩ جلد باقیمانده را به مدیران فن اوری اطلاعات اداراتی که مشتری نرم افزارهای یکپارچه مالی و اداری هوشا هستند هدیه بدهم و یا توصیه کنم و یا در اختیار مدیران و کارشناسان تیم های تحلیل،تولید و توسعه نرم افزار قرار دهم و یا در میان دانشجویان رشته های مرتبط با طراحی و تولید نرم افزار توزیع کنم .

امید دارم این کتاب را تهیه کنند و بخوانند. این کتاب ترجمه نیست بلکه حاصل تجربه است. تجربه کسانی که در تیم های خوبی کار کرده اند. و حاضر شده اند تجارب خود را در قالب کتاب در اختیار دیگران قرار دهند. با این امید که موجب توسعه علمی و عملی روش های تحلیل و توسعه نرم افزار شوند و با امید به اینکه استقبال جامعه فن آوری اطلاعات از چنین کتابهایی موجب رشد چنین کتابهایی در مقابل کتابهای صرفا” ترجمه شود.»

گزیده:
سه چیز انسانها را می سازند: کار سخت، صمیمیت و تعهد.

کتاب روش كاربردي تحليل نيازمندي‌هاي نرم‌افزار – ترجمه یا تأليف

  • یوسف مهرداد بی‌بالان

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

2- يكي از دوستانم تماس گرفت و گفت كه كتاب «روش كاربردي تحليل نيازمندي‌هاي نرم‌افزار» را كامل خوانده است. او علاوه بر اعلام نظر – كه بر اين باور بود كه روي مطالب كتاب بسيار كار شده و براي حوزه نيازمندي‌ها بسيار مفيد و كاربردي است-، (اگر درست به ياد داشته باشم) اولين پرسشي كه مطرح كرد اين بود كه «كتاب را ترجمه كرده‌ايد؟»

توضيح:

پرسش‌هاي اين دو دوست كمي مرا به فكر فرو برد كه چرا چنين برداشتي از كتاب مي‌شود. پس از طرح موضوع با چند تن از دوستانم، نكته‌‌اي كه آنها بيان مي‌كردند اين بود كه ذهنيت عمومي از كتاب فارسي در زمينه‌هاي تخصصي، كتاب‌هاي ترجمه شده از زبان اصلي است.

اگر كتاب را خوانده باشيد در مقدمه كتاب گفته شده است كه چارچوب اصلي فصل اول و نهم از كتابي اقتباس و ترجمه شده است. اما فصل‌هاي مياني به خصوص آن‌هايي كه روش و تكنيك‌هايي براي حوزه نيازمندي‌ها ارائه مي‌كند، به شكلي با پروژه‌هاي ايراني گره خورده است. به عنوان مثال در فصل هشتم براي شناسايي موردهاي كاربرد حدود هفت روش و تكنيك به همراه مثال معرفي و تشريح شده است. دو يا سه مورد از روش‌ها و تكنيك‌ها در مراجع زبان اصلي وجود دارد و بقيه ماحصل تجربياتي است كه به همراه همكارانم در پروژه‌هاي مختلف داشته‌ام و لااقل خودم در هيچ كتابي آن‌ها را نديده‌ام.

ممكن است اين پرسش مطرح شود كه تجربيات ايراني مفيد نيست. خيلي قصد جدل ندارم، اما اين روش‌ها -كه پشتوانه نظري و تئوريك دارند – را در بسياري از تيم‌ها با همكاران و دوستانم تجربه كرده‌ايم، نتايج چشم‌گير بوده است.

گزيده:
همه را باور کردن، خطرناک است. اما هیچکس را باور نکردن، خیلی خطرناک است.
آبراهام لینکلن

كتاب در دنياي مجازي

  • یوسف مهرداد بی‌بالان

بعضی از دوستان در دنیای وب به کتاب «روش كاربردي تحليل نيازمندي‌هاي نرم‌افزار» یا «Software Requirements Analysis: A Practical Approach» اشاره داشته و مطالبی در مورد آن نوشته‌اند. ضمن تشكر و سپاس، آدرس آنها را در زير آورده‌ام.

http://fardamedia.com

http://andysheh.blogfa.com

http://weblog.radmanitd.com

http://www.mehdikhajeh.info

http://www.developercenter.ir

http://nooshinlaban.persianblog.ir

گزیده:
برنده شدن همیشه به معنی اولین بودن نیست. برنده شدن به معنی انجام کار، بهتر از دفعات قبل است. بونی بلر

کتاب روش كاربردي تحليل نيازمندي‌هاي نرم‌افزار

  • یوسف مهرداد بی‌بالان

بالاخره پس از یک و نیم سال کار، كتاب فردا از چاپ‌خانه ترخيص خواهد شد و در اختيار توزيع‌كننده –كتاب هوشا (۶۶۹۰۹۱۸۷۰۲۱)- قرار خواهد گرفت. متن زير آخرين نوشته‌اي است كه براي كتاب نوشته‌ايم. متني كه ناشر آن را براي پشت جلد از ما خواست. اميدوارم گوياي محتواي كتاب باشد.

«اگر نيازمندي‌ها را به درستي شناسايي نكنيد، خوب انجام دادن بقيه پروژه، ديگر اهميتي نخواهد داشت»

این کتاب به شما می‌آموزد که تحلیل نیازمندی‌ها را در پروژه‌های نرم‌افزاری به چه روشي انجام دهید. كتاب، حاصل اجرای چندین و چندباره روش در پروژه‌های نرم‌افزاری و تجربیات آموزشی در دانشگاه‌ها، شرکت‌های نرم‌افزاری و کارگاه‌های تخصصی است.
در این کتاب آمده است:
– ادبیات و اهمیت حوزه نیازمندی‌ها
– چگونگی شناسایی نیازهای مشتریان و کاربران
– نحوه شناسایی و تدوین قواعد کسب‌وکار
– روش شناسایی و تدوین ویژگی‌ها و موارد کاربرد سیستم
– آفت‌ها و تکنیک‌های استخراج نیازمندی‌ها
– تشریح کاربرد UML در تحلیل نیازمندی‌ها به همراه مثال‌ها
– قالب‌های مستندات
– ارائه نمونه‌هایی از یک سیستم در كل كتاب

گزيده:
آلن استرایک
در این دنیا، خود را با کسی مقایسه نکنید، در این صورت به خودتان توهین کرده‌اید.

بازسازی و آشپزخانه

  • یوسف مهرداد بی‌بالان

رابرت سي مارتين در يكي از كتاب‌هايش تكنيك بازسازي(Refactoring) را با تميزكردن آشپزخانه بعد از پخت و پز مقايسه كرده است:
بازسازي شبيه شستن ظروف و تميز كردن آشپزخانه بعد از پخت غذا است. نخستين‌باري كه بعد از آشپزي، ظروف را نشوييد و آشپزخانه را تميز نكنيد، پختن و خوردن غذا كوتاه خواهد بود(نسبت به زماني كه آشپزخانه را هم تميز كنيد). اما فردا پختن و خوردن غذا طولاني‌تر خواهد بود؛ چرا كه نداشتن ظروف‌ تميز و فضاي كافي، شروع آشپزي را به تأخير خواهد انداخت.
واقعيت اين است كه اگر روزي آشپزخانه را تميز نكنيد، غذا خوردن همان‌ روز كوتاه‌ خواهد بود. اما اين كار باعث طولاني‌ شدن غذاي روز بعد خواهد شد. فردا به جاي آشپزي بايد انرژي و وقت خود را صرف تميز كردن ظروف آشپزخانه كنيد كه شستن آن‌ها به مراتب از ديروز سخت‌تر است(بايد با سيم ظرف‌شويي و قاشق، مانده‌هاي غذاي خشك شده ته آنها را جدا كنيد در حالي كه ديروز ظرف‌ها به راحتي تميز مي‌شدند). آشپزي هميشه نياز به زمان دارد، اما واقعاً تميزنكردن آشپزخانه باعث کوتاه شدن زمان پختن و خوردن غذا نمی‌شود.

گزيده:

The Agile community likes to think that they represent God’s answer to good software development. NO!! You are acting like children and making fools of us all!!
Scott Ambler, IBM Rational Software Conference 2009

خاطرات: كار تيمي دانشجويي

  • یوسف مهرداد بی‌بالان

برای نوشتن این نوشته، ابتدا دو موضوع را به عنوان مقدمه بازگو خواهم كرد و سپس اصل موضوع را.

مقدمه ۱: داستان طنز
چهار دانشجو كه به خودشان اعتماد كامل داشتند یك هفته قبل از امتحان پایان ترم به مسافرت رفتند و با دوستان خود در شهر دیگر حسابی به خوشگذرانی پرداختند. اما وقتی به شهر خود برگشتند متوجه شدند كه در مورد تاریخ امتحان اشتباه كرده‌اند و به جای سه شنبه، امتحان دوشنبه صبح بوده است. بنابراین تصمیم گرفتند استاد خود را پیدا كنند و علت جا ماندن از امتحان را برای او توضیح دهند.

آنها به استاد گفتند: «ما به شهر دیگری رفته بودیم كه در راه برگشت لاستیك خودرومان پنچر شد و از آنجایی كه زاپاس نداشتیم تا مدت زمان طولانی نتوانستیم كسی را گیر بیاوریم و از او كمك بگیریم، به همین دلیل دوشنبه دیر وقت به خانه رسیدیم.» استاد فكری كرد و پذیرفت كه آنها روز بعد بیایند و امتحان بدهند.

چهار دانشجو روز بعد به دانشگاه رفتند و استاد آنها را به چهار اتاق جداگانه فرستاد و به هر یك ورقه امتحانی را داد و از آنها خواست كه شروع كنند. آنها به اولین مسأله نگاه كردند كه 5 نمره داشت. سوال خیلی آسان بود و به راحتی به آن پاسخ دادند. سپس ورقه را برگرداندند تا به سوال 95 امتیازی پشت ورقه پاسخ بدهند كه سوال این بود: «كدام لاستیك پنچر شده بود؟»

مقدمه ۲: تكرار براي يادگيري
در كلاس‌ها و دوره‌ها عادت دارم كه موضوعات مهم درس را چندين و چند بار تكرار كنم: مرور ابتداي جلسه، اختصاص تمرين به آنها، ارتباط دادن بخشي از پروژه درسي يا دوره به آن و سرآخر، طرح پرسشي از آن در امتحان‌هاي كوتاه(کوئیز)، ميان‌ترم و پايان‌ترم. اين كار يعني تكرار كمك مي‌كند تا مطلب در ذهن دانشجو يا شركت‌كننده در دوره، ماندگاري بيشتري داشته باشد. به یاد داشته باشید که پروژه‌ها در گروه‌هاي حداكثر سه نفره انجام مي‌شود.

موضوع اصلي:
در يكي از ترم‌ها، چند روز قبل از يكي از امتحان‌هاي كوتاه(کوئیز)، بخشي از پروژه كه تأكيد آن كاربرد مجموعه‌ از تكنيك‌ها بود، از دانشجويان تحويل گرفته شده بود.
در امتحان كوتاه با توجه به وقت محدود، نمي‌خواستم صورت مسأله جدیدی طرح و آن را به طور كامل شرح دهم، لذا تصميم گرفتم كه پرسش زير را براي دانشجويان طرح كنم:
در انجام پروژه از چه تكنيك‌هايي استفاده كرده‌ايد، سه مورد را با ذكر مثال شرح دهيد.

يكي از دانشجويان خوب كلاس پاسخي به شرح زير نوشته بود:
با توجه به اين كه مسئوليت نوشتن تمرين‌ها در هر تمرين به شخصي خاص داده مي‌شود و اين‌بار مسئوليت به عهده من نبوده، از وصعيت روش‌هاي استفاده شده خبري ندارم.

مانده بودم كه به اين دانشجو چه نمره‌اي بدهم. اگر در پاسخ‌ها، براي صداقت و درستي نمره‌اي در نظر مي‌گرفتند، بي‌شك نمره كامل به ايشان اختصاص مي‌يافت.

گزيده:
مهمترين دارايی شما، شخصيت شماست

برای خروج از جستجو کلید ESC را بفشارید