arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20...
TRANSCRIPT
![Page 1: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/1.jpg)
Arquitecturas software© Fernando Berzal, [email protected]
Arquitecturas software
� Introducción: Conceptos clave.
� Vistas.
� Patrones arquitectónicos:� Arquitecturas basadas en capas.� Arquitecturas basadas en flujos de datos.� Arquitecturas con pizarra.
� Validación de la arquitectura.1
![Page 2: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/2.jpg)
Introducción
“I can make it for you fast, cheap, or good. Pick any two.”https://en.wikipedia.org/wiki/Project_management_triangle 2
Representación mediante un diagrama de Kiviat:“Diagrama de flexibilidad”
Karl E. Wiegers: “Creating a Software Engineering Culture”, 1996
Introducción
3
![Page 3: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/3.jpg)
Introducción
Puede ser difícil equilibrar todas las dimensiones clave…
4
Introducción
El rol del arquitecto
5
![Page 4: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/4.jpg)
Introducción
6
Introducción
El modelo de 3 picos
Bashar Nuseibeh: “Weaving Together Requirements and Architectures.”IEEE Computer, 34(3):115–117, March 2001.
7
![Page 5: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/5.jpg)
Introducción
8
Vistas
OBSERVACIÓNNo es posible capturar todas las características funcionales y no funcionales de un sistema complejoen un único modelo completo que resulte comprensible.
IDEAUn sistema complejo se describe mucho mejor mediante un conjunto de vistas relacionadas entre sí, que de forma colectiva ilustran sus características y demuestran que satisface sus objetivos.
9
![Page 6: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/6.jpg)
Vistas
10
Vistas
Modelo 4+1
Phillipe Kruchten (Rational Corporation):Architectural Blueprints: The 4+1 View Model of Software ArchitectureIEEE Software 12(6):42-50, November/December 1995 11
![Page 7: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/7.jpg)
Vistas
Modelo 4+1: Vista lógica
Modelo OO del diseño
PABX Control de tráfico aéreo 12
Modelo 4+1: Vista de procesos
Concurrencia & sincronización
PABX
Vistas
13
![Page 8: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/8.jpg)
Modelo 4+1: Vista física
Hardware & distribución
PABX
Vistas
14
Modelo 4+1: Vista de desarrollo
Organización de los módulos
Capas en un sistema de control de tráfico aéreo
Vistas
15
![Page 9: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/9.jpg)
Modelo 4+1: Escenarios
Casos de uso seleccionados
PABX
Vistas
16
Modelo 4+1
Resumen
Vistas
17
![Page 10: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/10.jpg)
Vistas
Modelo alternativoPuntos de vista…
18
Vistas
Modelo alternativoPunto de vista: Funcional
Diagrama de componentes UML 19
![Page 11: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/11.jpg)
Vistas
Modelo alternativoPunto de vista: Información
Diagrama de clases UML 20
Vistas
Modelo alternativoPunto de vista: Concurrencia
Uso de estereotipos en UML 21
![Page 12: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/12.jpg)
Vistas
Modelo alternativoPunto de vista: Concurrencia
Diagramas de estados en UML 22
Vistas
Modelo alternativoPunto de vista: Desarrollo
Diagramas de componentes en UML: Paquetes 23
![Page 13: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/13.jpg)
Vistas
Modelo alternativoPunto de vista: Despliegue
Diagramas de despliegue en UML 24
Vistas
Modelo alternativoPuntos de vista…
25
![Page 14: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/14.jpg)
Vistas
Modelo alternativoPuntos de vista…
Dependencias entre puntos de vista 26
Vistas
Modelo alternativo
… y perspectivas
27
![Page 15: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/15.jpg)
Vistas
Modelo alternativo
28
Vistas
Modelo alternativo
29
![Page 16: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/16.jpg)
Vistas
Beneficios
� Separación de asuntos [separation of concerns].
� Comunicación con grupos de “stakeholders”.
� Gestión de la complejidad del sistema.
� Descripción explícita de la arquitectura del sistema agrupando aspectos relevantes del sistema:Base del diseño del sistema.
30
Vistas
Limitaciones
� Inconsistencias entre las distintas vistas.
� Selección de un conjunto erróneo de vistas.
� Fragmentación de la descripción arquitectónica.
31
![Page 17: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/17.jpg)
Patrones arquitectónicos
� Arquitecturas basadas en capas.
� Arquitecturas basadas en flujos de datos.
� Arquitecturas con pizarra
32
Patrones arquitectónicosCapasAyudan a estructurar sistemas que pueden descomponerse en grupos de subtareasa distintos niveles de abstracción.
33
![Page 18: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/18.jpg)
Patrones arquitectónicosCapas
Capas de abstracción en computación 34
Patrones arquitectónicosCapas
Tarjeta CRC de una capa [POSA] 35
![Page 19: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/19.jpg)
Patrones arquitectónicosCapas
Estructura [POSA] 36
Patrones arquitectónicosCapas
Estructura [POSA] 37
![Page 20: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/20.jpg)
Patrones arquitectónicosCapasLa máquina virtual Java (JVM)
38
Patrones arquitectónicosCapasLa máquina virtual Java (JVM)
39
![Page 21: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/21.jpg)
Patrones arquitectónicosCapasSistemas operativos
Kernel monolítico vs. Microkernel
Monolítico: BSD, AIX, Linux, Multics, Windows 9x…Microkernel: Mach, RTOS (QNX, ChorusOS, Integrity)…Híbrido: Windows NT…https://en.wikipedia.org/wiki/Kernel_(operating_system) 40
Patrones arquitectónicosCapasSistemas operativos: UNIX
Bach: The Design of the UNIX Operating System, 1986 41
![Page 22: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/22.jpg)
Patrones arquitectónicosCapasSistemas operativos: UNIX
42
Patrones arquitectónicosCapasSistemas operativos: Linux
43
Versión 4.3 (2015) >20MLOC
![Page 23: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/23.jpg)
Patrones arquitectónicosCapasSistemas operativos: Linux
44
Patrones arquitectónicosCapasSistemas operativos: Linux
API: Application Programming InterfaceABI: Application Binary Interface
45
![Page 24: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/24.jpg)
Patrones arquitectónicosCapasSistemas operativos: Linux
46
Patrones arquitectónicosCapasSistemas operativos: Windows
Windows NT(1989…)
47
![Page 25: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/25.jpg)
Patrones arquitectónicosCapasSistemas operativos: Android
48
Patrones arquitectónicosCapasComunicaciones: El modelo de referencia OSI
49
![Page 26: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/26.jpg)
Patrones arquitectónicosCapasComunicaciones: El modelo TCP/IP
50
Patrones arquitectónicosCapasComunicaciones: El modelo TCP/IP
51
![Page 27: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/27.jpg)
Patrones arquitectónicosCapasComunicaciones: El modelo TCP/IP
Familia de protocolos TCP/IP 52
Patrones arquitectónicosCapasArquitectura ANSI/SPARC de un DBMS
53
Vista externa
Vista externa
Vista externa
Esquema conceptual
Estructuras de almacenamiento
interno
Usuarios
Nivel
Externo
Nivel
Interno
Nivel
Conceptual
Parte de la base de datos que es relevante para cada usuario.
Datos de la base de datos y relacionesentre ellos.
Organización física de los datos almacenados en
el ordenador.
![Page 28: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/28.jpg)
Patrones arquitectónicosCapasOpenGL/DirectX
54
Patrones arquitectónicosCapasMotores de videojuegos
55
![Page 29: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/29.jpg)
Patrones arquitectónicosCapasDiseño arquitectónico
Refinamiento progresivo� Definir el criterio de abstracción
(que nos permitirá agrupar tareas en capas).� Determinar el número de niveles de abstracción
(cada nivel de abstracción corresponde a una capa).� Nombrar las capas.� Asignar responsabilidades a cada una de ellas.� Especificar los servicios que ofrece cada capa.
NOTA: Un enfoque ascendente [bottom-up] o “yo-yo” puede resultar más adecuado…
56
Patrones arquitectónicosCapasDiseño detallado
� Diseñar la interfaz de cada capa.� Diseñar la estructura de cada capa.� Diseñar el mecanismo de comunicación entre capas
(p.ej. “push model” vs. “pull model”).� Desacoplar capas adyacentes.� Diseñar un mecanismo de gestión de errores.
57
![Page 30: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/30.jpg)
Patrones arquitectónicosCapasImplementación
58
Patrones arquitectónicosCapasImplementación
59
![Page 31: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/31.jpg)
Patrones arquitectónicosCapasImplementación
60
Patrones arquitectónicosCapasVentajas
� Reutilización de capas.
� Estandarización de tareas e interfaces.
� Dependencias locales.
� Implementaciones intercambiables.
61
![Page 32: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/32.jpg)
Patrones arquitectónicosCapasConsecuencias
� Cambios en cascada:Un cambio local en una capa puede afectar a otras(es importante proteger las capas superiores de posibles cambios en las capas inferiores).
� Eficiencia:La descomposición en capas suele ser menos eficiente que una implementación monolítica equivalente.
� Trabajo duplicado:Determinadas tareas puede que se realicen de forma innecesaria (p.ej. comprobación de errores).
62
Patrones arquitectónicosCapasVariante:Sistema basado en capas “relajado”
Cada capa puede utilizar los servicios de todas las capas que quedan debajo de ella.
� Mayor flexibilidad y rendimiento.
� Menor mantenibilidad.
p.ej. Sistemas operativos UNIX63
![Page 33: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/33.jpg)
Patrones arquitectónicosCapasVariante:PAC [Presentation-Abstraction-Control]
[POSA] 64
Patrones arquitectónicosCapasVariante:PAC [Presentation-Abstraction-Control]
[POSA] 65
![Page 34: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/34.jpg)
Patrones arquitectónicosCapasVariante:Microkernel
Separa el núcleo funcional mínimo del resto (para poder adaptarse a requisitos cambiantes).
[POSA] 66
Patrones arquitectónicosCapasVariante:Microkernel
67
![Page 35: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/35.jpg)
Patrones arquitectónicosCapasVariante:Microkernel
68
Patrones arquitectónicosFlujos de datos [pipes & filters]Para sistemas que tengan que procesar flujos de datos:� Cada etapa de procesamiento es un filtro.� Los datos pasan de un filtro a otro mediante canales.
Recombinar filtros sirve para construir familias completas de sistemas relacionados:
69
![Page 36: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/36.jpg)
Patrones arquitectónicosFlujos de datos [pipes & filters]
70
Patrones arquitectónicosFlujos de datos [pipes & filters]Push pipeline
71
![Page 37: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/37.jpg)
Patrones arquitectónicosFlujos de datos [pipes & filters]Pull pipeline
72
Patrones arquitectónicosFlujos de datos [pipes & filters]Mixed pipeline
73
![Page 38: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/38.jpg)
Patrones arquitectónicosFlujos de datos [pipes & filters]Pipes & filter system
74
Patrones arquitectónicosFlujos de datos [pipes & filters]Herramientas UNIX
75
![Page 39: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/39.jpg)
Patrones arquitectónicosFlujos de datos [pipes & filters]Intérpretes y compiladores
76
Patrones arquitectónicosFlujos de datos [pipes & filters]MATLAB Simulink
Simulación
77
![Page 40: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/40.jpg)
Patrones arquitectónicosFlujos de datos [pipes & filters]OpenGL rendering pipeline
78
Patrones arquitectónicosFlujos de datos [pipes & filters]OpenGL rendering pipeline
79
![Page 41: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/41.jpg)
Patrones arquitectónicosFlujos de datos [pipes & filters]MapReduce
80
Patrones arquitectónicosFlujos de datos [pipes & filters]MapReduce
81
![Page 42: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/42.jpg)
Patrones arquitectónicosFlujos de datos [pipes & filters]Google TensorFlow
https://www.tensorflow.org/
Data flow graph82
Patrones arquitectónicosFlujos de datos [pipes & filters]Microsoft CNTK [Computational Network Toolkit]http://www.cntk.ai/
CNTK compute graph 83
![Page 43: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/43.jpg)
Patrones arquitectónicosFlujos de datos [pipes & filters]Diseño
� Dividir la tarea en una secuencia de etapas de procesamiento de forma que la salida de cada etapa sólo dependa de las salidas de sus etapas adyacentes.
� Definir el formato de los datos que se transmitirán a través de los canales entre etapas adyacentes (p.ej. ASCII, XML, JSON…).
� Diseñar los filtros … y el mecanismo de gestión de errores.
84
Patrones arquitectónicosFlujos de datos [pipes & filters]Implementación de las conexiones
Manual:� Llamadas directas entre filtros. � Colas con productores/consumidores.
Utilizando mecanismos del sistema:� UNIX pipes� Middleware (colas de mensajes)
85
![Page 44: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/44.jpg)
Patrones arquitectónicosFlujos de datos [pipes & filters]Ventajas
� Flexibilidad: � Intercambio de filtros.� Recombinación de filtros.
� Reutilización de componentes.
� Ficheros intermedios innecesarios (aunque posibles).
� Prototipado rápido.
� Procesamiento paralelo.86
Patrones arquitectónicosFlujos de datos [pipes & filters]Consecuencias
� Datos compartidos (compartir muchos datos globales puede ocasionar problemas de rendimiento).
� El coste de transmisión de los datos puede ser significativo en comparación con el tiempo de procesamiento de los datos.
� La implementación en procesos/hebras independientes causa frecuentes cambios de contexto.
� La sincronización detiene los filtros a menudo si los canales de comunicación tienen búferes pequeños. 87
![Page 45: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/45.jpg)
Patrones arquitectónicosFlujos de datos [pipes & filters]Consecuencias
� Algunos filtros puede que requieran consumir todos sus datos de entrada antes de producir salida alguna (p.ej. ordenación) o no estén correctamente implementados (procesamiento incremental).
� Overhead debido a la transformación de los datos: un formato único es más flexible (p.ej. UNIX, XML) pero requiere múltiples conversiones de formato.
� Gestión de errores: El “talón de Aquiles” del patrón.
88
Patrones arquitectónicosPizarraÚtil en problemas para los que no se conocen estrategias determinísticas que permitan resolverlos.
89
![Page 46: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/46.jpg)
Patrones arquitectónicosPizarraHEARSAY-II
Reconocimiento de voz
90
Patrones arquitectónicosPizarraHEARSAY-II
Reconocimiento de voz
91
![Page 47: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/47.jpg)
Patrones arquitectónicosPizarraEvolución de los sistemas de reconocimiento de voz
Los sistemas basados en pizarra eran populares antes del “invierno de la IA”: Estudios sobre complejidad computacional en los años 70 (problemas NP-difíciles).
Técnicas estadísticas como los modelos ocultos de Markov [HMM] reemplazaron a los sistemas simbólicos como Hearsay-II.
92
Patrones arquitectónicosPizarraEvolución de los sistemas de reconocimiento de voz
Actualmente, se siguen utilizando HMMs cuyosparámetros seajustan con redes neuronales [deep learning].
93
![Page 48: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/48.jpg)
Patrones arquitectónicosPizarraCopycat
Razonamiento mediante analogías
94
Patrones arquitectónicosPizarraSistemas expertos
� Años 70: Primeros sistemas expertosDENDRAL, MYCIN, PROSPECTOR, R1/XCON…
� Años 80: La industria de la I.A. (“boom” de los sistemas expertos)
95
Memoria a largo plazo
Memoria a corto plazo
Razonamiento
Base deconocimiento
Memoria de trabajo
Motor de inferencia
![Page 49: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/49.jpg)
Patrones arquitectónicosPizarraALV
Autonomous Land Vehicle
96
Patrones arquitectónicosPizarraC4ISTAR
Command, Control, Communications, Computers, Information/Intelligence, Surveillance, TargetingAcquisition and Reconnaissance
Sistemas militares de detección y seguimiento de objetos 97
![Page 50: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/50.jpg)
Patrones arquitectónicosPizarraTarjetas CRC
98
Patrones arquitectónicosPizarra
99
![Page 51: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/51.jpg)
Patrones arquitectónicosPizarraDiseño
� Definir el problema y su espacio de soluciones (puede que a distintos niveles de abstracción: soluciones finales vs. resultados intermedios).
� Dividir el proceso en etapas independientes (transformación de resultados intermedios, predicción y verificación de hipótesis…).
� Diseñar subsistemas especializados para resolver subproblemas concretos.
100
Patrones arquitectónicosPizarraDiseño
Mecanismo de control
� La parte más difícil de diseñar: criterios heurísticos.
� Función: Determinar quién debe realizar cambios sobre la pizarra en cada momento.
� Mecanismos de estimación de la credibilidad (p.ej. verosimilitud [likelihood]) de cada hipótesis.
101
![Page 52: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/52.jpg)
Patrones arquitectónicosPizarraVariantes
� Sistemas de producción
p.ej. Business rules engineshttps://en.wikipedia.org/wiki/Business_rules_engine
� Repositorios(sin mecanismo de control centralizado)
p.ej. Bases de datosIDEs
102
Patrones arquitectónicosPizarraVentajas
� Flexibilidad: Experimentación con diferentes algoritmos y heurísticas de control.
� Reutilización: Componentes reutilizables.
� Tolerancia a fallos y robustez frente a ruido e incertidumbre (los resultados en la pizarra no son más que hipótesis y sólo las hipótesis más sólidas sobreviven)
103
![Page 53: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/53.jpg)
Patrones arquitectónicosPizarraConsecuencias
� Difícil de comprobar (pruebas de unidad OK, pruebas de integración problemáticas).
� Sin garantías (no siempre resuelven los problemas).
� Esfuerzo de desarrollo elevado (prueba y error).
� Baja eficiencia (proceso de búsqueda de hipótesis).104
Diseño arquitectónicoEl proceso de diseño
105
![Page 54: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/54.jpg)
Diseño arquitectónicoEl proceso de diseño
106
Validación de la arquitectura
Proceso de validación de las decisiones de diseño:
¿Se tomaron las decisiones correctas?
¿Compromisos adecuados en la resolución de conflictos?
¿Suposiciones acertadas en distintas facetas del sistema?
¿Integridad técnica del sistema?
107
![Page 55: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/55.jpg)
Validación de la arquitectura
Técnicas de validación
� Presentación (informal) de la arquitectura.
� Revisiones técnicas y recorridos estructurados.
� Evaluación mediante escenarios (p.ej. ATAM & SAAM).
� Prototipos y pruebas de concepto.
108
Validación de la arquitectura
Técnicas de validación
109
![Page 56: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/56.jpg)
Validación de la arquitectura
Evaluación mediante escenarios
� SAAM [Software Architecture Analysis Method]:Escenarios funcionales para evaluar cómo proporciona el sistema la funcionalidad clave y si resulta fácil adaptarlo frente a cambios probables.
� ATAM [Architecture Tradeoff Analysis Method]:Extiende SAAM con “quality property scenarios” que evaluar la capacidad del sistema para satisfacer sus requisitos no funcionales.
110
Validación de la arquitectura
Evaluación mediante escenarios
ATAM
111
![Page 57: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/57.jpg)
Validación de la arquitectura
Evaluación mediante escenarios
ATAM Quality Attribute Tree
112
� Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad& Michael Stal: Pattern-Oriented Software Architecture. Volume 1: A System of PatternsWiley, 1996. ISBN 0471958697
� Nick Rozanski & Eóin Woods:Software Systems Architecture: Working With Stakeholders Using Viewpoints and PerspectivesAddison-Wesley Professional, 2005.ISBN 0321112296
Bibliografía recomendada
113
![Page 58: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/58.jpg)
Bibliografía
114
The past, present,
and future for software architectureIEEE Software
2005
Apéndice: Conjuntos de vistas
RM-ODP
Reference Model for Open Distributed Processing
115
![Page 59: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/59.jpg)
Apéndice: Conjuntos de vistas
SiemensChristine Hofmeister, Robert Nord & Dilip Soni:Applied Software ArchitectureAddison-Wesley, 2000
116
Apéndice: Conjuntos de vistas
SEI ViewtypesPaul Clements, Rick Kazman & Mark Klein: Evaluating Software Architectures. Addison-Wesley, 2002.
117
![Page 60: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/60.jpg)
Apéndice: Conjuntos de vistas
SEI ViewtypesPaul Clements, Rick Kazman & Mark Klein: Evaluating Software Architectures. Addison-Wesley, 2002.
118
Apéndice: Conjuntos de vistas
SEI ViewtypesPaul Clements, Rick Kazman & Mark Klein: Evaluating Software Architectures. Addison-Wesley, 2002.
119
![Page 61: Arquitecturas software - elvex.ugr.eselvex.ugr.es/decsai/information-systems/slides/20 Architecture.pdf · Punto de vista: Funcional Diagrama de componentes UML 19. Vistas Modelo](https://reader031.vdocuments.site/reader031/viewer/2022022704/5bd6a4de09d3f29e118ba80e/html5/thumbnails/61.jpg)
Apéndice: Conjuntos de vistas
Jeff Garland & Richard Anthony: Large Scale Software Architecture.Wiley, 2003.
120