Escolar Documentos
Profissional Documentos
Cultura Documentos
Bibliografa
C. Ghezzi et al. Software qualities and principles. Computer Science Handbook, 2nd ed. CRC Press, 2004 P. Clements et al. Documenting Software Architectures. Views and Beyond. Addison Wesley, 2003
Parte I (Software Architecture Viewtypes and Styles)
Contenido
Conceptos bsicos Vistas modulares Vistas de componentes y conectores Vistas de asignacin
Conceptos bsicos
Principios
abstraccin, etc. abstraccin, etc.
Rendimiento evolvability
Usabilidad
verificabilidad
Mantenibilidad
Tolerancia a fallos Interoperabilidad
reparability
Portabilidad Escalabilidad
Robustez
Correccin
Fiabilidad
Disponibilidad
Seguridad
Cualidades externas
cliente, usuarios finales,
Portabilidad
reparability evolvability
Rendimiento
Disponibilidad
Tolerancia a fallos
Escalabilidad
Interoperabilidad
Fiabilidad
verificabilidad
Correccin
Usabilidad
Seguridad
Mantenibilidad
Robustez
Robustez
El sistema funciona razonablemente bien, incluso ante situaciones no anticipadas en los requisitos funcionales
La eficiencia en el uso de recursos (computacionales y de almacenamiento) por parte del software contribuye al buen rendimiento
Pero la eficiencia es una cualidad interna
Usabilidad
Grado en el que sistema es fcil de utilizar o amigable al usuario (user-friendly) No atae nicamente a los usuarios humanos (por ejemplo, interfaces con otros sistemas) Requisitos: interfaces consistentes y precedibles, ms correccin y rendimiento
Seguridad
Privacidad: garantiza que los servicios proporcionados por el sistema y la informacin almacenada son nicamente accesibles a los usuarios autorizados Integridad de datos: la consistencia y validez de la informacin almacenada no se ve comprometida
Understandability
Facilidad con la que los desarrolladores pueden comprender el diseo y la implementacin del sistema Favorece la verificabilidad y la mantenibilidad
Mantenibilidad
Facilidad con la que el software puede ser modificado (modifiability, elaboration tolerance), bien para mejorar las propiedades del sistema (reparability) o para introducir nuevas funcionalidades (evolvability)
Reusabilidad
Grado en el que elementos del sistema pueden ser utilizados para construir nuevos productos Distintos niveles de granularidad: componentes, libreras, estilo arquitectnico Favorecida por los principios de encapsulacin de la informacin, genericidad, especializacin,
Interoperabilidad
El sistema puede interactuar con otras aplicaciones, posiblemente en un entorno heterogneo, desarrolladas por organizaciones independientes Reusabilidad al nivel de aplicaciones Ejemplos: interfaces estndar de UNIX, DCOM/CORBA/Web Services, etc.
10
Vistas arquitectnicas:
La arquitectura de un sistema consta de mltiples vistas, asociadas a diferentes dimensiones o perspectivas del sistema Ninguna vista particular constituye LA arquitectura del sistema Las vistas se encuentran dirigidas a usuarios particulares y asociadas a requisitos no-funcionales concretos
12
Estilos arquitectnicos:
Patrones pertenecientes a un tipo de vista concreto, que definen una serie de restricciones a los tipos de elementos y relaciones de la vista arquitectnica Algunos estilos son universales, mientras que otros definen un tipo particular de software En cualquier caso, la arquitectura de un sistema est compuesta por vistas pertenecientes a mltiples estilos
13
Vistas C&C
.. Estilo C&C 2 Estilo C&C 1
Vistas de Asignacin
.. Estilo A 2 Estilo A 1
Estilos
Estilo M 1
..
.. Vista A 2 Vista A 1
Arquitectura
Vista M 2 Vista M 1
14
Contenido
Conceptos bsicos Vistas modulares Vistas de componentes y conectores Vistas de asignacin
15
Contenido
Conceptos bsicos Vistas modulares Vistas de componentes y conectores Vistas de asignacin
16
Caractersticas
Propsito
Identifican las principales unidades de implementacin, junto con sus relaciones ms relevantes
Elementos
Mdulos: unidades de implementacin que proporcionan un conjunto de funcionalidades determinado (representadas por interfaces)
Java packages, Java/C++ classes, Ada packages,
Relaciones
Is-Part-Of: definen relaciones de inclusin entre los mdulos Depends-on: definen relaciones de dependencia entre mdulos (p. ej., un mdulo utiliza, o est autorizado a utilizar, otro mdulo) Is-A: definen relaciones de generalizacin
17
Estilos
Vistas Modulares
Decomposition Style
Uses Style
Generalization Style
Layered Style
18
Decomposition Style
Elementos
mdulos generales y, ms concretamente, subsistemas. Los subsistemas son mdulos agregados en otros de ms amplio alcance, que suelen poseer las siguientes caractersticas:
Poseen una funcionalidad definida Pueden ser ejecutados independientemente Pueden ser desarrollados e instalados de forma incremental
Relaciones
descomposicin de mdulos; un tipo especial de la relacin genrica ispart-of, en la que:
un mdulo slo puede formar parte de un agregado los bucles no estn permitidos
Caractersticas
Understandability, modifiability, reusabilidad, trazabilidad de requisitos (correccin), planificacin y monitorizacin del avance, ...
Tema 4.1 Vistas y estilos arquitectnicos 19
Decomposition Style
Notacin UML
Mdulos y subsistemas
Relacin de descomposicin
20
Decomposition Style
Java packages
21
Uses Style
Elementos
mdulos generales
Relaciones
uso de mdulos (uses); un tipo especial de la relacin genrica depends on, tal que:
un mdulo A usa otro mdulo B, si el correcto funcionamiento de A depende de una correcta implementacin de B
Caractersticas
La relacin de uso no implica necesaria o suficientemente una llamada a las operaciones pblicas del paquete dependiente Existen otros tipos de relaciones de dependencia: por ejemplo, dependencias en tiempo de compilacin Este estilo permite evaluar la cohesin y acoplamiento entre mdulos, planificar incrementalmente el desarrollo, las pruebas e instalacin del sistema, futuras extensiones (evolvability), etc.
Tema 4.1 Vistas y estilos arquitectnicos 22
Uses Style
Notacin UML
23
Layered Style
Elementos
Capas (layers):
Una coleccin de mdulos que conjuntamente constituyen una mquina virtual: un interfaz abstracto de los servicios de ms bajo nivel proporcionados por otro software, hardware o mquina virtual.
Relaciones
uso permitido (allowed to use)
Establece una jerarqua de capas Los mdulos de una capa no pueden utilizar arbitrariamente los de una capa superior Reglas de uso: nicamente el nivel inmediatamente inferior; o cualquier nivel inferior, etc.
Caractersticas
reusabilidad, portabilidad y tolerancia a cambios
24
Layered Style
Notacin UML
25
Contenido
Conceptos bsicos Vistas modulares Vistas de componentes y conectores Vistas de asignacin
26
Caractersticas
Propsito
Describir el comportamiento y estructura del sistema en tiempo de ejecucin
Elementos
Componentes: unidades de procesamiento y almacenamiento
Ejemplos: objetos, threads, procesos, bases de datos, etc. Propiedades: funcionalidad proporcionada, puertos (o interfaces), etc.
Relaciones
Attachment: conexin entre un puerto de un componente, y un rol de un conector
Caractersticas
Rendimiento, disponibilidad, tolerancia a fallos, seguridad, etc.
27
Estilos
Vistas C&C
Peer-to-Peer
Multiagent
..
28
Estilos
Metamodelo para la representacin de estilos C&C:
29
Tipos de conectores
Pipes: canales asncronos de datos
Tipos de Roles: source, sink Conservan el orden en el que se reciben los datos Pueden utilizar buffers para permitir un tipo de procesamiento asncrono, concurrente, etc. Abstraen la identidad de los filtros
Attachment
El puerto de salida (entrada) de un filtro se conecta al rol de entrada (salida) de datos de un pipe
Caractersticas
Estilo orientado a la transformacin de datos
30
31
32
ACME
Component Splitter: Filter = { Port si1: Input = ..; Port so1: Output = ..; Port so2: Output = ..; ... } Component Grep: Filter = { Port gi1: Input = ...; Port go1: Output = ...; } ... Connector p1: Pipe = ...; ... Attachments{ Splitter.so1 to p1.src; Grep.gi1 to p1.snk ... }
Tema 4.1 Vistas y estilos arquitectnicos 33
34
Contenido
Conceptos bsicos Vistas modulares Vistas de componentes y conectores Vistas de asignacin
35
Caractersticas
Propsito
Describir las relaciones entre los elementos de las vistas modulares o de C&C y otros aspectos del entorno del sistema
Elementos
Elementos software: elementos de las vistas modulares y C&C
mdulos, componentes, conectores, .
Relaciones
Allocated-to: asignacin de un elemento software a un elemento del entorno
36
Estilos
Allocation Viewtype
Deployment Style
Implementation Style
37
Deployment Style
Elementos software
Elementos de los estilos C&C
Procesos, threads, .
Relacin Allocated-to
Asigna una unidad fsica a un elemento software
Relaciones Migrates-to
En caso de que la asignacin sea dinmica, especifica la variabilidad de la asignacin
Caractersticas
anlisis del rendimiento, fiabilidad, seguridad y costes del sistema
38
Deployment Style
Notacin UML: deployment diagrams
39