Rational Unified Process

**Rational Unified Process** (forkortet: **RUP**, direkte oversatt: **rasjonell enhetlig prosess**) er en iterativ og inkrementell programvareutviklingsprosess, med røtter i spiralmodellen, for å sikre et resultat med høyt kvalitetsnivå. RUP er en spesifikk implementasjon av Unified Process.

Med RUP kan man tilpasse og skreddersy utviklingsprosessen til å passe prosjektets behov. Dette oppnår den ved å være *iterativ* (gjentagende), ved å fokusere på *risiko* tidlig i utviklingsfasen og ved å integrere fasene. Utviklerne lærer ved hver iterasjon at prosessen kan forbedres.

## Historikk
RUP ble skapt som produkt i 1996 da Rational Software ervervet *Objectory*, en use case basert programvareutviklingsprosess utviklet av Ivar Jacobson.

IBM ervervet RUP i februar 2003 i forbindelse med oppkjøpet av *Rational Software*.

I 2006 donerte IBM et subsett av RUP skreddersydd for smidige prosjekter til *Eclipse Foundation* som publiserte den som åpen kilde"kode" metoden **OpenUP**.

## Egenskaper
En av de unike egenskapene med RUP er at alle disiplinene mer eller mindre strekker seg over alle fasene. For eksempel vil "Testing" disiplinen starte i innledningsfasen og ikke etter bygningfasen som man kanskje skulle tro. Men tilstedeværelsen av "Testing" vil gradvis bli høyere frem til slutten av bygningfasen, for så å avta. Tilstedeværelsen av "testing" vil aldri forsvinne helt. Denne egenskapen gjør Rational Unified Process meget motstandsdyktig mot feil og meget tilpasningsdyktig i forhold til forandring i spesifikasjonene, implementasjonen og/eller behovene.

## Faser
RUP er delt inn i **fire faser** som gir føringer for ulike *hovedfokus*:

### Innledning (''inception'')
*Finne grensene for prosjektet, identifisere interessenter og avdekke funksjonelle (fra brukere) og ikke-funksjonelle krav.
*Diskutere risiko og kostnader.
*Design og brukskvalitet.
*Planlegging.
* *Milepel: *Lifecycle Objective

### Utforming (''elaboration'')
*Planlegge arkitektur og systemkravene.
*Finne farer og problemstillinger og løse disse før man går videre i utviklingen.
*Produsere en arkitekturprototype.
*Design.
*Demonstrere systemet til interessenter.
* *Milepel: *Lifecycle Architecture

### Bygging (''construction'')
*Programmering.
*Utvikling av systemet.
*Oppnå et produkt så fort som mulig ved at bruker/interessenter får testet systemet og komme med tilbakemeldinger.
* *Milepel: *Initial Operational Capability

### Overgang (''transition'')
*Teste ut en betaversjon for å avdekke feil og mangler som bør utbedres før det ferdige systemet utgis.
*Opptrening av brukere og de som skal vedlikeholde systemet
* Eventuelt konvertere eksisterende databaser så de fungerer opp i mot det nye systemet.
*Feilretting.
* *Milepel: *Product Release

## Disipliner
RUP er også delt inn i **ni "fag"disipliner**:

### Forretningsmodellering (''business modelling'')
*Opprette en bedre forståelse og kommunikasjon mellom forretnings utviklere og software utviklere.
*Forstå strukturen og dynamikken til forretningen/organisasjonen/interessenten som skal bruke systemet.
*Finne nåværende problemstillinger og mulige forbedringer.

### Kravspesifisering (''requirements'')
*Beskrive hva systemet skal gjøre.
*Lage et Bruksmønster Diagram.

### Analyse og design (''analysis and design'')
*Skal vise hvordan systemet vil bli realisert i gjennomføringsfasen.
*Resultere i en design og analyse modell.

### Gjennomføring (''implementation'')
*Implementere klasser og objekter i systemet.
*Teste og utvikle komponenter til systemet.
*Sette sammen de ulike delene til et system.

### Testing (''test'')
*Bekrefte interaksjonen mellom objekter.
*Bekrefte riktig integrasjon av alle komponenter i systemet.
*Bekrefte at alle behovene i systemet er implementert riktig.
*Finne og identifisere feil i systemet og korrigere disse før utviklingsfasen.

### Utplassering (''deployment'')
*Produsere en produkt utgivelse.
*Distribuere produktet til interessenter.
*Drive support for produktet.

### Konfigurering og endringsledelse (''configuration and change management'')
*Konfigurasjonsledelse.
*Forandringsforespørsel ledelse.
*Status og mål ledelse.

### Prosjektledelse (''project management'')
*Risiko behandling.
*Planlegging av prosjektet.
*Overvåking av prosessens utvikling.

### Omgivelser (''environment'')
*Beskrive aktivitetene som er nødvendig for utviklingsprosessen.
*Forberede prosjekt-spesifikke midler.
*Lage en utstyrsliste over nødvendig utstyr for prosjektet.

## Programvare
Hovedutviklingsprogramvaren for RUP er Rational Rose, utviklet av Rational Software og eid av IBM.
Det finnes flere gratis program som lar deg jobbe med RUP, men disse er dog ikke fullt så kraftige og mangler noe funksjonalitet i forhold til Rational Rose. De viktigste freeware-alternativene til Rational Rose er Poseidon  og ArgoUML .

## Referanser