estilos arquitectonicos

Upload: elias-b-nathury

Post on 07-Jul-2015

309 views

Category:

Documents


0 download

TRANSCRIPT

Arquitecturas software y familias de productosParte IV. Arquitecturas software y estilos arquitectnicosTema 4.1- Vistas y estilos arquitectnicosTema 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

BibliografaC. 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, 2003Parte I (Software Architecture Viewtypes and Styles)

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

Tema 4.1 Vistas y estilos arquitectnicos

2

ContenidoConceptos bsicos Vistas modulares Vistas de componentes y conectores Vistas de asignacin

Tema 4.1 Vistas y estilos arquitectnicos

3

Conceptos bsicosPrincipiosabstraccin, etc. abstraccin, etc.

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

Proceso de desarrollo (mtodos, tcnicas, herramientas) Producto software Stakeholderscliente, 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

4

Cualidades del softwareQuality attributes/ Software qualities/ non-functional requirements

Rendimiento evolvabilityUsabilidadverificabilidad

MantenibilidadTolerancia a fallos Interoperabilidad

reparability

Portabilidad EscalabilidadRobustez

CorreccinFiabilidad

Disponibilidad

Seguridad

Tema 4.1 Vistas y estilos arquitectnicos

5

Clasificacin de cualidades del softwareCualidades internasdesarrolladores, gestor del proyecto,

Cualidades externascliente, usuarios finales,

Portabilidadreparability evolvability

RendimientoDisponibilidadTolerancia a fallos

EscalabilidadInteroperabilidad

Fiabilidadverificabilidad

CorreccinUsabilidad

Seguridad

Mantenibilidad

Robustez

Tema 4.1 Vistas y estilos arquitectnicos

6

Cualidades externas (I)CorreccinEl 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 booleanaEstadsticamente: probabilidad de que el sistema funcione correctamente durante un intervalo temporal determinado

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

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

Tema 4.1 Vistas y estilos arquitectnicos

7

Cualidades externas (II)RendimientoEfectividad con la que el sistema realiza las funciones encomendadas, de acuerdo con los requisitos establecidos por el usuarioRelacionado con la escalabilidad

La eficiencia en el uso de recursos (computacionales y de almacenamiento) por parte del software contribuye al buen rendimientoPero la eficiencia es una cualidad interna

Medicin: monitorizacin, analticamente, simulacin

UsabilidadGrado 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

SeguridadPrivacidad: 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

8

Cualidades internas (I)VerificabilidadFacilidad 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

UnderstandabilityFacilidad con la que los desarrolladores pueden comprender el diseo y la implementacin del sistema Favorece la verificabilidad y la mantenibilidad

MantenibilidadFacilidad 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

9

Cualidades internas (II)PortabilidadFacilidad con la que el sistema puede ser ejecutado en distintos entornos heterogneos Dependencias hardware y, especialmente, software (SSOO, BBDD, )

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

InteroperabilidadEl 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 softwareComo objeto de estudio, las arquitecturas software constituyen una subdisciplina de la ingeniera del software Arquitectura vs. otros artefactosArquitectura 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 arquitectnicasArquitectura 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 arquitectnicosTipos 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 softwareTipos 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

ContenidoConceptos bsicos Vistas modulares Vistas de componentes y conectores Vistas de asignacin

Tema 4.1 Vistas y estilos arquitectnicos

15

ContenidoConceptos bsicos Vistas modulares Vistas de componentes y conectores Vistas de asignacin

Tema 4.1 Vistas y estilos arquitectnicos

16

CaractersticasPropsitoIdentifican las principales unidades de implementacin, junto con sus relaciones ms relevantes

ElementosMdulos: unidades de implementacin que proporcionan un conjunto de funcionalidades determinado (representadas por interfaces)Java packages, Java/C++ classes, Ada packages,

RelacionesIs-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 StyleElementosmdulos 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

Relacionesdescomposicin 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

CaractersticasUnderstandability, modifiability, reusabilidad, trazabilidad de requisitos (correccin), planificacin y monitorizacin del avance, ...Tema 4.1 Vistas y estilos arquitectnicos 19

Decomposition StyleNotacin UMLMdulos y subsistemas

Relacin de descomposicin

Tema 4.1 Vistas y estilos arquitectnicos

20

Decomposition StyleJava packages

Tema 4.1 Vistas y estilos arquitectnicos

21

Uses StyleElementosmdulos generales

Relacionesuso 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

CaractersticasLa 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 StyleNotacin UML

Tema 4.1 Vistas y estilos arquitectnicos

23

Layered StyleElementosCapas (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.

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

Caractersticasreusabilidad, portabilidad y tolerancia a cambios

Tema 4.1 Vistas y estilos arquitectnicos

24

Layered StyleNotacin UML

Tema 4.1 Vistas y estilos arquitectnicos

25

ContenidoConceptos bsicos Vistas modulares Vistas de componentes y conectores Vistas de asignacin

Tema 4.1 Vistas y estilos arquitectnicos

26

CaractersticasPropsitoDescribir el comportamiento y estructura del sistema en tiempo de ejecucin

ElementosComponentes: unidades de procesamiento y almacenamientoEjemplos: objetos, threads, procesos, bases de datos, etc. Propiedades: funcionalidad proporcionada, puertos (o interfaces), etc.

Conectores: mecanismos de interaccin entre componentesEjemplos: 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.

RelacionesAttachment: conexin entre un puerto de un componente, y un rol de un conector

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

EstilosMetamodelo para la representacin de estilos C&C:

Tema 4.1 Vistas y estilos arquitectnicos

29

Pipes & Filter StyleTipos de componentesFilters: transformadores de secuencias datosTipos de Puertos: input y output

Tipos de conectoresPipes: canales asncronos de datosTipos 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

AttachmentEl puerto de salida (entrada) de un filtro se conecta al rol de entrada (salida) de datos de un pipe

CaractersticasEstilo orientado a la transformacin de datos

Tema 4.1 Vistas y estilos arquitectnicos

30

Pipes & Filter StyleDefinicin 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 StyleDefinicin del estilo en UML:

Tema 4.1 Vistas y estilos arquitectnicos

32

Pipe & Filter StyleVista Pipe&Filter para un sistema denominado SimpleSystem 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 StyleVista Pipe&Filter para un sistema denominado Simple UML

Tema 4.1 Vistas y estilos arquitectnicos

34

ContenidoConceptos bsicos Vistas modulares Vistas de componentes y conectores Vistas de asignacin

Tema 4.1 Vistas y estilos arquitectnicos

35

CaractersticasPropsitoDescribir las relaciones entre los elementos de las vistas modulares o de C&C y otros aspectos del entorno del sistema

ElementosElementos software: elementos de las vistas modulares y C&Cmdulos, componentes, conectores, .

Elementos del entorno: elementos del contexto de la aplicacin:Hardware, recursos humanos, ficheros, etc.

RelacionesAllocated-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 StyleElementos softwareElementos de los estilos C&CProcesos, threads, .

Elementos del entornoPlataformas de ejecucinUnidades hardware de procesamiento, discos, redes, etc.

Relacin Allocated-toAsigna una unidad fsica a un elemento software

Relaciones Migrates-toEn caso de que la asignacin sea dinmica, especifica la variabilidad de la asignacin

Caractersticasanlisis del rendimiento, fiabilidad, seguridad y costes del sistema

Tema 4.1 Vistas y estilos arquitectnicos

38

Deployment StyleNotacin UML: deployment diagrams

Tema 4.1 Vistas y estilos arquitectnicos

39