بازگشت يک مرد بزرگ و يک معلم دوست‌داشتنی

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

شب وصل است و طی شد نامه هجر
سلام فيه حتی مطلع الفجر

تمامی کسانی که آقای دکتر رامان رامسين را در دانشگاه صنعتی شريف می‌شناسند بر اين نکته متفق‌القولند که ايشان انسانی بزرگوار و استادی با دانش و معلمی دل‌سوز هستند. در کنار تمامی ويژگی‌هاي علمی‌شان، يک معلم اخلاق و نمونه‌اند.
من آن قدر به ايشان ارادت داشتم که حتی مسائل شخصی‌ و کاری‌ام را برايشان بازگو می‌کردم و ايشان با سعه صدر گوش فرا می‌دادند و راهنمايی می‌کردند.اين موضوع نه تنها در مورد من، که در مورد بسياری ديگر از دانشجويانش صادق بود.
چند سالی بود که ايشان برای ادامه تحصيل و اخذ مدرک دکترا به خارج از کشور تشريف برده بودند و ما از نعمت ديدارشان و کسب معرفت از محضرشان محروم بودیم. سعادت با جامعه انفورماتيک ايران يار بود و ايشان پس از اتمام تحصيلشان به ايران برگشتند.
بازگشت ايشان را به جامعه انفورماتيک ايران، دانشجويانش و به خصوص به ارادتمندانش تبريک عرض می‌کنم.
مطالعه رساله دکترای ايشان با عنوان The Engineering of an Object-Oriented Software Development Methodologyرا از دست ندهيد.

ايشان ترم آينده، درسهای طراحی شیءگرا و متدولوژی‌های شیءگرا را ارائه خواهند نمود که حضور در کلاس ايشان را به همه شما توصيه می‌کنم.

گستره مفاهيم و اصول شیءگرا

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

آقای بهروز بختياری که نويسنده وبلاگ زيبا و پرمحتوای ooa.blogfa.com هستند، در مورد نوشته من درباره ذينفع‌های پروژه، ابراز لطف کرده بودند و اين موضوع باعث شد تا من با وبلاگ ایشان آشنا گشته و از مطالب ایشان استفاده نمايم.
وقتی مطالب ايشان در مورد مفاهيم شیءگرا را مطالعه می‌کردم، نکته‌ای برایم جالب آمد که آن را با ذکر خيری از دوران دانشجويی‌ام عرض می‌کنم.
وقتی که من درس مهندسی نرم‌افزار را با استاد عزيزم آقای مهندس سیدابراهيم ابطحی می‌گذراندم، از ايشان خواهش کردم که اجازه بدهند تا من سميناری در مورد مفاهيم شیءگرا داشته باشم. ايشان نيز لطف کردند و موافقت نمودند.
پس از اتمام سمينارم، استاد نکته‌ای را اشاره کردند که آن موقع منظورشان را درست برداشت نکردم و بعدها به نکته مطلبشان پی بردم.ايشان در آن جلسه فرمودند که نگاه شما به مفاهيم شیءگرا در سطح برنامه‌نويسی متمرکز شده است، در حالی که اين مفاهيم گستره وسيع‌تری را در بر می‌گيرند.
برای اين که منظورشان را بيشتر توضيح دهم، اجازه بدهيد در مورد اصل Encapsulation که در فارسی آن را لفاف‌بندی، محصورسازی و مخفی‌سازی ترجمه کرده‌اند، مطالبی را عرض کنم.
اين اصل وقتی در سطح برنامه‌نويسی مطرح می‌شود، در ذهن اين موضوع را تداعی می‌کند که شیء ساختار و رفتارش را مخفی می‌کند، ساختار و رفتاری که استفاده کننده برای استفاده نيازی به دانستن آن ندارد. درست مانند مثالی که دوستمان در وبلاگش آورده است.
اما گستره اين به مراتب بيش از سطح اشيای سيستم است.
در تعريف لفاف‌بندی گفته شده است که «لفاف‌بندی يعنی در اختيار گذاشتن مواردی که استفاده کننده برای استفاده به آن نياز دارد و حذف مواردی که استفاده کننده برای استفاده به دانستن آن نياز ندارد». دقيقاً مثل فيلم‌های پليسی و مافيايی که متهم برای اينکه اطرافيانش را در امنيت قرار دهد، به آن‌ها می‌گويد: هر چه کم‌تر بدانيد به نفع شماست.
اين مفهوم در هر سطحی قابل به کارگيری است. به عنوان مثال فرض کنيد می‌خواهيم اين مسأله را حل و طراحی کنيم: سيستم انبار پس از ثبت رسيد بايد سندی را در سيستم حسابداری ثبت نمايد. خوب اصل لفاف‌بندی به ما می‌گويد که سيستم انبار بايد موارد لازم جهت انجام کارش را بداند. اين موارد شامل سرويسی است که سيستم حسابداری در اختيارش قرار می‌دهد به علاوه ساختاری است که اين سرويس جهت دريافت اطلاعات لازم برای ثبت سند، تعبيه کرده است.
(boolean AccountSystem.AccountingService.SaveVoucher(AccountSystem.AccountInfo accInfo))
حال سيستم انبار نيازی به دانستن چگونگی ثبت سند در سيستم حسابداری (شامل طراحی داخلی، طراحی بانک اطلاعاتی، الگوريتمهای محاسباتی و قوانين کاری) ندارد و نبايد داشته باشد. چرا؟ برای اينکه مانند فيلم‌های مافيايی «در امان باشد». از چه؟ از تغييرات داخلی سيستم حسابداری (شامل تغيير طراحی، طراحی بانک، الگوريتمها و قوانين کاری).
به عبارت ديگر تأکيد بر اين است که واسط(interface) يعنی تعريف سرويس از نحوه پياده‌سازی(implementation) جدا باشد. اين مفهوم نه تنها در سطح اشياء، بلکه در هر سطحی قابل کاربرد است. اين مفهوم، يکی از اصول دنيای شیءگراست و در بر طراحی تمامی اجزای آن مانند سيستم، زيرسيستم، مولفه و غيره نيز حاکم است.

ذينفع (Stakeholder)پروژه نرم‌‏افزاری کيست؟

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

کلاس تحليل و طراحی شیءگرا(Object Oriented Analysis and Design with UML) در شرکت فراتر از دانش چند هفت‌ه‏ای است که شروع شده است. فکر کردم بد نباشد بعضی مطالب و سوالاتی را که در کلاس مطرح می‌‏شود، در وبلاگم قرار دهم.
يکی از موضوعات مهم در مديريت نيازمندهی‏‌ها(Requirement Management)، تعريف و مصداق‌های ذينفع در يک پروژه نرم‌‏افزاری است.
ذينفع در مديريت نيازمندی‌‏ها، عبارت از اشخاص يا گروه‌هايی هستند که نيازها و انتظاراتشان در پروژه نرم‏‌افزاری برای حصول به نتيجه مطلوب، بايد منظور و برآورده گردد.
لزوماً ذينفع، کاربر پروژه نيست. در ادامه به ذکر نمونه‌‏هايی می‌‏پردازيم.
نمونه ۱: در پروژه اتوماسيون سيستم آژانس‌های هواپيمايی هر چند مشتری با سيستم کار نخواهد کرد، ولی انتظارات و خواسته‌‏های وی جهت تحقق در سيستم نرم‌‏افزاری مدون می‌‏گردد.

نمونه ۲: گر چه مدير شبکه و پشتيبانی شرکت کارفرما، استفاده‏ای از سيستم حسابداری نخواهد کرد، اما از آنجا که استقرار سيستم در شبکه و ساختار سخت‌‏افزاری تحت مديريت وی انجام خواهد شد، انتظارات وی در توليد و ساخت سيستم مورد توجه قرار می‏‌گيرد. به عنوان مثال، حداکثر فضايی که سيستم حسابداری می‏‌تواند استفاده نمايد 100 مگابايت خواهد بود.

نمونه ۳: مدير عامل انتظار دارد که سيستم اتوماسيون اداری تا قبل از تابستان عملياتی شده باشد، چرا که انتخاب مدير عامل برای دوره بعدی در شهريورماه انجام خواهد شد و ايشان برای اينکه بتواند شانس بيشتری برای انتخاب مجدد داشته باشد، موفقيت استقرار سيستم، امتياز مهمی برای وی خواهد بود .

نمونه ۴:فروشنده بسته‏‌های نرم‌‏افزاری در پاساژهای رضا و پايتخت در پروژه سيستم حسابداری، ذينفع محسوب می‌‏گردند؛ چرا که انتظارات آنها از سيستم (حداقل در نحوه بسته‌‏بندی پاکت حاوی نرم‌‏افزار) يکی از عوامل موفقیت پروژه خواهد بود.
نکته ديگری که بايد توجه شود معنای لغوی عبارت است. بسياری از همکاران و دوستان، معادل فارسی اين لغت را سهام‌دار برگزيده‌‏اند که معادل shareholder می‌‏باشد و معادل مناسبی برای آن نيست.

Grady Booch مردی برای تمام فصل‌ها

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

معرفی سايت الگوهای نرم‌‏افزاری Grady Booch بهانه‌‏ای شد تا يادی از گذشته کنم.
گريدی بوچ (Grady Booch) يکی از تأثيرگذارترين و شناخته‌‏شده‌‏ترين افرادی است که دنيای نرم‌‏افزار و به خصوص دنيای شیءگرايی و متدولوژی به خود ديده است. او که متولد 1955 است، مدرک کارشناسی را از آکادمی نيروی هوايی آمريکا در سال 1977 و کارشناسی ارشد را از دانشگاه کاليفرنيا در سال 1979 در رشته مهندسی برق دريافت نموده است.
آشنايی من با گريدی بوچ بر می‌‏گردد به زمان تحصيل در مقطع کارشناسی. در آن زمان من با گروه شیءگرايی انجمن انفورماتيک ايران آشنا شدم. آخرين چهارشنبه هر ماه، جلسات اين گروه تشکيل می‏‌شد و من از اولين جلسه آن، سعی می‏‌کردم سخنرانی‌‏های ماهانه آن را از دست ندهم.
حضور آقايان مهندس رامين عرفانيان و مهندس علی ارسنجانی و بعدها مهندس نويد خسروی- مديريت عامل محترم شرکت نبراس انفورماتيک – غنيمتی بود تا مطالب جديدی ياد بگيرم و بيشتر با اين دنيای زيبا آشنا شوم. اين نکته هم بايد يادآور شوم که آشنايی با مفهوم شیءگرايی را از دوست خوبم علی عبداللهی ازگمی دارم. او برنامه‏ای را که خودش نوشته بود را برايم تشريح کرد و مرا با مفاهيم شیءگرايی آشنا نمود. در آن زمان، آقای عرفانيان تازه از خارج آمده بودند و کتاب بوچ را در جلسه‏ای معرفی کردند و من هم نسخه‏‌ای کپی از آن تهيه کردم و بعد از آن، اين کتاب شد همه زندگی من. کتاب Object Oriented Analysis and Desin with Application از حيث مطالب، واقعاً کتاب سنگينی است. اين کتاب جزو پرفروش‌ترين کتاب‌های نرم‏‌افزار محسوب می‌‏شود. نکته خيلی جالب در کنار مطالب فنی و علمی کتاب، مقدمه آن بود که بوچ از همه تشکر کرده بود و در آخر از گربه‏‎هايش تشکر و قدردانی کرده بود که در مدت نوشتن کتاب تا پاسی از شب، کنارش می‌‏ماندند.

من که به بوچ بسيار علاقمند شده بودم، در تمام اين دوران، اخبار مربوط به او را دنبال می‌‏کردم، از مصاحبه‏‌ها گرفته تا گزارش‌های خبری. هميشه در مصاحبه‏‌هايش شما آينده نرم‌‏افزار و مسير حرکت آن را به خوبی پيدا می‏‌کرديد. مطالعه مطالبی که از وی منتشر می‌‏شود را به همه شما عزيزان توصيه می‏‌کنم.

بوچ از سال 1981 يعنی سال تأسيس شرکت Rational در اين شرکت حضور داشت و پس از خريد آن توسط شرکت IBM، بوچ از سال 2003 رسماً کارمند شرکت IBM گرديد.
ارائه متدولوژی Booch Method، نوشتن شش کتاب پرفروش، ارائه UML، ارائه RUP از مهم‏‌ترين کارهای اوست.
آخرين کاری که انجام داده است ارائه سايتی است برای الگوهای نرم‏‌افزاری؛ تحليل، طراحی، معماری، ضدالگو، مديريت پروژه و برنامه‏‌نويسی؛ که ديدن آن را اکيداً توصيه می‏‌کنيم.برای ديدن آن می‌‏توانيد به آدرس www.booch.com/architecture مراجعه نماييد.
گريدی بوچ عزيز و دوست‏‌داشتنی، حدود دو ماه است که جراحی قلب انجام داده است. برايش آروزی سلامتی و بهبودی کامل دارم.
برای اطلاع دوستان، آدرس‌های مفيدی که مربوط به گريدی بوچ می‏‌شود را در اينجا آورده‌‏ام.

www.booch.com/architecture
http://en.wikipedia.org/wiki/Grady_Booch
http://www-03.ibm.com/developerworks/blogs/page/gradybooch
http://www-306.ibm.com/software/rational/bios/booch.html

روی مسأله تمرکز نکن، به راه حل فکر کن

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

فيلم Patch Adams را پس از مدت‌ها دوباره تماشا کردم.

در صحنه‏‌های از فيلم، آدامز (نقش اصلی فيلم) که در بيمارستان روانی بستری بود با يکی ديگر از بيماران – Arthur Mendelson يکی از معروف‌‏ترين مبتکرين و مخترعين زمان – مشغول صحبت بود. قبلاً او چهار انگشت دستش را به آدامز نشان داده بود و از او پرسيده بود که اين چند تاست؟ آدامر گفته بود: “چهار تا”. آرتور به او گفته بود: يک ديوانه ديگه!

اين بار بيمار همان پرسش را دوباره پرسيد و در ادامه به آدامز جملاتی را گفت که واقعاً انسان را به فکر وا می‏‌دارد. اين ديالوگ را در اينجا آورده‏‌ام.

A: How many do you see?
P: There are four fingers, Arthur.
A: No, no, no. Look at me.
P: What?
A: You’re focusing on the problem. if you focus on the problem, you can’t see the solution. Never focus on the problem. Look at me.
P: How many do you see? No, look beyond the fingers. See what no one else sees. See what everyone else choses not to see. Out of fear and confirmity and laziness. See the whole world anew each day. The truth is you’re well on the way.

برداشت از ديالوگ بالا را به خودتان واگذار می‏‌کنم، ولی برای من چون پتکی بود که بر سرم فرود آمد.

ديدن این فیلم را اکيداً توصيه می‏‌کنم.

سماموس، وبلاگ من

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

سماموس نام بلندترين قله منطقه اشکورات رودسر است. نمادی از بزرگی، صلابت و تعالی.
محلی‏‌ها بر اين باورند که اگر تمامی برف‌های سماموس آب شوند، قحطی خواهد آمد. از اين رو سماموس، نماد زندگی است.

در اين عين بزرگی، زندگی را صدا می‏‌زند و شما را به سوی خود می‏‌خواند.

از اينکه وبلاگم به اين نام خوانده شود و عزيز ديگری اين نام را بر وبلاگ خود ننهاده، خوشحاليم، وصف ناپذير است.

اطلاعات بيشتر در مورد سماموس را می‏‌توانيد در ویکی‌پدیا پيدا کنيد.

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