امروز یکی از دوستان خوبم زنگ زد و گفت که RUP بهتر است یا Agile؟این سوال بهانهای شد تا نوشته زیر را آماده کنم.
واقعیت امر این است که فرآیندها و متدولوژیهای تولید نرمافزار هر یک دارای نکات مثبت و منفی خاص خود هستند و هر کدام با شرایطی، میتوانند تجارب دیگران به ما منتقل نمایند تا ما چرخ را دوباره اختراع نکنیم و از یاد نبریم که نباید مسخ آنها شویم و خلاقیتمان را نادیده گرفته و خودباوریمان را از دست بدهیم. اما مشکل عمده ما در ایران این است که خیلی مدگرا هستیم و دانستههای ما “ناشی از شنیدهها و برداشتهای شخصی است” [این جمله مال من نیست] و نه بر اساس تجربه و مطالعه.
من در معرفی یکی از دورههایم متنی را آماده کردم که فکر کنم بد نباشد آن را اینجا بیاورم:
“در جامعه نرمافزاری، هر از چند گاهی، تکنولوژی یا روشی مد روز میشود و این جامعه ذاتاً نوگرا را چون جاذبههای عجیب به سمت خود میکشاند، بدون آن که لزوم استفاده و مفاهیم بنیادی آن به این جامعه منتقل گردد، مدتی به کار گرفته میشود و پس از مدتی به دلایل مختلف از مد خارج شده و با مدی دیگر جایگزین میگردد. یکی از مهمترین دلایلی که باعث از مد خارج شدن این ابزارها میگردد، برداشت نادرستی است که علاقمندان و استفادهکنندگان از آنها دارند و دلیل دیگر، کاربری نادرست آنها در کنار بیتجربگی استفادهکنندگان و مهمتر از همه عدم وجود توانمندی لازم جهت سادهسازی و بومیسازی آنها میباشد.
RUP نیز از این قاعده مستثنی نیست. فرآیند تولید یکپارچه شرکت IBM به دلایل مختلفی در جامعه نرمافزاری مد شد و به دلایلی که بخشی از آن را برشمردیم، از مد روز خارج شد، بدون آن که فلسفه و نگرش این فرآیند به کاربران آن منتقل شود.
هدف این نیست که از این فرآیند دفاع نماییم و آن را معجزه قرن بیست و یکم بنامیم، بلکه نکتهای که بدان پافشاری مینماییم این است که فلسفه و نگرش درون RUP نشأت گرفته از تمامی روشهایی بوده است که تا آن زمان ظهور کردهاند و هر یک به طریقی سعی در حل مشکلات تولید نرمافزار داشتهاند. فارغ از این که این نام چه باشد – FDD،RUP، ICONIX، Agile، XP – آن چه که جامعه نرمافزاری باید فرابگیرد، فلسفه و نگرش و تکنیکهایی است که در این روشها به صورت ضمنی وجود دارد.”
به عنوان مثال مفهوم معماری. در روشهای مدرن، معماری به عنوان یکی از مبانی اصلی شمرده میشود (the architecture is first). با این که همه در کوی و برزن این نام را بر سر زبان میآورند، واقعاً به اندازه انگشتان یک دست نمیتوانید متخصصینی را پیدا کنید که این مفهوم را لمس کرده باشند و نه آن که جملات کتابها را از بر برایتان بخوانند.
من جایی درس میدادم (این موضوع مربوط به خیلی سال پیش است) و شروع به تدریس مفهوم معماری، اهمیت و کاربردهایش کردم. انتهای جلسه، یکی از حاضران گفت: استاد ببخشید، من تا قبل از جلسه امروز میخواستم یک طراح شوم، از همین الان تصمیم گرفتهام که یک معمار شوم ما بیشتر به اسامی و القاب علاقهمندیم تا نکته مطلب.
یا مفهوم روشهای تکراری-افزایشی. یکی از دوستان عزیزم که دیگر اکنون در ایران نیست، میگفت من پس از سالها پروژه خراب کردن! فهمیدم که مفهوم و هدف از روشهای تکراری-افزایشی چیست. بعد همه ادعای استفاده از این تکنیک را دارند و وقتی خوب دقت میکنید میبینید روشهای آبشاری را تحت نامهای مدرن در حال انجام هستند. وحشتناکتر آن که بیدانشی و بیتجربگی باعث شده خیلیها فکر کنند که RUP مجموعه مستندات است و آن را با کتابهای آیین نگارش اشتباه میگیرند.
سخن قشنگ دیگری که از همه میشنوید این است که RUP برای پروژههای بزرگ است. حتی این جمله هم ناشی از مطالعه نکردن و بیاطلاعی و تحت تأثیر شنیدهها بودن است.
هفته پیش من جایی بودم و در مورد پروژهای مشاوره میدادم. تأکید من بر این بود که میشود سیستم را بدون بازنویسی، با Refactoring در سطح مطلوبی بازسازی کرد. یکی از دوستان که در جلسه بود گفت: فکر میکردم که شما به جای RUP متمایل به XP method شدهاید و من هم هاج واج نگاه به همکارم کردم. تأکید من برگرفته از تجربه و نیز تکنیکی بود که در یکی از روشها تجربه کرده بودم و نه اینکه علاقهای به اسامی داشته باشم.
سالها علاقه من بررسی و به کارگیری تکنیکهایی است که در متدولوژیهای مختلف وجود داشته و همیشه این موضوع ناراحتم میکند که چرا ما که دریاهای به عمق یک سانت (شاید کمتر) هستیم، درباره این موضوعات مطالعه نمیکنیم و چرا بدون مطالعه به خودمان اجازه اظهار نظرهای عجیب و غریب میدهیم.
سخن آخر:بر اساس خصوصیات پروژه، محیط انجام، تیم تولید و چندین پارامتر دیگر شما روش انجام کارتان را باید انتخاب کنید، مهم نیست که اسمش چه باشد. با مطالعه از تجربه دیگران در حوزه متدولوژی آشنا شوید و این مطالعات کمک میکند تا تفکرتان را نسبت به تولید نرمافزار عوض کنید.
اگر به موضوع تفاوت متدولوژی از دیدگاه کاربردی علاقمند هستید پیشنهاد میکنیم که حتما مقاله The New Methodoloyرا از آقای مارتین فولر مطالعه نمایید.
نیوشا
۱۸ مهر ۱۳۸۵ در ۰۰:۰۰با درود و تشکر از زحمات شما و همکاران ارجمندتان:
من فکر می کنم یکی از بزرگترین مشکلات ما این است که بجای بهره گیری علمی و تجربی از تکنولوژی ها، ابزارها و متدولوژی ها (که هر روز نیز بر تعدادشان اضافه می شود) و استفاده از آنها در عمل و پروژه هایمان، در سطح فرهنگ لغتی که به ما ارائه می دهند باقی می مانیم و این امر می تواند نتیجه عدم مطالعه و بروز رسانی اطلاعات ما باشد.
نکته دیگر این است که با گذشت سالها از پیدایش زبان های مدلسازی و متدولوژی ها، هنوز عده ای تفاوت میان آنها را نمی دانند و این نیز می تواند از اثرات مطالعه در عمق محدود یا حتی عدم مطالعه و بسنده کردن به شنیده ها باشد و جالب است بدانیم که اغلب افراد این موارد را بیشتر شنیده اند تا دیده باشند یعنی هیچگاه در عمل با آنها مواجه نشده اند.
علی
۱۹ مهر ۱۳۸۵ در ۰۰:۰۰ُسلام خسته نباشید واقعا وبلاک توپی دارید
یه خواهش داشتم اگه امکان داره در بار متدلوژی Agile یه توضیحی بدید
حسین
۵ مهر ۱۳۸۸ در ۰۰:۰۰مطلب بسیار مفیدی بود .
البته درباره ی agile کتاب پرسمن نسخه ۶ توضیحاتی داده که فکر کنم به درد بچه ها بخوره . بخصوص که این روش در جاهایی مانند ایران که همه چیز عجله ای و فشرده قراره اجرا و تموم بشه کارکرد مطلوبی داره
شیوا
۲۶ مهر ۱۳۸۹ در ۰۰:۰۰موفق باشید
پوریا
۲۳ مهر ۱۳۹۲ در ۰۰:۰۰خب آخرش نگفتین کدومش بهتره RUP یا Agile 😛
شوخی کردم
خیلی عالی بود ممنون