Estilos, patrones y vistas.

Brian Daniel García Ospina

Juan Camilo Peláez Martinez

Angie Vanessa Penagos Rios

Daniela Zuluaga Ocampo

 

Estilos arquitectónico

Los estilos arquitectónicos son paquetes re-utilizables de las decisiones de diseño y las restricciones que se aplican a una arquitectura

Una arquitectura del software se define mediante: elementos, forma, razón
 

  • Elementos: procesamiento, datos, conexión 
  • Forma: las propiedad y relaciones entre elementos
  • Razón: motivación para la elección de elementos y sus formas

Estilos arquitectónico

•Cada estilo especifica unas categorías del sistema:

 

  1. Conjunto de componentes: (base de datos, módulos de computo)
  2. Conjunto de conectores que permiten la comunicación, coordinación y cooperación entre los componentes
  3. Restricciones que definen como se integran los componentes para formar el sistema
  4. Modelos semánticos, para interpretarlos por un diseñador

Estilos Arquitectónicos

•Estilos centrado en datos

         Pizarra(blackboard) o almacenamiento(shared-data)

 

•Estilos flujos de datos

Pipeline y procesos      secuencial en lotes

 

•Estilos arquitectura por capas (capa interna, externa, intermedia)

 

Estilos Arquitectónicos

Text

Estilos Arquitectónicos

•Estilos de llamada y retorno

  • Arquitectura de programa   
  • MVC, Jerarquia por capas
  • Arquitectura de llamada de proceso remoto
  • RPC, Basadas en componentes

Estilos Arquitectónicos

•Estilo peer to peer

          • Arquitecturas SOA (orientadas a servicios)

•Estilos orientadas a objetos

 

Estilos Arquitectónicos

Ventajas de los estilos

•Ayudan en la toma de decisiones, usan una arquitectura como normativa, permite un enfoque mas allá de los algoritmos y estructuras de datos

•La arquitectura marca decisiones de diseño tempranas y proporciona el mecanismo para evaluar los beneficios de las estructuras del sistema.

 

Desventajas

•Abundancia de herramientas de diseño arquitectónico, no hay urgencia en considerar otros paradigmas

Estilos Arquitectónicos

Patrón (Pattern)

Se define como un modelo que se toma de muestra para reproducir otro elemento igual o similar.

Patrón de Arquitectura

Un patrón arquitectónico expresa un esquema estructural para la construcción de un sistema

Son estrategias que ofrecen soluciones a problemas de arquitectura de software en ingeniería de software.

Dan una descripción de los elementos y el tipo de relación que tienen junto con un conjunto de restricciones sobre cómo pueden ser usados.

Capas (Layers)

Se dividen las clases en grupos que tienen el mismo objetivo para diferentes entidades de negocio, cada capa corresponde a una funcionalidad transversal del sistema

Capa de presentación
Capa de negocio
Capa de datos
Clientes
Servidor de negociación
Servidor de BD

Patrón de arquitectura

Tuberias y Filtros (Pipeline)

Es una cadena de componentes (procesos, hilos, rutinas, funciones, etc.) organizados para que la salida de cada elemento sea la entrada del siguiente, la información fluye a través de cada componente y usualmente es necesario aplicar algunos filtros para transformarla en determinadas partes del proceso.  

Patrón de arquitectura

Pizarra (Blackboard)

Es un modelo arquitectónico de software habitualmente utilizado en sistemas expertos, sistemas multiagente y, en general, sistemas basados en el conocimiento.

Parte del principio de que la solución es la suma de todas las partes.

Patrón de arquitectura

Broker

Este patrón se utiliza para estructurar sistemas distribuidos con componentes desacoplados. Estos componentes pueden interactuar entre sí mediante invocaciones de servicio remotas. Un componente Broker es responsable de la coordinación de la comunicación entre los componentes.

Patrón de arquitectura

MVC

(Modelo - Vista -Controlador)

Es un patrón que separa los datos y la lógica de negocio de la interfaz de usuario y el módulo encargado de gestionar los eventos y las comunicaciones.

Para ello MVC propone la construcción de tres componentes distintos que son el modelo, la vista y el controlador, es decir, por un lado define componentes para la representación de la información, y por otro lado para la interacción del usuario.

Patrón de arquitectura

Presentation - Abstraction - Control

Define una estructura para sistemas de software interactivos de agentes de cooperación organizados de forma jerárquica. Cada agente es responsable de un aspecto específico de la funcionalidad de la aplicación.

 

Atributos Asociados:

Modificabilidad, escalabilidad, integrabilidad

Patrón de arquitectura

Microkernel

Aplica para sistemas de software que deben estar en capacidad de adaptar los requerimientos de cambio del sistema.

 

Atributos Asociados:

Portabilidad, escalabilidad, confiabilidad, disponibilidad

Patrón de arquitectura

Reflection

Provee un mecanismo para sistemas cuya estructura y comportamiento cambia dinámicamente. Soporta la modificación de aspectos fundamentales como estructuras tipo y mecanismos de llamadas a funciones

 

Atributos Asociados:

Modificabilidad

Patrón de arquitectura

Patrón de diseño

"Los patrones de diseño son el esqueleto de las soluciones a problemas comunes en el desarrollo de software"

Objetivos 

Proporcionar catálogos de elementos reusables en el diseño de sistemas software.

Evitar la reiteración en la búsqueda de soluciones a problemas ya conocidos y solucionados

Formalizar un vocabulario común entre diseñadores

Estandarizar el modo en que se realiza el diseño

Facilitar el aprendizaje de las nuevas generaciones

Patrón de diseño

Clasificación de los patrones de diseño

  • Descomposición estructural

Patrón de diseño

  • Organización de trabajo
  • Control de acceso
  • Administración
  • Comunicación

Whole Part

Patrón de diseño

Ayuda a constituir una colección de objetos que juntos conforman una unidad semántica. 

Descomposición estructural

Master-Slave 

Patrón de diseño

Un componente maestro (master) distribuye el trabajo a los componentes esclavos (slaves). El componente maestro calcula un resultado final a partir de los resultados arrojados por los componentes esclavos. 

Organización de trabajo

Proxy

Patrón de diseño

Los clientes asociados a un componente se comunican con un representante de éste, en lugar del componente en sí mismo. 

Control de acceso

Command Processor

Patrón de diseño

Separa las solicitudes de un servicio de su ejecución. Maneja las solicitudes como objetos separados, programa sus ejecuciones y provee servicios adicionales como el almacenamiento de los objetos solicitados, para permitir que el usuario pueda deshacer alguna solicitud.

Administración

View Handler

Patrón de diseño

Ayuda a manejar todas las vistas que provee un sistema de software. Permite a los clientes abrir, manipular y eliminar vistas. También coordina dependencias entre vistas y organiza su actualización

Administración

Forwarder Receiver 

Patrón de diseño

Provee una comunicación transparente entre procesos de un sistema de software con un modelo de interacción punto a punto (peer to peer). 

Comunicación

Publisher Subscriber  

Patrón de diseño

Ayuda a mantener sincronizados los componentes en cooperación. Para ello, habilita una vía de propagación de cambios: un editor (publisher) notifica a los suscriptores (suscribers) sobre los cambios en su estado. 

Comunicación

Vistas arquitectónicas

Descripción simplificada de un sistema desde una perspectiva especifica.

Propuestas arquitectónicas

  • Kazman, et al. (2001)

  • Kruchten (1999)

  • Hofmeister, et al. (2000)

  • Bass et al. (1998)

Vistas arquitectónicas

Vistas arquitectónicas - Comparación

Abstracción de requerimientos funcionales del sistema

  • Vista funcional
  • Vista lógica
  • Vista conceptual
  • Vista conceptual o lógica

Estilo : Orientado a objetos

Vistas arquitectónicas - Comparación

Creación de procesos e hilos de ejecución,

comunicación entre ellos y recursos compartidos.

  • Vista de concurrencia
  • Vista de procesos
  • Vista de ejecución
  • Vista de procesos o coordinación

Vistas arquitectónicas - Comparación

Vistas arquitectónicas - Comparación

Organización de los elementos Arquitectónicas implementados.

  • Vista de desarrollo
  • Vista de implantación
  • Vista de código
  • Vista física + vista de módulos

Vistas arquitectónicas - Comparación

Distribución de procesos en la plataforma

Vistas arquitectónicas - Comparación

  • Vista física + vista de concurrencia
  • Vista de desarrollo
  • Vista de modulos y vista de ejecución
  • Vista de flujo de control

 

Escenarios y casos de uso

Vistas arquitectónicas - Comparación

  • NA
  • Vista de casos de uso
  • Vista conceptual
  • Vista de usos

Especificación abstracta de clases, objetos, funciones y procedimientos.

Vistas arquitectónicas - Comparación

  • Vista de Código

  • NA

  • NA

  • Vista de Clases + Vista de Flujo de Datos

Estilos y patrones

By Daniela Zuluaga Ocampo