El crecimiento de la complejidad de las aplicaciones y con el objetivo de alcanzar la más alta calidad posible, los desarrolladores de software se encuentran continuamente buscando diferentes maneras y alternativas para mejorar la productividad de sus procesos de desarrollo.
La tendencia actual apunta hacia el desarrollo guiado por la arquitectura. Las arquitecturas describen la funcionalidad gruesa del sistema y expresan las principales decisiones de diseño en cuanto a atributos de calidad. Estos aspectos proveen un alto nivel de abstracción común, que la mayoría de las personas involucradas en el proceso de desarrollo puede utilizar como base para crear entendimiento mutuo, formar consenso y utilizarlas como medio de comunicación entre los diferentes participantes. Adicionalmente, los modelos arquitectónicos proporcionan un contexto de alto nivel para el análisis y evolución del sistema.