Documentos de Académico
Documentos de Profesional
Documentos de Cultura
• Pone énfasis en la descomposición del sistema en componentes lógicos o funcionales que tienen
interfaces bien definidas.
• Define una aproximación de diseño que usa componentes discretos, los que se comunican a
través de interfaces que contienen métodos, eventos y propiedades.
PRINCIPIOS FUNDAMENTALES
• Reusable. Los componentes son usualmente diseñados para ser utilizados en escenarios
diferentes por diferentes aplicaciones, sin embargo, algunos componentes pueden ser diseñados
para tareas específicas.
• Sin contexto especifico. Los componentes son diseñados para operar en diferentes ambientes y
contextos. Información específica como el estado de los datos deben ser pasadas al componente
en vez de incluirlos o permitir al componente acceder a ellos.
• Extensible. Un componente puede ser extendido desde un componente existente para crear un
nuevo comportamiento.
• Encapsulado. Los componentes exponen interfaces que permiten al programa usar su
funcionalidad. Sin revelar detalles internos, detalles del proceso o estado.
• Independiente. Los Componentes están diseñados para tener una dependencia mínima de otros
componentes. Por lo tanto los componentes pueden ser instalados en el ambiente adecuado sin
afectar otros componentes o sistemas.
BENEFICIOS
Los siguientes son los principales beneficios del estilo de arquitectura basado en componentes:
• Facilidad de Instalación. Cuando una nueva versión esté disponible, usted podrá reemplazar la
versión existente sin impacto en otros componentes o el sistema como un todo.
• Costos reducidos. El uso de componentes de terceros permite distribuir el costo del desarrollo y
del mantenimiento.
• Facilidad de desarrollo. Los componentes implementan una interface bien definida para proveer
la funcionalidad definida permitiendo el desarrollo sin impactar otras partes del sistema.
• Reusable. El uso de componentes reutilizables significa que ellos pueden ser usados para
distribuir el desarrollo y el mantenimiento entre múltiples aplicaciones y sistemas.
• Mitigación de complejidad técnica. Los componentes mitigan la complejidad por medio del uso
de contenedores de componentes y sus servicios. Ejemplos de servicios de componentes incluyen
activación de componentes, gestión de la vida de los componentes, gestión de colas de mensajes
para métodos del componente y transacciones.
Modelos o vistas
Toda arquitectura de software debe describir diversos aspectos del software. Generalmente, cada
uno de estos aspectos se describe de una manera más comprensible si se utilizan distintos
modelos o vistas. Es importante destacar que cada uno de ellos constituye una descripción parcial
de una misma arquitectura y es deseable que exista cierto solapamiento entre ellos. Esto es así
porque todas las vistas deben ser coherentes entre sí, evidente dado que describen la misma cosa.
Cada paradigma de desarrollo exige diferente número y tipo de vistas o modelos para describir
una arquitectura. No obstante, existen al menos tres vistas absolutamente fundamentales en
cualquier arquitectura:
La visión dinámica: describe cómo se comportan los componentes a lo largo del tiempo y cómo
interactúan entre sí.
Las vistas o modelos de una arquitectura de software pueden expresarse mediante uno o varios
lenguajes. El más obvio es el lenguaje natural, pero existen otros lenguajes tales como los
diagramas de estado, los diagramas de flujo de datos, etc. Estos lenguajes son apropiados
únicamente para un modelo o vista. Afortunadamente existe cierto consenso en adoptar UML
(Unified Modeling Language, lenguaje unificado de modelado) como lenguaje único para todos los
modelos o vistas. Sin embargo, un lenguaje generalista corre el peligro de no ser capaz de describir
determinadas restricciones de un sistema de información (o expresarlas de manera
incomprensible).
Generalmente, no es necesario inventar una nueva arquitectura de software para cada sistema de
información. Lo habitual es adoptar una arquitectura conocida en función de sus ventajas e
inconvenientes para cada caso en concreto. Así, las arquitecturas más universales son:
En pipeline.
Entre pares.
En pizarra.
Arquitectura de micro servicios (MSA del inglés MicroServices Architecture). Algunos consideran
que es una especialización de una forma de implementar SOA.
Dirigida por eventos.
Máquinas virtuales
Modelo Vista Controlador: un patrón de arquitectura de software, que separa los datos y la lógica
de negocio de una aplicación de su representación y el módulo encargado de gestionar los eventos
y las comunicaciones