Una arquitectura de referencia en el campo de la arquitectura de software o la arquitectura empresarial proporciona una plantilla de solución para una arquitectura de un dominio particular. También proporciona un vocabulario común con el que discutir las implementaciones, a menudo con el objetivo de enfatizar la similitud. Una arquitectura de referencia de software es una arquitectura de software[1] donde las estructuras y los elementos y relaciones respectivos proporcionan plantillas para arquitecturas concretas en un dominio particular o en una familia de sistemas de software.
Una arquitectura de referencia a menudo consiste en una lista de funciones y alguna indicación de sus interfaces (o API) e interacciones entre sí y con funciones ubicadas fuera del alcance de la arquitectura de referencia.
Las arquitecturas de referencia se pueden definir en diferentes niveles de abstracción. Una muy abstracta puede mostrar diferentes equipos en una red de comunicaciones, y cada uno proporciona diferentes funciones. Un nivel inferior podría demostrar las interacciones de los procedimientos (o métodos ) dentro de un programa de computadora definido para realizar una tarea muy específica.
Una arquitectura de referencia proporciona una plantilla, a menudo basada en la generalización de un conjunto de soluciones. Estas soluciones pueden haber sido generalizadas y estructuradas para la representación de una o más estructuras de arquitectura basadas en la recolección de un conjunto de patrones que se han observado en varias implementaciones exitosas. Además, muestra cómo componer estas partes juntas en una solución. Las arquitecturas de referencia serán instanciadas para un dominio particular o para proyectos específicos.
La adopción de una arquitectura de referencia dentro de una organización acelera la entrega mediante la reutilización de una solución efectiva y proporciona una base para la gobernanza para garantizar la coherencia y la aplicabilidad del uso de la tecnología dentro de una organización. En el campo de la arquitectura de software, muchos estudios empíricos han demostrado los siguientes beneficios e inconvenientes comunes de adoptar una arquitectura de referencia de software dentro de las organizaciones: