SlideShare una empresa de Scribd logo
1 de 9
Descargar para leer sin conexión
1



  Desarrollo de Software Basado en Componentes
                  Jonás A. Montilva C.1, Nelson Arapé2 y Juan Andrés Colmenares2
              1                                                      2
             Universidad de Los Andes                                 Universidad del Zulia
               Facultad de Ingeniería                                Facultad de Ingeniería
          Escuela de Ingeniería de Sistemas                      Instituto de Cálculo Aplicado
           Departamento de Computación                              Maracaibo - Venezuela
                Mérida – Venezuela
                 +58-274-2403811
                         jonas@ing.ula.ve, narape@ica.luz.ve, juancol@ica.luz.ve


    Resumen-- La Orientación a Objetos                     Existen variadas definiciones del término
introdujo, durante la década pasada, un                Reutilización de Software. Algunas de estas
cambio radical en el proceso de desarrollo de          definiciones son las siguientes:
software. De un proceso caracterizado por su           • Según Somerville [1], la reutilización es un
énfasis en la descripción algorítmica de la                 enfoque de desarrollo [de software] que trata
solución del problema, se pasó a un proceso                 de maximizar el uso recurrente de
orientado a la representación y manipulación                componentes de software existentes.
de los objetos que caracterizan el problema.           • Según Sametinger [2], la reutilización de
Este paradigma abrió, también, nuevas                       software es el proceso de crear sistemas de
posibilidades para desarrollar software basado              software a partir de software existente, en
en la noción de reutilización de componentes.               lugar de desarrollarlo desde el comienzo.
La Orientación a Objetos creó un rumbo                 • Según Sodhi et al. [3], la reutilización de
diferente en el proceso de reutilización a través           software es el proceso de implementar o
de la producción de componentes genéricos,                  actualizar sistemas de software usando
fáciles    de     integrar,    distribuidos     e           activos de software existentes.
independientes de las plataformas de                       Estas tres definiciones consideran la
desarrollo. En este artículo, de carácter              reutilización como un enfoque o proceso de
tutorial,   se     discuten     los    conceptos       desarrollo de software. Su principal diferencia
fundamentales de la reutilización de software,         radica en el objeto de reutilización (componente,
así como los modelos de procesos y los aspectos        software y activo). Tal como lo plantean Sodhi et
metodológicos que caracterizan esta nueva              al. [3], la reutilización de software va más allá de
manera de producir software, denominada                la reutilización de piezas de software. Ella
Desarrollo     de     Software      basado     en      involucra el uso de otros elementos de software,
Componentes.                                           tales como algoritmos, diseños, arquitecturas de
                                                       software, documentación y especificaciones de
    Palabras clave—desarrollo de software,             requerimientos.
reutilización de software, componentes de                  Con base en el análisis de estas definiciones
software.                                              podemos establecer nuestra propia definición en
                                                       los siguientes términos:
                                                           La reutilización de software es un proceso de
              I. INTRODUCCIÓN                              la Ingeniería de Software que conlleva al uso
    La reutilización de componentes de software            recurrente de activos de software en la
es un proceso inspirado en la manera en que se             especificación,          análisis,        diseño,
producen y ensamblan componentes en la                     implementación y pruebas de una aplicación o
ingeniería de sistemas físicos. La aplicación de           sistema de software.
este concepto al desarrollo de software no es              Varios estudios han demostrado la efectividad
nueva. Las librerías de subrutinas especializadas,     de la reutilización del software. Sametinger [2],
comúnmente utilizadas desde la década de los           en particular, describe algunos de estos
setenta, representan uno de los primeros intentos      indicadores:
por reutilizar software.                               • Entre el 40 y 60% del código fuente de una
                                                            aplicación es reutilizable en otra similar.


* Publicado en las Actas del IV Congreso de Automatización y Control (CAC03), Mérida, Noviembre, 2003.
2


•    Aproximadamente el 60% del diseño y del          software orientadas a reducir drásticamente el
     código de aplicaciones administrativas es        costo y tiempo de desarrollo de sistemas y
     reutilizable.                                    aplicaciones, sin afectar los niveles de calidad del
• Aproximadamente el 75% de las funciones             producto, ha surgido un nuevo activo reutilizable
     son comunes a más de un programa.                denominado Componente de Software. Se han
• Sólo el 15% del código encontrado en                propuesto numerosas definiciones a este término,
     muchos sistemas es único y novedoso a una        entre las cuales destacan las siguientes:
     aplicación específica. El rango general de uso   • Según Philippe Krutchen de Rational Rose
     recurrente potencial está entre el 15% y el           [4], un componente es una parte no trivial,
     85%.                                                  casi independiente y reemplazable de un
    A partir de estos indicadores es fácil deducir         sistema que cumple una función dentro del
el impacto y la importancia que tiene la                   contexto de una arquitectura bien definida.
reutilización de componentes en el proceso de              Un componente cumple con un conjunto de
desarrollo de software; particularmente, en tres de        interfaces y provee la realización física de
las variables más importantes de la Ingeniería de          ellas.
Software: el costo, tiempo y esfuerzo requerido       • Según        Clemens       Szyperski [5], un
para desarrollar un producto de software. La               componente de software es una unidad de
aplicación apropiada de la reutilización en un             composición con interfaces especificadas
proyecto de software conduce, indiscutiblemente,           contractualmente y solamente dependencias
a una reducción significativa de los valores de            explícitas de contexto. Un componente de
estas tres variables. Otros beneficios importantes         software       puede       ser      desplegado
son el incremento de la calidad del software               independientemente y está sujeto a
producido, el aumento de la productividad de los           composición por terceros.
grupos de desarrollo y la reducción del riesgo        • Según Herzum y Sims [6], un componente es
global del proyecto.                                       un artefacto de software autocontenido y
    Este artículo tiene un carácter tutorial y su          claramente identificable que describe ó
objetivo es describir los fundamentos y aspectos           ejecuta funciones específicas; que tiene,
metodológicos del desarrollo de software basado            además, una interfaz claramente establecida,
en componentes. En la sección 2 se establecen los          una documentación apropiada y un status de
conceptos de activo reutilizable y componente de           uso recurrente bien definido.
software; de estos últimos se exponen las             • Según el CBDi Forum [7], un componente es
características mínimas y deseables que favorecen          una pieza de software que describe y/o libera
su reutilización. Las secciones 3, 4 y 5 discuten          un conjunto de servicios que son usados sólo
cómo los componentes se acoplan. Para ello se              a través de interfaces bien definidas.
describe el papel de las interfaces, modelos y            Más recientemente, el Instituto de Ingeniería
frameworks de componentes, y se analizan              de Software (SEI, Software Engineering Institute)
algunos de los mecanismos de composición de           de la Universidad Carnegie-Mellon formuló una
software más utilizados. Finalmente, la sección 6     definición con el propósito de consolidar las
describe los modelos de procesos y los aspectos       diferentes opiniones acerca de lo que debía ser un
metodológicos que rigen esta nueva forma de           componente de software. Según el SEI [8], un
producir software.                                    componente es “una implementación opaca de
                                                      funcionalidad, sujeta a composición por terceros y
      II. ACTIVOS REUTILIZABLES Y                     que cumple con un modelo de componentes”. Con
         COMPONENTES DE SOFTWARE                      respecto al primer aspecto, un componente se
                                                      considera una implementación opaca debido a que
    En el contexto de Ingeniería de Software, un
                                                      su distribución predominantemente es en formato
Activo Reutilizable es un producto diseñado
                                                      binario y sus consumidores lo utilizan como una
expresamente para ser empleado de forma
                                                      “caja negra” a través de su interfaz. Dicho aspecto
recurrente en el desarrollo de muchos sistemas y
                                                      está alineado con el principio de encapsulamiento
aplicaciones. Ejemplos de activos reutilizables
                                                      de la programación orientada a objetos [9], [10].
son: algoritmos, patrones de diseño, esquemas de
                                                      Por otra parte, la composición por terceros
base de datos, arquitecturas de software,
                                                      implica que los componentes son intrínsecamente
especificaciones de requerimientos, de diseño y
                                                      reutilizables debido a que un sistema basado en
de prueba, entre otros.
                                                      componentes puede ser ensamblado con relativa
    En los últimos años, como resultado de
                                                      facilidad por un integrador empleando
presiones crecientes sobre la industria del
                                                      componentes suministrados por múltiples
3


proveedores independientes. Finalmente, la              •   autocontenido: es conveniente que un
coordinación e interacción entre componentes                componente dependa lo menos posible de
exige un marco regulatorio estandarizado (modelo            otros componentes para cumplir su función
de componentes) que establece la infraestructura            de forma tal que pueda ser desarrollado,
de software requerida (framework) y las                     probado, optimizado, utilizado, entendido y
convenciones y restricciones de diseño de los               modificado individualmente.
mismos.                                                 •   mantenido: es deseable que un componente
    Tal como lo refleja la definición anterior, un          (como toda pieza de software) esté inmerso
componente de software puede ser visto desde                en un proceso de mejoramiento continuo que
dos perspectivas distintas, como:                           le garantice al integrador nuevas versiones
1. implementación: los componentes se pueden                que incluyan correctivos, optimizaciones y
     ensamblar y desplegar para crear sistemas y            nuevas características. Esto contribuye a que
     aplicaciones que se ejecutan en un                     dicho componente sea seleccionado con
     computador                                             mayor frecuencia para formar parte de
2. abstracción de arquitectura: los componentes             sistemas de software.
     expresan las reglas de diseño que impone el        •   independiente de la plataforma (hardware
     modelo de componentes.                                 y sistema operativo), del lenguaje de
    Están disponibles diversas tecnologías de               programación y de las herramientas de
componentes        típicamente     asociadas     con        desarrollo: existen diversas plataformas de
infraestructuras de procesamiento distribuido (e.g.         cómputo       de    uso     frecuente    (e.g.
Enterprise JavaBeans [11], CORBA Component                  Windows/Intel, Solaris/Sparc, OSX/PPC,
Model [12] y .NET [13]) y aplicaciones de                   Linux/Intel) y es deseable que un
escritorio (e.g. Controles ActiveX [14] y                   componente pueda ejecutarse en todas ellas.
JavaBeans [15]).                                            Asimismo, ya que existe una amplia gama de
    Una de las características más importantes de           lenguajes de programación y herramientas de
los componentes es que son reutilizables. Para              desarrollo, es natural que encontremos
ello los componentes deben satisfacer como                  componentes escritos empleando lenguajes y
mínimo el siguiente conjunto de características:            herramientas de la preferencia del
• identificable: un componente debe tener una               programador, por lo tanto es deseable que
     identificación clara y consistente que facilite        dichas preferencias no limiten el uso de los
     su catalogación y búsqueda en repositorios de          componentes.
     componentes.                                       •   puede ser reutilizado dinámicamente:
• accesible sólo a través de su interfaz: el                puede ser cargado en tiempo de ejecución en
     componente debe exponer al público                     una aplicación.
     únicamente el conjunto de operaciones que lo       •   certificado: el componente puede ser
     caracteriza (interfaz) y ocultar sus detalles de       certificado por una agencia de software
     implementación. Esta característica permite            independiente o mediante la aplicación de
     que un componente sea reemplazado por otro             modelos de auto-certificación que le permiten
     que implemente la misma interfaz.                      al comprador del componente determinar la
• sus servicios son invariantes: las                        calidad del software adquirido [16].
     operaciones que ofrece un componente, a            •   accedido uniformemente sin importar su
     través de su interfaz, no deben variar. La             localidad: la forma de invocar los servicios
     implementación de estos servicios puede ser            ofrecidos por los componentes debiese ser
     modificada, pero no deben afectar la interfaz.         independiente de su ubicación (local o
• documentado: un componente debe tener                     remota). Para ello el modelo de componentes
     una documentación adecuada que facilite su             debería estar basado en tecnologías de
     búsqueda en repositorios de componentes,               procesamiento distribuido tales como
     evaluación, adaptación a nuevos entornos,              CORBA [17], RMI [18] y .NET Remoting
     integración con otros componentes y acceso a           [13].
     información de soporte.
    Adicionalmente,       para      favorecer      su             III. LA INTERFAZ DE UN
reutilización es deseable que un componente sea:                         COMPONENTE
• genérico: sus servicios pueden ser usados en
     una gran variedad de aplicaciones.                    Una interfaz define el conjunto de operaciones
                                                        que un componente puede realizar; estas
                                                        operaciones son llamadas también servicios o
4


responsabilidades. Las interfaces proveen un                (precondiciones) y salida (postcondiciones)
mecanismo para interconectar componentes y                  de las operaciones.
controlar las dependencias entre ellos.                3. Sincronización: expresan aspectos de
    La naturaleza de la interfaz varia dependiendo          concurrencia.
del lenguaje programación empleado para                4. Calidad de Servicio: contempla atributos
implementar el componente. Los lenguajes                    tales como tiempo de respuesta, uso de
orientados a objetos (e.g. Smalltalk-80 [19], C++           memoria, precisión, confiabilidad, facilidad
[20] y Java [21]) soportan alguna forma de                  de mantenimiento y reutilización, entre otros.
interfaz, que por lo general están separadas de las        Se han realizado algunos intentos para que las
implementaciones. En lenguajes procedimentales         interfaces expresen mejor las propiedades
(e.g. Pascal [22] y FORTRAN [23]) las interfaces       extrafuncionales, tales como el lenguaje de
se definen a través de declaraciones de funciones      programación Eiffel [26] y el método formal
o procedimientos y el uso de variables globales.       Object-Z      [27]     para     propiedades      de
Algunos lenguajes neutrales de especificación de       comportamiento, Object Calculus [28] para
interfaces han sido desarrollados tales como IDL       propiedades de sincronización y la notación
(Interface Definition Language) [17] de OMG            NoFun [29] para las propiedades de calidad de
(Object Management Group).                             servicio.
    En general, una interfaz de programación de            Los párrafos anteriores sólo describen a las
aplicaciones (API, Application Programming             interfaces como una manera de especificar el flujo
Interface) es una especificación, en un lenguaje       unidireccional de dependencia que tiene un
de programación, de las propiedades de un              cliente con respecto a un componente. Sin
módulo de software. Los clientes del módulo sólo       embargo, es mejor decir que un cliente y un
deben depender exclusivamente de las                   componente dependen el uno del otro; un cliente
propiedades definidas por el API de forma              depende de la forma en que un componente
explícita.                                             provee sus servicios, y un componente depende
    Algunas      tecnologías     (e.g.    Enterprise   de cómo los clientes utilizan los servicios que éste
JavaBeans [11]) exigen que sus componentes             ofrece. Esta interdependencia ha llevado a acuñar
implementen dos tipos de interfaces:                   el término Contrato de Interfaz [2], [8] en la
1. interfaz de negocio: que refleja el rol del         literatura de investigación acerca sistemas
     componente en el sistema.                         basados en componentes.
2. interfaz de infraestructura: es impuesta por el
     modelo de componentes con el fin de                   IV. FRAMEWORKS Y MODELOS DE
     permitirle al framework interactuar con el                     COMPONENTES
     componente.
    Por otra parte, nótese que las interfaces              Existe cierta confusión en la literatura
                                                       referente a la terminología de modelos y
convencionales definen la firma de las
operaciones (nombre de la operación, tipo y orden      frameworks de componentes. Sin embargo, hay
de los argumentos, y la manera como se                 consenso acerca de que los sistemas basados en
                                                       componentes       confían   en    estándares   y
devuelven los resultados) que provee un
componente. Las operaciones también se conocen         convenciones bien definidas (modelo de
como Propiedades Funcionales. Sin embargo,             componentes) y en una infraestructura de soporte
                                                       (framework de componentes).
estas interfaces no expresan adecuadamente
propiedades del componente relativas a, por                Los modelos de componentes especifican las
ejemplo, su desempeño, precisión, disponibilidad,      reglas de diseño que deben obedecer los
                                                       componentes. Estas reglas de diseño mejoran la
latencia, seguridad, entre otras. Dichas
propiedades se conocen como Propiedades                composición, aseguran que las calidades de
Extrafuncionales [24].                                 servicio se logren en todo el sistema, y que los
                                                       componentes se puedan desplegar fácilmente
    Es útil diferenciar los tipos de propiedades de
los componentes. Por ejemplo, Beugnard et al.          tanto en entornos de desarrollo como de
[25] define cuatro tipos de propiedades                producción.
                                                           Los modelos de componentes imponen
relacionadas con:
1. Sintaxis: corresponden a las propiedades            estándares y convenciones sobre:
     funcionales expresadas explícitamente a           • Tipos de Componentes: Un tipo de
     través de la interfaz del componente.                  componente puede ser definido en términos
2. Comportamiento: definen las condiciones                  de las interfaces que implementa. Los tipos
     que deben cumplir los valores de entrada               diferentes    de     componentes     pueden
5


     desempeñar diferentes roles en el sistema, y        Un mercado robusto de componentes de
     participar en distintos tipos de esquemas de    software requiere modelos y frameworks
     interacción.                                    estandarizados. Sin embargo, la experiencia ha
• Esquemas de Interacción: especifican cómo          demostrado que distintos dominios de aplicación
     los componentes son localizados, cuáles         tienen diferentes requisitos de funcionalidad y
     protocolos de comunicación son utilizados, y    calidad de servicio (e.g. latencia, seguridad y
     cómo se satisfacen las calidades de servicio    disponibilidad). Esto sugiere la necesidad de
     (e.g.    seguridad,     transacciones,   alta   tener una variedad modelos y frameworks de
     disponibilidad). El modelo de componentes       componentes para cada dominio. EJB, CCM y
     puede describir cómo interactúan los            .NET se han abocado al dominio de aplicaciones
     componentes entre sí y cómo interactúan         empresariales (ERP, BPM, e-commerce y
     dichos componentes con el framework.            sistemas financieros) el cual es lo suficientemente
• Asociación (bindings) de recursos: El              grande y coherente para definir estándares de
     proceso de composición de componentes es        modelos y frameworks de componentes. Sin
     simplemente enlazar un componente a uno o       embargo, existen iniciativas que están abordando
     más recursos. Un recurso es un servicio         otros dominios de aplicación. Las más notorias
     ofrecido por un framework o por otro            son las promovidas por OMG para el control de
     componente desplegado en ese framework.         tráfico    aéreo,    análisis     de     secuencias
     Un modelo de componentes describe cuáles        biomoleculares, mapas genómicos, infraestructura
     recursos están disponibles a los componentes,   de clave pública, entre otras. Adicionalmente,
     y cómo y cuándo se asocian estos                WaterBeans [30] y SIMyO [31] son iniciativas
     componentes a éstos recursos.                   relacionadas con tratamiento de agua, y modelado
    Por otra parte, los frameworks de                y optimización, respectivamente.
componentes proporcionan servicios que soportan
y hacen cumplir el modelo componentes                   V. MECANISMOS DE COMPOSICIÓN
asociado. El framework maneja recursos                            DE SOFTWARE
compartidos por los componentes, y proporciona
                                                         Bajo el modelo de desarrollo de software
mecanismos subyacentes que permiten la
                                                     basado en componentes, las nuevas aplicaciones
comunicación (interacción) entre ellos. Los
                                                     se construyen mediante la integración o
frameworks son activos y actúan directamente
                                                     composición de componentes. Sametinger [2]
sobre componentes, por ejemplo administrando su
                                                     define la composición de software como “el
ciclo de vida (comenzar, suspender, reasumir, o
                                                     proceso de construir aplicaciones mediante la
terminar la ejecución de un componente), y otros
                                                     interconexión de componentes de software a
recursos.
                                                     través de sus interfaces (de composición)". Nótese
    Existen muchos ejemplos de frameworks de
                                                     que se hace especial énfasis en las interfaces
componentes, entre éstos Enterprise JavaBeans
                                                     como elementos fundamentales para lograr la
(EJB) [11] y VisualBasic Framework (VBF) de
                                                     composición de componentes.
Microsoft [14] son de los más representativos. La
                                                         La composición puede concebirse como una
especificación de EJB define un framework de
                                                     relación cliente-servidor entre dos componentes
servidores y contenedores para dar soporte al
                                                     (Figura 1). El componente cliente solicita un
modelo de componentes. Los Servidores EJB son
                                                     servicio (operación) del componente servidor, el
responsables de proporcionar servicios de
                                                     cual ejecuta la operación solicitada y devuelve los
sistemas tales como persistencia, transacciones y
                                                     resultados al cliente. El servidor produce un
seguridad, mientras que los Contenedores EJB
                                                     resultado que es consumido por el cliente.
son responsables de manejar el ciclo de vida del
componente. Por su parte, VBF es quizás el
                                                                        solicita un servicio
framework más popular para el desarrollo de
aplicaciones de escritorio. Se concentra en la             C1                                   C2
composición visual de componentes (llamados
                                                                         consume el servicio
VBXs) más que en tener un entorno que garantice
la calidad de servicio de éstos. VBF incluye al                 Figura 1. Interacción entre
intérprete de VisualBasic (para ejecutar scripts y                   componentes.
hacer composición) y el Modelo de Objetos de
Componentes (COM, Component Object Model)               Además de los componentes, los frameworks
[7] (encargado de los servicios de despliegue y      también se consideran entidades sujetas a
comunicación).                                       composición. En consecuencia, existen tres clases
6


principales de interacción en los sistemas basados    mecanismos necesarios para que ellos se integren
en componentes [24]:                                  a fin de crear nuevas aplicaciones. Las preguntas
1. Componente-Componente (C-C): permite la            que se intentan responder en esta sección son:
     interacción entre componentes. De este tipo      ¿cómo se desarrolla un componente? y ¿cómo se
     de interacción se obtiene la funcionalidad de    crea una aplicación que reutilice componentes
     la aplicación, de forma tal que los contratos    existentes?
     que especifican este tipo de interacción             Sommerville [1] clasifica los procesos de
     pueden ser clasificados como Contratos a         desarrollo de software basados en la reutilización
     Nivel de Aplicación.                             de componentes en dos categorías:
2. Componente-Framework (C-F): posibilita las         • Desarrollo de componentes: Este proceso
     interacciones entre el framework y sus                implica la adaptación o desarrollo de
     componentes. Dicha interacción permite que            componentes con el propósito expreso de ser
     el framework administre los recursos de los           reutilizados en futuras aplicaciones. Su
     componentes. Los contratos que especifican            objetivo es producir repositorios de activos
     estas interacciones pueden ser clasificados           que puedan ser reutilizados en el desarrollo
     como Contratos a Nivel de Sistema.                    de software. Para ser reutilizables, estos
3. Framework-Framework (F-F): posibilita las               componentes        deben       satisfacer   las
     interacciones entre framewoks y permiten la           características descritas en la Sección 2.
     composición de componentes desplegados en        • Desarrollo de software con reutilización de
     framewoks heterogéneos. Estos contratos               componentes: Es un proceso en el cual el
     puede ser clasificados como Contratos de              desarrollo de una nueva aplicación involucra
     Interoperabilidad.                                    la reutilización de un conjunto de
    La forma de materializar la composición entre          componentes existentes. Este enfoque
componentes depende de los mecanismos                      maximiza la reutilización de componentes de
especificados por su modelo de programación.               software existentes y reduce el número de
Típicamente, los modelos de componentes se                 componentes que requieren ser desarrollados
basan en tecnologías orientadas a objetos, por lo          en su totalidad (desde cero). Para ser exitoso,
tanto los mecanismos de composición emplean                este proceso demanda dos condiciones
algunas características tales como relaciones entre        mínimas: i) la existencia de repositorios o
clases (especialización, agregación, asociación y          bases de componentes reutilizables y ii) que
uso) [10], polimorfismo y enlace dinámico [9].             los componentes sean confiables y actúen de
Adicionalmente,       dichos     mecanismo       de        acuerdo a sus especificaciones.
composición típicamente se describen mediante el          El modelo de procesos descrito por
uso de patrones de diseño [32], [33].                 Sametinger [2] provee, sin embargo, una visión
    Las tecnologías de componentes no                 mucho más completa y amplia del desarrollo de
distribuidos,    típicamente      asociadas     con   software basado en componentes. Este modelo,
aplicaciones de escritorio (e.g. Controles ActiveX    denominado ciclo de vida gemelo (twin life cycle),
[14] y JavaBeans [15]), hacen uso extensivo de        divide el proceso de desarrollo de software en dos
características orientadas a objetos dentro de sus    grandes bloques paralelos, tal como se ilustra en
mecanismos de composición. Por el contrario, en       la Figura 2. El primer bloque, conocido como
la composición de componentes distribuidos (e.g.      Ingeniería de Dominios, contempla los procesos
Enterprise JavaBeans [11], CORBA Component            necesarios para desarrollar activos de software
Model [12] y .NET [13]) principalmente se             reutilizables en un dominio particular. El segundo
emplean relaciones de uso,            asociación y    bloque      es     denominado        Ingeniería   de
agregación.                                           Aplicaciones. Su propósito es el desarrollo de
                                                      aplicaciones basado en la reutilización de activos
    VI. EL PROCESO DE DESARROLLO                      de software producidos a través de la Ingeniería
                                                      de Dominios.
    En las secciones anteriores, se caracterizaron
los componentes de software y se describieron los
7



                                                 Ingeniería de Dominios

                          Análisis del                       Diseño del                                  Desarrollo de
                           Dominio                            Dominio                                    Componentes


                               modelos                               diseños                                       componentes
       Especificación
                               de                                    genéricos
       de requerimentos
                               análisis


                Diseño de la        Especificación            Búsqueda de               Adapt / Des.               Integración de
                Arquitectura        De Componentes            Componentes               Componentes                Componentes



                                             Ingeniería de Aplicaciones
     Figura 2. El modelo de procesos gemelos para el desarrollo de software basado en componentes

    Un modelo alternativo al modelo de Ingeniería                             ejecución de los procesos técnicos de desarrollo
de Aplicaciones es el modelo WATCH [34], [35].                                de aplicaciones, indicando además cómo los
Este modelo combina los procesos más relevantes                               procesos gerenciales controlan o coordinan el
de la Ingeniería de Software Orientada a Objetos                              orden de ejecución de los procesos técnicos. Los
con el modelo de Ingeniería de Aplicaciones del                               procesos gerenciales están ubicados en el centro
ciclo de vida gemelo. Una característica                                      de la estructura para indicar explícitamente que
importante de este modelo es la integración de los                            ellos programan, dirigen y controlan el proceso de
procesos gerenciales con los procesos técnicos del                            desarrollo. Los procesos técnicos están ubicados
desarrollo de software basado en componentes.                                 en el entorno siguiendo la forma que tiene el dial
Esta integración facilita la labor del líder del                              de un reloj. Ello indica que el orden de ejecución
proyecto, al describir cómo se debe llevar a cabo                             de las fases técnicas se realiza en el sentido de las
una gestión del proyecto integrada a los procesos                             agujas del reloj. Los procesos gerenciales pueden,
técnicos del desarrollo de software.                                          sin embargo, invertir el orden de ejecución para
    La estructura del método WATCH se ilustra                                 repetir algunas de las fases anteriores.
en la Figura 3. Esta estructura emplea la metáfora
de un reloj de pulsera para describir el orden de

                                            Procesos de
                                           Post-desarrollo

                                                               Análisis del
                                                               Dominio de
                                                                Apliación


                                                                                      Descubrimiento
                                             Entrega del
                                                                                           de
                                              Sistema
                                                                                      Requerimientos




                                                                                                  Análisis y
                                   Pruebas del                  Procesos
                                                                                               Especificación de
                                    Sistema                    gerenciales
                                                                                                Requerimientos




                                           Implementación                               Diseño del
                                             del Sistema                                 Sistema



                                                               Diseño de
                                                              Componentes



                                Figura 3. El modelo de procesos WATCH [34], [35]

   Las tres primeras fases del modelo son                                     La fase de Análisis del Contexto permite que el
similares a los modelos de procesos tradicionales.                            grupo de desarrollo adquiera un conocimiento
8


adecuado del dominio o contexto del sistema en        Software   Heterogéneos    en     Aplicaciones
desarrollo. Las fases de Descubrimiento, Análisis     Espacio-Temporales” (G-97000824).
y Especificación de Requerimientos se encargan
de identificar las necesidades y requerimientos de                 IX. REFERENCIAS
los usuarios, así como analizarlos, especificarlos
gráficamente y documentarlos.                         [1]     I. Sommerville. Software engineering.
                                                              Addison-Wesley Pub Co, 6ta edición,
    La fase de diseño del sistema establece y
                                                              Agosto 2000.
describe la arquitectura del software. Describe
                                                      [2]     J. Sametinger. Software engineering with
cada uno de los componentes que requiere tal
                                                              reusable components. Springer Verlag,
estructura y cómo esos componentes se
                                                              Agosto 1997.
interconectan para interactuar. El grupo de
                                                      [3]     J. Sodhi, y P. Sodhi. Software reuse:
desarrollo debe, a partir de esta arquitectura,
                                                              Domain analysis and design process.
determinar cuáles componentes se pueden
                                                              McGraw-Hill. 1999.
reutilizar y cuáles requieren ser desarrollados en
                                                      [4]     A. W. Brown and K. C.Wallnau. The
su totalidad. Los componentes reutilizados deben
                                                              current state of CBSE. IEEE Software,
ser adaptados, para satisfacer los requerimientos
                                                              15(5):37-46, Septiembre 1998.
del sistema; mientras que los componentes
                                                      [5]     C. Szyperski. Component software:
nuevos, deben ser diseñados, codificados y
                                                              Beyond object-oriented programming.
probados separadamente durante la fase de
                                                              Addison-Wesley Pub Co, 2da edición,
Implementación. Las Pruebas del sistema
                                                              Noviembre 2002.
permiten detectar errores en la integración de los
                                                      [6]     P. Herzum and O. Sims. Business
componentes. Finalmente, la fase de Entrega se
                                                              component factory : A comprehensive
encarga de la instalación, adiestramiento de
                                                              overview of component-based
usuarios y puesta en operación del sistema.
                                                              development for the enterprise. John
                                                              Wiley & Sons, 2000.
            VII. CONCLUSIONES
                                                      [7]     CDBI Forum. Component based
    Los beneficios derivados de la reutilización de           development: Using componentised
software están ocasionando un cambio acelerado                software.
en la manera en que la industria de software                  http://www.cdbiforum.com,
desarrolla sus productos. Los componentes de                  Mayo 1999.
software reutilizables constituyen las unidades       [8]     F. Bachmann, L. Bass, Ch. Buhman, S.
fundamentales para el desarrollo de nuevas                    Comella-Dorda, F. Long, J. Robert, R.
aplicaciones. En este artículo, se ha hecho un                Seacord y K. Wallnau. Volume II:
intento por destacar la importancia y caracterizar            Technical concepts of component-based
el proceso de desarrollo de software basado en la             software engineering, 2nd edition.
reutilización de componentes. Se estableció una               Technical report, Software Engineering
comparación entre los conceptos de activos                    Institute, Carnegie Mellon University,
reutilizables y componentes de software. Se                   Julio 2000.
describieron las características requeridas y         [9]     T. Budd. Introducción a la
deseables de un componente de software para su                programación orientada a objetos.
reutilización. Adicionalmente, se describieron los            Addison-Wesley Iberoamericana. 1994.
conceptos de interfaz, modelo y framework de          [10]    L. Joyanes Aguilar. Programación
componentes, así como también mecanismos de                   orientada a objetos. McGraw-Hill
composición de software. Finalmente, se                       Interamericana, Diciembre 1998.
discutieron     algunos    de      los     aspectos   [11]    Sun Microsystems, Inc. Enterprise
metodológicos que rigen el desarrollo de                      javabeans specification, version 2.0.
componentes y de aplicaciones basadas en la                   http://java.sun.com/product
reutilización de componentes.                                 s/ejb/docs.html, Agosto 2001.
                                                      [12]    Object Management Group Inc. Corba
        VIII. AGRADECIMIENTOS                                 components.
                                                              http://www.omg.org/cgi-
    Los autores agradecen el apoyo económico
                                                              bin/doc?formal/02-06-65, Junio
suministrado por el Fondo Nacional de Ciencia,
Tecnología e Innovación (FONACIT-Venezuela)                   2002.
a través de el proyecto de investigación titulado
“Integración de Tecnologías y Sistemas de
9


[13]   T. L. Thai and H. Lam. .NET framework      [27]   R. Duke, G. Rose y G. Smith. Object-Z:
       essentials. O'Reilly & Associates, 3ra            A specification language advocated for
       edición, 2003.                                    the description of standards. Computer
[14]   D. Chappell. Understanding ActiveX and            Standards and Interfaces, 17:511-533,
       OLE. Microsoft Press, 1ra edición, Enero          Septiembre 1995.
       1996.                                      [28]   K. Lano, J. Bicarregui, J. Luiz Fiadeiro y
[15]   Sun Microsystems, Inc. Javabeans.                 T. Maibaum. Composition of reactive
       http://java.sun.com/product                       system components. En 1st Workshop on
       s/javabeans/docs/spec.html,                       Component-Based Systems, Zurich,
       Agosto 1997.                                      Switzerland, 1997.
[16]   J. Morris, G. Lee, K. Parker, G.A.         [29]   X. Franch. Systematic formulation of
       Bundell, y C.P. Lam. Software                     non-functional characteristics of
       component certification. IEEE                     software.
       Computer, 34(9), Septiembre, 2001.                In 3rd International Conference on
[17]   Object Management Group, Inc.                     Requirements Engineering (ICRE),
       Common object request broker                      pages 174-181, Colorado Springs (USA).
       architecture: Core specification.          [30]   K. C. Wallnau and D. Plakosh.
       http://www.omg.org/docs/for                       Waterbeans: A custom component model
       mal/02-12-06.pdf, Diciembre                       and framework.
       2002.                                             http://www.sei.cmu.edu/cbs/
[18]   Sun Microsystems, Inc. Java remote                cbse2000/papers/23/23.html,
       method invocation specification.                  2000.
       ftp://ftp.java.sun.com/docs                [31]   C. Arévalo, J. Colmenares, N. Queipo,
       /j2se1.4/rmi-spec-1.4.pdf.                        N. Arapé y J. Villalobos. A CORBA and
[19]   A. Goldberg and D. Robson. Smalltalk              Web technology based framework for
       80 : The language. Addison-Wesley Pub             the analysis and optimal design of
       Co, Enero 1989.                                   complex systems in the oil industry. En
[20]   B. Stroustrup. The C++ programming                3rd Internacional Conference on
       language. Addison-Wesley Pub Co, 3ra              Enterprise Information Systems (ICEIS
       edición, Febrero 2000.                            2001), Julio 2001.
[21]   B. Joy, G. Steele, J. Gosling y G.         [32]   E. Gamma, R. Helm, R. Johnson y J.
       Bracha. The Java(TM) languaje                     Vlissides. Design patterns. Addison-
       specification. Addison-Wesley Pub Co,             Wesley Pub Co, Enero 1995.
       2da edición, Junio 2000.
[22]   D. W. Nance. Pascal: Understanding         [33]   F. Marinescu. EJB design patterns:
       programming and problem solving. West             Advanced patterns, processes and
       Information Pub Group, 4ta edición,               idioms. John Wiley & Sons, Febrero
       Enero 1995.                                       2002.
[23]   D. Rev. Smorlarski, Research               [34]   J. Montilva, K. Hazam y M. Gharawi.
       & Education Association y                         The Watch Model for development
       Dennis Chester Smolarski. The                     business software in small and midsize
       essentials of FORTRAN (essentials).               organization. In IV World
       Research & Education Assn, Mayo                   Multiconference on Systemics,
       1994.                                             Cybernetics and Informatics (SCI'2000),
[24]   T. Digre. Business object component               Orlando, Florida (USA), Julio 2000.
       architecture. IEEE Software, 15(5),        [35]   J. Montilva and J. Barrios. A
       1998.                                             Component-Based Method for
[25]   A. Beugnard, J-M Jézéquel y N.                    Developing Web Applications. 5th
       Plouzeau. Making components contract              International Conference on Enterprise
       aware. IEEE Computer, 32(7):38-45,                Information Systems (ICEIS’2003),
       Julio 1999.                                       Angers, France, 2003.
[26]   B. Meyer. Eiffel: The language. Prentice
       Hall PTR, Octubre, 1991.

Más contenido relacionado

La actualidad más candente

Software basado en Componentes
Software basado en ComponentesSoftware basado en Componentes
Software basado en ComponentesJeissonAlexander7
 
Sistemas informacion Com Doc
Sistemas informacion Com DocSistemas informacion Com Doc
Sistemas informacion Com Docjaimedetrelew
 
Diseño, Mantenimiento de Software +
Diseño, Mantenimiento de Software +Diseño, Mantenimiento de Software +
Diseño, Mantenimiento de Software +Valentina
 
Desarrollo SW Basado en Componentes
Desarrollo SW Basado en ComponentesDesarrollo SW Basado en Componentes
Desarrollo SW Basado en Componentestoryneutral
 
Desarrollo de software basado en componentes
Desarrollo de software basado en componentesDesarrollo de software basado en componentes
Desarrollo de software basado en componentesUlises Cruz
 
Ingenieria de software basada en componentes
Ingenieria de software basada en componentesIngenieria de software basada en componentes
Ingenieria de software basada en componentesTensor
 
Pteg g-grupox-lista8-9-13-20- 49-visita3-expo cap 7 tema ingenieria del software
Pteg g-grupox-lista8-9-13-20- 49-visita3-expo cap 7 tema ingenieria del softwarePteg g-grupox-lista8-9-13-20- 49-visita3-expo cap 7 tema ingenieria del software
Pteg g-grupox-lista8-9-13-20- 49-visita3-expo cap 7 tema ingenieria del softwaresara272016
 
Fundamentos del diseño de software
Fundamentos del diseño de softwareFundamentos del diseño de software
Fundamentos del diseño de softwarejoelfinol
 
Ingeniería del software basada en componentes
Ingeniería del software basada en componentesIngeniería del software basada en componentes
Ingeniería del software basada en componentesjose_macias
 
Fundamentos Básicos para el Diseño del Software - Sistemas II
Fundamentos Básicos para el Diseño del Software - Sistemas IIFundamentos Básicos para el Diseño del Software - Sistemas II
Fundamentos Básicos para el Diseño del Software - Sistemas IIJimmyWilfredMassVerd
 
Cuadro comparativo
Cuadro comparativoCuadro comparativo
Cuadro comparativoKleo Jorgee
 
Fundamentos del Diseño de Software
Fundamentos del Diseño de SoftwareFundamentos del Diseño de Software
Fundamentos del Diseño de SoftwareNelson Guanipa
 
Fundamentos basicos del diseño de software
Fundamentos basicos del diseño de softwareFundamentos basicos del diseño de software
Fundamentos basicos del diseño de softwareJesús Molleda
 
Topicos de ingeniería de software
Topicos de ingeniería de softwareTopicos de ingeniería de software
Topicos de ingeniería de softwareAlex Hurtado
 
4. Diseño e Implementación de Software
4. Diseño e Implementación de Software4. Diseño e Implementación de Software
4. Diseño e Implementación de SoftwareMario A Moreno Rocha
 
Fundamentos de Diseño Orientado a Objetos
Fundamentos de Diseño Orientado a ObjetosFundamentos de Diseño Orientado a Objetos
Fundamentos de Diseño Orientado a Objetosforwer1223
 

La actualidad más candente (20)

Software basado en Componentes
Software basado en ComponentesSoftware basado en Componentes
Software basado en Componentes
 
Sistemas informacion Com Doc
Sistemas informacion Com DocSistemas informacion Com Doc
Sistemas informacion Com Doc
 
Diseño, Mantenimiento de Software +
Diseño, Mantenimiento de Software +Diseño, Mantenimiento de Software +
Diseño, Mantenimiento de Software +
 
Desarrollo SW Basado en Componentes
Desarrollo SW Basado en ComponentesDesarrollo SW Basado en Componentes
Desarrollo SW Basado en Componentes
 
Desarrollo de software basado en componentes
Desarrollo de software basado en componentesDesarrollo de software basado en componentes
Desarrollo de software basado en componentes
 
Cuadro Comparativo
Cuadro ComparativoCuadro Comparativo
Cuadro Comparativo
 
Ingenieria de software basada en componentes
Ingenieria de software basada en componentesIngenieria de software basada en componentes
Ingenieria de software basada en componentes
 
Pteg g-grupox-lista8-9-13-20- 49-visita3-expo cap 7 tema ingenieria del software
Pteg g-grupox-lista8-9-13-20- 49-visita3-expo cap 7 tema ingenieria del softwarePteg g-grupox-lista8-9-13-20- 49-visita3-expo cap 7 tema ingenieria del software
Pteg g-grupox-lista8-9-13-20- 49-visita3-expo cap 7 tema ingenieria del software
 
Fundamentos del diseño de software
Fundamentos del diseño de softwareFundamentos del diseño de software
Fundamentos del diseño de software
 
Ingeniería del software basada en componentes
Ingeniería del software basada en componentesIngeniería del software basada en componentes
Ingeniería del software basada en componentes
 
Fundamentos Básicos para el Diseño del Software - Sistemas II
Fundamentos Básicos para el Diseño del Software - Sistemas IIFundamentos Básicos para el Diseño del Software - Sistemas II
Fundamentos Básicos para el Diseño del Software - Sistemas II
 
Modelo
ModeloModelo
Modelo
 
ingenieria del software
ingenieria del softwareingenieria del software
ingenieria del software
 
Cuadro comparativo
Cuadro comparativoCuadro comparativo
Cuadro comparativo
 
Fundamentos del Diseño de Software
Fundamentos del Diseño de SoftwareFundamentos del Diseño de Software
Fundamentos del Diseño de Software
 
Ingenieria en Software
Ingenieria en SoftwareIngenieria en Software
Ingenieria en Software
 
Fundamentos basicos del diseño de software
Fundamentos basicos del diseño de softwareFundamentos basicos del diseño de software
Fundamentos basicos del diseño de software
 
Topicos de ingeniería de software
Topicos de ingeniería de softwareTopicos de ingeniería de software
Topicos de ingeniería de software
 
4. Diseño e Implementación de Software
4. Diseño e Implementación de Software4. Diseño e Implementación de Software
4. Diseño e Implementación de Software
 
Fundamentos de Diseño Orientado a Objetos
Fundamentos de Diseño Orientado a ObjetosFundamentos de Diseño Orientado a Objetos
Fundamentos de Diseño Orientado a Objetos
 

Destacado

Instrumentos percusión
Instrumentos percusiónInstrumentos percusión
Instrumentos percusiónjuangmugica
 
Presentacion hotel
Presentacion hotel Presentacion hotel
Presentacion hotel claraseviya
 
Diapositivas medio ambiente
Diapositivas medio ambiente Diapositivas medio ambiente
Diapositivas medio ambiente Estefany Sabogal
 
Seccion noticias1
Seccion noticias1Seccion noticias1
Seccion noticias1judasalo
 
Catedra diana forero slideshare
Catedra diana forero slideshareCatedra diana forero slideshare
Catedra diana forero slidesharediana_forero
 
Las redes sociales.pptx diapositivas proyecto redes sociales. (2)
Las redes sociales.pptx diapositivas proyecto redes sociales. (2)Las redes sociales.pptx diapositivas proyecto redes sociales. (2)
Las redes sociales.pptx diapositivas proyecto redes sociales. (2)Cristina Mendoza
 
Aplicaciones gratuitas educacion_y_live_edu_12_04_14
Aplicaciones gratuitas educacion_y_live_edu_12_04_14Aplicaciones gratuitas educacion_y_live_edu_12_04_14
Aplicaciones gratuitas educacion_y_live_edu_12_04_14carlosenriquearauz10
 
Presentacion arte y flores
Presentacion arte y floresPresentacion arte y flores
Presentacion arte y floresMaría Blanco
 
Presentación biodiversidad johanna rodriguez 201602-11
Presentación biodiversidad johanna rodriguez 201602-11Presentación biodiversidad johanna rodriguez 201602-11
Presentación biodiversidad johanna rodriguez 201602-11JOHISRODRIGUEZ
 
Primera clase de contabilidad
Primera clase de contabilidadPrimera clase de contabilidad
Primera clase de contabilidadDianaEspejoA
 
Fracciones juego
Fracciones juegoFracciones juego
Fracciones juegovanita_m
 

Destacado (20)

Herramientas web arevalo
Herramientas web   arevaloHerramientas web   arevalo
Herramientas web arevalo
 
Instrumentos percusión
Instrumentos percusiónInstrumentos percusión
Instrumentos percusión
 
Presentacion hotel
Presentacion hotel Presentacion hotel
Presentacion hotel
 
Diapositivas medio ambiente
Diapositivas medio ambiente Diapositivas medio ambiente
Diapositivas medio ambiente
 
Pedablogia
PedablogiaPedablogia
Pedablogia
 
Seccion noticias1
Seccion noticias1Seccion noticias1
Seccion noticias1
 
Slideshare
SlideshareSlideshare
Slideshare
 
Comenzar
ComenzarComenzar
Comenzar
 
Lsd informatica
Lsd informaticaLsd informatica
Lsd informatica
 
Catedra diana forero slideshare
Catedra diana forero slideshareCatedra diana forero slideshare
Catedra diana forero slideshare
 
Las redes sociales.pptx diapositivas proyecto redes sociales. (2)
Las redes sociales.pptx diapositivas proyecto redes sociales. (2)Las redes sociales.pptx diapositivas proyecto redes sociales. (2)
Las redes sociales.pptx diapositivas proyecto redes sociales. (2)
 
Red de computadoras
Red de computadorasRed de computadoras
Red de computadoras
 
Tarea12 dat
Tarea12 datTarea12 dat
Tarea12 dat
 
Propuestas CC.EE.
Propuestas CC.EE.Propuestas CC.EE.
Propuestas CC.EE.
 
Aplicaciones gratuitas educacion_y_live_edu_12_04_14
Aplicaciones gratuitas educacion_y_live_edu_12_04_14Aplicaciones gratuitas educacion_y_live_edu_12_04_14
Aplicaciones gratuitas educacion_y_live_edu_12_04_14
 
Presentacion arte y flores
Presentacion arte y floresPresentacion arte y flores
Presentacion arte y flores
 
Vertebrados
VertebradosVertebrados
Vertebrados
 
Presentación biodiversidad johanna rodriguez 201602-11
Presentación biodiversidad johanna rodriguez 201602-11Presentación biodiversidad johanna rodriguez 201602-11
Presentación biodiversidad johanna rodriguez 201602-11
 
Primera clase de contabilidad
Primera clase de contabilidadPrimera clase de contabilidad
Primera clase de contabilidad
 
Fracciones juego
Fracciones juegoFracciones juego
Fracciones juego
 

Similar a Desarrollo de componentes

Fundamentos para el diseño de un software
Fundamentos para el diseño de un softwareFundamentos para el diseño de un software
Fundamentos para el diseño de un softwaressalzar
 
Desarrollo de aplicaciones web en el entorno servidor
Desarrollo de aplicaciones web en el entorno servidorDesarrollo de aplicaciones web en el entorno servidor
Desarrollo de aplicaciones web en el entorno servidorJomicast
 
Desarrollo de software basado en componentes
Desarrollo de software basado en componentesDesarrollo de software basado en componentes
Desarrollo de software basado en componentesmellcv
 
Trabajo 2 exposicion
Trabajo 2 exposicionTrabajo 2 exposicion
Trabajo 2 exposicionEvelin Oña
 
Tema1 desarrollo de software basado en componentes
Tema1 desarrollo de software basado en componentesTema1 desarrollo de software basado en componentes
Tema1 desarrollo de software basado en componentesGary Araujo Viscarra
 
Edwin alexande mata escobar
Edwin alexande mata escobarEdwin alexande mata escobar
Edwin alexande mata escobarEdwin Alexander
 
ingenieradesoftwareii-140115210933-phpapp01 (1).pptx
ingenieradesoftwareii-140115210933-phpapp01 (1).pptxingenieradesoftwareii-140115210933-phpapp01 (1).pptx
ingenieradesoftwareii-140115210933-phpapp01 (1).pptxMaikoUrizar1
 
Introduccion a la ingenieria del software
Introduccion a la ingenieria del softwareIntroduccion a la ingenieria del software
Introduccion a la ingenieria del softwareEdmund Uespadila
 
Fundamentos del diseño de software
Fundamentos del diseño de software Fundamentos del diseño de software
Fundamentos del diseño de software AlessandreMndez
 

Similar a Desarrollo de componentes (20)

ing del software
 ing del software  ing del software
ing del software
 
Proyecto
ProyectoProyecto
Proyecto
 
Proyecto
ProyectoProyecto
Proyecto
 
Fundamentos para el diseño de un software
Fundamentos para el diseño de un softwareFundamentos para el diseño de un software
Fundamentos para el diseño de un software
 
Desarrollo de aplicaciones web en el entorno servidor
Desarrollo de aplicaciones web en el entorno servidorDesarrollo de aplicaciones web en el entorno servidor
Desarrollo de aplicaciones web en el entorno servidor
 
Proceso software
Proceso softwareProceso software
Proceso software
 
Morales aguirreguillermo
Morales aguirreguillermoMorales aguirreguillermo
Morales aguirreguillermo
 
Desarrollo de software basado en componentes
Desarrollo de software basado en componentesDesarrollo de software basado en componentes
Desarrollo de software basado en componentes
 
Trabajo 2 exposicion
Trabajo 2 exposicionTrabajo 2 exposicion
Trabajo 2 exposicion
 
Capitulo2
Capitulo2Capitulo2
Capitulo2
 
Calidad dsbcso
Calidad dsbcsoCalidad dsbcso
Calidad dsbcso
 
Calidad dsbc
Calidad dsbcCalidad dsbc
Calidad dsbc
 
Tema1 desarrollo de software basado en componentes
Tema1 desarrollo de software basado en componentesTema1 desarrollo de software basado en componentes
Tema1 desarrollo de software basado en componentes
 
Edwin alexande mata escobar
Edwin alexande mata escobarEdwin alexande mata escobar
Edwin alexande mata escobar
 
ingenieradesoftwareii-140115210933-phpapp01 (1).pptx
ingenieradesoftwareii-140115210933-phpapp01 (1).pptxingenieradesoftwareii-140115210933-phpapp01 (1).pptx
ingenieradesoftwareii-140115210933-phpapp01 (1).pptx
 
Introduccion a la ingenieria del software
Introduccion a la ingenieria del softwareIntroduccion a la ingenieria del software
Introduccion a la ingenieria del software
 
Capitulo2
Capitulo2Capitulo2
Capitulo2
 
Fundamentos del diseño de software
Fundamentos del diseño de software Fundamentos del diseño de software
Fundamentos del diseño de software
 
Ensayo sobre la calidad de software
Ensayo sobre la calidad de softwareEnsayo sobre la calidad de software
Ensayo sobre la calidad de software
 
Ensayo sobre la calidad de software
Ensayo sobre la calidad de softwareEnsayo sobre la calidad de software
Ensayo sobre la calidad de software
 

Desarrollo de componentes

  • 1. 1 Desarrollo de Software Basado en Componentes Jonás A. Montilva C.1, Nelson Arapé2 y Juan Andrés Colmenares2 1 2 Universidad de Los Andes Universidad del Zulia Facultad de Ingeniería Facultad de Ingeniería Escuela de Ingeniería de Sistemas Instituto de Cálculo Aplicado Departamento de Computación Maracaibo - Venezuela Mérida – Venezuela +58-274-2403811 jonas@ing.ula.ve, narape@ica.luz.ve, juancol@ica.luz.ve Resumen-- La Orientación a Objetos Existen variadas definiciones del término introdujo, durante la década pasada, un Reutilización de Software. Algunas de estas cambio radical en el proceso de desarrollo de definiciones son las siguientes: software. De un proceso caracterizado por su • Según Somerville [1], la reutilización es un énfasis en la descripción algorítmica de la enfoque de desarrollo [de software] que trata solución del problema, se pasó a un proceso de maximizar el uso recurrente de orientado a la representación y manipulación componentes de software existentes. de los objetos que caracterizan el problema. • Según Sametinger [2], la reutilización de Este paradigma abrió, también, nuevas software es el proceso de crear sistemas de posibilidades para desarrollar software basado software a partir de software existente, en en la noción de reutilización de componentes. lugar de desarrollarlo desde el comienzo. La Orientación a Objetos creó un rumbo • Según Sodhi et al. [3], la reutilización de diferente en el proceso de reutilización a través software es el proceso de implementar o de la producción de componentes genéricos, actualizar sistemas de software usando fáciles de integrar, distribuidos e activos de software existentes. independientes de las plataformas de Estas tres definiciones consideran la desarrollo. En este artículo, de carácter reutilización como un enfoque o proceso de tutorial, se discuten los conceptos desarrollo de software. Su principal diferencia fundamentales de la reutilización de software, radica en el objeto de reutilización (componente, así como los modelos de procesos y los aspectos software y activo). Tal como lo plantean Sodhi et metodológicos que caracterizan esta nueva al. [3], la reutilización de software va más allá de manera de producir software, denominada la reutilización de piezas de software. Ella Desarrollo de Software basado en involucra el uso de otros elementos de software, Componentes. tales como algoritmos, diseños, arquitecturas de software, documentación y especificaciones de Palabras clave—desarrollo de software, requerimientos. reutilización de software, componentes de Con base en el análisis de estas definiciones software. podemos establecer nuestra propia definición en los siguientes términos: La reutilización de software es un proceso de I. INTRODUCCIÓN la Ingeniería de Software que conlleva al uso La reutilización de componentes de software recurrente de activos de software en la es un proceso inspirado en la manera en que se especificación, análisis, diseño, producen y ensamblan componentes en la implementación y pruebas de una aplicación o ingeniería de sistemas físicos. La aplicación de sistema de software. este concepto al desarrollo de software no es Varios estudios han demostrado la efectividad nueva. Las librerías de subrutinas especializadas, de la reutilización del software. Sametinger [2], comúnmente utilizadas desde la década de los en particular, describe algunos de estos setenta, representan uno de los primeros intentos indicadores: por reutilizar software. • Entre el 40 y 60% del código fuente de una aplicación es reutilizable en otra similar. * Publicado en las Actas del IV Congreso de Automatización y Control (CAC03), Mérida, Noviembre, 2003.
  • 2. 2 • Aproximadamente el 60% del diseño y del software orientadas a reducir drásticamente el código de aplicaciones administrativas es costo y tiempo de desarrollo de sistemas y reutilizable. aplicaciones, sin afectar los niveles de calidad del • Aproximadamente el 75% de las funciones producto, ha surgido un nuevo activo reutilizable son comunes a más de un programa. denominado Componente de Software. Se han • Sólo el 15% del código encontrado en propuesto numerosas definiciones a este término, muchos sistemas es único y novedoso a una entre las cuales destacan las siguientes: aplicación específica. El rango general de uso • Según Philippe Krutchen de Rational Rose recurrente potencial está entre el 15% y el [4], un componente es una parte no trivial, 85%. casi independiente y reemplazable de un A partir de estos indicadores es fácil deducir sistema que cumple una función dentro del el impacto y la importancia que tiene la contexto de una arquitectura bien definida. reutilización de componentes en el proceso de Un componente cumple con un conjunto de desarrollo de software; particularmente, en tres de interfaces y provee la realización física de las variables más importantes de la Ingeniería de ellas. Software: el costo, tiempo y esfuerzo requerido • Según Clemens Szyperski [5], un para desarrollar un producto de software. La componente de software es una unidad de aplicación apropiada de la reutilización en un composición con interfaces especificadas proyecto de software conduce, indiscutiblemente, contractualmente y solamente dependencias a una reducción significativa de los valores de explícitas de contexto. Un componente de estas tres variables. Otros beneficios importantes software puede ser desplegado son el incremento de la calidad del software independientemente y está sujeto a producido, el aumento de la productividad de los composición por terceros. grupos de desarrollo y la reducción del riesgo • Según Herzum y Sims [6], un componente es global del proyecto. un artefacto de software autocontenido y Este artículo tiene un carácter tutorial y su claramente identificable que describe ó objetivo es describir los fundamentos y aspectos ejecuta funciones específicas; que tiene, metodológicos del desarrollo de software basado además, una interfaz claramente establecida, en componentes. En la sección 2 se establecen los una documentación apropiada y un status de conceptos de activo reutilizable y componente de uso recurrente bien definido. software; de estos últimos se exponen las • Según el CBDi Forum [7], un componente es características mínimas y deseables que favorecen una pieza de software que describe y/o libera su reutilización. Las secciones 3, 4 y 5 discuten un conjunto de servicios que son usados sólo cómo los componentes se acoplan. Para ello se a través de interfaces bien definidas. describe el papel de las interfaces, modelos y Más recientemente, el Instituto de Ingeniería frameworks de componentes, y se analizan de Software (SEI, Software Engineering Institute) algunos de los mecanismos de composición de de la Universidad Carnegie-Mellon formuló una software más utilizados. Finalmente, la sección 6 definición con el propósito de consolidar las describe los modelos de procesos y los aspectos diferentes opiniones acerca de lo que debía ser un metodológicos que rigen esta nueva forma de componente de software. Según el SEI [8], un producir software. componente es “una implementación opaca de funcionalidad, sujeta a composición por terceros y II. ACTIVOS REUTILIZABLES Y que cumple con un modelo de componentes”. Con COMPONENTES DE SOFTWARE respecto al primer aspecto, un componente se considera una implementación opaca debido a que En el contexto de Ingeniería de Software, un su distribución predominantemente es en formato Activo Reutilizable es un producto diseñado binario y sus consumidores lo utilizan como una expresamente para ser empleado de forma “caja negra” a través de su interfaz. Dicho aspecto recurrente en el desarrollo de muchos sistemas y está alineado con el principio de encapsulamiento aplicaciones. Ejemplos de activos reutilizables de la programación orientada a objetos [9], [10]. son: algoritmos, patrones de diseño, esquemas de Por otra parte, la composición por terceros base de datos, arquitecturas de software, implica que los componentes son intrínsecamente especificaciones de requerimientos, de diseño y reutilizables debido a que un sistema basado en de prueba, entre otros. componentes puede ser ensamblado con relativa En los últimos años, como resultado de facilidad por un integrador empleando presiones crecientes sobre la industria del componentes suministrados por múltiples
  • 3. 3 proveedores independientes. Finalmente, la • autocontenido: es conveniente que un coordinación e interacción entre componentes componente dependa lo menos posible de exige un marco regulatorio estandarizado (modelo otros componentes para cumplir su función de componentes) que establece la infraestructura de forma tal que pueda ser desarrollado, de software requerida (framework) y las probado, optimizado, utilizado, entendido y convenciones y restricciones de diseño de los modificado individualmente. mismos. • mantenido: es deseable que un componente Tal como lo refleja la definición anterior, un (como toda pieza de software) esté inmerso componente de software puede ser visto desde en un proceso de mejoramiento continuo que dos perspectivas distintas, como: le garantice al integrador nuevas versiones 1. implementación: los componentes se pueden que incluyan correctivos, optimizaciones y ensamblar y desplegar para crear sistemas y nuevas características. Esto contribuye a que aplicaciones que se ejecutan en un dicho componente sea seleccionado con computador mayor frecuencia para formar parte de 2. abstracción de arquitectura: los componentes sistemas de software. expresan las reglas de diseño que impone el • independiente de la plataforma (hardware modelo de componentes. y sistema operativo), del lenguaje de Están disponibles diversas tecnologías de programación y de las herramientas de componentes típicamente asociadas con desarrollo: existen diversas plataformas de infraestructuras de procesamiento distribuido (e.g. cómputo de uso frecuente (e.g. Enterprise JavaBeans [11], CORBA Component Windows/Intel, Solaris/Sparc, OSX/PPC, Model [12] y .NET [13]) y aplicaciones de Linux/Intel) y es deseable que un escritorio (e.g. Controles ActiveX [14] y componente pueda ejecutarse en todas ellas. JavaBeans [15]). Asimismo, ya que existe una amplia gama de Una de las características más importantes de lenguajes de programación y herramientas de los componentes es que son reutilizables. Para desarrollo, es natural que encontremos ello los componentes deben satisfacer como componentes escritos empleando lenguajes y mínimo el siguiente conjunto de características: herramientas de la preferencia del • identificable: un componente debe tener una programador, por lo tanto es deseable que identificación clara y consistente que facilite dichas preferencias no limiten el uso de los su catalogación y búsqueda en repositorios de componentes. componentes. • puede ser reutilizado dinámicamente: • accesible sólo a través de su interfaz: el puede ser cargado en tiempo de ejecución en componente debe exponer al público una aplicación. únicamente el conjunto de operaciones que lo • certificado: el componente puede ser caracteriza (interfaz) y ocultar sus detalles de certificado por una agencia de software implementación. Esta característica permite independiente o mediante la aplicación de que un componente sea reemplazado por otro modelos de auto-certificación que le permiten que implemente la misma interfaz. al comprador del componente determinar la • sus servicios son invariantes: las calidad del software adquirido [16]. operaciones que ofrece un componente, a • accedido uniformemente sin importar su través de su interfaz, no deben variar. La localidad: la forma de invocar los servicios implementación de estos servicios puede ser ofrecidos por los componentes debiese ser modificada, pero no deben afectar la interfaz. independiente de su ubicación (local o • documentado: un componente debe tener remota). Para ello el modelo de componentes una documentación adecuada que facilite su debería estar basado en tecnologías de búsqueda en repositorios de componentes, procesamiento distribuido tales como evaluación, adaptación a nuevos entornos, CORBA [17], RMI [18] y .NET Remoting integración con otros componentes y acceso a [13]. información de soporte. Adicionalmente, para favorecer su III. LA INTERFAZ DE UN reutilización es deseable que un componente sea: COMPONENTE • genérico: sus servicios pueden ser usados en una gran variedad de aplicaciones. Una interfaz define el conjunto de operaciones que un componente puede realizar; estas operaciones son llamadas también servicios o
  • 4. 4 responsabilidades. Las interfaces proveen un (precondiciones) y salida (postcondiciones) mecanismo para interconectar componentes y de las operaciones. controlar las dependencias entre ellos. 3. Sincronización: expresan aspectos de La naturaleza de la interfaz varia dependiendo concurrencia. del lenguaje programación empleado para 4. Calidad de Servicio: contempla atributos implementar el componente. Los lenguajes tales como tiempo de respuesta, uso de orientados a objetos (e.g. Smalltalk-80 [19], C++ memoria, precisión, confiabilidad, facilidad [20] y Java [21]) soportan alguna forma de de mantenimiento y reutilización, entre otros. interfaz, que por lo general están separadas de las Se han realizado algunos intentos para que las implementaciones. En lenguajes procedimentales interfaces expresen mejor las propiedades (e.g. Pascal [22] y FORTRAN [23]) las interfaces extrafuncionales, tales como el lenguaje de se definen a través de declaraciones de funciones programación Eiffel [26] y el método formal o procedimientos y el uso de variables globales. Object-Z [27] para propiedades de Algunos lenguajes neutrales de especificación de comportamiento, Object Calculus [28] para interfaces han sido desarrollados tales como IDL propiedades de sincronización y la notación (Interface Definition Language) [17] de OMG NoFun [29] para las propiedades de calidad de (Object Management Group). servicio. En general, una interfaz de programación de Los párrafos anteriores sólo describen a las aplicaciones (API, Application Programming interfaces como una manera de especificar el flujo Interface) es una especificación, en un lenguaje unidireccional de dependencia que tiene un de programación, de las propiedades de un cliente con respecto a un componente. Sin módulo de software. Los clientes del módulo sólo embargo, es mejor decir que un cliente y un deben depender exclusivamente de las componente dependen el uno del otro; un cliente propiedades definidas por el API de forma depende de la forma en que un componente explícita. provee sus servicios, y un componente depende Algunas tecnologías (e.g. Enterprise de cómo los clientes utilizan los servicios que éste JavaBeans [11]) exigen que sus componentes ofrece. Esta interdependencia ha llevado a acuñar implementen dos tipos de interfaces: el término Contrato de Interfaz [2], [8] en la 1. interfaz de negocio: que refleja el rol del literatura de investigación acerca sistemas componente en el sistema. basados en componentes. 2. interfaz de infraestructura: es impuesta por el modelo de componentes con el fin de IV. FRAMEWORKS Y MODELOS DE permitirle al framework interactuar con el COMPONENTES componente. Por otra parte, nótese que las interfaces Existe cierta confusión en la literatura referente a la terminología de modelos y convencionales definen la firma de las operaciones (nombre de la operación, tipo y orden frameworks de componentes. Sin embargo, hay de los argumentos, y la manera como se consenso acerca de que los sistemas basados en componentes confían en estándares y devuelven los resultados) que provee un componente. Las operaciones también se conocen convenciones bien definidas (modelo de como Propiedades Funcionales. Sin embargo, componentes) y en una infraestructura de soporte (framework de componentes). estas interfaces no expresan adecuadamente propiedades del componente relativas a, por Los modelos de componentes especifican las ejemplo, su desempeño, precisión, disponibilidad, reglas de diseño que deben obedecer los componentes. Estas reglas de diseño mejoran la latencia, seguridad, entre otras. Dichas propiedades se conocen como Propiedades composición, aseguran que las calidades de Extrafuncionales [24]. servicio se logren en todo el sistema, y que los componentes se puedan desplegar fácilmente Es útil diferenciar los tipos de propiedades de los componentes. Por ejemplo, Beugnard et al. tanto en entornos de desarrollo como de [25] define cuatro tipos de propiedades producción. Los modelos de componentes imponen relacionadas con: 1. Sintaxis: corresponden a las propiedades estándares y convenciones sobre: funcionales expresadas explícitamente a • Tipos de Componentes: Un tipo de través de la interfaz del componente. componente puede ser definido en términos 2. Comportamiento: definen las condiciones de las interfaces que implementa. Los tipos que deben cumplir los valores de entrada diferentes de componentes pueden
  • 5. 5 desempeñar diferentes roles en el sistema, y Un mercado robusto de componentes de participar en distintos tipos de esquemas de software requiere modelos y frameworks interacción. estandarizados. Sin embargo, la experiencia ha • Esquemas de Interacción: especifican cómo demostrado que distintos dominios de aplicación los componentes son localizados, cuáles tienen diferentes requisitos de funcionalidad y protocolos de comunicación son utilizados, y calidad de servicio (e.g. latencia, seguridad y cómo se satisfacen las calidades de servicio disponibilidad). Esto sugiere la necesidad de (e.g. seguridad, transacciones, alta tener una variedad modelos y frameworks de disponibilidad). El modelo de componentes componentes para cada dominio. EJB, CCM y puede describir cómo interactúan los .NET se han abocado al dominio de aplicaciones componentes entre sí y cómo interactúan empresariales (ERP, BPM, e-commerce y dichos componentes con el framework. sistemas financieros) el cual es lo suficientemente • Asociación (bindings) de recursos: El grande y coherente para definir estándares de proceso de composición de componentes es modelos y frameworks de componentes. Sin simplemente enlazar un componente a uno o embargo, existen iniciativas que están abordando más recursos. Un recurso es un servicio otros dominios de aplicación. Las más notorias ofrecido por un framework o por otro son las promovidas por OMG para el control de componente desplegado en ese framework. tráfico aéreo, análisis de secuencias Un modelo de componentes describe cuáles biomoleculares, mapas genómicos, infraestructura recursos están disponibles a los componentes, de clave pública, entre otras. Adicionalmente, y cómo y cuándo se asocian estos WaterBeans [30] y SIMyO [31] son iniciativas componentes a éstos recursos. relacionadas con tratamiento de agua, y modelado Por otra parte, los frameworks de y optimización, respectivamente. componentes proporcionan servicios que soportan y hacen cumplir el modelo componentes V. MECANISMOS DE COMPOSICIÓN asociado. El framework maneja recursos DE SOFTWARE compartidos por los componentes, y proporciona Bajo el modelo de desarrollo de software mecanismos subyacentes que permiten la basado en componentes, las nuevas aplicaciones comunicación (interacción) entre ellos. Los se construyen mediante la integración o frameworks son activos y actúan directamente composición de componentes. Sametinger [2] sobre componentes, por ejemplo administrando su define la composición de software como “el ciclo de vida (comenzar, suspender, reasumir, o proceso de construir aplicaciones mediante la terminar la ejecución de un componente), y otros interconexión de componentes de software a recursos. través de sus interfaces (de composición)". Nótese Existen muchos ejemplos de frameworks de que se hace especial énfasis en las interfaces componentes, entre éstos Enterprise JavaBeans como elementos fundamentales para lograr la (EJB) [11] y VisualBasic Framework (VBF) de composición de componentes. Microsoft [14] son de los más representativos. La La composición puede concebirse como una especificación de EJB define un framework de relación cliente-servidor entre dos componentes servidores y contenedores para dar soporte al (Figura 1). El componente cliente solicita un modelo de componentes. Los Servidores EJB son servicio (operación) del componente servidor, el responsables de proporcionar servicios de cual ejecuta la operación solicitada y devuelve los sistemas tales como persistencia, transacciones y resultados al cliente. El servidor produce un seguridad, mientras que los Contenedores EJB resultado que es consumido por el cliente. son responsables de manejar el ciclo de vida del componente. Por su parte, VBF es quizás el solicita un servicio framework más popular para el desarrollo de aplicaciones de escritorio. Se concentra en la C1 C2 composición visual de componentes (llamados consume el servicio VBXs) más que en tener un entorno que garantice la calidad de servicio de éstos. VBF incluye al Figura 1. Interacción entre intérprete de VisualBasic (para ejecutar scripts y componentes. hacer composición) y el Modelo de Objetos de Componentes (COM, Component Object Model) Además de los componentes, los frameworks [7] (encargado de los servicios de despliegue y también se consideran entidades sujetas a comunicación). composición. En consecuencia, existen tres clases
  • 6. 6 principales de interacción en los sistemas basados mecanismos necesarios para que ellos se integren en componentes [24]: a fin de crear nuevas aplicaciones. Las preguntas 1. Componente-Componente (C-C): permite la que se intentan responder en esta sección son: interacción entre componentes. De este tipo ¿cómo se desarrolla un componente? y ¿cómo se de interacción se obtiene la funcionalidad de crea una aplicación que reutilice componentes la aplicación, de forma tal que los contratos existentes? que especifican este tipo de interacción Sommerville [1] clasifica los procesos de pueden ser clasificados como Contratos a desarrollo de software basados en la reutilización Nivel de Aplicación. de componentes en dos categorías: 2. Componente-Framework (C-F): posibilita las • Desarrollo de componentes: Este proceso interacciones entre el framework y sus implica la adaptación o desarrollo de componentes. Dicha interacción permite que componentes con el propósito expreso de ser el framework administre los recursos de los reutilizados en futuras aplicaciones. Su componentes. Los contratos que especifican objetivo es producir repositorios de activos estas interacciones pueden ser clasificados que puedan ser reutilizados en el desarrollo como Contratos a Nivel de Sistema. de software. Para ser reutilizables, estos 3. Framework-Framework (F-F): posibilita las componentes deben satisfacer las interacciones entre framewoks y permiten la características descritas en la Sección 2. composición de componentes desplegados en • Desarrollo de software con reutilización de framewoks heterogéneos. Estos contratos componentes: Es un proceso en el cual el puede ser clasificados como Contratos de desarrollo de una nueva aplicación involucra Interoperabilidad. la reutilización de un conjunto de La forma de materializar la composición entre componentes existentes. Este enfoque componentes depende de los mecanismos maximiza la reutilización de componentes de especificados por su modelo de programación. software existentes y reduce el número de Típicamente, los modelos de componentes se componentes que requieren ser desarrollados basan en tecnologías orientadas a objetos, por lo en su totalidad (desde cero). Para ser exitoso, tanto los mecanismos de composición emplean este proceso demanda dos condiciones algunas características tales como relaciones entre mínimas: i) la existencia de repositorios o clases (especialización, agregación, asociación y bases de componentes reutilizables y ii) que uso) [10], polimorfismo y enlace dinámico [9]. los componentes sean confiables y actúen de Adicionalmente, dichos mecanismo de acuerdo a sus especificaciones. composición típicamente se describen mediante el El modelo de procesos descrito por uso de patrones de diseño [32], [33]. Sametinger [2] provee, sin embargo, una visión Las tecnologías de componentes no mucho más completa y amplia del desarrollo de distribuidos, típicamente asociadas con software basado en componentes. Este modelo, aplicaciones de escritorio (e.g. Controles ActiveX denominado ciclo de vida gemelo (twin life cycle), [14] y JavaBeans [15]), hacen uso extensivo de divide el proceso de desarrollo de software en dos características orientadas a objetos dentro de sus grandes bloques paralelos, tal como se ilustra en mecanismos de composición. Por el contrario, en la Figura 2. El primer bloque, conocido como la composición de componentes distribuidos (e.g. Ingeniería de Dominios, contempla los procesos Enterprise JavaBeans [11], CORBA Component necesarios para desarrollar activos de software Model [12] y .NET [13]) principalmente se reutilizables en un dominio particular. El segundo emplean relaciones de uso, asociación y bloque es denominado Ingeniería de agregación. Aplicaciones. Su propósito es el desarrollo de aplicaciones basado en la reutilización de activos VI. EL PROCESO DE DESARROLLO de software producidos a través de la Ingeniería de Dominios. En las secciones anteriores, se caracterizaron los componentes de software y se describieron los
  • 7. 7 Ingeniería de Dominios Análisis del Diseño del Desarrollo de Dominio Dominio Componentes modelos diseños componentes Especificación de genéricos de requerimentos análisis Diseño de la Especificación Búsqueda de Adapt / Des. Integración de Arquitectura De Componentes Componentes Componentes Componentes Ingeniería de Aplicaciones Figura 2. El modelo de procesos gemelos para el desarrollo de software basado en componentes Un modelo alternativo al modelo de Ingeniería ejecución de los procesos técnicos de desarrollo de Aplicaciones es el modelo WATCH [34], [35]. de aplicaciones, indicando además cómo los Este modelo combina los procesos más relevantes procesos gerenciales controlan o coordinan el de la Ingeniería de Software Orientada a Objetos orden de ejecución de los procesos técnicos. Los con el modelo de Ingeniería de Aplicaciones del procesos gerenciales están ubicados en el centro ciclo de vida gemelo. Una característica de la estructura para indicar explícitamente que importante de este modelo es la integración de los ellos programan, dirigen y controlan el proceso de procesos gerenciales con los procesos técnicos del desarrollo. Los procesos técnicos están ubicados desarrollo de software basado en componentes. en el entorno siguiendo la forma que tiene el dial Esta integración facilita la labor del líder del de un reloj. Ello indica que el orden de ejecución proyecto, al describir cómo se debe llevar a cabo de las fases técnicas se realiza en el sentido de las una gestión del proyecto integrada a los procesos agujas del reloj. Los procesos gerenciales pueden, técnicos del desarrollo de software. sin embargo, invertir el orden de ejecución para La estructura del método WATCH se ilustra repetir algunas de las fases anteriores. en la Figura 3. Esta estructura emplea la metáfora de un reloj de pulsera para describir el orden de Procesos de Post-desarrollo Análisis del Dominio de Apliación Descubrimiento Entrega del de Sistema Requerimientos Análisis y Pruebas del Procesos Especificación de Sistema gerenciales Requerimientos Implementación Diseño del del Sistema Sistema Diseño de Componentes Figura 3. El modelo de procesos WATCH [34], [35] Las tres primeras fases del modelo son La fase de Análisis del Contexto permite que el similares a los modelos de procesos tradicionales. grupo de desarrollo adquiera un conocimiento
  • 8. 8 adecuado del dominio o contexto del sistema en Software Heterogéneos en Aplicaciones desarrollo. Las fases de Descubrimiento, Análisis Espacio-Temporales” (G-97000824). y Especificación de Requerimientos se encargan de identificar las necesidades y requerimientos de IX. REFERENCIAS los usuarios, así como analizarlos, especificarlos gráficamente y documentarlos. [1] I. Sommerville. Software engineering. Addison-Wesley Pub Co, 6ta edición, La fase de diseño del sistema establece y Agosto 2000. describe la arquitectura del software. Describe [2] J. Sametinger. Software engineering with cada uno de los componentes que requiere tal reusable components. Springer Verlag, estructura y cómo esos componentes se Agosto 1997. interconectan para interactuar. El grupo de [3] J. Sodhi, y P. Sodhi. Software reuse: desarrollo debe, a partir de esta arquitectura, Domain analysis and design process. determinar cuáles componentes se pueden McGraw-Hill. 1999. reutilizar y cuáles requieren ser desarrollados en [4] A. W. Brown and K. C.Wallnau. The su totalidad. Los componentes reutilizados deben current state of CBSE. IEEE Software, ser adaptados, para satisfacer los requerimientos 15(5):37-46, Septiembre 1998. del sistema; mientras que los componentes [5] C. Szyperski. Component software: nuevos, deben ser diseñados, codificados y Beyond object-oriented programming. probados separadamente durante la fase de Addison-Wesley Pub Co, 2da edición, Implementación. Las Pruebas del sistema Noviembre 2002. permiten detectar errores en la integración de los [6] P. Herzum and O. Sims. Business componentes. Finalmente, la fase de Entrega se component factory : A comprehensive encarga de la instalación, adiestramiento de overview of component-based usuarios y puesta en operación del sistema. development for the enterprise. John Wiley & Sons, 2000. VII. CONCLUSIONES [7] CDBI Forum. Component based Los beneficios derivados de la reutilización de development: Using componentised software están ocasionando un cambio acelerado software. en la manera en que la industria de software http://www.cdbiforum.com, desarrolla sus productos. Los componentes de Mayo 1999. software reutilizables constituyen las unidades [8] F. Bachmann, L. Bass, Ch. Buhman, S. fundamentales para el desarrollo de nuevas Comella-Dorda, F. Long, J. Robert, R. aplicaciones. En este artículo, se ha hecho un Seacord y K. Wallnau. Volume II: intento por destacar la importancia y caracterizar Technical concepts of component-based el proceso de desarrollo de software basado en la software engineering, 2nd edition. reutilización de componentes. Se estableció una Technical report, Software Engineering comparación entre los conceptos de activos Institute, Carnegie Mellon University, reutilizables y componentes de software. Se Julio 2000. describieron las características requeridas y [9] T. Budd. Introducción a la deseables de un componente de software para su programación orientada a objetos. reutilización. Adicionalmente, se describieron los Addison-Wesley Iberoamericana. 1994. conceptos de interfaz, modelo y framework de [10] L. Joyanes Aguilar. Programación componentes, así como también mecanismos de orientada a objetos. McGraw-Hill composición de software. Finalmente, se Interamericana, Diciembre 1998. discutieron algunos de los aspectos [11] Sun Microsystems, Inc. Enterprise metodológicos que rigen el desarrollo de javabeans specification, version 2.0. componentes y de aplicaciones basadas en la http://java.sun.com/product reutilización de componentes. s/ejb/docs.html, Agosto 2001. [12] Object Management Group Inc. Corba VIII. AGRADECIMIENTOS components. http://www.omg.org/cgi- Los autores agradecen el apoyo económico bin/doc?formal/02-06-65, Junio suministrado por el Fondo Nacional de Ciencia, Tecnología e Innovación (FONACIT-Venezuela) 2002. a través de el proyecto de investigación titulado “Integración de Tecnologías y Sistemas de
  • 9. 9 [13] T. L. Thai and H. Lam. .NET framework [27] R. Duke, G. Rose y G. Smith. Object-Z: essentials. O'Reilly & Associates, 3ra A specification language advocated for edición, 2003. the description of standards. Computer [14] D. Chappell. Understanding ActiveX and Standards and Interfaces, 17:511-533, OLE. Microsoft Press, 1ra edición, Enero Septiembre 1995. 1996. [28] K. Lano, J. Bicarregui, J. Luiz Fiadeiro y [15] Sun Microsystems, Inc. Javabeans. T. Maibaum. Composition of reactive http://java.sun.com/product system components. En 1st Workshop on s/javabeans/docs/spec.html, Component-Based Systems, Zurich, Agosto 1997. Switzerland, 1997. [16] J. Morris, G. Lee, K. Parker, G.A. [29] X. Franch. Systematic formulation of Bundell, y C.P. Lam. Software non-functional characteristics of component certification. IEEE software. Computer, 34(9), Septiembre, 2001. In 3rd International Conference on [17] Object Management Group, Inc. Requirements Engineering (ICRE), Common object request broker pages 174-181, Colorado Springs (USA). architecture: Core specification. [30] K. C. Wallnau and D. Plakosh. http://www.omg.org/docs/for Waterbeans: A custom component model mal/02-12-06.pdf, Diciembre and framework. 2002. http://www.sei.cmu.edu/cbs/ [18] Sun Microsystems, Inc. Java remote cbse2000/papers/23/23.html, method invocation specification. 2000. ftp://ftp.java.sun.com/docs [31] C. Arévalo, J. Colmenares, N. Queipo, /j2se1.4/rmi-spec-1.4.pdf. N. Arapé y J. Villalobos. A CORBA and [19] A. Goldberg and D. Robson. Smalltalk Web technology based framework for 80 : The language. Addison-Wesley Pub the analysis and optimal design of Co, Enero 1989. complex systems in the oil industry. En [20] B. Stroustrup. The C++ programming 3rd Internacional Conference on language. Addison-Wesley Pub Co, 3ra Enterprise Information Systems (ICEIS edición, Febrero 2000. 2001), Julio 2001. [21] B. Joy, G. Steele, J. Gosling y G. [32] E. Gamma, R. Helm, R. Johnson y J. Bracha. The Java(TM) languaje Vlissides. Design patterns. Addison- specification. Addison-Wesley Pub Co, Wesley Pub Co, Enero 1995. 2da edición, Junio 2000. [22] D. W. Nance. Pascal: Understanding [33] F. Marinescu. EJB design patterns: programming and problem solving. West Advanced patterns, processes and Information Pub Group, 4ta edición, idioms. John Wiley & Sons, Febrero Enero 1995. 2002. [23] D. Rev. Smorlarski, Research [34] J. Montilva, K. Hazam y M. Gharawi. & Education Association y The Watch Model for development Dennis Chester Smolarski. The business software in small and midsize essentials of FORTRAN (essentials). organization. In IV World Research & Education Assn, Mayo Multiconference on Systemics, 1994. Cybernetics and Informatics (SCI'2000), [24] T. Digre. Business object component Orlando, Florida (USA), Julio 2000. architecture. IEEE Software, 15(5), [35] J. Montilva and J. Barrios. A 1998. Component-Based Method for [25] A. Beugnard, J-M Jézéquel y N. Developing Web Applications. 5th Plouzeau. Making components contract International Conference on Enterprise aware. IEEE Computer, 32(7):38-45, Information Systems (ICEIS’2003), Julio 1999. Angers, France, 2003. [26] B. Meyer. Eiffel: The language. Prentice Hall PTR, Octubre, 1991.