Brian Daniel García Ospina
Juan Camilo Peláez Martinez
Angie Vanessa Penagos Rios
Daniela Zuluaga Ocampo
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
•Cada estilo especifica unas categorías del sistema:
•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)
Text
•Estilos de llamada y retorno
•Estilo peer to peer
• Arquitecturas SOA (orientadas a servicios)
•Estilos orientadas a objetos
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
Se define como un modelo que se toma de muestra para reproducir otro elemento igual o similar.
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.
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
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.
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.
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.
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.
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
Aplica para sistemas de software que deben estar en capacidad de adaptar los requerimientos de cambio del sistema.
Atributos Asociados:
Portabilidad, escalabilidad, confiabilidad, disponibilidad
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
"Los patrones de diseño son el esqueleto de las soluciones a problemas comunes en el desarrollo de software"
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
Ayuda a constituir una colección de objetos que juntos conforman una unidad semántica.
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.
Los clientes asociados a un componente se comunican con un representante de éste, en lugar del componente en sí mismo.
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.
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
Provee una comunicación transparente entre procesos de un sistema de software con un modelo de interacción punto a punto (peer to peer).
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.
Descripción simplificada de un sistema desde una perspectiva especifica.
Kazman, et al. (2001)
Kruchten (1999)
Hofmeister, et al. (2000)
Bass et al. (1998)
Abstracción de requerimientos funcionales del sistema
Estilo : Orientado a objetos
Creación de procesos e hilos de ejecución,
comunicación entre ellos y recursos compartidos.
Organización de los elementos Arquitectónicas implementados.
Distribución de procesos en la plataforma
Escenarios y casos de uso
Especificación abstracta de clases, objetos, funciones y procedimientos.
Vista de Código
NA
NA
Vista de Clases + Vista de Flujo de Datos