# Rational Unified Process

Der Rational Unified Process (RUP) ist ein kommerzielles Produkt der Firma Rational Software, die seit 2003 Teil des IBM-Konzerns ist. Es beinhaltet sowohl ein Vorgehensmodell zur Softwareentwicklung als auch die dazugehörigen Softwareentwicklungsprogramme. IBM entwickelt den RUP und die zugehörige Software weiter. Die 9. Version ist die seit 2006 aktuelle Version. Der RUP benutzt die Unified Modeling Language (UML) als Notationssprache. Der RUP wurde von Philippe Kruchten in seiner Urform erstmals 1998 vorgestellt.

## Entstehungsgeschichte

Der Grundstein für RUP wurde gelegt, als sich die bekannten Programmierer Grady Booch, Ivar Jacobson und James Rumbaugh („Die drei Amigos“) des Unternehmens Rational Inc. auf ein einheitliches Notationssystem einigten. Als Resultat dieser Bemühungen entstand die UML. Die Standardisierung und Weiterentwicklung der Sprache wurde an die Object Management Group (OMG) übergeben. Mit einer gemeinsamen Sprache konnte nun eine gemeinsame objektorientierte Methode entwickelt werden. Der Unified Process ist dabei ein Metamodell für Vorgehensmodelle zur Softwareentwicklung. Der Unified Process wurde parallel zur Unified Modelling Language von Ivar Jacobson, Grady Booch und James Rumbaugh entwickelt und veröffentlicht.
Der Unified Process basiert auf den folgenden Prinzipien:
* Anwendungsfälle
* Architektur im Zentrum der Planung
* inkrementelles und iteratives Vorgehen
Eine konkrete Implementierung des Unified Process ist der Rational Unified Process. Die erste Version des RUP aus dem Jahre 1999 führte die Vorschläge dieser drei Begründer für eine einheitliche Modellierungsmethode zusammen.

## Statische Aspekte

Die Arbeitsschritte werden für jede Iteration in neun Disziplinen eingeteilt:
Kernarbeitsschritte (engineering disciplines):
* Unternehmensplan/Geschäftsmodell: Aufgabe, Ziel und Strategie des Geschäfts sowie eine abgeleitete Geschäftsprozessmodellierung (Business Modeling)
* Spezifikation des Anwendungsmodells: Anwendungsfunktionen zur Umsetzung von Workflows/Vorgänge bzw. formalisierte Geschäftsprozesse (Requirements)
* Spezifikation der Software-Architektur: Grobe Architektur: Teilsysteme für Oberfläche, Funktionalität und Datenverwaltung sowie Nutzer- und Basismaschinen; Feine Architektur: Objektklassen, Softwarekomponenten und Beziehungen (Analysis & Design)
* Realisierung von Softwareschichten: (Computer-)Programme (Implementation)
* Durchführung von Programm-, Modul- und Integrationstests (Tests)
* Abnahmetest, Installation, Schulung und Einweisung (Deployment)
Unterstützende Arbeitsschritte (supporting disciplines):
* Konfigurations- und Änderungsmanagement (Configuration & Change Management)
* Projektmanagement (Project Management)
* Entwicklungsumgebung, Werkzeugunterstützung und qualitätssichernde Maßnahmen(Environment & Quality Management)

## Dynamische Aspekte

Orthogonal dazu gibt es im RUP vier Phasen, in denen jeder der oben genannten Arbeitsschritte mehr oder weniger intensiv zur Anwendung kommt. Jede dieser Phasen ist in eine oder mehrere Iterationen unterteilt und resultiert in einem Meilenstein (englisch milestone).

### Inception

Diese erste Konzeptionsphase dient dem Ausformulieren einer Vision, eines klaren Zieles sowie der Erstellung eines rudimentären Anwendungsfallmodells, das die wesentliche Funktionalität beschreibt sowie einer tentativen/provisorischen Architektur. Darüber hinaus werden die wesentlichsten Risiken identifiziert und die Ausarbeitungsphase geplant. Sie resultiert im Lifecycle Objective Milestone.

### Elaboration

In dieser Phase werden der Architekturprototyp sowie eine detaillierte Beschreibung für etwa 80 Prozent der Anwendungsfälle ausgearbeitet. Hier erfolgt die Planung der Konstruktionsphase. Ergebnis dieser Entwurfsphase ist der Lifecycle Architecture Milestone.

### Construction

Nachdem die Architektur ausgearbeitet wurde, konzentriert sich diese Phase auf die Entwicklung und das Testen des Produktes. Hier entsteht die erste lauffähige Version der Software und schließt mit dem Initial Operational Capability Milestone ab.

### Transition

Übergabephase und Auslieferung der Software an den Kunden. Der Prozess endet mit dem Product Release Milestone.

## Best Practices

Der Rational Unified Process greift auf in der Praxis bewährte Vorgehensweisen und Erfahrungswerte zurück. Diese werden in den folgenden sechs Best Practices formuliert:
* Iterative Softwareentwicklung, wodurch im Gegensatz zu linearen Vorgehensmodellen (wie etwa dem Wasserfallmodell) sich ändernde Anforderungen auch zu einem späteren Zeitpunkt noch berücksichtigt werden können.
* Projektbegleitendes Qualitätsmanagement mit dem Ziel der frühzeitigen Fehlererkennung.
* Komponentenbasierte Architektur: Komponenten werden sowohl isoliert entwickelt als auch getestet und tragen so zur Wiederverwendbarkeit des Produkts und der Produktivitäts- und Qualitätssteigerung bei.
* Visuelle Modellierung für ein besseres Problemverständnis. Meist unter Einsatz der standardisierten Modellierungssprache UML. Dadurch wird eine parallele Entwicklung in verschiedenen Fachbereichen ermöglicht.
* Kontrolliertes Änderungsmanagement: um Änderungen zu verwalten und Altstände reproduzierbar zu machen.
* Anforderungsmanagement: Anforderungen sind die Grundlage des Systems. Ansatz um Änderungen zu erkennen, organisieren und durchzuführen. Dient der besseren Kontrolle, verbesserter Qualität und Kundenzufriedenheit.