RUP (Rational Unified Process)
Um framework de processo de desenvolvimento de software iterativo e incremental, orientado a casos de uso, centrado na arquitetura e baseado em componentes, com gestão de riscos explícita.
Dimensões do RUP
- Dimensão Dinâmica (Eixo Horizontal): O tempo, expresso através de Fases e Iterações.
- Dimensão Estática (Eixo Vertical): As atividades lógicas, expressas através de Disciplinas (ou fluxos de trabalho).

Dimensão Dinâmica (fases)
- 1. Concepção (Inception):
- Define-se o escopo do projeto, o modelo de negócio e a viabilidade.
- 2. Elaboração (Elaboration):
- Analisa-se o domínio do problema em detalhes e estabelece-se a base da arquitetura. Aqui são mitigados os maiores riscos do projeto.
- 3. Construção (Construction):
- Desenvolvimento do grosso do sistema. O software é codificado, testado e integrado.
- 4. Transição (Transition):
- O software é entregue (implantação, homologação, treinamento e correções pós-lançamento).
Dimensão Estática (disciplina)
Disciplinas de Engenharia de Processo:
- Modelagem de Negócios: Entender o contexto da organização onde o sistema vai rodar.
- Requisitos: Levantar o que o sistema deve fazer (foco forte em Casos de Uso).
- Análise e Design: Transformar os requisitos em uma arquitetura de sistema concreta.
- Implementação: Codificar o sistema.
- Teste: Verificar e validar a qualidade do código.
- Implantação: Entregar o software (fase de Transição).
Disciplinas de Suporte/Gestão:
- Gerenciamento de Configuração e Mudança: Controlar as versões do software e dos documentos de requisitos.
- Gerenciamento de Projeto: Planejar e monitorar o andamento.
- Ambiente: Configurar as ferramentas e os processos que a equipe vai usar.
Características Fundamentais
- Guiado/Dirigido por Casos de Uso: Os Casos de Uso (UML) são o fio condutor. Eles servem para levantar requisitos, desenhar a arquitetura, guiar os testes e escrever os manuais.
- Centrado na Arquitetura: A arquitetura do sistema é definida cedo (na fase de Elaboração) e serve como fundação segura para o resto do desenvolvimento.
- Iterativo e Incremental: O projeto é quebrado em iterações menores, e o software vai crescendo (incrementos) a cada ciclo.