گپی دوستانه با مهندس امراللهی

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

حدود یک ماه پیش، بیستم بهمن­ماه، از آقای مهندس امراللهی (www.saeedamrollahi.com) خواهش کردم که افتخار دهند تا دقایقی در خدمتشان باشیم. ایشان نیز لطف کردند و دعوت ما را (حسین و من) پذیرا شدند. این دعوت هم برای تازه شدن دیدارها بود و هم به بهانه چاپ گزارش حضور ایشان در همایش کمیته استانداردسازی ++C در سوئیس در گزارش کامپیوتر شماره 194 (www.isi.org.ir) بود. ایشان اولین و تنها نماینده از ایران دراین نشستها بوده­اند و اولین حضور ایشان در سال 2009 و در فرانکفورت بوده است. ناگفته نماند که در گذشته ایرانیانی به نمایندگی از سایر کشورها در این سمینار حاضر بودند.

او آن چنان شیفته ++C است که ترجیح می­دهم وی را ++Mr. C (مستر سی پی پی) بنامم، نامی که برازنده دانش وسیع و تجارب گران­بار وی در این زبان است.

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

– سال 1380 ایمیلی به آقای استراستروپ نوشتم و سه پرسش از ایشان پرسیدم. انتظار نداشتم که پاسخ دهد، ولی با تعجب پاسخم را داد.

– اولین بار که سعی کردم در همایش شرکت کنم به دلیل دریافت­نکردن ویزا مؤفق نشدم. استراستروپ همان روز طی نامه­ای تأسف خود را از این موضوع به اطلاعم رساند.

– در گذشته ایمیل­هایم را دیر به دیر می­خواندم و پاسخ می­دادم. ارتباط با اعضای کمیته استانداردسازی و مقید بودن آنان به پاسخ­گویی ایمیل­هایشان باعث شده تا سعی ­کنم در زودترین زمان ممکن به نامه­هایم پاسخ دهم.

– بسیار رک هستند، در عین حال احترام همدیگر را نگه می­دارند.

– آن چه که یاد گرفتم عبارتند از: صبر و حوصله داشتن، احترام به رأی افراد

– کلیدواژه(keyword) جدید اضافه کردن به زبان کار دشواری است، چرا که باید کلمه­ای انتخاب شود که در تمامی کدهای نوشته­شده تا آن زمان وجود نداشته باشد.

– ما چوب اعتماد به نفس نداشتن را می­خوریم. آموختم که منفعل بودن خیلی چیز بدی است.

– هنگام شام، دربارة موضوعات مختلف صحبت می­کنند مثلاً یکبار حدود یک ساعت در مورد کشتی جنگی صبحت کردند، صحبت­های مستدل و گسترده! درحقیقت باید گفت که دانش عمومی آنها عمدتاً بالا است.

– حدود یک سال است که ارائه­ای آماده کرده­ام در مورد فرآیند استانداردسازی زبان ++C و چندین بار از مؤسسه استاندارد خواسته­ام که این مطالب را به آن­ها ارائه دهم، علاقه­ای نشان نداده­اند.

– هر ترم سمیناری دربارة ++C در دانشگاه شهید بهشتی ارائه می­کنم. (خیلی مفید )

پانوشت: در شماره جدید گزارش کامپیوتر، آقای امراللهی مصاحبه ای از استراستروپ را ترجمه کرده اند که توصیه می کنم مطالعه آن را از دست ندهید.

گزیده:

اگر برگردم، رشته­ام را تغییر نخواهم داد. نرم­افزار رشته خوبی است. سعید امراللهی

فیس بوک

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

چند وقت پیش یکی از مدیران عزیزم که وی را از این پس آقای مدیر خواهم خواند از من پرسیدند که شما در فیس بوک هستید؟ عرض کردم خیر و ادامه دادم که علاقه چندانی به عضویت در آن ندارم.

در همان روزها در پروژه ای با چند تن از دوستانم بودم و وقتی صحبت از راهکاری برای کاربر می شد، می گفتند اینجایش را مثل فیس بوک کنیم. در این شرایط که زیاد هم تکرار می شد، من فقط شنونده بودم و خواهش می کردم که ابتدا برایم شرح دهند که فیس بوک در این وضعیت چه کار می کند!

دشواری تا جایی افزوده شد که بالاخره تصمیم گرفتم به فیس بوک بپیوندم. یکی از درخواستهایی که فرستادم به آقای مدیر عزیز بود. تجربه بسیار جالبی بود.

۱- خیلی شاد شدم چرا که بسیاری از دوستانم را که سالها از آنها بی خبر بودم، یافتم.

۲- ناراحت هم شدم چرا که دلم خیلی برایشان تنگ شد و احساس دلتنگی شدیدی می کردم.

۳- خنده دارترین بخش موضوع هم این بود که یکی از اعضای فیس بوک را یافتم که دارای نام و نام خانوداگی مشابه من بود فقط با قیافه متفاوت .

۴- موضوع جالب هم این که آقای مدیر شب همان روزی که به فیس بوک پیوستم تماس گرفت و گفت یک نفر با مشخصات شما برایم در فیس بوک درخواست فرستاده است. چون گفته بودید که علاقه ای ندارید که در فیس بوک باشید، نگران شدم که نکند کسی از مشخصات شما سوءاستفاده کند. ضمن تشکر از این همه احساس مسئولیت، خدمتشان عرض کردم که تصمیم گرفته ام کمی جوانگرایی کنم

گزیده:
زندگی به تلاشهایتان پاداش می دهد نه به بهانه هایتان.
اندرو متیو، ۵۱۳ درس زندگی، سام زالی

اهميت تحليل نيازمندي‌هاي نرم‌افزار(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 در تحلیل نیازمندی‌ها به همراه مثال‌ها
– قالب‌های مستندات
– ارائه نمونه‌هایی از یک سیستم در كل كتاب

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

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