RUP (آر.یو.پی) چیست؟
آر.یو.پی چیست؟
این فرآیند یک روش نظاممند برای تخصیص کارها و مسئولیتها در یک تیم توسعه نرمافزار ارائه میدهد و هدف آن تولید نرمافزار بصورت بهینه و با کیفیت بالاست که بتواند نیازهای کارفرما را تحت یک برنامه زمانی مشخص و با بودجه قابل پیشبینی برآورده سازد. آر.یو.پی بهرهوری تیم تولید نرمافزار را با فراهم نمودن دسترسی تمام افراد تیم به یک پایگاه دانش سهلالوصول به همراه راهنماها، الگوها و ابزارهای کمکی برای همه فعالیتهای حیاتی توسعه، افزایش میدهد. از آنجا که تمام افراد به منابع یکسانی دسترسی دارند، لذا دید مشترکی برای توسعه نرمافزار دارند.
آر.یو.پی امکان استفاده موثرتری از زبان یکپارچه مدلسازی (UML) را فراهم میسازد .
به کمک تکنیک های آر.یو.پی بخشهای عمدهای از فرآیند تولید نرمافزار به طور خودکار انجام شده و همچنین استفاده از مدلهای تولید شده در فرآیندهای گذشته در پروژههای جاری به سادگی امکانپذیر است. این فرآیند با موقعیتهای مختلف تطبیق یافته و برای سازمانهای بزرگ یا حتی کوچک تولید و توسعه نرمافزار قابل استفاده است .
آر.یو.پی کلیه مراحل انجام یک پروژه شامل تحلیل سیستم، برنامهریزی، بررسی ریسکها، تولید و تست نرمافزار را در بر میگیرد و چهارچوبی در جهت انجام صحیح و موفق پروژههای نرم افزاری فراهم میسازد .
مهمترین مزایای آر.یو.پی
- تسهیل توسعه تکراری نرمافزار
- مدیریت نیازها
- مدل کردن تصویری نرمافزار
- بازبینی کیفیت نرمافزار
- کنترل تغییرات در نرمافزار
- امکان استفاده از طریق وب
ویژگیهای آر یو پی
1- بر اساس یوزکیسها عمل میکند .
2- اساس آن طراحی معماری سیستم است و سیستم تولید شده از معماری استواری برخوردار خواهد بود .
3- مبتنی بر تکرار است .
4- قابلیت استفاده مجدد را فراهم میسازد زیرا پروژه به قطعات کوچک تقسیم و انجام میشود .
مراحل آر.یو.پی
مرحله ۱ – آغازین
پایه پروژه و ابعاد آن در این مرحله مشخص میشوند. در این مرحله پروژه به طور کلی بررسی شده و هزینه و درآمد ناشی از آن محاسبه میگردد. در این مرحله برداشتی اجمالی از ابعاد پروژه بدست میآید. در انتهای این مرحله تصمیم برای انجام یا عدم انجام پروژه اتخاذ خواهد شد و تعهد لازم از کارفرما تهیه میشود .
مرحله ۲ - تحلیل پیچیدگی
در این مرحله جزئیات بیشتری از نیازهای سیستم را جمعآوری شده و درک بهتری از پروژه صورت میپذیرد. بدین ترتیب تحلیل و طراحی سطح بالایی از سیستم صورت گرفته پایه معماری اولیه سیستم بنا میشود. در این مرحله نقشه ساخت سیستم تولید شده است .
این مرحله با پرسشهایی نظیر: در حال ساخت چه سیستمی هستیم؟ چه چیزهایی پروژه را به مخاطره میاندازد و چه ریسکهایی برای انجام آن وجود دارد. هر چه ریسکها بیشتر و بزرگتر باشند، دقت بیشتری در انجام پروژه باید صورت گیرد .
بررسی ریسکها
1- ریسکهای مرتبط با نیازمندیهای سیستم
هدف رسیدن به سیستمی است که خواستههای کاربر را به درستی انجام دهد. مهم است که این نیازمندیها به درستی درک شده باشند. در اینجا استفاده صحیح از یو.ام.ال میتواند بسیار موثر باشد. یوزکیسها ابزارهای مهمی هستند زیرا تقابل کاربر با سیستم را بطور دقیق مشخص میکنند و اساس ارتباط کارفرما با تولید کننده نرمافزار هستند. باید مهمترین و پرخطرترین یوزکیسها به طور مشخص تعیین شوند. هر چه بیشتر با کاربران نهایی سیستم مذاکره شود نتایج بهتری حاصل خواهند گشت. لازم است نمونههای اولیه برای قسمتهای پیچیده و حیاتی یوزکیسها باید ساخته شوند .
2- ریسکهای تکنولوژیکی
از خود میپرسیم، آیا تکنولوژی لازم برای ساختن این سیستم را در اختیار داریم؟ باید نمونههای اولیهای از سیستم ساخته شده و عملکرد آنها تحت سیستم پیشبینی شده بررسی گردد. طراحی معماری سیستم در این مرحله صورت میگیرد. باید اجزا تشکیل دهنده سیستم، روش ساخت یا تهیه و طریقه اتصال آنها به یکدیگر مشخص شوند. بهتر از قسمتهایی که تغییر آنها سختتر (یا غیرممکن) است در این فاز مد نظر قرار گرفته شوند تا در صورت عدم هماهنگی در همین مرحله تصمیمات مناسب اتخاذ شوند .
طراحی سیستم باید بگونهای باشد که در آینده تغییرات و توسعه آن قابل انجام باشد. باید یوزکیسها را بطور دقیق بررسی کنیم تا مسائلی که ممکن است طراحی سیستم را پیچیدهتر کنند به طور واضح مشخص گردند .
3- ریسکهای منابع انسانی
برخی اشتباهات برنامهنویسان به سختی قابل کشف و حل هستند و رفع آنها مستلزم صرف وقت و هزینه بالایی است . آموزش نقش مهمی در این راستا بازی میکند چرا که پیشگیری بهتر از درمان است. اگر این امکان فراهم شود که برخی از اعضاء که در مراحل تولید پروژههای مهمتر نقش داشتهاند و تجربه بیشتری دارند، هر چند برای مدتی کوتاه در پروژه همکاری کنند ریسک مشکلات ناشی از نیروی انسانی تا حد زیادی کاهش خواهد یافت .
4- ریسکهای سیاسی
هرچند در نگاه اول ممکن است عجیب به نظر برسد، ولی با رشد روزافزون رایانهها و سیستمهای مبتنی بر رایانه امکان بروز تعارض میان سیستم نرمافزاری ساخته شده و مسائل امنیتی وجود دارد. . بهتر است در مورد یوزکیسهایی که با مردم جامعه یا سازمانها تعامل خواهند داشت در همین مرحله سیاستهای واضحی مشخص گردد .
هنگامی که بتوانیم مدت زمان لازم برای تولید هر یوزکیس را تخمین بزنیم و تمام ریسکهای مهم بررسی و راهحلهای مقابله با آنها برنامهریزی شده باشند، میتوان گفت مرحله دوم خاتمه یافته است .
مرحله ۳ – ساخت
این مرحله به روش افزایش-تکرار صورت میگیرد. به این معنی که بر خلاف روشهایی مانند توسعه آبشاری که ممکن است در برخی زمانها بعضی از اعضای تیم به دلیل انتظار برای دریافت نتیجه گروهی دیگر از اعضای تیم بیکار بمانند، در آر.یو.پی اساس کار بر تولید قطعات سیستم به صورت مرحله به مرحله است و در هر مرحله عملکرد قطعه تولید شده بهبود مییابد. لذا پس از به جریان افتادن فرآیند اعضای تیم بیکار نمانده و به افزایش حجم و دقت عملکرد قطعه تولیدی قبلی خود میپردازند . بطور خلاصه نتیجه این فاز کدنویسی و ایجاد نرم افزار است .
مرحله ۴ – انتقال
مرحله نهایی که شامل تست آزمایشی، بهبود عملکرد و آموزش کاربران است .
با توجه به رشد روزافزون سیستمهای مبتنی بر کامپیوتر، تنوع و گستردگی مسائل در حوزه کامپیوتر نیز به سرعت رشد کرده است. به عبارت دیگر افزایش نیازهای کاربران باعث شده است تا حوزه استفاده از کامپیوتر به سیستمهای بزرگ و پیچیده گسترش یابد. بنابراین تحلیل، طراحی و پیادهسازی اینگونه سیستمهای بزرگ و پیچیده بدون استفاده از ابزار مناسب کار بسیار مشکل و همراه با خطا و وجود ناسازگاری در سیستم است. کمبود نیروی انسانی متخصص کامپیوتر، هزینههای سنگین آنالیز نیازها، طراحی مشخصات سیستم، پیادهسازی، آزمایش و نگهداری نرمافزار از عمده عواملی هستند که همواره متخصصین را به ساخت ابزارهایی جهت پر کردن خلاء نیروی انسانی متخصص و کاستن هزینهها، تشویق و ترغیب نمودهاند. البته استفاده از ابزارهای CASE ( ) به هیچ وجه به معنی حذف خلاقیتهای فردی انسان در طراحی نرمافزار نیست بلکه این ابزارها تنها کارهای تکراری را حذف کرده و از خطاهای ناخواسته و ناسازگاریها در سیستم جلوگیری مینمایند.
بطور کلی مهمترین اهداف استفاده از ابزارهای(CASE: Computer Aided Software Engineering)عبارتند از :
• تقلیل نیاز به متخصص کامپیوتر
حضور متخصصین کامپیوتر در تمامی مراحل چرخه حیات سیستم لازم و ضروری میباشد. بدلیل کمبود نیروهای متخصص میبایست از ابزارهایی استفاده شود که این نیاز را به حداقل برساند.
• تقلیل زمان
یکی از مؤلفههای مهم ساخت نرمافزار، زمان است، لذا میتوان با استفاده از ابزارهای CASE مدت زمان ساخت سیستم را کاهش داد.
• تقلیل هزینه
بر اثر بکارگیری ابزارهای CASE ، نیاز به نیروی انسانی متخصص و زمان صرف شده برای انجام کارهای تکراری کاهش مییابد و منجر به کاهش هزینههای ساخت و توسعه نرمافزار میشود.
• ایجاد هماهنگی بین اعضاء تیم پروژه
بروز ناهماهنگی بین اعضاء تیم پروژه باعث کندی کار و بروز اشتباهات فراوان خواهد شد و با استفاده از ابزارهای مناسب میبایست اعضاء تیم را ملزم به پیروی از یک متدلوژی خاص نمود.
• تقلیل اشتباهات و خطاها (ارتقاء کیفیت)
جبران اشتباهات و خطاها در هر یک از مراحل چرخه حیات سیستم باعث صرف زمان و هزینه زیادی میگردد. یکی از مهمترین دلایل استفاده از ابزار CASE رفع خطا و جلوگیری از بروز ناسازگاری در سیستم میباشد.
عموماً سیستمهای CASE را به سه دسته اصلی زیر تقسیم میکنند.
الف- ابزارها (Tools)
این ابزارهای کمکی بصورت انفرادی وظایفی از پروسه تولید نرمافزار مانند کنترل سازگاری یک طراحی، ترجمه برنامه، یا مقایسه نتایج آزمون و غیره را مستقل از یکدیگر پشتیبانی میکنند. ابزارها ممکن است همه منظوره باشند یا فقط برای یک وظیفه مشخص بوجود آمده باشند.
ب- Workbenches
این سیستمهای کمکی، فازها یا فعالیتهایی از پروسه تولید نرمافزار مانند تحلیل نیازها و خواستهها، طراحی، و یا آزمون نرمافزار را پشتیبانی میکنند. بصورت معمول این سیستمها مجموعهای از "ابزارها " هستند که بعضا با یک درجه کم یا زیاد با یکدیگر مجتمع شدهاند.
ج - Environments
این نوع سیستمها، تمام یا بخش عمدهای از پروسه تولید نرمافزار را پشتیبانی میکنند. آنها معمولاً شامل چند نوع Workbench مختلف هستند که به طریقهای با یکدیگر مجتمع شدهاند.
همانطور که در قسمت قبل اشاره گردید Workbench ، مجموعهای از ابزارهای مجتمع شده است که برای فاز ویژهای از پروسه تولید نرمافزار مانند آنالیز، طراحی، پیادهسازی، و آزمایش سیستم استفاده میشود.
بطور کلی این نوع ابزارها از حیث عملکرد به چهار گروه اصلی زیر تقسیم میشوند که در ادامه هر یک از آنها بطور مختصر شرح داده میشود.
• Programming Workbench
• Analysis and Design Workbench
• Testing Workbench
• Meta-Case Workbench
یادآوری میگردد که این بدین معنی نیست که اینها تنها Workbench هایی هستند که برای پشتیبانی تولید نرمافزار مورد نیاز هستند. با توجه به نوع نرمافزار تولید شده و دامنه کاربری، انواع CASE Workbench زیر نیز ممکن است استفاده شود.
• Cross-development Workbench
این نوع Workbench تولید نرمافزار روی کامپیوتر متفاوت از کامپیوتری که نرمافزار تولیدی روی آن اجرا خواهد شد را پشتیبانی میکند.
• Configuration Management (CM) Workbench
این نوع Workbench مدیریت پیکربندی سیستم مانند مدیریت نسخه/ گونه (Version)، مدیریت دنبال کردن تغییرات ، و غیره را پشتیبانی میکند.
• Documentation Workbench
این نوع Workbench تولید گزارشات با کیفیت بالا را پشتیبانی میکند.
• Project Management Workbench
این نوع Workbench مدیریت فعالیتهای پروژه مانند برنامهریزی، زمانبندی و تخمین هزینه را پشتیبانی میکنند.
گروهی از Workbench ها برای سهولت کار با ابزارهای 4GL ، ارائه شدهاند. این دسته از Workbench ها علیالعموم توسط شرکتهای عرضه کننده 4GL تولید شدهاند. بعنوان نمونه میتوان به Oracle CASE ، و PredictCase (مربوط به Adabas/ Natural) اشاره نمود. مجموعه ابزارهایی که در یک 4GL Workbech مجتمع شدهاند بطور مختصر عبارتند از :
• ابزارهای تولید مدل داده مفهومی (Conceptual Data Model)
• ابزارهای تولید مدل داده فیزیکی (Physical Data Model)
• ابزارهای کنترل و احیاء خطا در ارتباطات (Relationship Error Recovery)
• ابزارهای تولید بانک اطلاعاتی (Database Generation)
• ابزارهای تولید فرمهای اطلاعاتی برای یک زبان خاص (User Interface Design)
• ابزارهای تولید مستندات (Document Generation)
• ابزارهای مهندسی معکوس
ابزارهای 4GL معمولاً میتوانند از روی مدل مفهومی، مدل داده فیزیکی و سپس بانک اطلاعاتی را تولید کنند. برخی از آنها چندین نوع DBMS را پشتیبانی میکنند و برخی دیگر میتوانند فرمهای واسط کاربر را برای چندین نوع زبان برنامهنویسی پشتیبانی نمایند.
از مشخصههای بارز این نوع ابزارها، تولید مستندات میباشد که در هر مرحله قادر هستند از جزئیات مدل، گزارشات منسجم تولید نمایند. این گزارشات در تمامی مراحل فوق قابل تولید میباشد.
از دیگر خصیصههای این نوع ابزارها، مهندسی معکوس میباشد که قادر هستند از یک پایگاه اطلاعاتی جزئیات تمامی مدل را استخراج نمایند. این اطلاعات برای بهبود، توسعه و یکپارچه نمودن بانکهای از انواع مختلف بسیار مفید میباشد. از نمونههای این نوع ابزار میتوان به Power Designer اشاره نمود.