La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Desarrollo de Aplicaciones basado en Componentes y Frameworks

Presentaciones similares


Presentación del tema: "Desarrollo de Aplicaciones basado en Componentes y Frameworks"— Transcripción de la presentación:

1 Desarrollo de Aplicaciones basado en Componentes y Frameworks
Antonio Vallecillo GISUM: Grupo de Ingeniería del Software de la Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación Universidad de Málaga. España Raúl Monge Departamento de Informática Universidad Técnica Federico Santa María. Chile

2 Contenido Global del Curso:
Arquitecturas de Software Marcos de Trabajo (Frameworks) Programación orientada a Componentes

3 1ª Parte: Arquitecturas del Software
Servicios Avanzados Multimedia basados en Componentes 1ª Parte: Arquitecturas del Software Antonio Vallecillo GISUM: Grupo de Ingeniería del Software de la Universidad de Málaga Departamento de Lenguajes y Ciencias de la Computación Universidad de Málaga. España

4 Servicios Avanzados Multimedia basados en Componentes
Contenido Estilos Arquitectónicos Lenguajes de Descripción de Arquitecturas Programación Orientada a Componentes

5 Servicios Avanzados Multimedia basados en Componentes
Introducción Sistemas Abiertos Características y Problemática Estilos Arquitectónicos Lenguajes de Descripción de arquitecturas Ingeniería del Software basada en Componentes (CBSE) Arquitectura Software y COTS

6 Servicios Avanzados Multimedia basados en Componentes
Sistemas Abiertos Concurrentes Reactivos Independientemente extensibles Heterogéneos Evolutivos Distribuidos

7 Problemas específicos
Servicios Avanzados Multimedia basados en Componentes Problemas específicos Gestión de la evolución (del sistema y de sus componentes) Compatibilidad de componentes Falta de visión global del sistema Dificultad para garantizar la seguridad Retrasos y errores en las comunicaciones Fallos y errores en los propios componentes

8 Arquitectura del Software
Servicios Avanzados Multimedia basados en Componentes Arquitectura del Software Estructura de los componentes de un programa o sistema, sus interrelaciones, y los principios y reglas que gobiernan su diseño y evolución en el tiempo. (Garlan y Perry, 1995) Estructura o estructuras de un sistema, lo que incluye sus componentes software, las propiedades observables de dichos componentes y las relaciones entre ellos. (Bass, Clements y Kazman, 1998) AS

9 Servicios Avanzados Multimedia basados en Componentes
Disciplina Nivel del diseño del software donde se definen la estructura y propiedades globales del sistema. (Garlan y Perry, 1995) La Arquitectura del Software se centra en aquellos aspectos del diseño y desarrollo que no pueden tratarse de forma adecuada dentro de los módulos que forman el sistema. (Shaw y Garlan, 1996)

10 Servicios Avanzados Multimedia basados en Componentes
Caracterización Arquitectura vs. Algoritmos + Datos organización del sistema Interacción de componentes vs. Definición/uso componentes y conectores Estilo Arquitectónico vs. Instancia restricciones en la forma de una familia de instancias Arquitectura vs. Métodos de Diseño espacio de diseños arquitectónicos

11 Servicios Avanzados Multimedia basados en Componentes
Descripción de una AS Representación de alto nivel de la estructura de un sistema o aplicación, que describe: partes que la integran, interacciones entre ellas, patrones que supervisan su composición, y restricciones para aplicar dichos patrones.

12 Servicios Avanzados Multimedia basados en Componentes
Arquitectura Productor/Consumidor Emisor Buffer Receptor

13 Servicios Avanzados Multimedia basados en Componentes
Objetivos de la AS Comprender y manejar la estructura de las aplicaciones complejas Reutilizar dicha estructura (o parte de ella) Planificar la evolución de la aplicación Analizar la corrección de la aplicación y su grado de cumplimiento frente a los requisitos iniciales Permitir el estudio de propiedades específicas

14 Ventajas de las A.S. Resaltan aquellos aspectos estucturalmente importantes, tanto funcionales como no funcionales Eliminan muchos riesgos y errores de diseño, desarrollo e implantación Permiten un desarrollo paralelo, aumentando la productividad

15 El “territorio” de las AS
Servicios Avanzados Multimedia basados en Componentes El “territorio” de las AS Adaptado de P. Kruchten, B. Selic, W. Kozaczynski. “Describing Software Architecture with UML”, 2001

16 Modelo, Vista y Punto de Vista
Modelo (model) Una descripción completa de un sistema a un determinado nivel de abstracción Vista (view) Una proyección de un modelo desde una perspectiva Omite las entidades y elementos que no son relevantes Punto de vista (viewpoint) La definición (o descripción) de una vista Prescribe su contenido, significado y representación

17 Niveles de Abstracción
Servicios Avanzados Multimedia basados en Componentes Niveles de Abstracción Estilos arquitectónicos familias de sistemas que siguen el mismo patrón estructural Modelos y arquitecturas de referencia particularizan un estilo y definen los conceptos asociados Marcos de Trabajo arquitectura reutilizable en aplicaciones de un mismo dominio Familias y líneas de productos arquitectura de una aplicación con diferentes configuraciones Instancias arquitectura de una aplicación concreta

18 Estilos Arquitectónicos
Servicios Avanzados Multimedia basados en Componentes Estilos Arquitectónicos Componentes unidades computacionales y de datos Conectores mecanismos de interacción entre componentes Patrones y restricciones de interconexión invariantes del estilo Mecanismos de control coordinación entre componentes Propiedades ventajas e inconvenientes

19 Clasificación de estilos
Servicios Avanzados Multimedia basados en Componentes Clasificación de estilos Sistemas de flujo de datos Sistemas basados en llamada y retorno Sistemas de componentes independientes Sistemas centrados en los datos Máquinas virtuales Sistemas heterogéneos

20 Estilos y subestilos (I)
Servicios Avanzados Multimedia basados en Componentes Estilos y subestilos (I) Sistemas de flujo de datos Sucesión de transformaciones de los datos de entrada Subestilos: pipe & filter y procesamiento por lotes Sistemas basados en llamada y retorno Reflejan la estructura del lenguaje de programación Subestilos: programa principal-subrutina, OO, capas Sistemas de componentes independientes Componentes distribuidos que se comunican por paso de mensajes Subestilos: sistemas cliente/servidor y de eventos

21 Estilos y subestilos (II)
Servicios Avanzados Multimedia basados en Componentes Estilos y subestilos (II) Sistemas centrados en los datos Acceso compartido a un banco de datos central Subestilos: repositorio y pizarras (blackboards) Máquinas virtuales Simulan una funcionalidad no nativa del entorno Subestilos: intérpretes y sistemas basados en reglas Sistemas heterogéneos Localmente, jerárquicamente o simultáneamente heterogéneos

22 Descripción de Arquitecturas
Servicios Avanzados Multimedia basados en Componentes Descripción de Arquitecturas Diagramas informales de cajas y líneas Imprecisos, ambiguos y no analizables Lenguajes de programación modular Mezclan aspectos de programación y estructurales El análisis se basa en emparejamiento de nombres Lenguajes de interconexión de módulos (MILs o IDLs) Implican un determinado mecanismo de interacción UML como notación arquitectónica Lenguajes de Descripción de Arquitectura (LDAs)

23 Lenguajes de Descripción de Arquitecturas (LDAs)
Servicios Avanzados Multimedia basados en Componentes Lenguajes de Descripción de Arquitecturas (LDAs) Un LDA es un lenguaje o notación para describir una arquitectura software: Descripción de componentes, conectores y enlaces entre ellos. Herramientas para la verificación de la arquitectura y el prototipado rápido. Existen LDAs de propósito general y otros de dominio específico (DSLs)

24 Servicios Avanzados Multimedia basados en Componentes
Sender Receiver Buffer Arquitectura Productor/Consumidor Puertos: describen el comportamiento de las componentes writer storage reader retrieval Enlaces puertos/roles ¿ analizables ? Roles: describen el comportamiento de los conectores

25 Servicios Avanzados Multimedia basados en Componentes
Requisitos de un ADL Composición Debe describir el sistema como una composición de partes Configuración Debe describir la arquitectura independientemente de los componentes Abstracción Debe describir los roles abstractos que juegan los componentes Reutilización Debe permitir reutilizar componentes, conectores, y arquitecturas Heterogeneidad Debe permitir combinar descripciones heterogéneas Análisis Debe permitir diversas formas de análisis de la arquitectura

26 Servicios Avanzados Multimedia basados en Componentes
Ejemplos de LDAs Ejemplos: UNICON (Shaw et al. 1995) Rapide (Luckham et al. 1995) Darwin (Magee y Kramer, 1996; 1999) Wright (Allen y Garlan, 1997; 1998) Executable Connectors (Ducasse y Richner, 1997) Problema: No cubren todo el ciclo de vida de las aplicaciones software (sólo diseño preliminar), no llegan a la implementación

27 Ejemplos de LDAs : UNICON
Servicios Avanzados Multimedia basados en Componentes Ejemplos de LDAs : UNICON Una pipe de Unix connector Unix-pipe protocol is type pipe role source is Source MaxConns(1) end source role sink is Sink end sink end protocol ... implementation is builtin end implementation end Unix-Pipe

28 Ejemplos de LDAs : Wright
Servicios Avanzados Multimedia basados en Componentes Ejemplos de LDAs : Wright Una pipe de Unix connector Pipe = role WRITER = write  WRITER  close   role READER = let ExitOnly = close  in let DoRead = (read  READER □ readEoF  ExitOnly in DoRead  ExitOnly glue = let ReadOnly = READER.read  readOnly □ READER.readEoF  READER.close  □ READER.close  in let WriteOnly = WRITER.write  WriteOnly □ WRITER.close in WRITER.write  glue □ READER.read  glue □ WRITE.close  ReadOnly □ READER.close  WriteOnly

29 Ejemplos de LDAs : RAPIDE
Servicios Avanzados Multimedia basados en Componentes Ejemplos de LDAs : RAPIDE type Application is interface extern action Receive(p:params); // evento de entrada public action Results(p:params); // evento de salida behaviour (?M in String) Receive(?M) => Results(?M); // transición de eventos end Application; architecture DistrApp(Num: Integer) return InterfaceDistrApp is P : array(Integer) of Application; Q: array(Integer) of Resource; //Dual of Application connect for i:Integer in 1..Num generate (?M in String) P(i). Receive(?M) to Q(i).Results(?M); P(i).Results(?M) to Q(i). Receive(?M); end generate; end DistrApp;

30 Ejemplos de LDAs : Darwin
Servicios Avanzados Multimedia basados en Componentes Ejemplos de LDAs : Darwin entrada cabeza : Filtro ant salida : Pipeline cauce : Pipeline sig

31 Servicios Avanzados Multimedia basados en Componentes
LDAs del grupo GISUM LDC + LDS (Fuentes y Troya, 1998) Modelo de componentes pasivos y conectores reactivos Formalismo de especificación de comportamiento de conectores (TDFs, -cálculo, etc.) LEDA (Canal, Pimentel y Troya, 2000) Basado en el álgebra de procesos -cálculo Permite especificar arquitecturas dinámicas

32 Servicios Avanzados Multimedia basados en Componentes
Lenguajes de especificación de servicios LDC: Componentes Propagación de eventos Interfaz Tipo Componente: Tipo Método()-----> Atributos Atributos Mensajes + eventos

33 Servicios Avanzados Multimedia basados en Componentes
Lenguajes de especificación de servicios LDC: Componentes def component DoM(fich:”String”) propagates listMovies(list-movies=”List”) end interface is type File fich:”String” getlistMovies(category=”String”) throws listMovies(list-movies=”List”) enddef DoM

34 Servicios Avanzados Multimedia basados en Componentes
Lenguajes de especificación de servicios LDC: Conectores Parametrización Componentes participantes Gestión de eventos Conector componente, set(componente) Relación de uso Protocolo Tipo ASTM Protocolo en TDF

35 Servicios Avanzados Multimedia basados en Componentes
Lenguajes de especificación de servicios LDC: Conectores def connector MSelector(newphase:component) handles listMovies(list-movies=”List”),service(movie=”String”) service(category-movie=”Command”) end messages DoM.getlistMovies(category=”String”) Participant.initService(panel=”DoMpanel”) Participant.displayService(data=”List”) Participant.service(command=”Command”) protocol is type Service std(SDL) {...} enddef MSelector

36 Servicios Avanzados Multimedia basados en Componentes
Lenguajes de especificación de servicios LDS: Conexiones Conexiones En base a eventos Instanciación de la relación de uso Adaptar componentes a conectores Renombrar métodos y eventos

37 Servicios Avanzados Multimedia basados en Componentes
Lenguajes de especificación de servicios LDS: Conexiones participant scaccess1 acdb subscribed, non-subscribed Participant getAccessParams() --> joinResponse() join() > SCAccess ACDB: File < checkAccess() join access(params) (scaccess1 : SCAccess(nombre)) scaccess1[acdb] to participant with {access(params), join} acdb with {subscribed,non-subscribed};

38 Servicios Avanzados Multimedia basados en Componentes
Lenguajes de especificación de servicios LCF Organización de servicios genéricos Servicio de organización común readLocation() > close() ConfiguratedDataBase: File readParameter() > ConfiguratedService: addFile() addParties() addLocation() addParameter() Organización VoD genérico VoD versión1

39 Servicios Avanzados Multimedia basados en Componentes
Lenguajes de especificación de servicios LCF set parties unicast Tipo de servicio Asignación de nombres lógicos a físicos set msap <url> set movie remote set participant local Configuración de parámetros globales put text “Fich.clientes” parname acdb::acdbfich value=”” Clases de componentes y conectores put text “Tipo acceso” implementation scaccess value=””

40 Servicios Avanzados Multimedia basados en Componentes
Un ejemplo en LEDA (I) component Buffer { interface storage : Storage; retrieval : Retrieval; } role Storage(put) { spec is put?(x).Storage(put) } role Retrieval(get) { spec is get?(item,empty). . (x) item!(x). Retrieval(get) + . empty!(). Retrieval(get); }

41 Servicios Avanzados Multimedia basados en Componentes
Un ejemplo en LEDA (II) component Sender { interface writer : Writer; } role Writer(write) { spec is (data) write!(data). Writer(write); } role Reader(read) { spec is (return,empty) read!(return,empty). ( return?(item).Reader(read) + empty?().Reader(read) ); } component Receiver { interface reader : Reader; }

42 Un ejemplo en LEDA (III)
Servicios Avanzados Multimedia basados en Componentes Un ejemplo en LEDA (III) component ProducerConsumer { interface ... composition p: Sender; c: Receiver; b: Buffer; attachments p.writer(write) <> b.storage(write); b.retrieval(read) <> c.reader(read); }

43 Servicios Avanzados Multimedia basados en Componentes
Lenguajes de especificación de servicios LDS Parámetros globales Configuración con LCF Componentes simples conjunto lista de tipos components chair : Manager(name) audience : set(Participant) ===> item(audience) devices : {TextualChat,FileMovie} end

44 Servicios Avanzados Multimedia basados en Componentes
Comparación de LDAs Entidades Dinamismo Verificación Propiedades DesarrolloReutilizac. Ejecución UniCon Comp/Con No Gen.Cod. Wright Compat. Darwin Comp Seg./Viveza Rapide Limitado Análisis Restricciones Herencia Simul./ LDS Posible Extensión LEDA Compat./Ext. Ext./Gener. Simul./ Gen.Cod.

45 Arquitectura Software vs. COTS
Servicios Avanzados Multimedia basados en Componentes Arquitectura Software vs. COTS Arquitectura del Software Orientados a la reutilización independiente de patrones arquitectónicos y de componentes Modelos formales Tecnología desarrollada en el entorno académico COTS Componentes con interfaces estándares (IDLs) No aparece la noción de conector o “enchufe” Mercado global de componentes centrado en la reutilización de componentes Tecnología madura: OpenDoc/CORBA, OLE/COM

46 Ingeniería del Software basada en Componentes
Servicios Avanzados Multimedia basados en Componentes Ingeniería del Software basada en Componentes Componentes unidos a una arquitectura Partes de la interfaz de un componente para soportar la noción de arquitectura: Tiempo de Composición Elementos para generar una aplicación a partir de COTS Tiempo de Diseño Interfaces funcionales y dependencias de componentes Tiempo de Ejecución Servicios de composición dinámica en runtime

47 AS: problemas y líneas abiertas
Servicios Avanzados Multimedia basados en Componentes AS: problemas y líneas abiertas Definición de AS Expresión de parámetros de calidad Medidas Herramientas Relación con el dominio de aplicación ‘Vistas’ arquitectónicas

48 Servicios Avanzados Multimedia basados en Componentes
P1. Definición de AS Una AS es algo más que una descripción de la estructura de una aplicación ¿Qué es ese algo más? ¿Cómo se expresa? Otras definiciones alternativas de AS: “A Software Architecture is a collection of categories of elements that share the same likelihood of change. Each category contains software elements that exhibit shared stability characteristics”

49 P2. Parámetros de Calidad
Servicios Avanzados Multimedia basados en Componentes P2. Parámetros de Calidad Actualmente no se tienen en cuenta. “...ilities”: portability, traceability,... “...nesses”: correcness, robustness, ... Propios del tiempo de ejecución (dinámicos): Performance, security, availability, functionality, usability, etc. Intrínsecos a la AS (estáticos): Modifiability, portability, reusability, integrability, testability, etc.

50 Servicios Avanzados Multimedia basados en Componentes
P3. Medidas Necesarias para poder hablar de Ingeniería del Software Deberían estimar, de forma cuantitativa: Tamaño Estructura Calidad del diseño ... Funcionales (estructuradas)/Orientadas a Objeto

51 Servicios Avanzados Multimedia basados en Componentes
P4. Herramientas Diseño Documentación Pruebas Análisis de propiedades (formales) Generación de código/prototipos

52 P5. Dominio de Aplicación
Servicios Avanzados Multimedia basados en Componentes P5. Dominio de Aplicación Análisis de los dominios de la aplicación y de la solución para derivar AS: Mejor y más estable estructura Mejor capacidad de evolución AS solución más natural e integrada en el entorno de la aplicación

53 P6. “Vistas” Arquitectónicas
Servicios Avanzados Multimedia basados en Componentes P6. “Vistas” Arquitectónicas Varias “vistas” arquitectónicas Algunas técnicas, otras específicas del dominio, otras tecnológicas RM-ODP o TINA ya las definen Problemas: consistencia e integración

54 Servicios Avanzados Multimedia basados en Componentes
Bibliografía P. Clements (1996), Coming Attractions in Software Architecture, Technical Report, Software Engineering Institute, Carnegie Mellon University (USA). P. Donohoe (Ed.) (1999), Software Architecture, Kluwer Academic Publishers. D. Garlan y D. E. Perry (1995), Introduction to the Special Issue on Software Architecture, IEEE Transactions on Software Engineering, 21(4):269–274. D. Garlan, R. Allen y J. Ockerbloom (1995), Architectural Mismatch: Why Reuse is So Hard, IEEE Software, Nov. 1995, pp. 17–26. I. Jacobson, G. Booch y J. Rumbaugh (1999), The Unified Software Development Process, Addison-Wesley

55 Servicios Avanzados Multimedia basados en Componentes
Bibliografía D. Krieger y R. M. Adler (1998), The Emergence of Distributed Component Platforms, IEEE Computer, March 1998, pp. 43–53. D. Luckham et al. (1995), Specification and Analysis of System Architecture Using Rapide, IEEE Transactions on Software Engineering, vol. 21, no. 4, April 1995, pp. 336–355. J. Magee y J. Kramer (1996), Dynamic Structure in Software Architectures, Software Engineering Notes, vol. 21, no. 6, Nov. 1996, pp. 3–14. N. Medvidovic y D. Rosenblum (1997), A Framework for Classifying and Comparing Architecture Description Languages, Proc. ESEC/FSE, LNCS, Springer, pp. 60–76.

56 Servicios Avanzados Multimedia basados en Componentes
Bibliografía W. Pree (1996), Framework Patterns, SIGS Publications. M. Shaw et al. (1995), Abstractions for Software Architecture and Tools to Support Them, IEEE Transactions on Software Engineering, vol. 21, no. 4, April 1995, pp. 314–334. M. Shaw y D. Garlan (1996), Software Architecture: Perspectives on an Emerging Discipline, Prentice Hall. S. Sparks et al. (1996), Managing Object-Oriented Framework Reuse, IEEE Computer, Sept. 1996, pp. 52–61. C. Szyperski (1998), Component Software: Beyond Object-Oriented Programming, Addison-Wesley. A.W. Brown and K.C. Wallnau, The Current State of CBSE, IEEE Software, Sept/Oct. 1998


Descargar ppt "Desarrollo de Aplicaciones basado en Componentes y Frameworks"

Presentaciones similares


Anuncios Google