Métricas de diseño de los componentes

-Los aspectos arquitectónicos y de diseño deben ser considerados a todos los niveles del sistema y su contexto.

-Aunque crea cierta confusión, existe una terminología específica para referirse a estas soluciones, según su aplicabilidad y nivel de abstracción en el que se utiliza.

Patrón de diseño


. Solución general y reutilizable a un problema recurrente en un contexto dado del diseño software. No se trata de una solución de código ya acabada, sino de una descripción o plantilla que indica al programador cómo resolver un problema que ocurre en muchas ocasiones. Los patrones se formalizan a partir de las mejores prácticas de los programadores. – Ejemplo: Patrón Envoltorio( Wrapper)

Patrón arquitectónico


Colección de decisiones de diseño arquitectónico que son aplicables a un problema recurrente y parametrizadas para poder ser consideradas en distintos contextos de desarrollo de software en el que el problema puede aparecer. – Ejemplo: Patrón MVC ( Model-View-Controller).

Estilo arquitectónico


Colección de decisiones arquitectónicas recogidas bajo una misma denominación que son aplicables a un contexto dado de desarrollo; restringen las decisiones de diseño arquitectónico que son específicas a un sistema concreto dentro del contexto; y aportan cualidades beneficiosas (y probadas) en cada sistema resultante. – Ejemplo: Arquitectura en n capas (layers).


Arquitectura software


[ Clements & Kazman, 2003] Estructura o estructuras de un sistema, lo que incluye sus componentes software, las propiedades observables de dichos componentes y las relaciones entre ellos. – Ejemplo: Solución arquitectónica específica a un problema software dado: sistema de gestión de ventas de una cadena de concesionarios de coches.


Arquitectura global de un sistema (System architecture). Describe la organización del sistema, expresada en términos de sus elementos componentes, las relaciones entre ellos, las relaciones con su entorno y los principios fundamentales que gobiernan el diseño y evolución del sistema.
No se debe confundir la arquitectura global de un sistema ( system architecture) con su arquitectura software ( software architecture).


  • La primera es más abstracta y conceptual y engloba a la segunda, que se centra solamente en su estructura y funcionalidad, pero sin contemplar otros aspectos como el tipo de hardware, las reglas de negocio, etc.

Marco arquitectónico ( Architecture framework) [IEEE-1471]. Conjunto de convenciones, principios y prácticas para la descripción de arquitecturas dentro de un dominio específico de aplicación y/o comunidad de stakeholders. – Según ISO Std. 42010, “Un marco arquitectónico establece un conjunto de prácticas común para crear, interpretar, analizar y utilizar descripciones de arquitecturas dentro de un dominio concreto de aplicación o comunidad de stakeholders”.



Marco arquitectónico de empresa ( Enterprise architecture framework) [Gartner]. Marco en el que se define cómo organizar la estructura, vistas y objetos asociados a una arquitectura de empresa. – Una EAF es un tipo específico de AF aplicado al dominio de la empresa. – Ejemplo: Marco arquitectónico de Zachman.


Arquitectura de empresa ( Enterprise architecture) [Gartner]. Proceso consistente en la traducción de una visión y estrategias de negocio en cambios efectivos de la empresa mediante la creación, comunicación y mejora de los requisitos clave, principios y modelos que describen el estado futuro de la empresa y permite su evolución.
————————————————

Componente software:


fragmento de un sistema software que proporciona unos servicios, y que puede ser ensamblado con otros fragmentos para formar piezas más grandes o aplicaciones completas.

Artefacto:


es la realización de una especificación de componente que puede ser implantada, instalada y reemplazada de forma independiente en uno o más archivos y puede depender de otros componentes.

La especificación de un componente


Representa la especificación de una unidad de software, describiendo tanto los servicios que proporciona como los que necesita de otros componentes, así como el comportamiento de cualquier instancia del componente que respete la especificación.


Un componente (Szyperski, 1998) es una unidad de composición binaria de aplicaciones software, que posee un conjunto de interfaces y un conjunto de requisitos, y que ha de poder ser desarrollado, adquirido, incorporado al sistema y compuesto con otros componentes de forma independiente, en tiempo y espacio.

Un componente instalado es una copia instalada de una implementación de componente, en una máquina concreta.

Una instancia de componente es una instancia de un componente instalado.
Normalmente está compuesto por una colección de objetos con su propio estado e identidad única que lleva a cabo el comportamiento implementado.

Un componente (UML 2) es una unidad modular del sistema que encapsula una cierta funcionalidad, posee interfaces bien definidas y es reemplazable dentro de su entorno.


DE CREACIÓN

Builder:


Separa la construcción de un objeto complejo de su representación