Estilos, patrones y vistas.
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:
- Conjunto de componentes: (base de datos, módulos de computo)
- Conjunto de conectores que permiten la comunicación, coordinación y cooperación entre los componentes
- Restricciones que definen como se integran los componentes para formar el sistema
- 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 Arquitectonicos
•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 Vanessa Penagos
Estilos y patrones
- 948