**Rational Unified Process** (ďalej RUP) je metodika vývoja softvéru vytvorená spoločnosťou Rational Software Corporation. Metodika RUP vychádza z kolekcie osvedčených praktík a postupov pri vývoji softvéru. Je použiteľná pre akýkoľvek rozsah projektu, no vďaka vysokej rozsiahlosti RUPu je vhodné prispôsobiť metodiku špecifickým potrebám. RUP je vhodnejší skôr pre rozsiahlejšie projekty a väčšie vývojárske tímy, keďže kladie dôraz na analýzu a návrh, plánovanie, riadenie zdrojov a dokumentáciu. Pre menšie projekty je vhodnejšie použiť niektorú z menej formalizovaných metodík ako napríklad Extreme Programming.

Architektúra
------------

RUP definuje štyri základné fázy vývoja, ktoré sú z časového hľadiska organizované do iterácii. Po skončení každej fázy sa vykonáva hodnotenie dosiahnutých cieľov danej fázy (milestone).

* **Disciplína** – je kolekcia príbuzných aktivít, ktoré sa vzťahujú k rovnakej oblasti záujmu v rámci celého projektu. RUP definuje disciplíny:
	+ tvorba podnikového modelu (business modeling)
	+ správa požiadaviek (requirements)
	+ analýza a návrh
	+ implementácia
	+ testovanie, kontrola kvality
	+ nasadenie (deployment)
	+ riadenie zmien a konfigurácie (configuration & change management)
	+ riadenie projektu (project management)
	+ správa prostredia (environment)
* **Iterácia** – realizácia projektu môže byť rozdelená do viacerých častí, v rámci ktorých sa opakujú rovnaké procesy naprieč všetkými disciplínami. Každá iterácia je rozdelená do štyroch fáz – začatie (inception), rozpracovanie (elaboration), budovanie (construction) a zavedenie (transition). V rámci každej z fáz sa realizujú činnosti každej disciplíny, no s rozdielnym dôrazom. Napríklad na začiatku iterácie strávime viac času pri požiadavkách, zatiaľ čo v neskoršej fáze sa kladie dôraz na implementáciu.

Základné prvky metodiky
-----------------------

* **Artefakt** – vstupný alebo výstupný produkt procesu. Môže nadobúdať rôzne formy (databáza, UML model, špecifikácia, textový dokument, stránka a iné)
* **Role** – vyjadruje vzťah individualít (osoba či systém) a ich zodpovednosť v rámci procesu. Rola môže byť obsadená vo viacerých roliach súčasne a zároveň v jednej roli môže byť obsadených viacero rolí.
* **Aktivita** – predstavuje činnosť vykonávanú rolami.

Najlepšie praktiky (Best Practices)
-----------------------------------

Metodika obsahuje takzvané „best practices", čo sú praktiky užitočné pri realizácii vývoja softvéru, založené na dlhodobých skúsenostiach v tejto oblasti. Tieto praktiky sú v rámci metodiky podporované rôznymi nástrojmi pre automatizáciu špecifických procesov vývoja softvéru. Patria sem:

* **Iteratívny vývoj**

Iteratívny prístup zavádza rozdelenie projektu do časových úsekov (iterácií), pričom po skončení iterácie by mala byť dostupná spustiteľná verzia. (Aldorf, 2008) popisuje nasledujúce výhody: 

* + Možnosť objektívneho posúdenia stavu projektu
	+ Rovnomernejšie pracovné vyťaženie vývojárskeho tímu. Projekt je koncipovaný tak, aby čo najskôr prinášal konkrétne výsledky. Pri rozdelení na iterácie je možné jednoduchšie sledovať priebeh projektu a dodržovanie stanovených termínov.
	+ Možnosť testovania medziverzií
	+ Spolupráca s užívateľmi v priebehu celého projektu
	+ Včasné rozpoznanie nezrovnalostí medzi požiadavkami, návrhom a implementáciou. Vďaka tomu, že užívatelia majú možnosť kontrolovať a hodnotiť čiastkové časti systému, výrazne sa obmedzuje riziko vysokých nákladov spôsobených úpravami produktu v neskorších fázach vývoja.
	+ Jednoduchšie zapracovanie požadovaných zmien
* **Správa požiadaviek**

Cieľom správy požiadaviek v metodike RUP je aktívny zber a dokumentácia požiadaviek, ktorý prebieha medzi zadávateľom a dodávateľom. Umožňuje tak spresňovanie zadania v priebehu celého projektu, čo opäť znižuje riziko neúspechu projektu.

* **Používanie komponentovej architektúry**

Komponentová architektúra je založená na použití komponent – zložiek architektúry, ktoré sú nezávislé, vymeniteľné a teda pomáhajú zvládať zložitosť systému a umožňujú znovupoužiteľnosť komplexnejších častí systému.

* **Vizuálne modelovanie**

Využitie vizuálneho modelovania vychádza z predpokladu, že človek lepšie chápe systém, ktorý si zjednoduší do menších modelov, pričom abstrahuje od nedôležitých vlastností daného modelu. RUP využíva k modelovaniu štandardný modelovací jazyk UML, čo prináša jednoduchšiu štandardizovanú komunikáciu v rámci tímu, ale i pri komunikácii so zákazníkom a zvyšuje konzistenciu projektu.

* **Priebežná kontrola kvality**

V minulosti sa už na mnohých projektoch ukázalo a stále sa potvrdzuje, že nájdenie a odstránenie problémov v neskorších fázach projektu je niekoľkonásobne drahšie než v úvodných fázach vývoja (Patton, 2002), preto RUP presadzuje kontrolu kvality a testovanie od počiatku projektu.

* **Správa zmien**

Hlavnou úlohou správy zmien je riadenie verzovania produktu, bez ktorého by vývoj v rámci viacerých tímov mohol prepadnúť do chaosu. V RUPe sa touto výzvou zaoberá disciplína – riadenie zmien a konfigurácie.

Referencie
----------

* IBM Rational Unified Process Web Site

Bibliografia
------------

* **Aldorf, Filip. 2008.** Metodika RUP. *Objektová analýza, návrh a programování.* [Online] Vysoká škola ekonomická v Praze, 3. Február 2008. [Dátum: 3. Máj 2009.]  Archivované 2010-01-19 na Wayback Machine.
* **Patton, Ron. 2002.** *Testování softwaru.* s.l. : Computer Press, 2002. 80-7226-636-5.