Rational Unified Process

**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.]  .
* **Patton, Ron. 2002.** *Testování softwaru.* s.l. : Computer Press, 2002. 80-7226-636-5.

Kategória:Vývoj softvéru