mÓdulo 1.4 arquitectura de software con uml€¦ · arquitectura de software de un sistema...
TRANSCRIPT
INGENIERÍA DE SOFTWARE II
MÓDULO 1.4
ARQUITECTURA DE SOFTWARE CON UML
Gabriel [email protected]
Cali, 2008
Arquitectura de Software con UML 2
Arquitectura de Software con UML
1. Motivación2. La Taxonomía de Flynn3. Estructura de Procesamiento4. Estructura de Memoria5. Redes de Interconexión6. Arquitectura de Software7. Estilos de Arquitectura
PROGRAMA
Arquitectura de Software con UML 3
Motivación
Qué tan importante es la eficiencia en tiempo en una solución computacional ?
Cuál es la incidencia que tiene la arquitectura y la estrategia de solución en la eficiencia computacional (requerimiento no funcional) ?
Problema ejemplo: entrega de paquetes (un vehículo, dos vehículos, velocidad constante de
Costo vs. tiempo, complejidad
Arquitectura de Software con UML 4
Motivación
En muchos casos, los requerimientos no funcionales son tan importantes como los funcionales.
Cuál es la complejidad algorítmica temporal de este fragmento de código ?
Qué estrategias se pueden usar para mejorar lo anterior ?
Si dispone de dos procesadores ?de tres procesadores ?de seis procesadores ?de doce procesadores ?
Cuál es la relación entre los requerimientos y la arquitectura del software y sus propiedades?
Arquitectura de Software con UML 5
La Taxonomía de Flynn
1966: Michael Flynn define su famosa taxonomía para clasificar sistemas de procesadores paralelos
Basado en la fuente y cantidad de flujos distintos de instrucciones y de datos de entrada:– SISD– MISD– SIMD– MIMD
Arquitectura de Software con UML 6
La Taxonomía de Flynn
MISD (tuberías)
Arquitectura de Software con UML 7
La Taxonomía de Flynn
MISD (tuberías)
Arquitectura de Software con UML 8
La Taxonomía de Flynn
SIMDProgramación paralela de datosProgramación paralela de control
Multiplicación de matrices en SIMD con seis procesadores:
Arquitectura de Software con UML 9
La Taxonomía de Flynn
Problemas de síncronización:
• Necesidad de que un procesador espere a que otro termine su procesamiento para él poder hacer el suyo (tuberías, SIMD en general)
• Sincronización por tiempo (actividades iguales, mismos retrasos)
• Sincronización por “Barrera”
Arquitectura de Software con UML 10
La Taxonomía de Flynn
MIMD síncrono:
• Máquinas sistólicas: máquinas de tubería (sistema cardiovascular) de dos dimensiones
• Varias etapas (cada etapa es una tubería)
• Cada etapa recibe como entrada la salida de la anterior: varios flujos de entrada de datos
Arquitectura de Software con UML 11
La Taxonomía de Flynn
MIMD asíncrono
• Modelo de flujo de datos• Nodos fuente, nodos
sumidero• Multiplicación de
matrices en SIMD con doce procesadores: dos “etapas”
Arquitectura de Software con UML 12
Escalamiento de la Taxonomía de Flynn
Granularidad
• Tamaño de la operación que realiza cada procesador• Grano fino (una sola instrucción de nivel de máquina
por vez), medio (máquinas sistólicas), grueso (poca sincronzación en general)
• Escalamiento de procesadores a sistemas• Arquitecturas
– Monolítica– Centralizada– Cliente servidor– De tres capas– De N capas– Distribuida
Arquitectura de Software con UML 13
Estructura de Memoria
• La memoria es un recurso que comparten procesadores
• Base del trabajo o computación cooperativo
Tipos de estructura de memoria en multiprocesamiento:
• Memoria físicamente compartida: Cuello de botella (acceso)
• Memoria lógicamente compartida
• Memoria distribuida
Arquitectura de Software con UML 14
Memoria Distribuida
Sistemas de redes de procesadores cada uno con su memoria (escala: base de datos distribuida)
Estructura de Memoria
Arquitectura de Software con UML 15
Redes de Interconexión de Procesadores
Interconexión:• Entre procesadores• Entre procesadores y memorias
Qué fluye?• Datos• Información de control (sincronización)
Topologías:
• Canal Compartido (Ethernet)
Arquitectura de Software con UML 16
Redes de Interconexión de Procesadores
Topología Interconexión completa o total:
• N procesadores: ( n(n-1)/2 ) enlaces
• Velocidad de acceso y comunicación vs. Costo
Arquitectura de Software con UML 17
Redes de Interconexión de Procesadores
Topología hipercubo de grado n (n>0):
• Cada procesador está conectado directamente a otros n-1 procesadores
• Tiene 2n nodos (procesadores)• Tiene n(n-1)/2 enlaces• Balance entre Velocidad de acceso y
comunicación vs. Costo
Arquitectura de Software con UML 18
Redes de Interconexión de Procesadores
Topología hipercubo:
• Estructura recursiva dimensional
• Un hipercubo de grado n+1 se construye con dos hipercubos de grado n
Arquitectura de Software con UML 19
Redes de Interconexión de Procesadores
Topología Mariposa:
• Reduce el número de interconexiones entre procesadores con respecto a hipercubo, pero mantiene algunas relaciones de interconectividad
Arquitectura de Software con UML 20
Redes de Interconexión de Procesadores
Topología Mariposa:
• Igual que el hipercubo, su estructura es recursiva
Arquitectura de Software con UML 21
Arquitectura de Software
Arquitectura de Software con UML 22
Arquitectura de Software
Arquitectura de Software? Cuál es la naturaleza de los
componentes y la relación entre ellos? Qué es un componente y qué denota?
Módulo, tarea, programa, proceso ? Cómo y dónde se ejecutan ? En
paralelo ? En secuencia ? Cómo se comunican ?
Qué significan las líneas ? Sincronización, comunicación, flujo de control o combinación de ellos ?
Qué significan los niveles (CP es jerárquicamente superior o no cabía horizontalmente) ?
Cómo opera en tiempo de ejecución ?
Qué se entiende por arquitectura de Software
Arquitectura de Software con UML 23
Arquitectura de Software
Arquitectura de Software de un sistema computacional:
Estructura o estructuras del sistema: componentes, propiedades externamente visibles y las relaciones entre ellos
Propiedades externamente visibles: propiedades que un componente puede ver de los demás en cuanto a sus propias necesidades: servicios, características de desempeño, uso de recursos
Vista global del sistema con información importante de análisis, toma de decisiones y reducción de riesgos
Arquitectura de Software con UML 24
Arquitectura de Software
Arquitectura de Software con UML 25
Arquitectura de Software Qué se entiende por arquitectura
de Software
Arquitectura de Software con UML 26
Arquitectura de Software Qué se entiende por arquitectura de Software
Arquitectura de Software con UML 27
Physical (Hardware) Architecture
Arquitectura de Software
Arquitectura de Software con UML 28
Estilos de Arquitectura de Software
Tipos Abstractos de Datos y Objetos
Arquitectura de Software con UML 29
Estilos de Arquitectura de Software
Por Capas (estratificado)
Arquitectura de Software con UML 30
Estilos de Arquitectura de Software
Blackboard o Repositorio Centralizado
Arquitectura de Software con UML 31
Estilos de Arquitectura de Software
Intérprete
Arquitectura de Software con UML 32
Estilos de Arquitectura de Software
Compilador Canónico
Arquitectura de Software con UML 33
Estilos de Arquitectura de Software
Variantes por Capas - Estratificado
Arquitectura de Software con UML 34
Estilos de Arquitectura de Software
Sistemas Basados en Reglas
Arquitectura de Software con UML 35
Estilos de Arquitectura de SoftwareSistemas Basados en Reglas