# data[].attributes.body
Los componentes son unidades de software estructuradas según principios específicos. Estos son:

1.       Unificación de datos y función

2.       Encapsulación

3.       Identidad

# data[].attributes.body
Todas las formas que puede tomar un componente son:
- Especificación de componentes

- Interface de componente

- Implementación del componente

- Componente instalado

- Objeto componente

# data[].attributes.body
Un conjunto de componentes de software a nivel de aplicación, sus relaciones estructurales y sus dependencias de comportamiento

# data[].attributes.body
·         Arquitecturas de especificación de componentes:

Contiene especificaciones de componentes e interfaces.

·         Arquitecturas de implementación de componentes

Muestra las dependencias reales que existen entre implementaciones de componentes particulares.

·         Arquitecturas de objetos componentes

Especifica las instancias de los componentes a los que se accederá.

# data[].attributes.body
Es un acuerdo formal entre dos o más partes. Describe (o especifica) los detalles del acuerdo de forma inequívoca.
Dos tipos diferentes de contrato:

1. Uso: el contrato entre la interfaz de un objeto componente y sus clientes.
2. Realización: el contrato entre la especificación de un componente y su implementación.

# data[].attributes.headline
Interfaces versus especificación de componentes

# data[].attributes.subject
Interfaces versus especificación de componentes

# data[].attributes.body
La especificación del componente forma el contrato con el realizador, ensamblador y probador del componente.

Una especificación de componente abarca la unidad de implementación, define el límite de encapsulación.

# data[].attributes.body
Hay dos procesos que todo proyecto de desarrollo debe seguir:

Proceso de gestión: Calendarizar trabajo, planear entregables, asignar recursos, y monitorear progreso

Proceso de desarrollo: Crea el software a partir de los requerimientos.

# data[].attributes.body
El proceso de gestión preferido hoy en día se basa en la evolución, donde el software se entrega a través de una serie de iteraciones de desarrollo, cada una de las cuales se perfecciona y se basa en la anterior.
Mientras que la motivación para utilizar un enfoque de componentes es gestionar mejor el cambio.
Por tanto, existe un ajuste natural entre los componentes y la entrega evolutiva.

# data[].attributes.body
Flujo de trabajo: Una secuencia de actividades que produce un resultado de valor observable
El flujo de trabajo de especificación toma como entrada el modelo de caso de uso y de concepto de negocio. Y produce el modelo de tipo de negocio, la arquitectura de componentes y las especificaciones de interfaz y de componentes

# data[].attributes.headline
Etapas del flujo de trabajo de especificación

# data[].attributes.subject
Etapas del flujo de trabajo de especificación

# data[].attributes.body
·         Identificación de componentes:

Su objetivo es identificar un conjunto inicial de interfaces comerciales para los componentes comerciales y un conjunto inicial de interfaces del sistema para los componentes del sistema, y reunirlos en una arquitectura de componentes inicial.

·         Interacción de componentes

Examina cómo se logrará cada una de las operaciones del sistema utilizando la arquitectura del componente.

·         Especificación de componentes.

Para una interfaz determinada, significa definir los estados potenciales de los objetos componentes en un modelo de información de interfaz y luego especificar condiciones previas y posteriores para las operaciones y capturar reglas de negocio como restricciones.