در فرهنگ مهندسی نرم‌افزار، **فرایند یکپارچهٔ گویا** یا **آریوپی** (به انگلیسی: Rational Unified Process و به اختصار: RUP) نام یک فرایند توسعهٔ نرم‌افزار است که شرکت رشنال آی‌بی‌ام آن را تدوین کرده‌است. آی‌بی‌ام این شرکت را در سال ۲۰۰۳ خرید و هم‌اکنون توسعهٔ این فرایند و ابزارهای آن را به‌عهده دارد. به‌طور خلاصه آریوپی ارائه دهنده مجموعه‌ای از روش‌ها برای کمک به مدیریت دقیق بر روی مراحل طراحی و پیاده‌سازی نرم‌افزارهای رایانه‌ای است. این فرایند بستر مناسبی برای تولید و توسعه نرم‌افزار در اختیار تحلیل‌گران و طراحان سیستم‌های رایانه‌ای قرار می‌دهد.

آریوپی چیست؟
------------

این فرایند یک روش نظام‌مند برای تخصیص کارها و مسئولیت‌ها در یک تیم توسعه نرم‌افزار ارائه می‌دهد و هدف آن تولید نرم‌افزار به صورت بهینه و با کیفیت بالاست که بتواند نیازهای کارفرما را تحت یک برنامه زمانی مشخص و با بودجه قابل پیش‌بینی برآورده سازد. آر یو پی بهره‌وری تیم تولید نرم‌افزار را با فراهم نمودن دسترسی تمام افراد تیم به یک پایگاه دانش سهل‌الوصول به همراه راهنماها، الگوها و ابزارهای کمکی برای همه فعالیت‌های حیاتی توسعه، افزایش می‌دهد. از آنجا که تمام افراد به منابع یکسانی دسترسی دارند، لذا از دید مشترکی برای توسعه نرم‌افزار برخوردار هستند.

آریوپی امکان استفاده مؤثرتری از زبان یکپارچه مدلسازی (UML) را فراهم می‌سازد (دقت شود که در عین حال آریوپی و یوام‌ال کاملاً مستقل از یکدیگر هستند و نباید آن‌ها را با هم یکی فرض کنیم). به کمک تکنیک‌های آریوپی بخش‌های عمده‌ای از فرایند تولید نرم‌افزار به‌طور خودکار انجام شده و همچنین استفاده از مدل‌های تولید شده در فرایندهای گذشته در پروژه‌های جاری به سادگی امکان‌پذیر است. این فرایند با موقعیت‌های مختلف تطبیق یافته و برای سازمانهای بزرگ یا حتی کوچک تولید و توسعه نرم‌افزار قابل استفاده‌است.

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

چرا آریوپی را *یکپارچه* نامیده‌اند:

1. این فرایند از ترکیب و یکپارچه‌سازی چند فرایند و متدولوژی دیگر شامل Booch، OMT و OSE ایجاد شده‌است.
2. از زبان یکپارچه مدلسازی (UML) به‌طور مؤثری بهره می‌گیرد.
3. مفاهیمی نظیر کلاس و شیء در متدهای قبلی علائم خاص و مختلفی داشته‌اند حال آنکه در آریوپی یکسان شده‌اند.

مهم‌ترین مزایای آریوپی
----------------------

* تسهیل توسعه تکراری نرم‌افزار
* مدیریت نیازها
* مدل کردن تصویری نرم‌افزار
* بازبینی کیفیت نرم‌افزار
* کنترل تغییرات در نرم‌افزار
* امکان استفاده از طریق وب

ویژگی‌های آریوپی
----------------

* بر اساس موردهای کاربری ( موردهای استفاده ) عمل می‌کند.(نیازهای کاربر از طریق موارد کاربری بیان می‌شود)
* اساس آن طراحی *معماری سیستم* است و سیستم تولید شده از معماری استواری برخوردار خواهد بود.
* مبتنی بر تکرار است.
* قابلیت استفاده مجدد را فراهم می‌سازد زیرا پروژه به قطعات کوچک تقسیم و انجام می‌شود.

مراحل آریوپی
------------

### مرحله ۱: آغازین (Inception)

پروژه ساخته می‌شود و هدایت می‌شود توسط خود شخص

### مرحله ۲: تحلیل جزئیات(Elaboration)

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

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

### بررسی ریسک‌ها

#### ریسک‌های مرتبط با نیازمندیهای سیستم

هدف رسیدن به سیستمی است که خواسته‌های کاربر را به درستی انجام دهد. مهم این است که نیازمندی‌ها به درستی درک شده باشند. در اینجا استفاده صحیح از یوام‌ال می‌تواند بسیار مؤثر باشد. نمونه‌های کاربردی ابزارهای مهمی هستند که تقابل کاربر با سیستم را به‌طور دقیق مشخص می‌کنند و اساس ارتباط کارفرما با تولیدکننده نرم‌افزار هستند. باید مهم‌ترین و پرخطرترین نمونه‌های کاربردی به‌طور مشخص تعیین شوند. هر چه بیشتر با کاربران نهایی سیستم مذاکره شود نتایج بهتری حاصل خواهند شد. لازم است نمونه‌های اولیه برای قسمت‌های پیچیده و حیاتی نمونه‌های کاربردی ساخته شوند.

در همین زمان باید سایر نمودارهای مدلسازی نظیر نمودارهای کلاس (Class Diagrams)، نمودارهای فعالیت (Activity Diagram) و نمودارهای تقابل (Interaction Diagrams) به کمک کاربران سیستم به خصوص کاربران ارشد که اطلاعات بیشتر و مهم‌تری از عملکرد سیستم دارند، تهیه شوند.

#### ریسک‌های تکنولوژیکی

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

طراحی سیستم باید به گونه‌ای باشد که در آینده تغییرات و توسعه آن قابل انجام باشد. باید موردکاربردها را به‌طور دقیق بررسی کنیم تا مسائلی که ممکن است طراحی سیستم را پیچیده‌تر کنند به‌طور واضح مشخص گردند.

نمودارهای یوام‌ال زیر در این مرحله بکار می‌آیند:

* نمودارهای کلاس و نمودارهای تقابل: اجزاء سیستم (Components) و نحوه تقابل آن‌ها را نشان می‌دهند.
* نمودارهای بسته بندی (Package Diagrams): یک دید سطح بالا از اجزاء سیستم فراهم می‌آورند.
* نمودارهای گسترش (Deployment Diagrams): تصویری از چگونگی توزیع (پراکندگی) اجزاء سیستم نشان می‌دهند.

#### ریسک‌های منابع انسانی

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

#### ریسک‌های سیاسی

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

هنگامی که بتوانیم مدت زمان لازم برای تولید هر یوزکیس را تخمین بزنیم و تمام ریسک‌های مهم بررسی و راه‌حل‌های مقابله با آن‌ها برنامه‌ریزی شده باشند، می‌توان گفت مرحله دوم خاتمه یافته‌است.

### مرحله ۳: ساخت (Construction)

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

* دقت شود که هر قطعه تولید شده خود یک نرم‌افزار نسبتاً کامل بوده و باید توانایی برآورده کردن نیازهای مشخصی را داشته باشد، بدین معنی که قطعات تولید شده باید قابل استفاده باشند.
* برای تولید هر قطعه تمام این چهار مرحله انجام شده است! این نکته مهمی در آر یو پی است و می‌توان اینگونه در نظر گرفت که محصول نهایی به شکل یک پیاز بوده و دارای لایه‌هایی است که هم برای تولید هر لایه و هم برای تولید کل پیاز این مراحل چهارگانه صورت گرفته‌اند.

بطور خلاصه نتیجه این فاز کدنویسی و ایجاد نرم‌افزار است.

### مرحله ۴: انتقال (Transition)

مرحله نهایی که شامل تست آزمایشی، بهبود عملکرد و آموزش کاربران است.

محدودیت‌ها
----------

از نظر بسیاری از افراد این متودولوژی بسیار پیچیده و سنگین است و یادگیری آن بسیار طولانی می‌باشد و از طرفی یک فرد که کاملاً به این متودولوژی آشنا می‌باشد باید آن را برای هر پروژه تنظیم نماید. البته شرکت آی‌بی‌ام یک ابزار به نام Rational Method Composer را به همین منظور تولید نموده‌است. ولی باز هم موفقیت در استفاده از این متودولوزی بستگی به این فرد دارد. در حال حاضر یک نسخه ساده از این متودولوژی به نام OpenUP توسط شرکت Eclipse تهیه شده‌است و به صورت Open Source می‌باشد. OpenUP یک مرجع بسیار مناسب برای کسانی می‌باشد که تازه می‌خواهند با RUP آشنا شوند و از آن در پروژه‌های خود برای بار اول استفاده کنند.[]

منابع
-----

* مشارکت‌کنندگان ویکی‌پدیا. «IBM Rational Unified Process». در *دانشنامهٔ ویکی‌پدیای انگلیسی*، بازبینی‌شده در ۲۳ آوریل ۲۰۰۷.

پیوند به بیرون
--------------

* سایت شرکت آی‌بی‌ام
* چارچوب فرایند توسعه نرم‌افزار
* آکادمی نرم‌افزار

| * ن
* ب
* و
مهندسی نرم‌افزار |
| --- |
| حوزه‌ها | تحلیل نیازمندی‌ها •  تحلیل سامانه‌ها •  طراحی نرم‌افزار •  برنامه‌نویسی •  روش‌های صوری •  وارسی مدل •  تست نرم‌افزار •  توسعه نرم‌افزار •  گسترش نرم‌افزار •  نگهداری نرم‌افزار |
| مفاهیم | مدل‌سازی داده •  معماری سازمانی •  مشخصات کاربردی •  زبان مدل‌سازی •  پارادایم برنامه‌نویسی •  نرم‌افزار •  معماری نرم‌افزار •  فرایند توسعه نرم‌افزار •  فرایند تولید نرم‌افزار •  کیفیت نرم‌افزار •  تضمین کیفیت نرم‌افزار •  Software archaeology •  تحلیل ساختمند |
| گرایشات | مدل چابک •  مدل طراحی جنبه‌گرا •  شیءگرایی •  آنتولوژی •  سرویس‌گرایی •  چرخه حیات توسعه سیستم‌ها |
| مدل‌ها | 

|  |  |
| --- | --- |
| مدل‌های توسعه | مدل چابک •  آریوپی  •  اسکرام •  مدل مارپیچی •  مدل آبشاری •  برنامه‌سازی مفرط •  مدل وی •  مدل تکراری و افزایشی •  پیش‌نمونه |
| مدل‌های دیگر | Automotive SPICE •  مدل بلوغ قابلیت یکپارچه •  مدل داده •  مدل تابع •  مدل اطلاعات •  فرامدل •  مدل شیءگرایی •  مدل‌سازی سیستم‌ها •  مدل نما |
| زبان‌های مدل سازی | IDEF •  زبان مدل‌سازی یکپارچه |

 |
| مهندساننرم‌افزار سرشناس | 
* ویکتور باسیلی
* کنت بک
* گریدی بوچ
* فردریک بروکز
* Barry Boehm
* وارد کانینگهام
* تام دی ماکرو
* ادسخر دیکسترا
* مارتین فولر
* تونی هور
* واتس هامفری
* مایکل ای. جکسون
* ایوار جاکوبسون
* Stephen J. Mellor
* برترند میر
* دیوید پارناس
* وینستون واکر رویس
* جیمز رامبا
* نیکلاوس ویرت
* Edward Yourdon
* Mohamed Fayad

 |
| حوزه‌های مرتبط | 
* علوم رایانه
* مهندسی کامپیوتر
* مدیریت پروژه
* مدیریت ریسک
* مهندسی سامانه‌ها

 |
|  •  رده  •  انبار |

| * ن
* ب
* و
زبان مدل‌سازی یکپارچه |
| --- |
| کنشگرها | 
* *سازمان‌ها*
	+ گروه مدیریت شیء
	+ UML Partners
* *اشخاص*
	+ گریدی بوچ
	+ ایوار جاکوبسون
	+ جیمز رامبا

 |  |
| مفاهیم | 

|  |  |
| --- | --- |
| شیءگرا | 
* برنامه‌نویسی شیءگرا
* طراحی و آنالیز شئ‌گرا
* Object-oriented modeling

 |
| ساختار | 
* کنشگر
* صفت
* Artifact
* کلاس
* Component
* Interface
* شیء
* Package
* Profile diagram

 |
| رفتار | 
* Activity
* Event
* فرستادن پیام
* اسلوب
* حالت
* مورد کاربرد

 |
| روابط | 
* Association
* Composition
* جفتگری
* تعمیم (or وراثت)

 |
| توسعه‌پذیری | 
* پروفایل یو ام‌ال
* Stereotype

 |
| سایر | 
* نمودار کلاس

 |

 |
| نمودارها | 

|  |  |
| --- | --- |
| ساختاری | 
* نمودار کلاس
* دیاگرام اجزا
* Composite structure
* Deployment
* نمودار شئ
* Package

 |
| رفتاری | 
* نمودار فعالیت
* ماشین حالت یو.ام.ال
* نمودار مورد کاربرد

 |
| تعاملی | 
* نمودار ارتباطی
* نمودار توالی
* Interaction overview
* Timing

 |

 |
| زبان‌های مشتق‌شده | 
* زبان مدل‌سازی سیستم‌ها
* UML eXchange Format (UXF)|
* XML Metadata Interchange (XMI)|
* Executable UML (xUML)|

 |
| سایر موضوعات | 
* Glossary of UML terms
* فرایند یکپارچه رشنال
* مقایسه ابزارهای زبان مدل‌سازی یکپارچه
* Object Modeling in Color

 |