Los sistemas de software son cada vez más grandes, complejos, y distribuidos. La demanda del mercado es cada vez más software de mejor calidad en menor tiempo de manera predecible. Un proceso permite repetir las prácticas exitosas y mejorar o evitar las ineficientes.
El proceso de desarrollo de software es el conjunto de actividades necesarias para transformar los Requerimientos de usuario en un sistema de software. El proceso unificado (UP) es un proceso de desarrollo de software, construido a partir de los aportes de 3 autores:
- Rumbaugh: aporta los modelos de objetos de dominio del problema.
- Jacobson: aporta la producción orientada al usuario.
- Booch: aporta modelos de diseño orientados a objetos.
Toda Metodología tiene:
- Paradigma: un enfoque o forma de ver las cosas. En este caso, tiene Principios de la Orientación a Objetos.
- Actividades, Acciones, y Tareas: determinan qué hacer.
- Flujo de Trabajo: determina la secuencia lógica de cuándo hacer cada cosa.
- Herramientas: técnicas que ayudan a realizar las cosas.
- Tipo: si es prescriptivo o adaptativo. En este caso, es prescriptivo.
El Unified Process (UP) es un conjunto de artefactos, actividades, y roles, basados en las mejores prácticas, promoviendo una visión y cultura de trabajo común. Reduce los riesgos y hace que el proyecto sea más predecible (y medible). Los objetivos de usar un proceso son:
- Lograr un desarrollo más rápido, reduciendo el time-to-market.
- Mejorar la calidad y disminuir el Riesgo.
- Disminuir los costos.

UP ofrece 6 mejores prácticas:
- Desarrollar iterativamente.
- Administrar requerimientos.
- Usar una arquitectura de componentes.
- Modelar visualmente.
- Verificar la calidad.
- Controlar los cambios.
Teniendo en cuenta los Flujos de Trabajo, el PU es iterativo e incremental:
- Logra la integración continua.
- Logra el aprendizaje temprano.
- Es más barato equivocarse.
- Hay flexibilidad mediante la retroalimentación y la adaptación.
- Hay consistencia gracias a las iteraciones cortas y fijas.

Componente de Software
Un componente es un elemento de software que ofrece un conjunto de funcionalidades. Permite crear nuevas funciones reutilizando o ensamblando componentes. Un componente es:
- Reutilizable.
- Intercambiable (de bajo acoplamiento).
- Cohesivo (hace una sola cosa y la hace bien).
- Con interfaces bien definidas.
Arquitectura de Software
Mientras que los casos de uso conducen el desarrollo de la arquitectura, la arquitectura indica qué casos de uso pueden realizarse. Da la forma del sistema, y debe soportar su mantenimiento y extensión.
Las 4+1 vistas de la arquitectura según Kruchten:

La arquitectura se ve influenciada por la plataforma, sistemas legacy, requisitos no funcionales, restricciones de diseño, etc.
Ciclo de Vida del Software
El Ciclo de Vida del Software en el Proceso Unificado tiene varios ciclos de desarrollo que concluyen con un producto evolucionado. Cada fase se subdivide en varias iteraciones. En cada fase hay un hito o entrega de ejecutables, código fuente, y/o documentos.

Cada hito es un punto de control. Tras cada ciclo, se entrega una nueva versión del producto.
Flujos de trabajo o disciplinas en el PU:
- Requisitos (Captura de Requisitos en el PU).
- Análisis (Flujo de Análisis en el PU).
- Diseño.
- Implementación.
- Pruebas.
- De Soporte: gestión de cambios, de configuración, etc.

El Proceso Unificado es un marco de trabajo flexible y extensible, con la libertad de ser adaptado a cada contexto de cada Proyecto de Software. Cada equipo de desarrollo aplica su propio PU personalizado a sus necesidades específicas.