RUP بهتر است يا Agile؟

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

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

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

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

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

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

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

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

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

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

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

نظرات (5)

wave
  • نیوشا

    18 مهر 1385 در 00:00

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

    پاسخ
  • علی

    19 مهر 1385 در 00:00

    ُسلام خسته نباشید واقعا وبلاک توپی دارید
    یه خواهش داشتم اگه امکان داره در بار متدلوژی Agile یه توضیحی بدید

    پاسخ
  • حسین

    5 مهر 1388 در 00:00

    مطلب بسیار مفیدی بود .
    البته درباره ی agile کتاب پرسمن نسخه 6 توضیحاتی داده که فکر کنم به درد بچه ها بخوره . بخصوص که این روش در جاهایی مانند ایران که همه چیز عجله ای و فشرده قراره اجرا و تموم بشه کارکرد مطلوبی داره

    پاسخ
  • شیوا

    26 مهر 1389 در 00:00

    موفق باشید

    پاسخ
  • پوریا

    23 مهر 1392 در 00:00

    خب آخرش نگفتین کدومش بهتره RUP یا Agile 😛

    شوخی کردم

    خیلی عالی بود ممنون

    پاسخ

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