Please enable JavaScript.
Coggle requires JavaScript to display documents.
Arquitecturas de software existente, Características de las Arquitecturas…
Arquitecturas de software existente
Tipos de Patrones
Patrón cliente-servidor:
se basa en el concepto de la existencia de un servidor y una serie de clientes, que piden al servidor y reciben una respuesta del mismo.
Ventajas:
Centralización.
Escalabilidad.
Mantenimiento simplificado.
Desventajas:
Disponibilidad.
Requisitos.
Distribución.
Patrón de capas:
se subdivide en un número de capas que representan una subtarea, cada una perteneciendo a un nivel de abstracción diferente.
Generalmente se utilizan las capas:
Presentación UI.
Aplicación.
Dominio.
Persistencia.
Ventajas:
Capacidad de testeo.
Facilidad de desarrollo.
Desventajas:
Rendimiento.
Escalabilidad.
Patrón MVC:
divide alguna aplicación interactiva en tres partes:
Modelo:
contiene la funcionalidad central y los datos.
Vista:
muestra la información al usuario.
Controlador:
maneja la entrada del usuario.
Ventajas:
Fácil colaboración.
Aplicación multi-vista.
Desventajas:
Complejidad.
Lento en ocasiones.
Patrón broker:
estos componentes pueden interactuar entre sí mediante la invocación de servicios remotos de forma que publicitan sus capacidades, solicitan un servicio y un componente llamado broker, se encarga de coordinar la comunicación entre los componentes.
Ventajas:
Escalabilidad.
Rendimiento.
Desventajas:
Coste.
Mantenimiento.
Características de las Arquitecturas de Software :
Arquitectura en capas (N-Layer)
.
Distribución jerárquica de los roles y las responsabilidades para proporcionar una división afectiva de los problemas a resolver. Los riles indican el tipo de forma de interacción con otras capas y las responsabilidades la funcionalidad que implementan
Ventajas
Modularidad
Facilita el desarrollo, la prueba y el mantenimiento de forma separada.
Separación de responsabilidades
Cada capa tiene una función especifica, gracias a esto se permite la separación de responsabilidades y una mayor claridad en la arquitectura.
Reutilización
Las capas pueden reutilizarse en diferentes proyectos. (Reduce tiempo y costos de desarrollo)
Desventajas
Complejidad
Debido a la necesidad de interfaces y comunicación entre capas, el proyecto se vuelve mas complejo.
Consumo de recursos
Aumenta el consumo de recursos (uso de memoria y CPU), debido a la comunicación entre capas.
Tiempo y esfuerzo de desarrollo
Se emplea mas tiempo y esfuerzo de desarrollo, debido a que cada capa se diseña, desarrolla y prueba por separado.
Cliente/Servidor
Define una relación entre dos aplicaciones en las cuales una de ellas(cliente) envía peticiones a la otra (Servidor y fuente de datos).
Ventajas
Administración centrada en el servidor
Por partes de los clientes existe poca transcendencia en el esquema y sus necesidades de administración son menores
Centralización de los recursos
Los recursos comunes a todos los usuarios se administran en el servidor. Evitando sucesos de redundancia o inconsistencia de información en las bases de datos.
Mejora de seguridad
Se reducen las posibilidades de acceso indebido, debido a que se dispone de un mecanismo central de autenticación.
Desventajas
Coste elevado
La instalación y mantenimiento son de costes elevados debido a la parte técnica del lado del servidor.
Dependencia del servidor
Toda la red esta construida al rededor del servidor, en caso de una falla afectara toda la infraestructura.
Master-slave
Cuenta con 2 grupos uno maestro(Master) y otro esclavo(Slave). Los esclavos hacen las tareas propuestas por el maestro y ya terminadas las envian de nuevo al maestro, el maestro se encarga de presentarlas, almacena o procesa. Esto trabaja asi para tener 2 partes, una que autoriza y dirigen para los calculos necesarios y la otra parte lo procesa de manera agnostica
Ventajas
Gestión centralizada
Se destaca para el diseño de tareas multi-tarea ya que permite dividir las tareas en diferentes módulos que pueden ser ejecutados de forma independiente.
Control
Al partir todas las tareas de un único nodo orquestador, se mantiene mayor control ya que las tareas se ejecutan de manera independiente y reciben el contexto y su procesamiento final de un único punto de la ejecución.
Escalabilidad
Al ser todas las tareas ejecutadas independientes las unas de las otras es posible escalar fácilmente el sistema de forma que añadir nuevos nodos esclavos se termine traduciendo en un más que posible aumento del rendimiento
Desventajas
Implementacion
No siempre puede implementarse en los proyectos. Para poderlo implementar debe de existir la posibilidad de dividirlo en módulos que puedan trabajar por si solos.
Dependencia
Su implementación implica una gran dependencia con el sistema en el cual fue implementado, por lo que se complica al momento de portarlo a otros sistemas.
Presentación desacoplada:
Indica como debe realizarse el manejo de las acciones del usuario, La manipulación de la interfaz y los datos de la aplicación. Separación
Ventajas:
Flexibilidad
Escalabilidad
Reutilización de componentes
Mejora de la colaboración
Tecnología agnóstica
Mayor seguridad
Mejora la experiencia del usuario
Facilita las pruebas
Desventajas:
Mayor complejidad inicial
Mayor tiempo de desarrollo inicial
Requiere habilidades especializadas
Mayor consumo de recursos
Posible sobrecarga de la red
Mayor dificultad de depuración y seguimiento
Posible falta de sincronización
Costos de desarrollo y mantenimiento
Arquitectura en capas (N-Tier):
Conceptualmente igual que la
arquitectura en capas (n- layer ),aunque se define la separación de la funcionalidad en segmentos físicos separados
(Tier).Normalmente la separación física se realiza en servidores
diferenciados por razones de estabilidad, seguridad, o
simplemente necesidad.
Ventajas
Alta comprobabilidad
Los componentes pertenecen a capas especificas de la arquitectura, otras capas pueden ser burladas o desviadas, convirtiéndose relativamente fácil de comprobar.
Alta facibilidad de desarrollo
Es muy conocido y no excesivamente complejo de implementar.
Fácil de asignar
Roles por separado
Desventajas
Complejidad
Aumenta la complejidad del sistema debido a la necesidad de interfaces y comunicación entre capas.
Rendimiento
Disminuye el rendimiento del sistema debido a la necesidad de comunicación entre capaz.
Arquitectura Orientada al Dominio:
Orientado para diseñar e
implementar aplicaciones empresariales complejas donde es
fundamental definir un Modelo de Dominio expresado en el propio
lenguaje de los expertos del dominio de negocio real( llamado
Lenguaje Ubicuo).
Ventajas
Mejor comunicación entre dominios expertos
Es una buena forma para escribir un codigo limpio, testeable y provee principios y patrones para resolver problemas dificiles
El software que se construye esta cerca del dominio y también cerca del consumidor
Desventajas
Puede ser más difícil de implementar que otros enfoques de diseño de software.
Requiere una comprensión detallada y precisa del dominio del problema para ser efectivo.
Puede requerir más tiempo y recursos para desarrollar una buena comprensión del dominio del problema y crear un modelo de dominio sólido.
Basado en componentes:
Conjunto de componente que exponen
interfaces bien definidas y que colaboran entre si para resolver el
problema. Diseñando de forma que pueda ser reutilizado en
distintas aplicaciones aunque algunos componentes son diseñados para tareas especificas.
Ventajas
La arquitectura basada en componentes reduce el coste de desarrollo y mantenimiento
Es reutilizable, lo que significa que se pueden utilizar componentes reutilizables para repartir el coste de desarrollo y mantenimiento entre varias aplicaciones.
Aumenta la fiabilidad de todo el sistema a través de la reutilización.
Desventajas
Complejidad: aumenta la complejidad del sistema debido a la necesidad de interfaces y comunicación entre las capas.
Tiempo y esfuerzo de desarrollo: requiere más tiempo y esfuerzo de desarrollo debido a la necesidad de diseñar, desarrollar y probar cada capa por separado.