Você está na página 1de 39

Arquitecturas software y familias de productos

Parte IV. Arquitecturas software y estilos arquitectnicos


Tema 4.1- Vistas y estilos arquitectnicos
Tema 4.2 Arquitecturas de componentes y conectores Tema 4.3 Arquitecturas multiagente Juan Manuel Serrano Mster Oficial en Sistemas Telemticos e Informticos Universidad Rey Juan Carlos 2007-2008

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)

L. Bass et al. Software architecture in Practice (2nd edition). Addison-Wesley, 2003


Partes I y II

Tema 4.1 Vistas y estilos arquitectnicos

Contenido
Conceptos bsicos Vistas modulares Vistas de componentes y conectores Vistas de asignacin

Tema 4.1 Vistas y estilos arquitectnicos

Conceptos bsicos
Principios
abstraccin, etc. abstraccin, etc.

modularidad, ,separacin modularidad separacin de aspectos, generalidad, , de aspectos, generalidad

Proceso de desarrollo (mtodos, tcnicas, herramientas) Producto software Stakeholders


cliente, usuario cliente, usuario final, ,desarrollador, final desarrollador,

Productos intermedios (artifacts)


requisitos funcionales yyno-funcionales, , requisitos funcionales no-funcionales anlisis, arquitectura, ,diseo, casos de anlisis, arquitectura diseo, casos de pruebas, etc. pruebas, etc.

de pruebas, etc. de pruebas, etc.

gestor del gestor del proyecto, ,equipo proyecto equipo

Tema 4.1 Vistas y estilos arquitectnicos

Cualidades del software


Quality attributes/ Software qualities/ non-functional requirements

Rendimiento evolvability
Usabilidad
verificabilidad

Mantenibilidad
Tolerancia a fallos Interoperabilidad

reparability

Portabilidad Escalabilidad
Robustez

Correccin
Fiabilidad

Disponibilidad

Seguridad

Tema 4.1 Vistas y estilos arquitectnicos

Clasificacin de cualidades del software


Cualidades internas
desarrolladores, gestor del proyecto,

Cualidades externas
cliente, usuarios finales,

Portabilidad
reparability evolvability

Rendimiento
Disponibilidad
Tolerancia a fallos

Escalabilidad
Interoperabilidad

Fiabilidad
verificabilidad

Correccin
Usabilidad

Seguridad

Mantenibilidad

Robustez

Tema 4.1 Vistas y estilos arquitectnicos

Cualidades externas (I)


Correccin
El sistema cumple con los requisitos funcionales especificados Medicin: experimentalmente (pruebas), analticamente (verificacin formal, inspecciones de cdigo, etc.)

Fiabilidad (reliability/ dependability)


El usuario puede confiar en el buen funcionamiento del sistema Se trata de una propiedad no booleana
Estadsticamente: probabilidad de que el sistema funcione correctamente durante un intervalo temporal determinado

Subcomponentes: tolerancia a fallos, disponibilidad (availability), safeness

Robustez
El sistema funciona razonablemente bien, incluso ante situaciones no anticipadas en los requisitos funcionales

Tema 4.1 Vistas y estilos arquitectnicos

Cualidades externas (II)


Rendimiento
Efectividad con la que el sistema realiza las funciones encomendadas, de acuerdo con los requisitos establecidos por el usuario
Relacionado con la escalabilidad

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

Medicin: monitorizacin, analticamente, simulacin

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

Tema 4.1 Vistas y estilos arquitectnicos

Cualidades internas (I)


Verificabilidad
Facilidad con la que es posible probar la correccin del software, y otras cualidades (rendimiento, etc.) Puede convertirse en una cualidad externa en caso de aplicaciones crticas

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)

Tema 4.1 Vistas y estilos arquitectnicos

Cualidades internas (II)


Portabilidad
Facilidad con la que el sistema puede ser ejecutado en distintos entornos heterogneos Dependencias hardware y, especialmente, software (SSOO, BBDD, )

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.

Tema 4.1 Vistas y estilos arquitectnicos

10

Arquitectura del software


Como objeto de estudio, las arquitecturas software constituyen una subdisciplina de la ingeniera del software Arquitectura vs. otros artefactos
Arquitectura y requisitos no-funcionales: el rendimiento, la toleracia a fallos, seguridad, toleracia a cambios, escalabilidad, portabilidad, reusabilidad, posibilidad de un desarrollo incremental, etc., se encuentran condicionados por la arquitectura y/o puede ser evaluados arquitectnicamente Arquitectura vs. anlisis: el anlisis de un sistema abstrae cualquier tipo de referencia a elementos software (p. ej.: sockets, bases de datos, unidades de procesamiento, etc.) Arquitectura vs. diseo: ambas hacen referencia a la estructura del software; difieren en el nivel de detalle/agregacin

Por qu documentar la arquitectura?


Vehculo de comunicacin, understandability, reusabilidad, etc.
Tema 4.1 Vistas y estilos arquitectnicos 11

Arquitectura del software: vistas arquitectnicas


Arquitectura Software de un sistema:
La estructura (o estructuras) del sistema, compuesta por elementos, las propiedades visibles de stos, y las relaciones que mantienen dentro de ella (Clements et al. 03; Bass et al. 03)

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

Tipos de vistas arquitectnicas:


Rationals 4+1 approach (1995):
Vistas lgicas, de procesos, de desarrollo, fsicas + vistas de casos de uso

Tema 4.1 Vistas y estilos arquitectnicos

12

Arquitectura del software: estilos arquitectnicos


Tipos de vistas arquitectnicas (cont.):
Clements et al. (2003)
Vistas modulares: aspectos estructurales Vistas de componentes & conectores (C&C): aspectos dinmicos Vistas de asignaciones (allocation view): relacin entre el software y los entornos de desarrollo y ejecucin

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

Tema 4.1 Vistas y estilos arquitectnicos

13

Arquitectura del software


Tipos de vistas Vistas Modulares
.. Estilo M 2

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 C&C 2 Vista C&C 1

.. Vista A 2 Vista A 1

Arquitectura

Vista M 2 Vista M 1

Tema 4.1 Vistas y estilos arquitectnicos

14

Contenido
Conceptos bsicos Vistas modulares Vistas de componentes y conectores Vistas de asignacin

Tema 4.1 Vistas y estilos arquitectnicos

15

Contenido
Conceptos bsicos Vistas modulares Vistas de componentes y conectores Vistas de asignacin

Tema 4.1 Vistas y estilos arquitectnicos

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

Tema 4.1 Vistas y estilos arquitectnicos

17

Estilos

Vistas Modulares

Decomposition Style

Uses Style

Generalization Style

Layered Style

Tema 4.1 Vistas y estilos arquitectnicos

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

Tema 4.1 Vistas y estilos arquitectnicos

20

Decomposition Style
Java packages

Tema 4.1 Vistas y estilos arquitectnicos

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

Tema 4.1 Vistas y estilos arquitectnicos

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

Tema 4.1 Vistas y estilos arquitectnicos

24

Layered Style
Notacin UML

Tema 4.1 Vistas y estilos arquitectnicos

25

Contenido
Conceptos bsicos Vistas modulares Vistas de componentes y conectores Vistas de asignacin

Tema 4.1 Vistas y estilos arquitectnicos

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.

Conectores: mecanismos de interaccin entre componentes


Ejemplos: procedure calls, asynchronous messages, sockets, memoria compartida, RPC, pipes, sql-link, middlewares (ORB), event multicast, etc. Propiedades: roles, protocolos, cardinalidades de los componentes conectados, etc.

Relaciones
Attachment: conexin entre un puerto de un componente, y un rol de un conector

Caractersticas
Rendimiento, disponibilidad, tolerancia a fallos, seguridad, etc.

Tema 4.1 Vistas y estilos arquitectnicos

27

Estilos

Vistas C&C

Pipe & Filter

Publish & Subscribe

Peer-to-Peer

Multiagent

..

Tema 4.1 Vistas y estilos arquitectnicos

28

Estilos
Metamodelo para la representacin de estilos C&C:

Tema 4.1 Vistas y estilos arquitectnicos

29

Pipes & Filter Style


Tipos de componentes
Filters: transformadores de secuencias datos
Tipos de Puertos: input y output

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

Tema 4.1 Vistas y estilos arquitectnicos

30

Pipes & Filter Style


Definicin del estilo en ACME (lenguaje de descripcin de arquitecturas ADL)
Family PipeFilter = {
Component Type Filter; Port Type OutputPort; Port Type InputPort; Role Type Source; Role Type Sink; Connector Type Pipe = { Role src : Source; Role snk : Sink; } }

Tema 4.1 Vistas y estilos arquitectnicos

31

Pipe & Filter Style


Definicin del estilo en UML:

Tema 4.1 Vistas y estilos arquitectnicos

32

Pipe & Filter Style


Vista Pipe&Filter para un sistema denominado Simple
System simple = {

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

Pipe & Filter Style


Vista Pipe&Filter para un sistema denominado Simple UML

Tema 4.1 Vistas y estilos arquitectnicos

34

Contenido
Conceptos bsicos Vistas modulares Vistas de componentes y conectores Vistas de asignacin

Tema 4.1 Vistas y estilos arquitectnicos

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, .

Elementos del entorno: elementos del contexto de la aplicacin:


Hardware, recursos humanos, ficheros, etc.

Relaciones
Allocated-to: asignacin de un elemento software a un elemento del entorno

Tema 4.1 Vistas y estilos arquitectnicos

36

Estilos

Allocation Viewtype

Deployment Style

Implementation Style

Work Assignment Style

Tema 4.1 Vistas y estilos arquitectnicos

37

Deployment Style
Elementos software
Elementos de los estilos C&C
Procesos, threads, .

Elementos del entorno


Plataformas de ejecucin
Unidades hardware de procesamiento, discos, redes, etc.

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

Tema 4.1 Vistas y estilos arquitectnicos

38

Deployment Style
Notacin UML: deployment diagrams

Tema 4.1 Vistas y estilos arquitectnicos

39

Você também pode gostar