چکیده
چه چیز میتواند یک پروسه تولید نرمافزار را توصیف کند؟ آیا منظور از پروسه، آماده سازی نرم افزار صرفاً برای ارائه در بازار است؟ مسلماً در هر کاری وجود یک سامانه و فرایند کاری ضروری است؛ ولی چه چیزی میتواند موجب ایجاد سرعت و کیفیت در فرایند تولید یک نرمافزارشود؟ لزوماً طراحی و پیادهسازی یک فرایند یکپارچه و منطقی میتواند چنین نتیجهای در بر داشته باشد. بدین منظور امروزه از روشی استفاده میشود که اصطلاحاً RUP نامیده میشود. به حداقل رساندن حجم پروسه تولید یک نرمافزار همزمان با حفظ کیفیت و صرفهجویی در زمان از مهمترین ویژگیهای این روش میباشند. معمولاً برای یک شرکت تولید نرمافزار، سرعت عمل به موقع برای پاسخگویی به تقاضا و شرایط اجتماعی اهمیت دارد، اما گاهی این شتابزدگی سبب فدا شدن کیفیت میگردد. RUP با ارائه یک چارچوب منطقی علاوه بر تعیین زمانبندی مناسب، کیفیت مورد نظر تولید کننده و استفاده کننده نرمافزار را تأمین مینماید. در این مقاله ضمن مروری بر RUP به عنوان روش یکپارچه تولید نرمافزار، قابلیتهای آن در افزایش سرعت تولید نرمافزار و حفظ کیفیت آن برشمرده میشوند.
کلیدواژه : RUP؛ UML؛ فرایند یکپارچه رشنال؛ Rational Unified Process؛ Unified Modeling Language
1- مقدمه
یک پروسه چابک، پروسهای است که همیشه آماده در آغوش کشیدن درخواستهای جامعه بوده و این درجه از سازگاری را دارا باشد. بنابراین منظور از سرعت عمل، فقط کاستن از حجم پروسه تولید نرمافزار یا سرعت ارائه آن به بازار نیست؛ بلکه منظور، انعطافپذیری و حفظ کیفیت است. مطلبی که در این مقاله قصد توضیح آن را داریم این است که RUP 1 ساختاری پروسهای (چیو 2000) است که امکان انعطافپذیری را برای تولیدکنندگان نرمافزار فراهم میآورد.
منظور از RUP چیست؟ در این مقاله از چند منظر به RUP خواهیم پرداخت:
RUP یک پروسه تولید نرمافزار است.
RUP مجموعهای از تجربیات بسیار عالی تولید نرمافزار را که در عمل با آنها برخورد شده است، در خود دارد.
RUP همانند یک محصول نرمافزاری به بازار ارائه شده و به فروش میرسد با این تفاوت که RUP اولین ساختار تولید نرمافزار را ارائه داده و گام نخست را در این زمینه برداشته است.
2- RUP چیست؟
با پیشرفت تکنولوژیهای مرتبط با کامپیوتر، نیاز هر چه بیشتر به گسترش علم نرمافزاری نیز احساس میشد که با پیدایش متدولوژیهای همانند SSADM 2 و روش آبشاری3 (چیو 2000) آغاز شد. در ابتدا، این روشها مناسب بود و جوابگوی نیازهای آن زمان بودند ولی با افزایش دادهها و پیدایش مفاهیمی همچون شبکه، وب و غیره دیگر کارآیی لازم را جهت پیادهسازی و هدایت پروژههای نرمافزاری نداشتند. پس مفاهیم برنامهنویسی شیءگرا پا به عرصه وجود گذاشتند و در سال 1991 بطور جدی مورد مطالعه و بحث قرار گرفتند. استفاده از این روشها و متدهای برنامهنویسی، قدرت و انعطاف بسیاری را به برنامهها داد و شرکتهای نرمافزاری توانستند با کاهش هزینهها و بهینهسازی کدهای خود، نرمافزارهای قویتری را به بازار عرضه کنند ولی این روش جدید نیز نیاز به مدیریت و یکپارچگی داشت. پس روشها و متدولوژیهای جدیدی مطرح شد که شامل Booch، OMT، OSE و ... میباشند. در سال 2000 شرکت Rational روشی را تحت عنوان RUP مطرح ساخت (گروه کاسمیک 2003ب) که بعد از روش MSF شرکت مایکروسافت به دنیای نرمافزار عرضه شد و امروزه از طرفداران بسیاری برخوردار است. فرایند یکپارچه Rational در اصل یک متدولوژی است که در جهت کنترل و انجام پروژههای نرمافزاری در نظر گرفته شده است. در اصل این چارچوبی در جهت انجام صحیح و موفق پروژههای نرمافزاری میباشد که کلیه مراحل انجام یک پروژه که با معماری و آنالیز سازمان شروع شده و به تست نرمافزار و ارائه Gold Release ختم میشود را در بر میگیرد (گروه کاسمیک 2003 الف).
چرا RUP را یک فرایند یکپارچه میگویند؟ به سه علت RUP را یکپارچه مینامند:
این متدولوژی از یکپارچهسازی سه متدولوژی معروف دیگر بوجود آمده است که شامل Booch، OMT و OSE میباشد.
از UML4 در جهت کارهای خود استفاده میکند. در واقع میتوان گفت UML خود ثمره RUP میباشد و این خود بسیار خوب است که متدولوژیی با خودش گسترش یابد (گروه کاسمیک 2003الف). مفاهیمی از قبیل Object، Class و ... مفاهیم ساده و ثابتی هستند ولی قبلاً متدولوژیها علامتهای خاصی داشتند که اکنون همه آنها یکسان شدهاند.
در داخل RUP یک چارچوب تولید نرمافزار است که ما آنرا برای سازمان و پروژه خود بومی میکنیم و میتوان گفت که در واقع یک قالب فرایند5 است.
3- خصوصیات RUP چیست؟
RUP مبتنی بر نوعی معماری است که به اجزاء اصلی میپردازد ولی طراحی به جزئیات نیز وارد میشود. همچنین میتوان گفت معماری یکسری اجزا و ارتباط بین آنها است که سیستم را میسازد و ما را به سمت توسعه مؤلفهمحور6 راهنمایی میکند.
ویژگی Usecase Driven: یکی از مشکلات OOA این بود که میگفتند با هر روشی تبدیل و کار کنند و بعد بتوان آنرا به شیءگرا تبدیل کرد. یعنی مثلاً پروژه SSADM را طراحی کرده و بعداً به شیءگرا تبدیل نمود. ولی آن عقیده اشتباه بود و حتماً تحلیل شیء گرا باید صورت بگیرد. خصوصیت خوب شیءگرا که در دیگر روشها نمیباشد این است که نوتاسیونی که استفاده میشود (بوچ، رامباق و جاکوبسون 1999) در همه مراحل یکی است یعنی مفاهیمی از قبیل شیء، کلاس، روابط کلاسها و ... در تمامی مراحل یکی است. اهمیتی که Usecase Driven دارد این است که با زبان مشتری نوشته میشود. مشتری میتواند آنرا بفهمد و بسیار مناسب برای تشخیص نیازمندیهای سیستم میباشد. در بخش تحلیل و طراحی از روی Usecaseها تحلیل و طراحی انجام میدهیم و مسائلی مانند مدیریت پروژه نیز تحت تاثیر Usecaseها هستند که ما آنها را دستهبندی کرده و مدیریت میکنیم. همچنین راهنماهای سیستم هم تحت تاثیر Usecaseها (کراچتن 2000، 298) ایجاد میشوند.
ویژگی Incremental: به معنی آن است که پروژه بصورت چهار مرحله حلقهای جلو میرود ولی در هر مرحله چرخش یک دسته از Usecaseها کامل و آماده استفاده میشود و کلیه این کارها در 9 جریان کار7 که در شکل 1 مشخص شده بود، قابل مشاهده است.
4- دیدگاه اولیه درباره RUP
دیدگاهی که RUP بر اساس آن طراحی شده، به گونهای است که محدوده وسیعی از اهداف را پوشش دهد تا ضمانت اجرایی جهت انطباق با موارد زیر حاصل شود (کراچتن 2003):
ابعاد پروژه
حوزه کاربردی برنامه (سیستمهای تجاری یا سیستمهای فنی)
زمینههای تجارت (توسعه خانگی، توسعه محصولات، فروشندگان نرمافزار مستقل، توسعه قراردادی).
همانند هر ساختار پروسه دیگری، RUP نیز روش سیستماتیکی را برای به دست آوردن، سازماندهی و ارائه راهکارهای مهندسی نرم افزار در اختیارتان قرار میدهد. RUP برای سازماندهی راهکارها، بر یک مدل پروسه ساده و کاملاً زیربنایی استوار شده است که توضیح این امر در قالب چند مقاله یا کتاب نمیگنجد.
با این وجود، ساختار پروسه مزبور را نمیتوان به یک ظرف خالی تشبیه نمود. این ساختار از قبل توسط حجم عظیمی از پروسههای راهکاری که قبلاً در پانزده سال گذشته توسط ملیتهای مختلف تحصیل شده است و با شرکت Rational ارتباط داشتهاند (افرادی که قبلاً این شرکت آنها را به خود جذب کرده و برخی از شرکای این شرکت نظیر IBM ، HP و BEA (کراچتن 2003)) انباشته گردیده است. RUP مجموعه محدود و بستهای نیست که به منظور کاربردهای عمومی منتشر شده باشد و پاسخ یا راهحل تمامی مشکلات توسعه نرمافزاری را دربرگیرد؛ بلکه ساختار RUP ساختار بازی است که به منظور استنتاج باید شاخههای آنرا دنبال کنید و این ساختار سالانه دوبار روزآمد میگردد. ساختار RUP تصفیه شده است و پشتیبانی ابزاری و مندرجات آن نیز توسعه یافتهاند.