امروز یکی از دوستان خوبم زنگ زد و گفت که RUP بهتر است یا Agile؟این سوال بهانه‌ای شد تا نوشته زیر را آماده کنم.
واقعیت امر این است که فرآیندها و متدولوژی‌های تولید نرم‌افزار هر یک دارای نکات مثبت و منفی خاص خود هستند و هر کدام با شرایطی، می‌توانند تجارب دیگران به ما منتقل نمایند تا ما چرخ را دوباره اختراع نکنیم و از یاد نبریم که نباید مسخ آنها شویم و خلاقیت‌مان را نادیده گرفته و خودباوری‌مان را از دست بدهیم. اما مشکل عمده ما در ایران این است که خیلی مدگرا هستیم و دانسته‌های ما “ناشی از شنیده‌ها و برداشتهای شخصی است” [این جمله مال من نیست] و نه بر اساس تجربه و مطالعه.
من در معرفی یکی از دوره‌هایم متنی را آماده کردم که فکر کنم بد نباشد آن را اینجا بیاورم:

“در جامعه نرم‌افزاری، هر از چند گاهی، تکنولوژی یا روشی مد روز می‌شود و این جامعه ذاتاً نوگرا را چون جاذبه‌های عجیب به سمت خود می­‌کشاند، بدون آن که لزوم استفاده و  مفاهیم بنیادی آن به این جامعه منتقل گردد، مدتی به کار گرفته می­‌شود و پس از مدتی به دلایل مختلف از مد خارج شده و با مدی دیگر جایگزین می­‌گردد. یکی از مهم‌ترین دلایلی که باعث از مد خارج شدن این ابزارها می‌گردد، برداشت نادرستی است که علاقمندان و استفاده‌کنندگان از آن‌ها دارند و دلیل دیگر، کاربری نادرست آن‌ها در کنار بی‌تجربگی استفاده‌کنندگان و مهم‌­تر از همه عدم وجود توانمندی لازم جهت ساده‌سازی و بومی‌سازی آن‌ها می‌باشد.
RUP نیز از این قاعده مستثنی نیست. فرآیند تولید یکپارچه شرکت IBM به دلایل مختلفی در جامعه نرم‌افزاری مد شد و به دلایلی که بخشی از آن را برشمردیم، از مد روز خارج شد، بدون آن که فلسفه و نگرش این فرآیند به کاربران آن منتقل شود.

هدف این نیست که از این فرآیند دفاع نماییم و آن را معجزه قرن بیست و یکم بنامیم، بلکه نکته‌ای که بدان پافشاری می‌نماییم این است که فلسفه و نگرش درون RUP نشأت گرفته از تمامی روش‌هایی بوده است که تا آن زمان ظهور کرده‌­اند و هر یک به طریقی سعی در حل مشکلات تولید نرم‌­افزار داشته­‌اند. فارغ از این که این نام چه باشد – FDD،RUP، ICONIX، Agile، XP – آن چه که جامعه نرم‌­افزاری باید فرابگیرد، فلسفه و نگرش و تکنیک‌هایی است که در این روش‌ها به صورت ضمنی وجود دارد.”

به عنوان مثال مفهوم معماری. در روش‌های مدرن، معماری به عنوان یکی از مبانی اصلی شمرده می‌شود (the architecture is first). با این که همه در کوی و برزن این نام را بر سر زبان می‌آورند، واقعاً به اندازه انگشتان یک دست نمی‌توانید متخصصینی را پیدا کنید که این مفهوم را لمس کرده باشند و نه آن که جملات کتاب‌ها را از بر برایتان بخوانند.

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

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

هفته پیش من جایی بودم و در مورد پروژه‌ای مشاوره می‌دادم. تأکید من بر این بود که می‌شود سیستم را بدون بازنویسی، با Refactoring در سطح مطلوبی بازسازی کرد. یکی از دوستان که در جلسه بود گفت: فکر می‌کردم که شما به جای RUP متمایل به XP method شده‌اید و من هم هاج واج نگاه به همکارم کردم. تأکید من برگرفته از تجربه و نیز تکنیکی بود که در یکی از روش‌ها تجربه کرده بودم و نه اینکه علاقه‌ای به اسامی داشته باشم.

سالها علاقه من بررسی و به کارگیری تکنیک‌هایی است که در متدولوژی‌های مختلف وجود داشته و همیشه این موضوع ناراحتم می‌کند که چرا ما که دریاهای به عمق یک سانت (شاید کمتر) هستیم، درباره این موضوعات مطالعه نمی‌کنیم و چرا بدون مطالعه به خودمان اجازه اظهار نظرهای عجیب و غریب می‌دهیم.

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

اگر به موضوع تفاوت متدولوژی از دیدگاه کاربردی علاقمند هستید پیشنهاد می‌کنیم که حتما مقاله The New Methodoloyرا از آقای مارتین فولر مطالعه نمایید.

Share