Qué es la Arquitectura del Software? 1 Arquitectura del software: definiciones Paul lements 1996 La arquitectura del software es a grandes rasgos, una vista del sistema que incluye los componentes principales del mismo, la conducta de esos componentes según se percibe desde el resto del sistema y las formas en que los componentes interactúan y se coordinan para alcanzar la misión del sistema. Len Bass 1998 La arquitectura del software de un programa o sistema de computación es la estructura o las estructuras del sistema, que contienen componentes de software, las propiedades externamente visibles de dichos componentes y las relaciones entre ellos. IEEE Std. 1471-2000 La arquitectura del software es la organización fundamental de un sistema encarnada en sus componentes, las relaciones entre ellos y con el entorno, y los principios que orientan su diseño y evolución. Qué es un componente? 2
Noción de componente y dependencia <<component>> A Dependencia A: A requiere la presencia de Los cambios de pueden afectar a A <<component>> B <<component>> Si A depende de B entonces... a) B invoca los servicios que ofrece A, por tanto A no hace nada si no es gracias a B. b) Si se modifica A para que ofrezca un nuevo servicio, probablemente también habrá que modificar B para que esto sea posible. c) B puede ser sustituido por sin necesidad de realizar ningún cambio en A, siempre que ofrezca un conjunto de servicios equivalente a B. d) Es posible añadir nuevos servicios en B sin necesidad de realizar ningún cambio en A.. 3 Interfaces y flujo de información En la interfaz Iostrar del siguiente diagrama de componentes, De qué componente a qué componente se transfiere la información? a) De ista a Usuario. b) De Usuario a ista. c) No se puede asegurar la dirección del flujo de información.. d) Ninguna de las anteriores. Dados dos componentes A y B, donde A proporciona una interfaz que requiere B, es posible que A reciba información de B? a) No es posible, ya que el que realiza peticiones es B. b) Sí es posible, si A proporciona métodos en los que introducir información.. c) Sí es posible, ya que la dependencia inducida A B lo permite. d) No es posible, para lograrlo sería necesario proporcionar una interfaz bidireccional. 4
Recapitulación: nodos y flechas Nodos: típicamente representan osas: objetos, conceptos Acciones: tareas, procesos, (estados), (metas) Flechas: típicamente representan ovimiento: secuencia temporal, transición, flujo de información, flujo de control ausalidad: influencia, implicación física o lógica, dependencia conceptual Flujo de control Flujo de información ómo hacer que llegue información desde A hasta B. Dependencia conceptual Flujo de información Quién conoce a quién? Dependencias inducidas Generalización Asociación estructural : declarada y representada explícitamente Asociación contextual : variable global, variable local, parámetro 5 Ejemplo 1: OS Los bloques representan componentes. Las flechas significan relaciones de dependencia de uso. IU GU GFD GF GOA G GR BD/cfg FD BD/res 6
Ejemplo 2: GDN IU ap Grf Gen Opt FE S4 FG 7 Ejemplo 3: AER IU/Profesional IU/Paciente Actividades Pacientes Transferencia /Profesional Transferencia /Paciente Ejercitador Transferencia Remota BD Datos Servicios Android 8
Arquitectura modelo-vista-controlador (original) Acciones del usuario ontrolador odificaciones en la vista ista Información al usuario onsultas y modificaciones en el modelo odelo onsultas al modelo Adaptado de E. Braude, Software Engineering: An Object-Oriented Perspective 9 Arquitectura modelo-vista-controlador (moderna) omunicación con el usuario ista omportamientos complejos ontrolador onsultas en el modelo odelo onsultas y modificaciones en el modelo odelo-ista-ontrolador original 10
Arquitectura modelo-vista-controlador (en capas) omunicación con el usuario ista omportamientos complejos onsultas en el modelo ontrolador onsultas en el modelo odelo onsultas y modificaciones en el modelo moderno original 11 Para qué sirve la Arquitectura del Software Para qué sirve la Arquitectura del Software D y DT y P Entonces, cuál es la relación que más nos interesa? Aplicación: el culebrón Recapitulación Qué es un componente ( no sólo en la vista de desarrollo!) ómo se relacionan unos componentes con otros Puntos de vista IEEE Std. 1471-2000: La arquitectura del software es la organización fundamental de un sistema encarnada en sus componentes, las relaciones entre ellos y con el entorno, y los principios que orientan su diseño y evolución. 12
El modelo de 4+1 vistas arquitectónicas ista lógica (conceptual) ista de desarrollo (implementación) ista de casos de uso ista de proceso (ejecución) ista física (despliegue) 13 aracterísticas de cada vista en el modelo 4+1 ista Lógica (conceptual) Proceso (ejecución) Desarrollo (implementación) Física (despliegue) Aspecto odelo de información oncurrencia y sincronización Organización del software en el entorno de desarrollo orrespondencia software-hardware Stakeholders Usuarios finales Integradores del sistema Programadores Ingenieros de sistemas Requisitos Funcionales Rendimiento Disponibilidad Fiabilidad oncurrencia Distribución Seguridad Gestión del software Reuso Portabilidad antenibilidad Restricciones impuestas por la plataforma o el lenguaje Rendimiento Disponibilidad Fiabilidad Escalabilidad Topología omunicaciones Notación lases y asociaciones Procesos y comunicaciones omponentes y relaciones de uso Nodos y rutas de comunicación 14
Arquitectura vs Requisitos: Twin Peaks Bashar Nuseibeh Weaving Together Requirements and Architectures IEEE omputer 34(3): 115-117, arch 2001, pp. 115-117. 15 Relaciones entre las cuatro vistas minimizar dependencias nuevas clases de diseño ista lógica (conceptual) ista de desarrollo (implementación)? identificar clases activas ista de proceso (ejecución) ista física (despliegue) requisitos no funcionales ale, y en qué orden? 16
ista lógica (conceptual) + ista de proceso (ejecución) 17 ista de desarrollo (implementación) + ista física (despliegue) 18