Rational Rose è uno strumento di progettazione software Unified Modeling Language (UML) orientato agli oggetti destinato alla modellazione visiva e alla costruzione di componenti di applicazioni software di livello aziendale. Più o meno allo stesso modo in cui un regista teatrale blocca uno spettacolo, un progettista di software utilizza Rational Rose per creare visivamente (modellare) il framework per un'applicazione bloccando le classi con attori (figure stilizzate), elementi del caso d'uso (ovali), oggetti ( rettangoli) e messaggi / relazioni (frecce) in un diagramma di sequenza utilizzando i simboli di trascinamento. Rational Rose documenta il diagramma mentre viene costruito e quindi genera il codice a scelta del progettista tra C ++, Visual Basic, Java, Oracle8, Corba o Data Definition Language.
Due caratteristiche popolari di Rational Rose sono la sua capacità di fornire sviluppo iterativo e ingegneria di andata e ritorno. Rational Rose consente ai progettisti di trarre vantaggio dallo sviluppo iterativo (a volte chiamato sviluppo evolutivo) perché la nuova applicazione può essere creata in fasi con l'output di un'iterazione che diventa l'input per la successiva. (Ciò è in contrasto con lo sviluppo a cascata in cui l'intero progetto viene completato dall'inizio alla fine prima che un utente possa provarlo.) Quindi, quando lo sviluppatore inizia a capire come i componenti interagiscono e apporta modifiche al progetto, Rational Rose può eseguire quella che viene chiamata "ingegneria di andata e ritorno" tornando indietro e aggiornando il resto del modello per garantire che il codice rimanga coerente.
Rational Rose è estendibile, con componenti aggiuntivi scaricabili e applicazioni di partner di terze parti. Supporta gli standard dei componenti COM / DCOM (ActiveX), JavaBeans e Corba.