¿Por qué es importante el diseño arquitectónico?¿Qué decisiones se deben tomar respecto al sistema durante el diseño arquitectónico?¿Qué son los patrones o estilos arquitectónicos?¿Cuáles son los más usados en diferentes tipos de aplicaciones?
2. Índice
0-Objetivos de la presentación.
1-Qué es el diseño arquitectónico?
2-Decisiones de Diseño Arquitectónico.
3-Vistas Arquitectónicas.
4-Patrones Arquitectónicos.
5-Arquitecturas de Aplicación.
2
4. Objetivos
Entender porque el diseño arquitectónico del
software es importante.
Comprender las decisiones que se deben tomar
respecto al sistema durante el proceso de diseño
arquitectónico.
4
5. Objetivos
Introducir el concepto de patrones
arquitectónicos.
Conocer los patrones arquitectónicos usados con
frecuencia en diferentes tipos de aplicaciones.
5
7. Que es el Diseño Arquitectónico
Organización del sistema -> Diseño de la estructura
global.
Identificación componentes estructurales principales y la
relación entre ellos.
Desarrollo incremental de arquitecturas no suele tener
éxito.
7
9. Abstracción en el diseño arquitectónico
Architecture in the small:
Arquitectura de los programas individuales.
Architecture in the large:
Arquitectura de sistemas complejos. Distribuidos en
diferentes computadoras.
9
10. Importancia de la arquitectura del
software
Requisitos funcionales:
Componentes individuales
Requisitos no funcionales:
La manera en que los componentes están
organizados y en que se comunican.
10
11. Ventajas de una arquitectura explícita
Comunicación con los interesados (stakeholders)
Análisis de Sistemas
Reutilización a gran escala
11
13. Uso de los modelos arquitectónicos
Cómo una manera de facilitar la discusión sobre
el diseño del sistema:
Discusión sobre el sistema cómo un todo.
Cómo una manera de documentar la arquitectura
que ha sido:
Mostrar componentes, sus interfaces y sus
conecciones.
13
15. Decisiones del diseño arquitectónico
Procesos difieren dependiendo del tipo de
sistema que está siendo desarrollado.
Conjunto de decisiones comunes a todos los
procesos de diseño.
Pensar el diseño arquitectónico cómo una serie
de decisiones más que cómo una secuencia de
actividades.
15
16. Decisiones del diseño arquitectónico
Arquitectura de aplicaciones genéricas.
Distribución del sistema.
Patrones arquitectónicos (architectural styles).
Enfoque fundamental.
Descomposición del sistema.
Estrategia de control.
Evaluación del diseño.
Documentación.
16
17. Arquitectura y características del sistema
Desempeño
Seguridad de datos (security)
Arquitectura de capas
Seguridad de personas(safety)
Disponibilidad
Mantenibilidad
17
19. Vistas Arquitectónicas
Perspectivas y vistas útiles para documentar y
diseñar la arquitectura.
Notación ha ser usada.
Cada modelo arquitectónico muestra solo una
vista o perspectiva.
19
20. Vista del modelo de la arquitectura 4+1
Vista lógica: abstracciones clave
Vista de procesos: procesos interactuantes
Vista de desarrollo: cómo se descompone en
módulos durante el desarrollo
Vista física: cómo se distribuye (hw y sw) a
través de distintos procesadores.
Casos de uso relacionados
20
21. Dónde estamos?
0-Objetivos de la presentación.
1-Qué es el diseño arquitectónico?
2-Decisiones de Diseño Arquitectónico.
3-Vistas Arquitectónicas.
4-Patrones Arquitectónicos.
5-Arquitecturas de Aplicación.
21
23. Patrones arquitectónicos
Representar, compartir y reutilizar conocimiento.
Descripción estilizada de una buena práctica de
diseño, probada en diferentes ambientes.
Deben incluir información sobre cuándo son
útiles y cuando no.
Representados mediantes tablas y gráficos.
23
27. Arquitectura de capas (layered)
Usada para modelar la interconexión entre
subsistemas.
Organiza el sistema en un conjunto de capas
donde cada una brinda una serie de servicios
dados.
Permite el desarrollo incremental de las capas.
Solo las capas adyacentes se ven afectadas.
27
32. Arquitectura de Repositorio
Los subsistemas deben intercambiar datos:
-BD Centralizada o repositorio.
-Cada subsistema mantiene su BD y los
datos se transfieren explícitamente.
32
35. Arquitectura Cliente-Servidor
Datos y procesos están distribuidos a través de
una gama de componentes.
Conjunto de servidores autónomos proveen
servicios específicos,
Conjunto de clientes que solicitan esos servicios
y
Red que permite a los clientes acceder a los
servidores
35
38. Arquitectura Pipe and Filter
Transformaciones funcionales procesan
entradas para producir salidas.
Datos fluyen de una a otra y son transformados
en el camino.
38
42. Arquitecturas de aplicación
Usados para satisfacer necesidades de una
organización.
Organizaciones similares tienen requerimientos
parecidos.
Podemos hablar de arquitecturas de aplicación
genéricas que podamos adaptar.
42
43. Uso de las arquitecturas de aplicación
Punto de partida para el proceso de diseño
arquitectónico.
Lista de comparación en el diseño (design checklist).
Una manera de organizar el trabajo del equipo de
desarrollo.
Medida de reutilización de componentes.
Vocabulario para hablar sobre tipos de aplicación.
43
44. Ejemplos de tipos de aplicaciones
Procesamiento de:
Datos.
Transacciones.
Eventos.
Lenguajes.
44
45. Ejemplos de tipos de aplicaciones
Nos enfocaremos en dos tipos de aplicaciones.
Procesamiento de transacciones:
-Sistemas de comercio electrónico
(e-commerce)
-Sistemas de reservación
Procesamiento de lenguaje:
-Compiladores
-Intérpretes de comandos
45
46. Sistemas de procesamiento de transacciones
Procesos del usuario solicitan información de
una base de datos o quieren actualizarla.
Perspectiva del usuario: transacción es cualquier
secuencia coherente de acciones que satisfacen
un objetivo.
46
49. Arquitectura de sistemas de información
Tienen una estructura genérica que puede
organizarse cómo una arquitectura de capas.
Sistemas basados en transacciones que
generalmente involucran operaciones con bases
de datos.
49
52. Sistemas de información basados en web
Interfaz de usuario implementada mediante un
navegador web.
Ej: comercio electrónico.
Algunas funcionalidades adicionales.
52
53. Implementación del servidor
Usualmente implementados cómo arquitecturas
cliente-servidor multinivel (multi-tier)
Servidor responsable de todas las interacciones
con el usuario.
Gestor de la base de datos maneja dlas
transacciones.
53
54. Sistemas de procesamiento de lenguajes
Aceptan un lenguaje natural o artificial cómo
entrada y generan alguna otra representación de
ese lenguaje.
Compiladores tienen una arquitectura genérica
(análisis léxico, sintáctico, etc)
54
56. Componentes de un compilador
Un analizador léxico.
Una tabla de símbolos.
Un analizador sintáctico.
Un árbol sintáctico.
Un analizador semántico.
Un generador de código.
56
59. Recapitulando (1)
Arquitectura de software como descripción de la
organización de un sistema.
Decisiones de diseño arquitectónico incluyen:
tipo de aplicación, distribución y patrones
arquitectónicos.
Arquitecturas pueden ser documentadas desde
varias perspectivas.
59
60. Recapitulando (2)
Patrones arquitectónicos son una manera de
reutilizar conocimiento.
Modelos de sistemas de aplicación ayudan
comprensión y comparación.
Sistemas de procesamiento de transacciones y
de lenguajes.
60
61. Créditos y referencias
“Software Engineering”, Ian Sommerville, 9th
Edition. Pags: 147-172
El template de la presentación es de
SlidesCarnival.
61
-Cómo vimos en el capítulo 2, el diseñó arquitectónico es la primera etapa en el proceso de diseñó de software
-La salida del proceso del diseñó arquitectónico es un modelo arquitectónico que describe cómo el sistema está organizado en un conjunto de componentes intercomunicados.
-Refactorizacón de componentenes en respuesta a los cambios es relativamente fácil, refactorización de la arquitectura de un sistema suele ser costoso.