Patrones arquitectónicos

Un patrón arquitectónico es una solución general y reutilizable a un problema común en la arquitectura de software dentro de un contexto dado.

El patrón propone una solución arquitectónica que sirve como base para el diseño de la arquitectura. Los patrones se abocan a un problema de aplicación específica dentro de un contexto dado y sujeto a limitaciones y restricciones. (Bovet Derpich, 20215)

Un patrón arquitectónico es una solución general y reutilizable a un problema común en la arquitectura de software dentro de un contexto dado. Los patrones arquitectónicos son similares al patrón de diseño de software, pero tienen un alcance más amplio. (medium, 2018)

Un patrón es un modelo que podemos seguir para realizar algo. Los patrones capturan la experiencia existente y probada para promover buenas prácticas. (ITS Virtual)

  • Patrones Arquitectónicos. Describen prácticas para definir la arquitectura del sistema.
  • Patrones de Diseño. Describen soluciones a problemas mucho más específicos en el diseño.
    (ITS Virtual)

Se definen tres tipos de patrones:

  • Patrones arquitectónicos sobre aspectos fundamentales de la estructura de un sistema software. Especifican un conjunto predefinido de subsistemas con sus responsabilidades y una serie de recomendaciones para organizar los distintos componentes.
  • Patrones de diseño sobre aspectos relacionados con el diseño de los subsistemas. Por tanto, se centran en aspectos más específicos.
  • Idiom es un patrón de bajo nivel específico de un lenguaje de programación o entrono de desarrollo.
    (Universidad de Sevilla)

Los patrones arquitectónicos determinan:

  • La organización estructural del sistema.
  • La selección de elementos estructurales.
  • El comportamiento de los componentes.
  • Las interfaces entre ellos.
    (ITS Virtual)

Tipos de Patrones Arquitectónicos

Patrón de capas

Se puede utilizar para estructurar programas que se pueden descomponer en grupos de subtareas, cada una de las cuales se encuentra en un nivel particular de abstracción. (medium, 2018)

Descompone una aplicación en un conjunto de capas independientes y ordenadas jerárquicamente. Cada capa usa los servicios de la capa inmediatamente inferior y ofrece los servicios a la capa inmediatamente superior. (medium, 2018)

Las 4 capas más comúnmente encontradas de un sistema de información general son las siguientes:

  • Capa de presentación (también conocida como capa UI).
  • Capa de aplicación (también conocida como capa de servicio).
  • Capa de lógica de negocios (también conocida como capa de dominio).
  • Capa de acceso a datos (también conocida como capa de persistencia).
    (medium, 2018)

Usos:

  • Aplicaciones de escritorio generales.
  • Aplicaciones web de comercio electrónico.
    (medium, 2018)

Patrón cliente-servidor

Este patrón consiste en dos partes; un servidor y múltiples clientes. El componente del servidor proporcionará servicios a múltiples componentes del cliente. Los clientes solicitan servicios del servidor y el servidor proporciona servicios relevantes a esos clientes. Además, el servidor sigue escuchando las solicitudes de los clientes. (medium, 2018)

Patrón maestro-esclavo

Este patrón consiste en dos partes; maestro y esclavos. El componente maestro distribuye el trabajo entre componentes esclavos idénticos y calcula el resultado final de los resultados que devuelven los esclavos. (medium, 2018)

Arquetipos

Es una clase o un patrón que representa una abstracción fundamental de importancia crítica para el diseño de una arquitectura para el sistema objetivo. Podemos obtener arquetipos con el estudio de las clases de análisis definidas como parte del modelo de los requerimientos. (Bovet Derpich, 20215)

Análisis de la arquitectura

  • Escenarios de investigación. Se desarrolla un conjunto de casos de uso para representar al sistema desde el punto de vista del usuario.
  • Obtención de los requerimientos, restricciones y descripción del ambiente.
  • Descripción de los estilos o patrones de arquitectura elegidos para abordar los escenarios y requerimientos. 1) Perspectiva modular, 2) perspectiva del proceso y 3) perspectiva del flujo de datos.
  • Evaluación de los atributos de calidad, considerando cada atributo por separado. El número de atributos de la calidad elegidos para el análisis es una función del tiempo disponible para la revisión y el grado en el que los atributos de calidad son relevantes para el sistema en cuestión.
  • Identificación de la sensibilidad de los atributos de calidad de varios atributos arquitectónicos para un estilo de arquitectura específico.
  • Critica de las arquitecturas candidatas en la descripción de patrones con el uso del análisis de sensibilidad
    (Bovet Derpich, 20215)

Fases de un desarrollo orientado a objetos

Los métodos orientados a objetos acortan la distancia que existe entre el espacio de conceptos (lo que los expertos o usuarios conocen) y el espacio de diseño (lo que conocen los desarrolladores) e implementación. (García Peñalvo & Pardo Aguilar, 1998)

En los desarrollos orientados al objeto se tiene una mayor continuidad entre las diferentes fases, con unas fronteras entre fases muy poco marcadas que dan lugar a desarrollos más iterativos e incrementales. Todo esto es posible gracias al modelo objeto que tiene como elemento central el objeto que es la entidad que encapsula elementos estructurales y de comportamiento. De esta forma, los objetos semánticos identificados en la fase de análisis se refinirán durante la fase de diseño e implementación, a la vez que se añaden objetos de interfaz y de utilidad para constituir la aplicación final. (García Peñalvo & Pardo Aguilar, 1998)

Análisis y diseño orientado a objetos (ADOO)

El diseño orientado a objetos es un diseño con ocultamiento de información. La representación puede cambiarse sin cambios muy extensos. Un objeto tiene un estado privado con un constructor asociado y operaciones de acceso y los objetos proveen servicios a otros objetos. (Rossainz Lopez)

Las interfaces de objetos deben ser precisamente definidas. Un lenguaje como Ada, C++ o JAVA puede usarse para esto. (Rossainz Lopez)

El objetivo del Análisis Orientado a Objetos (AOO) es modelar la semántica del problema en términos de objetos distintos pero relacionados. Por su parte, el Diseño Orientado a Objetos examina las clases del dominio del problema, refinándolas, extendiéndolas y reorganizándolas, para mejorar su reutilización y tomar ventaja de la herencia. (García Peñalvo & Pardo Aguilar, 1998)

En el AOO se llevan a cabo las actividades (García Peñalvo & Pardo Aguilar, 1998):

  • La identificación de las clases semánticas, atributos y servicios
  • Identificación de las relaciones entre clases
  • El reemplazamiento de las clases, atributos y servicios
  • La especificación del comportamiento dinámico mediante paso de mensajes

En el DOO deben llevarse a cabo estas actividades (García Peñalvo & Pardo Aguilar, 1998):

  • Añadir las clases interfaz, base y utilidad
  • Refinar las clases semánticas

More Posts

Diseño de software con metodologías ágiles

Extreme Programming y TDD

Test Driven Development es principalmente una metodología de desarrollo de software. La misión principal de TDD es dirigir la arquitectura, el diseño y la codificación del software.

Leer más »
Arquitectura en capas y orientado a objetos

Arquitectura en capas

Los primeros sistemas de cómputo existentes se encontraban aislados unos de otros y contaban con sus propios dispositivos propios de E/S, y los programas tenían acceso a la computadora únicamente a través de dichos dispositivos; con la llegada y auge de las redes de comunicaciones el panorama ha cambiado

Leer más »