Blog Jose Cuellar

//Tech Lead, Senior Backend Developer & Life-long learner

Estilos y patrones básicos en arquitectura de software

por Jose el 6 abril, 2010

Conjunto de principios que definen a alto nivel un aspecto de la aplicación.
Los principales aspectos son: Comunicación, despliegue, dominio, interacción, relación y estructura. Lo normal en una arquitectura es no basarse en un solo estilo arquitectural, sino que combine varios para obtener las ventajas existentes de cada uno.

  • 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).

    Cliente/Servidor

  • Basado en componentes: Conjunto de componentes que exponen interfaces bien definidas y que colaboran entre sí para resolver el problema. Diseñado de forma que puedan ser reutilizados en distintos escenarios en distintas aplicaciones aunque algunos componentes son diseñados para tareas específicas.

    Basado en componentes

  • 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 roles indican el tipo y forma de interacción con otras capas y las responsabilidades la funcionalidad que implementan.

    Arquitectura en capas (N-Layer)

  • Presentación desacoplada: Indica cómo debe realizarse el manejo de las acciones del usuario, la manipulación de la interfaz y los datos de la aplicación. Separación de componentes de la interfaz del flujo de datos y de la manipulación.

    Presentación desacoplada

  • 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 escalabilidad, seguridad, o simplemente necesidad.

    Arquitectura en capas (N-Tier)

  • Arquitectura Orientada al Dominio (DDD): 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).

    • Arquitectura N-Layer.
    • Patrones de diseño:

      • Repository
      • Entity
      • Aggregate
      • Value-Object
      • Unit of Work
      • Services
    • Desacoplamiento entre componentes pertenecientes al diseño.

    Todo el equipo de desarrollo deben tener contacto con los expertos del dominio (expertos funcionales) para modelar correctamente el Dominio. El corazón del software es el Modelo del Dominio el cual es una proyección directa de dicho lenguaje acordado entre todos los miembros del equipo (lenguaje Ubicuo).

    Arquitectura Orientada al Dominio (DDD)

  • Orientado a Objetos (OO): Conjunto de objetos que cooperan entre sí en lugar de cómo un conjunto de procedimientos. Los objetos son discretos, independientes y poco acoplados, se comunican mediante interfaces y permiten enviar y recibir peticiones.

    Orientado a Objetos (OO)

  • Bus de Servicios(Mensajes): Define un sistema de software que puede enviar y recibir mensajes usando uno o más canales de forma que las aplicaciones pueden interactuar sin conocer detalles específicos la una de la otra. Interacción entre aplicaciones a través del paso de mensajes por un canal de comunicación común (bus). Se implementa a menudo usando un sistema de mensajes como MSMQ.

    Bus de Servicios(Mensajes)

2 thoughts on “Estilos y patrones básicos en arquitectura de software

  1. Lo felicito por el sitio, me parece bastante interesante. Gracias por la información que comparte. Quiesiera sin pretender incomodarlo que me proporcionara información que considere relevante para orientar un curso (Competencia): Diseñar el Sistema de acuerdo con los requerimientos del cliente, hablamos de arquitectura tecnológica y del software, prototipos del sistema de información, estructura de datos a partir del modelo conceptual, políticas y mecanismos de control y el informe de diseño del sistema de información. Cualquier aporte desde su perspectiva, dado lo que evidencia en su portal sería importante para mi.

    Muchas gracias.
    jrbaenag@misena.edu.co

  2. Gracias José.

    El alumnado debería tener unos ciertos mínimos conocimientos sobre la arquitectura de software.

    Son temas muy extensos y ámplios. Te aconsejaría sintetizarlos en puntos más importantes. Uniéndolos entre sí de forma práctica.

    Suerte.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.