Jons A' Montilva C' - PowerPoint PPT Presentation

1 / 39
About This Presentation
Title:

Jons A' Montilva C'

Description:

La EAI (Enterprise Application Integraci n) es un nuevo enfoque de reutilizaci n ... Enterprise JavaBeans de SUN. 27. Composici n de software ... – PowerPoint PPT presentation

Number of Views:81
Avg rating:3.0/5.0
Slides: 40
Provided by: jona91
Category:

less

Transcript and Presenter's Notes

Title: Jons A' Montilva C'


1
Universidad de Los Andes Facultad de
Ingeniería Escuela de Ingeniería de
Sistemas Mérida
Desarrollo de Software Basado en Componentes
  • Jonás A. Montilva C.
  • Prof. Titular
  • Departamento de Computación

2
Contenidos
  • Reutilización de software
  • Activos y componentes de software reutilizable
  • Características de los Componentes de Software
    Reutilizable (CSR)
  • La interfaz de un componente
  • Mecanismos de composición de software
  • El proceso de desarrollo de software basado en
    CSR

3
Definiciones de Reutilización de Software
  • "Reutilización de software es el proceso de crear
    sistemas de software a partir de software
    existente, en lugar de desarrollarlo desde el
    comienzo" (Sametinger, 1997)
  • La reutilización es un enfoque de desarrollo de
    software que trata de maximizar el uso
    recurrente de componentes de software existentes"
    (Sommerville, 1995).
  • La reutilización de software es el proceso de
    implementar o actualizar sistemas de software
    usando activos de software existentes (Sodhi
    Sodhi, 1999)

4
Reutilización de Software
  • La reutilización de software va más allá de la
    reutilización de componentes de software
  • Involucra uso de otros elementos, denominados
    activos de software, tales como
  • algoritmos,
  • diseños,
  • arquitecturas de software,
  • planes,
  • documentación y
  • especificaciones de requerimientos

5
Reutilización de Software
  • La reutilización de software es un proceso de la
    Ingeniería de Software que involucra el uso
    recurrente de activos de software en
  • la especificación,
  • el análisis,
  • el diseño,
  • la implementación y
  • las pruebas de una aplicación o sistema de
    software

6
Efectividad de la Reutilización de Software
  • Varios estudios han demostrado la efectividad de
    la reutilización del software
  • 40-60 del código fuente es reutilizable de una
    aplicación a otra.
  • Aproximadamente el 60 del diseño y del código de
    aplicaciones administrativas es reutilizable.
  • Aproximadamente el 75 de las funciones son
    comunes a más de un programa.
  • Sólo el 15 del código encontrado en muchos
    sistemas es único y novedoso a una aplicación
    específica.
  • El rango general de reuso potencial está entre el
    15 y el 85.

7
Efectividad de la Reutilización de Software
  • La EAI (Enterprise Application Integración) es un
    nuevo enfoque de reutilización de software
  • Su objetivo es la integración de aplicaciones
    existentes con el propósito de compartir datos y
    procesos
  • Forrester Research ha estimado que
  • Más del 30 de los gastos globales en TI ocurren
    en la integración de aplicaciones existentes
  • Mas del 35 del tiempo de desarrollo de
    aplicaciones se invierte creando interfaces para
    integrar la aplicación en desarrollo a otras
    existentes o a fuentes de datos
  • El Gartner Group ha estimado que en los próximos
    años la mayoría de proyectos de software se
    ejecutarán mediante la integración de
    aplicaciones existentes en lugar del desarrollo
    de nuevas aplicaciones

8
Activos de software
  • Qué es un activo de software reutilizable
    (ASR)?
  • Son productos de software diseñados expresamente
    para ser reutilizados en el desarrollo de muchas
    aplicaciones
  • Un activo de software puede ser
  • Un componente de software
  • Una especificación de requerimientos
  • Un modelo o especificación de diseño
  • Un algoritmo
  • Un patrón de diseño
  • Una arquitectura de dominio
  • Un esquema de base de datos
  • Una especificación de prueba
  • La documentación de un sistema
  • Un plan

9
Definición de Componente de Software
  • Un componente de software reutililizable (CSR) es
    un artefacto de software auto-contenido y
    claramente identificable que
  • ejecuta funciones específicas,
  • tiene una interface clara a través de la cual se
    integra a otros sistemas,
  • tiene una documentación apropiada y
  • tiene un status de reuso definido
  • Un componente de software reutilizable puede ser
  • un módulo,
  • una clase,
  • un procedimiento o función,
  • un subsistema,
  • una aplicación

10
Características de los CSR
  • Definición del CBDi Forum
  • Un componente es una pieza de software que
    describe y/o libera un conjunto de servicios que
    son usados sólo a través de interfaces bien
    definidas
  • Características esenciales de un CSR
  • Identificable
  • Autocontenido
  • Rastreable a través de su ciclo de desarrollo
  • Reemplazable por otro componente
  • Accesible solamente a través de su interfaz
  • Inmutabilidad de sus servicios
  • Documentación de sus servicios
  • Mantenido sistemáticamente

11
Características esenciales de un CSR
  • Es identificable
  • Debe tener una identificación clara y consistente
    que facilite su catalogación y acceso
  • Es autocontenido
  • Un componente no debe requerir la reutilización
    de otros componentes para cumplir su función
  • Si el componente requiere de otros, el conjunto
    de componentes o funciones, visto como un todo,
    debe ser considerado como un componente de más
    alto nivel
  • P.ej., los paquetes en Java permiten agrupar
    varias clases en un componente al cual se le
    asocia una funcionalidad bien definida.
  • Es rastreable
  • Debe retener su identidad y ser rastreable
    durante el ciclo de desarrollo

12
Características esenciales de un CSR
  • Es reemplazable
  • Puede ser reemplazado por una nueva versión o por
    otro componente que proporcione los mismos
    servicios
  • Es accesible sólo a través de su interfaz
  • Es accedido a través de una interfaz claramente
    definida
  • La interfaz debe ser independiente de la
    implementación física
  • debe ocultar los detalles de su diseño interno
  • Sus servicios son inmutables
  • Los servicios que ofrece un componente a través
    de su interfaz no deben variar
  • La implementación física de estos servicios
    pueden ser modificadas, pero no deben afectar la
    interfaz

13
Características esenciales de un CSR
  • Está documentado
  • Debe tener una documentación adecuada que
    facilite
  • la recuperación del componente desde el
    repositorio,
  • la evaluación del componente,
  • su adaptación al nuevo ambiente y
  • su integración con otros componentes del sistema
    en que se reutiliza.
  • Es mantenido
  • Debe ser mantenido para facilitar un reuso
    sistemático
  • Su estado de reuso debe contener información
    acerca de
  • quien es el propietario del componente,
  • quien lo mantiene,
  • a quien acudir cuando surjan problemas y
  • cual es el estado de la calidad del componente.

14
Características deseables de un CSR
  • Es genérico
  • Su implementación física está oculta
  • Es independiente de otros componentes
  • Está encapsulado
  • Es independiente del lenguaje o a las
    herramientas usadas en su desarrollo
  • Es independiente de la plataforma de ejecución
  • Puede ser reusado dinámicamente
  • Está certificado

15
La interfaz de un componente
16
La interfaz de un componente
  • Una interface determina la manera en que un
    componente se reutiliza y como puede conectarse a
    otros componentes
  • Una interface define una operación o un conjunto
    de operaciones llamadas servicios o
    responsabilidades
  • Las interfaces son un aspecto fundamental en la
    composición de componentes
  • Por lo general un componente produce (exporta) un
    resultado que es consumido (importado) por otro
    componente

17
La interfaz de un componente
  • La naturaleza de la interfaz varia dependiendo
    del lenguaje empleado para implementar el
    componente
  • En lenguajes OO
  • las clases se diseñan de tal manera que la
    interfaz sea visible y separada de la
    implementación de las operaciones (métodos)
  • En lenguajes procedimentales
  • la interfaz se define a través de
  • La declaración de la función o procedimiento o
  • El uso de variables globales

18
La interfaz de un componente
  • Existen varios tipos de interfaz
  • Interfaces de datos
  • Interfaces gráficas
  • Interfaces de programación

19
Tipos de interfaces
  • Interfaces de datos
  • Empleadas en componentes E-P-S
  • Leen datos de Entrada, ejecutan un Proceso de
    transformación de datos o cálculo y escriben
    datos de Salida.
  • Tipos más comunes de formatos de datos empleados
    en la interfaz
  • ASCII
  • Bases de datos relacionales

20
Tipos de interfaces
  • Ejemplo de interfaz de datos
  • El mecanismo de conducto (pipe) de UNIX
  • la salida textual en ASCII de un componente
    (llamado filtro) es la entrada del siguiente
    componente.
  • P.ej    more .tex grep Java wc -l

21
Tipos de interfaces
  • Interfaces de programación
  • El mecanismo empleado es el API (Application
    Programming Interface)
  • establece la interacción entre dos aplicaciones
    con plataformas iguales o diferentes.
  • Un API es "un conjunto de subrutinas de interfaz
    o llamadas a librerías que definen los métodos
    empleados para que un programa pueda invocar
    servicios externos"
  • Ejemplo Las interfaces empleadas en  la librería
    de clases del sistema en Java, la cual provee
    diferentes paquetes (java.lang, java.util,
    java.io) que contienen clases de uso común.
  • Cada paquete contiene una interfaz y una
    colección de clases.

22
Composición de software reutilizable
C2
C1
23
Composición de software
  • La composición de software es "el proceso de
    construir applicaciones mediante la interconexión
    de componentes de software a través de sus
    interfaces de composición".
  • Tipos de composición de software
  • Composición Interna/Externa
  • Composición Textual
  • Composición Funcional
  • Composición Modular
  • Composición Orientada a Objetos
  • Composición de Subsistemas
  • Parametrización de Código Fuente
  • Computación Distribuida
  • Modelos de Objetos
  • Documentos Compuestos
  • Aplicaciones compuestas
  • Ambientes Integrados
  • Composición en Plataformas Abiertas

24
Composición de software
  • Composición Orientada a Objetos
  • Basada en la reutilización de clases o tipos
    escritos en un lenguaje OO
  • Emplean varios mecanismos de reutilización
    herencia, delegación, polimorfismo y
    encadenamiento dinámico
  • Ejemplos de componentes OO
  • La colección de clases reutilizables del lenguaje
    Eiffel
  • La librería de clases GNU para C
  • La librería del sistema en el lenguaje Java

25
Composición de software
  • Composición de Subsistemas
  • Un subsistema es una colección de módulos o
    clases que tienen una funcionalidad bien
    definida, así como interfaces de importación y
    exportación de clases o módulos.
  • Ejemplo Los paquetes de clases en Java
  • Reuso del paquete
  • import subsistemaE/S.
  • class MiClase
  • ...
  • C1 x new C1(15, 20)
  • ...
  • Definición del paquete
  • package subsistemaES
  • import java.util.
  • ...
  • public class C1 ...
  • public class C2...
  • ...

26
Composición de software
  • Arquitecturas de Objetos Distribuidos
  • Fueron desarrolladas para facilitar la
    computación distribuidas en sistemas heterogéneos
  • Constituyen la base para la interoperabilidad de
    componentes distribuidos en plataformas
    heterogéneas
  • Ejemplos
  • CORBA del consorcio OMG
  • Component Object Model (COM) y DCOM (Distributed
    COM) de Microsoft
  • System Object Model (SOM) de IBM
  • Enterprise JavaBeans de SUN

27
Composición de software
  • Arquitecturas de Objetos Distribuidos (cont.)
  • Corba (Common object request broker architecture)
    es una especificación propuesta por el consorcio
    de industrias de software Object Management Group
    (OMG)
  • Corba se basa en la OO para definir un tipo de
    middleware que permite la interoperabilidad de
    componentes almacenados en plataformas
    heterogéneas a través de un bus de objetos (ORB)

28
Composición de Software
  • Cómo trabajan los objetos distribuidos en CORBA?

29
Composición de software
  • Arquitecturas de Objetos Distribuidos (cont.)
  • La composición de componentes en CORBA se logra a
    través de un lenguaje denominado IDL (Interface
    Definition Language).
  • IDL es un lenguaje declarativo que asegura la
    independencia de lenguajes entre los diferentes
    componentes distribuidos.
  • Se usa para definir la interface de cada
    componente y establecer la correspondencia con el
    lenguaje de programación en el cual se ha
    implementado cada componente
  • C, C, Java, COBOL, Smalltalk, Ada, Lisp,
    Python, and IDLscript.
  • La comunicación entre los componentes es
    responsabilidad del ORB (Object Request Broker),
    quien se encarga de
  • encontrar las implementaciones de los métodos u
    operaciones requeridas por un cliente,
  • ejecutar el pre-procesamiento necesario y
  • comunicar los datos requeridos

30
El proceso de desarrollo basado en componentes
31
El proceso de reutilización de software
  • Los procesos de desarrollo basados en la
    reutilización de software se clasifican en
  • Desarrollo de componentes de software
    reutilizable
  • Adaptación o desarrollo de componentes con el
    propósito expreso de ser reutilizados en futuras
    aplicaciones
  • Desarrollo de software con reutilización de
    componentes
  • El desarrollo de una nueva applicación involucra
    el reuso de un conjunto de componentes existente

32
El proceso de reutilización de software
  • El modelo de procesos gemelos

Ingeniería de Dominios
Diseño del Dominio
Desarrollo de Componentes
Análisis del Dominio
modelos de análisis
diseños genéricos
componentes
Especificación de requerimentos
Diseño de la Arquitectura
Especificación De Componentes
Búsqueda de Componentes
Adapt / Des. Componentes
Integración de Componentes
Ingeniería de Aplicaciones
33
El desarrollo de CSR
  • Desarrollo de componentes de software
    reutilizable
  • Su objetivo es producir repositorios de activos o
    componentes de software reutilizables que puedan
    ser reutilizados en el desarrollo de software
  • El desarrollo de componentes se lleva a cabo a
    través de
  • la adaptación de componentes existentes o
  • la creación de repositorios aplicando los
    procesos de la Ingeniería de Dominio.

Base de Componentes
34
El desarrollo de CSR
  • El proceso de adaptación de un componente de
    software
  • Generalización del nombre
  • El nombre del componente debe referirse a
    entidades genéricas del dominio.
  • Generalización de operaciones
  • La funcionalidad del componente puede ser
    extendida agregando nuevas operaciones
  • Las operaciones específicas deben ser removidas
  • Generalización de excepciones
  • Las excepciones específicas de una aplicación
    deben ser removidas
  • Los mecanismos de manejo de excepciones se
    agregan al componente para incrementar su
    robustez.
  • Certificación del componente
  • El componente es certificado como un componente
    reutilizable.
  • Involucra asegurar la calidad y confiabilidad del
    componente

35
Reutilización de CSR
  • Desarrollo de software con reutilización de
    componentes
  • Es un enfoque de desarrollo de software que
  • maximiza la reutilización de componentes software
    existentes y/o
  • reduce el número de componentes que requieren ser
    desarrollados desde el comienzo
  • Condiciones mínimas para la reutilización
  • Existencia de repositorios o bases de componentes
    reutilizables
  • Los componentes son confiables y actuán de
    acuerdo a sus especificaciones
  • Los componentes están debidamente documentados

36
El Método Watch
37
Las formas de reutilización de CSR
  • Reutilización caja-negra
  • El componente es utilizado "tal como es", sin
    modificaciones y sin que se requiera conocer los
    detalles internos de su implementación
  • El usuario del componente sólo requiere conocer
    la funcionalidad del componente (qué hace) y como
    se usa (su interfaz)
  • Reutilización caja-blanca
  • El componente puede ser modificado para adaptarlo
    a las necesidades del sistema en el que se
    reutiliza
  • Su implementación es visible y puede ser
    modificada por el usuario.
  • Se requiere un esfuerzo adicional al de la
    modificación del componente
  • debe ser verificado una vez modificado

38
Conclusiones
  • Los CSR son las unidades básicas de producción de
    la nueva industria del software
  • La reutilización de componentes de software
    impacta positivamente
  • la calidad del software producido
  • incrementa la confiabilidad ( de errores
    presentes)
  • mejora el rendimiento del componente en cada
    reutilización
  • la productividad de los grupos de desarrollo
  • reduce la cantidad de código que debe producirse
  • reduce la redundancia de esfuerzo
  • el tiempo de entrega
  • reduce el tiempo de colocación del producto en el
    mercado
  • los costos
  • reduce los costos de desarrollo y mantenimiento
    de nuevas aplicaciones

39
Fin de la conferencia
Write a Comment
User Comments (0)
About PowerShow.com