SlideShare uma empresa Scribd logo
1 de 11
LÍNEAS DE PRODUCTOS DE SOFTWARE
                                          Marcos Raúl Córdova Bayas
                        Facultad de Ingeniería de Sistemas, Escuela Politécnica Nacional
                   Campus “José Rubén Orellana”, Ladrón de Guevara E11-253, Quito, Ecuador
                                           raul.cordova@epn.edu.ec


                                                    Resumen
    El presente trabajo recopila el estado del arte de las Líneas de Productos de Software. Por mucho tiempo ha
existido la inquietud por reutilizar software, pero en la mayor parte de los casos, la reutilización ha sido
oportunista, es decir, ha surgido de la posibilidad de reutilizar componentes de software a posteriori, puesto que
no era algo que se supiera que se iba a poder reutilizar. Por ello, muchos esfuerzos de re-utilización no tenían el
éxito esperado, ya que no se conseguía reutilizar adecuadamente los productos previamente elaborados. Esta
situación cambia con las Líneas de Productos de Software. Ahora ya no se quiere producir un único producto, sino
una cadena de montaje que gestione eficiente y eficazmente las diferentes variaciones que pueden existir entre los
productos. Aparecen los conceptos de dominios y familias de productos, orientados a facilitar la reutilización de
productos de software de manera masiva, similar a la manera de fabricar productos en otras áreas, como en el
área automovilística o en la de construcción de todo tipo productos industriales. Para describir esta nueva manera
de desarrollar software, este trabajo contiene primero una Introducción a las Líneas de Productos de Software,
para luego definir los aspectos fundamentales que se deben seguir para insertar y adoptar esta práctica en las
empresas de desarrollo de software, como son los aspectos Conceptuales, Tecnológicos, Metodológicos,
Organizacionales y Gerenciales. Al final se listan las conclusiones obtenidas y la bibliografía consultada.

Palabras Claves: Reutilización de Software, Componentes de Software Reutilizable, Dominios de Software,
Familias de Software, Activos de Software, Líneas de Productos de Software, Fábricas de Software

                                                     Abstract
    The present work compiles the state of the art of Software Products Lines. By long time there has been an
interest for reuse software, but in the majority of the cases, the reuse has been opportunist, in other words, it has
emerged from the possibility of a post reuse of software components, since it didn´t know that it could be reused. By
this reason, a lot of efforts to reuse didn´t have the expected success, since it didn´t properly achieve the reuse of
previously products produced. This condition changes with de Software Products Lines. Now we don´t want to
produce an only product, but an assembly line that manages in an efficient and effective way the different
variations between software products. So, now appears the concepts of product families and product scopes, tended
to facilitate the reuse of software products in a large-scale, as an assembly products in other areas, as in the
automotive area or as in a construction of different industrial products. To describe this new form to develop
software, this work first contains an Introduction to Software Products Lines, then define the basic aspects to follow
to insert and adopt this practice in software companies, like the Conceptual, Technological, Methodological,
Organizational and Managerial aspects. At the end, it lists the conclusions obtained and the bibliography
consulted.


Key words: Software Reuse, Reusable Software Components, Software Domains, Software Families, Software
Assets, Software Products Lines, Software Factories.
1. Introducción                                           las metodologías ayudaban a agilizar y sistematizar la
                                                          creación de un único producto. Existe una inquietud
   Cuando una empresa ofrece un producto software a       por reutilizar, pero en la mayor parte de los casos, la
distintos clientes, surge toda la problemática            reutilización es oportunista, es decir, surgía la
relacionada al manejo de las versiones y a la             posibilidad de reutilizar a posteriori, no era algo que
evolución del producto. En este escenario, no es raro     se supiera positivamente que se iba a poder reutilizar.
encontrarse con alguna de las siguientes situaciones:     Por ello, muchos esfuerzos de re-utilización no se
                                                          amortizaban ya que no terminaba de surgir la
•   Relaciones conflictivas entre los equipos de          oportunidad para poder reutilizarlo.
    marketing y de ingeniería a causa de la
    incapacidad de los segundos para adecuarse a las        Esta situación cambia con las líneas de producto.
    solicitudes de nuevas variaciones de producto         Ahora ya no se quiere producir un único producto,
    provenientes del negocio.                             sino una cadena de montaje que gestione eficiente y
                                                          eficazmente las diferentes variaciones que pueden
•   Coordinación compleja y costosa de múltiples          existir entre los productos. La empresa ya no se centra
    tareas de desarrollo en paralelo que comparten        en un producto para un cliente (por ejemplo, construir
    software común.                                       un portal para TAME), sino en un dominio (por
                                                          ejemplo, construir portales para líneas aéreas). El reto
•   Código fuente poco robusto, que resulta difícil de    está en delimitar el ámbito de este dominio, identificar
    extender con variaciones del nuevo producto y         las variaciones que se van a soportar, y dotarse de la
    propenso al error.                                    infraestructura que permita producir el producto a
                                                          bajo costo pero manteniendo alto nivel de calidad. Es
  Esta problemática no es exclusiva del software. Se      decir, aplicar los principios de la producción en serie
da también en la fabricación de otros productos como      también al software. Este enfoque resulta en mejoras
automóviles, aparatos de telefonía, electrodomésticos,    tanto en la eficiencia (reducción del time-to-market)
y en general, cuando un mismo producto admite             como en la eficacia (mejora de la calidad del
distintas variaciones. La producción en serie (mass       software). Entre los precursores de este enfoque en el
production) ––la capacidad para crear eficientemente      mundo del software se encuentran McIllory (1968),
múltiples copias del mismo producto–– constituyó un       Parnas (1976) y Neighbors (1989) que en sus trabajos
gran avance en el mundo de la fabricación. Pero crear     ya intuían el potencial de estas ideas.
múltiples copias de un producto software es trivial.
Sin embargo, la personalización en serie (mass              Las Líneas de Productos de Software (LPS) se
customization)     ––la    capacidad      para   crear    engloban dentro del anhelo permanente dentro de la
eficientemente múltiples variaciones de un producto–      Ingeniería del Software que es la reutilización. Pero
– es un importante reto tanto en la fabricación de        mejorar la reutilización no lleva necesariamente a
lavadoras como en la venta de un ERP o cualquier          reducir los costos globales de desarrollo debido a los
otro producto software. La pregunta es cómo se            costos adicionales de desarrollar (y gestionar) estos
plasma el enfoque de “personalización en serie” en el     artefactos re-usables. Las LPS han confirmado que la
desarrollo de productos software.                         reutilización eficaz no es sólo un problema técnico,
                                                          sino también de procesos y organización. El proceso
  Si se mira al sistema de producción de las lavadoras,   determina cuándo y dónde se debe realizar el esfuerzo
por ejemplo, la personalización en serie se consigue      de reutilización. La decisión no es simple. De hecho,
mediante la introducción de la cadena de montaje o        muchos de los fracasos en el desarrollo basado en
línea de producto. El objetivo: sacar partido de los      componentes (también orientado a la reutilización), se
elementos comunes y gestionar de una manera eficaz        deben a fallas en el proceso, más que en las técnicas
las variaciones. En lugar de permitir la máxima           que se utilizaban: se invertían esfuerzos en hacer el
flexibilidad que permite el proceso artesanal pero con    componente reutilizable para determinadas situaciones
grandes costes, las líneas de producto delimitan las      que finalmente no se presentaban.
variantes de sus productos a un conjunto
prestablecido, y optimizan los procesos para estas          Así mismo, las LPS suponen una importante
variantes.                                                reorganización de los equipos humanos. De estar
                                                          orientados al producto pasan a orientarse a las Líneas
  En la producción de software, el proceso ha venido      de Productos de Software. Aquí pueden surgir
estando centrado en el producto antes que en la línea     tensiones entre los desarrolladores de los artefactos
de montaje. Las herramientas de desarrollo (IDE) y        comunes (o reutilizables) frente a aquellos encargados
de desarrollar el producto con estos artefactos. ¿Qué          •   Gestionada
ocurre ante nuevas peticiones del cliente no                           o Institucionalizada,          sistemática,
contempladas hasta entonces? Si la planificación no se                     planificada, mejorada.
cumple o se detecta algún error, ¿a qué equipo se le
carga el costo? ¿Cómo se reparten las                        De las anteriores, la más utilizada ha sido la
responsabilidades/presupuestos entre los dos tipos de      reutilización basada en     oportunidad, donde los
equipos?                                                   componentes se almacenan en un repositorio a la
                                                           espera de una oportunidad de reutilización.
  Este artículo comienza con una introducción a LPS,
luego se centra en sus aspectos conceptuales y               Una de las técnicas más conocidas para el uso de la
tecnológicos, para luego tratar sus aspectos               reutilización en software ha sido aquella basada en
metodológicos, organizacionales y gerenciales que          componentes reutilizables, donde las aplicaciones se
permiten alcanzar los beneficios que esta nueva            crean mediante la integración de componentes nuevos,
tecnología impulsa. Para terminar, se establecen las       legados o de terceros conocidos como componentes
conclusiones del trabajo y se lista la bibliografía        COTS (Commercial Off-The-Shelf).
consultada.
                                                            2.2 Definiciones de Línea de Productos de
2. Introducción a las LPS                                  Software

  En este punto se trata sobre lo que es una Línea de        Las definiciones que se escriben a continuación son
Productos de Software, definiciones sobre LPS, el          de los más autores más reconocidos en el ámbito de
modelo básico de la LPS, sus beneficios y sus              las LPS:
aspectos fundamentales.
                                                                   “Las Líneas de Productos de Software se
 2.1 Línea de Productos de Software                                refieren a técnicas de ingeniería para crear
                                                                   un portafolio de sistemas de software
  La idea básica de las LPS es que se basan en el                  similares, a partir de un conjunto compartido
ensamblaje de partes de software previamente                       de activos de software, usando un medio
elaboradas, y está inspirada en la manera de realizar              común de producción" (Krueger, 2006).
los procesos de producción de sistemas físicos, como
la producción de aviones, vehículos, computadores,                 ". Líneas de Productos de Software es un
aparatos electrónicos en general, etc. Está                        conjunto de sistemas de software que
fundamentada pues, en la Reutilización de Software y               comparten un conjunto común y gestionado
asume la existencia de una industria de partes de                  de aspectos que satisfacen las necesidades
software.                                                          específicas de un segmento de mercado o
                                                                   misión y que son desarrollados a partir de un
  Los antecedentes de las LPS están en la reutilización            conjunto común de activos fundamentales [de
de software; entre las definiciones más conocidas                  software] de una manera preescrita"
están de reutilización de software están:                          (Clements and Northrop, 2002).

         “La reutilización de software es el proceso               "Línea de Productos de Software consiste de
        de implementar o actualizar sistemas de                    una familia de sistemas de software que
        software usando activos de software                        tienen una funcionalidad común y alguna
        existentes” (Sodhi & Sodhi, 1999).                         funcionalidad variable" (Gomma, 2004).
                                                                   • La funcionalidad común descansa en el
        "Reutilización de software es el proceso de                     uso recurrente de un conjunto común de
        crear sistemas de software a partir de                          activos reutilizables (requisitos, diseños,
        software existente, en lugar de desarrollarlo                   componentes, servicios web, etc.).
        desde el comienzo" (Sametinger, 1997).                     • Los activos son reutilizados por todos
                                                                        los miembros de la familia.
  Existen varias modalidades de            reutilización
utilizadas por las empresas de software:                    2.3 El Modelo Básico de LPS

    •   Individual                                           En la Figura 1 se muestra el Modelo Básico de una
    •   Oportunista                                        Línea de Productos de Software (LPS).
   La entrega de productos de software de una
                                                           manera:
                                                            más rápida,
                                                            económica y
                                                            con una mejor calidad
                                                          Las LPS producen mejoras en:
                                                            Tiempo de entrega del producto (time to
                                                               market)
                                                            Costos de ingeniería
                                                            Tamaño del portafolio de productos
                                                            Reducción de las tasas de defectos
                                                            Calidad de los productos
Figura 1. Modelo Básico de una Línea de Productos
               de Software (LPS)                          Beneficios tácticos y estratégicos (Krueger,
                                                           2006):
 El modelo está constituido por:                            Beneficios tácticos de ingeniería:
                                                                    Reducción en el tiempo promedio de
La entrada: Activos de Software (Software Assets                        creación y entrega de nuevos
Inputs):                                                                productos
                                                                    Reducción en el número promedio
    •   Una colección de partes de software                             de defectos por producto
        (requisitos, diseños, componentes, casos de                 Reducción en el esfuerzo promedio
        prueba, etc.) que se configuran y componen                      requerido para desarrollar y
        de una manera prescrita para producir los                       mantener los productos
        productos de la línea.                                      Reducción en el costo promedio de
                                                                        producción de los productos
El control: Modelos de Decisión y Decisiones de                     Incremento en el número total de
Productos (Product Decisions: Decision Models                           productos     que     pueden    ser
and Products Decisions)                                                 efectivamente      desplegados    y
    • Los Modelos de Decisiones describen los                           mantenidos
        aspectos variables y opcionales de los              Beneficios estratégicos de negocios
        productos de la línea.                                 Reducción en el tiempo de entrega (time-
    • Cada producto de la línea es definido por un                 to-market) y el tiempo de retorno (time-
        conjunto de decisiones (decisiones de                      to-revenue) de nuevos productos
        producto).                                             Mejoras en el valor competitivo del
                                                                   producto
El proceso de producción (Production)                          Márgenes mayores de ganancias
    • Establece los mecanismos o pasos para                    Mejor calidad de los productos
        componer y configurar productos a partir de            Mejoras en la reputación de la empresa
        los activos de entrada.                                Mayor escalabilidad del modelo de
    • Las decisiones del producto se usan para                     negocios en términos de productos y
        determinar que activos de entrada utilizar y               mercados
        como configurar los puntos de variación de             Mayor agilidad para expandir el negocio
        esos activos                                               a nuevos mercados
La salida: Productos de software (Software                     Reducción de riesgos en la entrega de
Product Outputs)                                                   productos
    • Conjunto de todos los productos que pueden
        o son producidos por la línea de productos.         Algunas empresas han reportado mejoras que
                                                             van en el rango de factores de 3 a 50 en los
 2.4 Beneficios de las LPS                                   beneficios discutidos anteriormente.
  Entre los mayores beneficios de las LPS se pueden
anotar los siguientes:
2.5 Aspectos fundamentales
                                                             En la Figura 2, se muestra el proceso de evolución
   El paradigma de desarrollo de software LPS              de la reutilización de software
 requiere que las empresas que lo adopten consideren
 los siguientes aspectos fundamentales:                    3.1 Reutilización de software
                                                              La reutilización de activos de software en LPS tiene
 a) Aspectos conceptuales                                  varias características:
    Conceptos en los que las LPS se fundamentan.                a) Es estratégica, porque consolida lo común
 b) Aspectos tecnológicos                                           entre la línea de productos, maneja
    Qué tecnologías son fundamentales para                          estratégicamente la variación entre los
    desarrollar y mantener activos y productos de                   productos de la línea y elimina la duplicación
    software                                                        de esfuerzos de ingeniería.
 c) Aspectos metodológicos                                      b) Es predictiva, porque la reutilización de
    Cómo desarrollar y mantener los activos y                       activos se da en uno o más productos sobre
    productos de software                                           una línea bien definida y porque se reutilizan
 d) Aspectos organizativos                                          arquitecturas de software, en lugar de
    Cómo debe la empresa organizarse internamente                   reutilizar     componentes       de    manera
 e) Aspectos gerenciales                                            oportunista.
    Cómo gestionar los proyectos de desarrollo de               c) Es gestionada, ya que es sistemática,
    activos y productos.                                            planificada, institucionalizada y mejorada.

 3. Aspectos conceptuales                                     3.2 Activos de software reutilizable
                                                              Un activo de software reutilizable es un producto
    En este punto se tratarán los Aspectos Conceptuales    de software diseñado expresamente para ser utilizado
 que sirven de fundamento a las LPS y que tienen que       múltiples veces en el desarrollo de diferentes sistemas
 ver con la Reutilización de software, los Activos de      o aplicaciones.
 software, los Componentes de software reutilizable,
 los Dominios y familias y las Líneas de productos de        Un activo de software puede ser:
 software. Su conocimiento permite a las                       Un componente de software
 organizaciones y profesionales involucrados en el área        Una especificación de requisitos
 de Desarrollo de Software, entender las bases de las          Un modelo de negocios
 LPS para poderlas aplicar en sus procesos de                  Una especificación de diseño
 producción de software.                                       Un algoritmo
                                                               Un patrón de diseño (design pattern)
           Reutilización de Software                           Una arquitectura de dominio
                                                               Un esquema de base de datos
                                                               Una especificación de prueba
                  Desarrollo de Software
                   Basado en Líneas de                         La documentación de un sistema
                        Productos                              Un plan

                                                             3.3 Componentes de software reutilizable (CSR)
            Desarrollo de Software Basado en
                      Componentes
                                                              Un componente de software reutilizable es “Una
                                                           pieza [de software] funcional que es liberada
                                                           independientemente [de otras] y que proporciona
        Ingeniería de             Ingeniería de            acceso a sus servicios a través de sus interfaces”
          Dominio                 Aplicaciones
                                                           (Brown, 2000).

                                                              Un componente de software puede ser liberado
Desarrollo de                              Desarrollo de   (desplegado o instanciado) independientemente de
Software para                              Software con    otros y ofrece servicios a través de sus interfaces, es
Reutilización                              reutilización   decir, que para utilizar su funcionalidad se emplean
                                                           sus interfaces.

   Figura 2. Evolución de la reutilización de software
Según el CBDi Forum, “Un componente es una
pieza de software que describe y/o libera un conjunto                         Redes de Servicios
de servicios que son usados sólo a través de interfaces
bien definidas” (CBDi Forum, 1999).                              Redes                                 Otras
                                                               eléctricas                              redes
  Así, un componente de software reutilizable (CSR)
debe ser:                                                                   Acueductos    Oleoductos
     Identificable
     Autocontenido
     Rastreable a través de su ciclo de desarrollo
     Reemplazable por otro componente
     Accesible solamente a través de su interfaz
     Inmutabilidad de sus servicios                                   Figura 3. Ejemplo de dominio
     Documentación de sus servicios
     Mantenido sistemáticamente                          Una familia de productos de software es un conjunto
                                                          de productos de software asociados a un dominio
                                                          determinado.
    Clasificación de los Componentes de software
     reutilizable (CSR)
                                                          Los miembros de la familia comparten aspectos
      Según su modificabilidad
                                                          comunes tales como un diseño arquitectónico común,
         • Caja negra
                                                          un    conjunto   de   componentes      reutilizables,
         • Caja blanca
                                                          capacidades y servicios comunes, y tecnologías
      Según su granularidad
                                                          comunes.
         • Componentes de uso específico
         • Componentes de negocio
         • Marcos (frameworks)
                                                            3.5 Líneas de productos de software (LPS)
         • Componentes de aplicación
      Según su fabricante
                                                            Una LPS es una familia de productos de software
         • Componentes hechos en casa
                                                          que tiene un conjunto de aspectos gestionados que son
         • COTS – Commercial Off-The-Shelf
                                                          comunes a todos los miembros de la familia, además
      Según la tecnología usada
                                                          de que los productos de la línea son desarrollados a
         • Componentes imperativos
                                                          partir de un conjunto de activos de software
                   o Módulos, funciones
                                                          reutilizables.
         • Componentes OO
                   o Clases
                                                            Una familia de productos de software tiene:
         • Componentes distribuidos
                                                             • Aspectos comunes que son compartidos por
                   o Componentes CORBA
                                                                  todos sus productos
                   o Componentes .NET
                                                             • Aspectos         variables     que    establecen
                   o Componentes J2EE
                                                                  diferencias entre los productos
                   o Servicios web
                                                             El objetivo principal de una LPS es reducir el
    3.4 Dominios y familias
                                                          tiempo, esfuerzo, costo y complejidad de crear y
                                                          mantener los productos de la línea mediante la
  Un dominio es un área de aplicación de productos
                                                          capitalización de los aspectos comunes de la línea de
de software que están centrados en torno a un cuerpo
                                                          productos, a través de la consolidación y reutilización
de conocimientos, tienen una economía de alcance
                                                          de los activos de entrada a la línea, y del manejo de
asociada que ocurre cuando al construirse un activo y
                                                          los aspectos variables de los productos de la línea, a
usarlo en múltiples productos ocasiona más beneficios
                                                          través de los puntos de variación de los activos y los
que crear el activo para cada producto y, que pueden
                                                          modelos de decisión (Krueger, 2006).
dividirse en subdominios. La Figura 3 muestra un
dominio sobre Redes de Servicios.
4. Aspectos tecnológicos.                                 4.2 Repositorios LPS

  En esta parte del documento se hablará sobre las           Las líneas de productos de software requieren
Arquitecturas de LPS, los Repositorios de LPS y las       almacenar sus activos de software en repositorios. Un
Áreas de prácticas y patrones para LPS.                   repositorio LPS es conocido como una base de datos
                                                          especializada, que almacena los activos de software y
    4.1 Arquitecturas de LPS                              facilita la recuperación y el mantenimiento de los
                                                          activos de software. Su objetivo es asegurar la
   Una arquitectura de software es la estructura o        disponibilidad de activos para apoyar el desarrollo de
estructuras de un sistema que comprende los               productos de la LPS. Su representación se la muestra
componentes del software, las propiedades visibles        en la Figura 4.
externamente de estos componentes, y las relaciones
entre ellos (Bass, 1998).
                                                                               Activos de
   Las propiedades externas de los componentes son                             Software
sus interfaces (APIs) y sus características, como
rendimiento, manejo de errores, uso compartido de
recursos, etc.
                                                          Figura 4. Representación de los Activos de Software
  La arquitectura de una LPS es una arquitectura de
software genérica que describe la estructura de toda la      El repositorio mantiene información relevante de
familia de productos y no solamente la de un producto     cada activo usado en la LPS, como la especificación
particular. Además, captura los aspectos comunes y        técnica del activo, la historia o registro de uso, la
variables de una familia de productos de software. Los    clasificación del activo y la documentación del activo.
aspectos comunes de la arquitectura son capturados
por los componentes de software que son comunes a             Tipos de Repositorios LPS
toda la familia. Los aspectos variables de la
arquitectura son capturados por los componentes de           Los Repositorios LPS se clasifican según su
software que varían entre los miembros de la familia.     alcance, aplicabilidad y propósito de la siguiente
                                                          manera:
   La arquitectura de una LPS también se la conoce
como arquitectura de dominio. Es importante acotar            Según su alcance
que la arquitectura LPS debe ser instanciada cada vez           Locales: son desarrollados y reusados
que se desarrolla un producto de la línea. Esta                    internamente por una organización o
instanciación se la hace a través de mecanismos de                 empresa.
variabilidad, que pueden ser:                                   Globales o de uso comercial: disponibles a
                                                                   terceros bajo adquisición o subscripción.
     Herencia. Ej. Suplantación de un método                   Ejemplos: COTS, Servicios Web.
      heredado de una clase en un componente
     Puntos de extensión. Ej. Se agrega nueva                Según su aplicabilidad
      funcionalidad    o    comportamiento     a   un           De dominio específico
      componente.                                               De dominio general
     Parametrización. El comportamiento de un
      componente puede ser parametrizado a tiempo de          Según su propósito
      diseño y definido a tiempo de implementación.             De reuso: permiten el almacenamiento y
      Ej. macros o templates.                                      recuperación de activos de software
     Configuración. Selección y "deselección" de los           De referencia: facilitan la localización de
      componentes de la arquitectura.                              activos en otros repositorios.
     Selección a tiempo de compilación. La                     Ejemplo: UDDIs (siglas del catálogo de
      implementación de una funcionalidad es                       negocios de Internet denominado Universal
      seleccionada, entre varias posibles, al momento              Description, Discovery and Integration).
      de la compilación del componente o de la
      aplicación.                                             4.3 Áreas de prácticas y patrones para LPS
La introducción del paradigma LPS en una empresa                  o    La justificación del negocio.
de software es un proceso complejo, gradual y lleno                 o    El proceso para describir el conjunto de
de dificultades. Para obtener los beneficios que este                    productos que serán incluidos en la línea
paradigma ofrece, una empresa debe tomar en                              de productos.
consideración      los     factores     tecnológicos,        A su vez, las áreas de práctica requeridas por la
metodológicos, organizacionales y gerenciales.             solución son:

  Así, Clements y Northrop (2002) definen un                  Análisis del Mercado: ayuda a entender el
conjunto de áreas de prácticas y patrones que son              mercado que tendrán los productos de la línea:
necesarios considerar para asegurar el éxito de la             qué productos tienen mayor demanda, cuál es la
implantación del paradigma LPS en una empresa.                 competencia, cuál es el tamaño del mercado y
                                                               cuáles las oportunidades.
   Un área de práctica es una colección de                    Entendimiento de dominios relevantes:
actividades que una empresa debe ejecutar y dominar            proporciona un modelo del dominio, los
para implantar exitosamente una LPS. Estas áreas de            requisitos del dominio y los aspectos comunes y
práctica describen actividades que son normalmente             variables a todos los sistemas (aplicaciones) que
recomendadas por el SEI (Software Engineering                  forman el dominio.
Institute), para el desarrollo exitoso de software y que      Proyección tecnológica: permite predecir qué
guardan una correspondencia estrecha con las áreas de          productos pueden llegar a ser factibles en el
procesos definidas por el CMMI-SW (Capability                  futuro cercano.
Maturity Model Integration – Software).                       Construcción de un caso de negocios:
                                                               proporciona una justificación de la selección de
  Tres tipos de áreas de prácticas LPS son                     productos y del enfoque que se usará para
recomendadas por Clements y Northrop (2002):                   construirlos.
                                                              Definición del alcance (scoping): describe
   Área de práctica de Ingeniería de Software.                cuáles productos serán incluidos en la línea de
    Ejemplos: Definición y evaluación de una                   productos y cuáles no.
    arquitectura LPS.
   Áreas de práctica de Gestión Técnica. Ejemplo:         5. Aspectos Metodológicos.
    Planificación de los proyectos de desarrollo de
    componentes o de productos (aplicaciones).               Los aspectos metodológicos de las LPS involucran
   Áreas de práctica de Gestión Organizacional.           la aplicación de un conjunto de prácticas de
    Ejemplo: Estructuración de la empresa                  ingeniería, como las siguientes:
  Un patrón es una regla de tres partes que expresan              Definición de la arquitectura LPS
una relación entre un contexto, un problema y una
                                                                  Evaluación de la arquitectura LPS
solución (Alexander, 1979).
                                                                  Desarrollo de componentes
   Los patrones LPS plantean soluciones a problemas               Utilización de COTS
recurrentes relacionados con las situaciones                      Minería de activos existentes
organizacionales de las LPS. Estas soluciones son                 Ingeniería de Requisitos
planteadas en términos de las áreas de prácticas y sus            Integración de sistemas software
relaciones. El siguiente ejemplo muestra las tres partes          Pruebas
del patrón “Qué construir”:                                       Entendimiento de dominios relevantes

   El Contexto: una empresa ha decidido crear una           La Figura 5 muestra los procesos de negocio de una
    línea de productos de software y conoce bien el        LPS.
    dominio de aplicación de los productos.
   El Problema: determinar qué productos deberán             La Ingeniería de Dominio (ID) captura
    ser incluidos en la línea de productos.                información y representa el conocimiento sobre un
   La Solución: para determinar qué productos             dominio determinado, con el fin de crear activos de
    producir, se requiere información relacionada          software reutilizables en el desarrollo de cualquier
    con:                                                   nuevo producto de una LPS. Los productos de la ID
         o El dominio de aplicación, la tecnología y       son:
              el mercado.
que se emplearán para producir los productos de
Activos de                                                     Productos de     software.
Software                                                         Software
                                                                                  La Ingeniería de Aplicaciones (IA) se encarga del
                 Procesos LPS                                                   desarrollo de los productos de la LPS a través de la
                                                                                reutilización de activos de software y de los planes de
                                                                                producción.
                  Ingeniería de               Ingeniería de
                    Dominio                   Aplicaciones
                                                                                  La arquitectura de dominio es empleada en la IA
                                                                                como un modelo de referencia para diseñar los
                                                                                productos de la LPS. A su vez, el repositorio LPS
                                Gestión Tecnológica
                                                                                provee los activos requeridos durante el desarrollo de
                                                                                cada nuevo producto de la LPS.

                                                                                  Algunos de los más conocidos Modelos de
                             Gestión Organizacional
                                                                                Procesos para LPS son el Modelo TWIN, el Modelo
                                                                                del SEI y el modelo ESPLEP (Evolutionary Software
                                                                                Product Lines Engineering Process) propuesto por
 Proceso de
                                                              Organización de   Gomma (2004).
 desarrollo                                                     la empresa


                                                                                6. Aspectos Organizacionales
                     Figura 5. Procesos de negocio de una LPS
                                                                                  Los aspectos organizacionales están relacionados
                                                                                con la organización misma de la empresa y con las
                  Definiciones de dominios (descripciones del                  actividades que ella debe implantar para asegurar el
                   contexto)                                                    aprovechamiento eficaz y eficiente del paradigma
                  Modelos del dominio                                          LPS.
                  Modelos de requisitos del dominio
                  Modelos arquitectónicos (arquitecturas del                     Los aspectos organizacionales de las LPS
                   dominio)                                                     involucran la aplicación de un conjunto de prácticas
                  Ontologías del dominio                                       de gestión:
                  Lenguajes del dominio
                  Estándares del dominio                                              Construcción de casos de negocio
                                                                                       Gestión de relaciones con los clientes
               Las actividades principales de la Ingeniería de                         Desarrollo de una estrategia de adquisición
             Dominio son el Análisis de Aspectos, el Diseño de la                      Análisis de mercados
             Arquitectura LPS y la Implementación del Dominio.                         Operaciones
                                                                                       Planificación organizacional
                El Análisis de Aspectos analiza la familia para                        Gestión de riesgos organizacionales
             determinar los requisitos que son comunes, opcionales                     Estructuración de la empresa
             y diferentes a todos sus miembros.                                        Proyección de tecnologías
                                                                                       Capacitación de personal
                El diseño de la Arquitectura LPS produce una
             arquitectura de dominio que tiene componentes
             comunes a todos los miembros de la familia,                        7. Aspectos Gerenciales
             componentes opcionales que son requeridos por
             algunos miembros y componentes variantes, de los                     Están relacionados con la aplicación de los
             cuales algunos miembros de la familia emplean                      procesos gerenciales en las actividades de Ingeniería
             distintas versiones y tienen puntos de variación que               de Dominio e Ingeniería de Aplicación de una LPS.
             permiten configurarlos.                                            Esto incluye:

                La Implementación del Dominio consiste en la                           Planificación de Proyectos
             creación y almacenamiento de los activos de software                      Organización de Grupos de Trabajo, que
                                                                                        pueden dividirse en Grupos de Soporte,
como el de la Administración de                     producto, además de la construcción de
        Repositorios de Activos de Software y los           herramientas de especialización o adaptación.
        Grupos de Mantenimiento de Aplicaciones y
        Grupos de Desarrollo, como los Grupos de
                                                           Si bien las ideas aquí expuestas fueron
        desarrollo de componentes y los de
        desarrollo de aplicaciones.                         aparecieron hace ya más de 30 años, no es hasta
       Dirección                                           hace poco más de diez años que estas ideas se han
       Administración de recursos                          evaluado en casos reales de cierta envergadura.
       Control                                             Los resultados han sido muy esperanzadores y los
                                                            trabajos para profundizar en modelos de
   Los aspectos gerenciales de las LPS involucran la        organización, metodologías y técnicas adaptadas
aplicación de un conjunto de prácticas de gestión           a las LPS son temas de interés creciente.
técnica:
      Gestión de la Configuración
      Recolección de datos, métricas y seguimiento
                                                        9. Referencias
      Análisis                                  de
         hacer/comprar/descubrir/encomendar
                                                            [1] Krueger, Ch. Introduction to Software
         (aprovisionamiento de activos)
      Definición de procesos                                   Product         Lines.          [On-line].
      Alcance                                                  www.softwareproductlines.com. 2006
      Planificación técnica
      Gestión de riesgos técnicos                          [2] Greenfield, J. et al. Software factories:
      Soporte de herramientas                                  Assembling Applications with Patterns,
                                                                Models, Frameworks, and Tools. John
8. Conclusiones                                                 Wiley & Sons. 2004

   Las Líneas de Productos de Software representan         [3] Gomma, H. Designing Software Product
    el estado del arte en Reutilización de Software.            Lines with UML: From Use cases to
                                                                pattern-based Software Architectures.
   La implantación del paradigma LPS en una                    Addison Wesley. 2004
    empresa es un proceso complejo.
                                                            [4] Clements, P. and Northrop, L. Software
                                                                Product Lines: Practices and Patterns.
   Para manejar esta complejidad se requiere
                                                                Addison Wesley. 2002.
    considerar diferentes aspectos: Conceptuales,
    Tecnológicos, Metodológicos, Organizacionales y
                                                            [5] Montilva, J. Desarrollo de Software Basado
    Gerenciales.
                                                                en Líneas de Productos de Software. [On-
                                                                line].
   Las LPS se pueden considerar como fábricas de               http://www.ieee.org.ar/downloads/2006-
    software, ya que poseen las mismas                          montilva-productos.pdf. 2012
    características que las fábricas de productos
    físicos, en donde los productos se elaboran             [6] CBDi Forum. [On-line]. http://everware-
    mediante las denominadas líneas de producción.              cbdi.com/cbdi-forum. 1999.

   Las LPS tienen el potencial de disminuir costos y       [7] Bass, Len et al. Software architecture in
                                                                practice. Addison-Wesley. 1998
    tiempos de desarrollo de software, sin disminuir
    su calidad.
                                                            [8] Brown A.W., Large-scale Component-Based
                                                                Development, Prentice-Hall. 2000.
   Las LPS implican la especialización en un
    dominio y la construcción de un patrón de               [9] Sodhi, Jag; Sodhi, Prince. Computer
                                                                software; Reusability. McGraw-Hill, New
York. 1999.

[10] Sametinger, J. Software Engineering with
    Reusable Components. Springer-Verlag.
    1997.

[11] Alexander,   Christopher.      A   Pattern
    Language: Towns, Buildings, Construction.
    Oxford University Press, USA. 1979.

[12] McIlroy, Malcolm Douglas. Mass produced
    software       components.       Software
    Engineering: Report of a conference
    sponsored by the NATO Science Committee,
    Garmisch, Germany. 1968.

[13] Parnas David Lorge. On the Design and
    Development of Program Families. IEEE
    Transaction on Software Engineering. Vol. 2,
    n. 1, 1976.

[14] Neighbors, James. Draco: A Method for
    Engineering Reusable Software Systems.
    Software Reusability, Volume I: Concepts
    and Models, Ted Biggerstaff and Alan Perlis,
    Editors, ACM Frontier Series, Addison-
    Wesley. 1989.

[15] Díaz, O. Líneas de Producto de Software.
    [On-line].                   http://alarcos.inf-
    cr.uclm.es/per/fruiz/cur/santander/odiaz-
    lineasproducto.pdf. 2012

Mais conteúdo relacionado

Mais procurados

LINEAS DE PRODUCTOS DE SOFTWARE Y MÉTODO WATCH
LINEAS DE PRODUCTOS DE SOFTWARE Y MÉTODO WATCHLINEAS DE PRODUCTOS DE SOFTWARE Y MÉTODO WATCH
LINEAS DE PRODUCTOS DE SOFTWARE Y MÉTODO WATCHPerozoAlejandro
 
Presentacion eclipse - grupo 6
Presentacion   eclipse - grupo 6Presentacion   eclipse - grupo 6
Presentacion eclipse - grupo 6Maga Lasic
 
Cuadro comparativo modelos para el desarrollo de software
Cuadro comparativo modelos para el desarrollo de softwareCuadro comparativo modelos para el desarrollo de software
Cuadro comparativo modelos para el desarrollo de softwarepaoaboytes
 
Desarrollo de software basado en lineas de productos
Desarrollo de software basado en lineas de productosDesarrollo de software basado en lineas de productos
Desarrollo de software basado en lineas de productosJOSEPHPC3000
 
Ventajas y desventajas de cmmi
Ventajas y desventajas de cmmiVentajas y desventajas de cmmi
Ventajas y desventajas de cmmiSandrea Rodriguez
 
25 Estandares - IEEE Calidad de Software
25 Estandares - IEEE Calidad de Software25 Estandares - IEEE Calidad de Software
25 Estandares - IEEE Calidad de SoftwareCamila Arbelaez
 
metodologia de desarrollo de sistemas dinamicos o Dynamic Systems Development...
metodologia de desarrollo de sistemas dinamicos o Dynamic Systems Development...metodologia de desarrollo de sistemas dinamicos o Dynamic Systems Development...
metodologia de desarrollo de sistemas dinamicos o Dynamic Systems Development...Dormimundo
 
Requerimientos no funcionales
Requerimientos no funcionalesRequerimientos no funcionales
Requerimientos no funcionalesAngel Minga
 
Estrategias prueba de software
Estrategias prueba de softwareEstrategias prueba de software
Estrategias prueba de softwareCentro Líbano
 
Especificación de Arquitectura de Software
Especificación de Arquitectura de SoftwareEspecificación de Arquitectura de Software
Especificación de Arquitectura de SoftwareSoftware Guru
 

Mais procurados (20)

Ingenieria de software
Ingenieria de softwareIngenieria de software
Ingenieria de software
 
LINEAS DE PRODUCTOS DE SOFTWARE Y MÉTODO WATCH
LINEAS DE PRODUCTOS DE SOFTWARE Y MÉTODO WATCHLINEAS DE PRODUCTOS DE SOFTWARE Y MÉTODO WATCH
LINEAS DE PRODUCTOS DE SOFTWARE Y MÉTODO WATCH
 
Presentacion eclipse - grupo 6
Presentacion   eclipse - grupo 6Presentacion   eclipse - grupo 6
Presentacion eclipse - grupo 6
 
Modelo espiral
Modelo espiralModelo espiral
Modelo espiral
 
Cuadro comparativo modelos para el desarrollo de software
Cuadro comparativo modelos para el desarrollo de softwareCuadro comparativo modelos para el desarrollo de software
Cuadro comparativo modelos para el desarrollo de software
 
Algoritmo SJF
Algoritmo SJFAlgoritmo SJF
Algoritmo SJF
 
Proyecto final de software
Proyecto final de softwareProyecto final de software
Proyecto final de software
 
Metodología RUP
Metodología RUPMetodología RUP
Metodología RUP
 
Desarrollo de software basado en lineas de productos
Desarrollo de software basado en lineas de productosDesarrollo de software basado en lineas de productos
Desarrollo de software basado en lineas de productos
 
Ventajas y desventajas de cmmi
Ventajas y desventajas de cmmiVentajas y desventajas de cmmi
Ventajas y desventajas de cmmi
 
Herramientas case full informacion
Herramientas case full informacionHerramientas case full informacion
Herramientas case full informacion
 
Ensamblador y lenguaje c
Ensamblador y lenguaje cEnsamblador y lenguaje c
Ensamblador y lenguaje c
 
25 Estandares - IEEE Calidad de Software
25 Estandares - IEEE Calidad de Software25 Estandares - IEEE Calidad de Software
25 Estandares - IEEE Calidad de Software
 
metodologia de desarrollo de sistemas dinamicos o Dynamic Systems Development...
metodologia de desarrollo de sistemas dinamicos o Dynamic Systems Development...metodologia de desarrollo de sistemas dinamicos o Dynamic Systems Development...
metodologia de desarrollo de sistemas dinamicos o Dynamic Systems Development...
 
Requerimientos no funcionales
Requerimientos no funcionalesRequerimientos no funcionales
Requerimientos no funcionales
 
Estrategias prueba de software
Estrategias prueba de softwareEstrategias prueba de software
Estrategias prueba de software
 
Metodología Rup
Metodología RupMetodología Rup
Metodología Rup
 
Orquestación de Servicios y SOA
Orquestación de Servicios y SOAOrquestación de Servicios y SOA
Orquestación de Servicios y SOA
 
Proceso del Software
Proceso del Software Proceso del Software
Proceso del Software
 
Especificación de Arquitectura de Software
Especificación de Arquitectura de SoftwareEspecificación de Arquitectura de Software
Especificación de Arquitectura de Software
 

Destaque

Mi Presentación de Lineas de Productos de Software y el método watch
Mi Presentación  de Lineas de Productos de Software y el método watch Mi Presentación  de Lineas de Productos de Software y el método watch
Mi Presentación de Lineas de Productos de Software y el método watch eledexsy
 
Software Empotrado
Software EmpotradoSoftware Empotrado
Software Empotradochivivi
 
Mapa mental - Linea de Productos de Software - Juan Durán Cámara
Mapa mental - Linea de Productos de Software - Juan Durán CámaraMapa mental - Linea de Productos de Software - Juan Durán Cámara
Mapa mental - Linea de Productos de Software - Juan Durán CámaraJuan Duran
 
Presentacion metodo wacth
Presentacion metodo wacthPresentacion metodo wacth
Presentacion metodo wacthGilbert Trejo
 
Plan de gestion de configuración de software
Plan de gestion de configuración de softwarePlan de gestion de configuración de software
Plan de gestion de configuración de softwareilianacon
 
2100. 3 класс. Урок 2.49 Деление трёхзначных чисел на однозначное число
2100. 3 класс. Урок 2.49 Деление трёхзначных чисел на однозначное число2100. 3 класс. Урок 2.49 Деление трёхзначных чисел на однозначное число
2100. 3 класс. Урок 2.49 Деление трёхзначных чисел на однозначное числоavtatuzova
 
Creación y desarrollo de nuevos productos
Creación y desarrollo de nuevos productosCreación y desarrollo de nuevos productos
Creación y desarrollo de nuevos productosjcjennita
 

Destaque (8)

Mi Presentación de Lineas de Productos de Software y el método watch
Mi Presentación  de Lineas de Productos de Software y el método watch Mi Presentación  de Lineas de Productos de Software y el método watch
Mi Presentación de Lineas de Productos de Software y el método watch
 
Software Empotrado
Software EmpotradoSoftware Empotrado
Software Empotrado
 
Mapa mental - Linea de Productos de Software - Juan Durán Cámara
Mapa mental - Linea de Productos de Software - Juan Durán CámaraMapa mental - Linea de Productos de Software - Juan Durán Cámara
Mapa mental - Linea de Productos de Software - Juan Durán Cámara
 
Presentacion metodo wacth
Presentacion metodo wacthPresentacion metodo wacth
Presentacion metodo wacth
 
GESTIÓN DE LA CONFIGURACIÓN DEL SOFTWARE (GCS)
GESTIÓN DE LA CONFIGURACIÓN DEL SOFTWARE (GCS)GESTIÓN DE LA CONFIGURACIÓN DEL SOFTWARE (GCS)
GESTIÓN DE LA CONFIGURACIÓN DEL SOFTWARE (GCS)
 
Plan de gestion de configuración de software
Plan de gestion de configuración de softwarePlan de gestion de configuración de software
Plan de gestion de configuración de software
 
2100. 3 класс. Урок 2.49 Деление трёхзначных чисел на однозначное число
2100. 3 класс. Урок 2.49 Деление трёхзначных чисел на однозначное число2100. 3 класс. Урок 2.49 Деление трёхзначных чисел на однозначное число
2100. 3 класс. Урок 2.49 Деление трёхзначных чисел на однозначное число
 
Creación y desarrollo de nuevos productos
Creación y desarrollo de nuevos productosCreación y desarrollo de nuevos productos
Creación y desarrollo de nuevos productos
 

Semelhante a LÍNEAS DE PRODUCTOS DE SOFTWARE

Relación Entre SPL Y MDSE
Relación Entre SPL Y MDSERelación Entre SPL Y MDSE
Relación Entre SPL Y MDSEEdicson Edicson
 
Lineas de Productos de Software y Metodo Watch
Lineas de Productos de Software y Metodo WatchLineas de Productos de Software y Metodo Watch
Lineas de Productos de Software y Metodo Watchyorksandia
 
Presentacion lineas de productos de software y el metodo watch
Presentacion lineas de productos de software y el metodo watchPresentacion lineas de productos de software y el metodo watch
Presentacion lineas de productos de software y el metodo watchdanielnp33
 
Seminario 3 reutilización del software
Seminario 3 reutilización del softwareSeminario 3 reutilización del software
Seminario 3 reutilización del softwarepto0404
 
Lineas de Producto de Software y Método Watch
Lineas de Producto de Software y Método WatchLineas de Producto de Software y Método Watch
Lineas de Producto de Software y Método WatchAndreina Soto
 
Metodologia rup
Metodologia rupMetodologia rup
Metodologia rupmireya2022
 
Metodowatch component y lineas de productos de software moeliz cuadros
Metodowatch component y lineas de productos de software moeliz cuadrosMetodowatch component y lineas de productos de software moeliz cuadros
Metodowatch component y lineas de productos de software moeliz cuadrosmoeliz2
 
Metodologias De Analisis Y Diseño De Sistemas
Metodologias De Analisis Y Diseño De SistemasMetodologias De Analisis Y Diseño De Sistemas
Metodologias De Analisis Y Diseño De Sistemasgrupo7inf162
 
Metodologias de analisis y diseño de sistemas
Metodologias de analisis y diseño de sistemasMetodologias de analisis y diseño de sistemas
Metodologias de analisis y diseño de sistemasgrupo7inf162
 
Lineas de producto de software y el Metodo watch
Lineas de producto de software y el Metodo watchLineas de producto de software y el Metodo watch
Lineas de producto de software y el Metodo watchJesus Chacon
 
PROCESO DE DESARROLLO DE SOFTWARE.pptx
PROCESO DE DESARROLLO DE SOFTWARE.pptxPROCESO DE DESARROLLO DE SOFTWARE.pptx
PROCESO DE DESARROLLO DE SOFTWARE.pptxjuan gonzalez
 
líneas de producción
líneas de producciónlíneas de producción
líneas de producciónRobal96
 
Métodos de la ingeniería
Métodos de la ingenieríaMétodos de la ingeniería
Métodos de la ingenieríaSam Stgo
 
Lineas de Productos de Software y el Método Watch
Lineas de Productos de Software y el Método WatchLineas de Productos de Software y el Método Watch
Lineas de Productos de Software y el Método WatchJuan Pérez
 

Semelhante a LÍNEAS DE PRODUCTOS DE SOFTWARE (20)

Relación Entre SPL Y MDSE
Relación Entre SPL Y MDSERelación Entre SPL Y MDSE
Relación Entre SPL Y MDSE
 
Lineas de Productos de Software y Metodo Watch
Lineas de Productos de Software y Metodo WatchLineas de Productos de Software y Metodo Watch
Lineas de Productos de Software y Metodo Watch
 
Presentacion lineas de productos de software y el metodo watch
Presentacion lineas de productos de software y el metodo watchPresentacion lineas de productos de software y el metodo watch
Presentacion lineas de productos de software y el metodo watch
 
Seminario 3 reutilización del software
Seminario 3 reutilización del softwareSeminario 3 reutilización del software
Seminario 3 reutilización del software
 
Lineas de Producto de Software y Método Watch
Lineas de Producto de Software y Método WatchLineas de Producto de Software y Método Watch
Lineas de Producto de Software y Método Watch
 
Metodologia RUP
Metodologia RUPMetodologia RUP
Metodologia RUP
 
Metodologia rup
Metodologia rupMetodologia rup
Metodologia rup
 
ingeniero
ingenieroingeniero
ingeniero
 
Metodowatch component y lineas de productos de software moeliz cuadros
Metodowatch component y lineas de productos de software moeliz cuadrosMetodowatch component y lineas de productos de software moeliz cuadros
Metodowatch component y lineas de productos de software moeliz cuadros
 
Metodologias De Analisis Y Diseño De Sistemas
Metodologias De Analisis Y Diseño De SistemasMetodologias De Analisis Y Diseño De Sistemas
Metodologias De Analisis Y Diseño De Sistemas
 
Metodo watch
Metodo watchMetodo watch
Metodo watch
 
prueva
pruevaprueva
prueva
 
Metodologias de analisis y diseño de sistemas
Metodologias de analisis y diseño de sistemasMetodologias de analisis y diseño de sistemas
Metodologias de analisis y diseño de sistemas
 
Lineas de producto de software y el Metodo watch
Lineas de producto de software y el Metodo watchLineas de producto de software y el Metodo watch
Lineas de producto de software y el Metodo watch
 
Proyecto análisis y Diseño de Sistemas
Proyecto análisis y Diseño de SistemasProyecto análisis y Diseño de Sistemas
Proyecto análisis y Diseño de Sistemas
 
PROCESO DE DESARROLLO DE SOFTWARE.pptx
PROCESO DE DESARROLLO DE SOFTWARE.pptxPROCESO DE DESARROLLO DE SOFTWARE.pptx
PROCESO DE DESARROLLO DE SOFTWARE.pptx
 
líneas de producción
líneas de producciónlíneas de producción
líneas de producción
 
Métodos de la ingeniería
Métodos de la ingenieríaMétodos de la ingeniería
Métodos de la ingeniería
 
Deber alex
Deber alexDeber alex
Deber alex
 
Lineas de Productos de Software y el Método Watch
Lineas de Productos de Software y el Método WatchLineas de Productos de Software y el Método Watch
Lineas de Productos de Software y el Método Watch
 

Mais de Congreso de Ingeniería en Software y Nuevas Tecnologías de Ingeniería en Sistemas

Mais de Congreso de Ingeniería en Software y Nuevas Tecnologías de Ingeniería en Sistemas (13)

Aristóteles, Dialéctica Hegeliana y Evolución de la Ingeniería de Software
Aristóteles, Dialéctica Hegeliana y Evolución de la Ingeniería de SoftwareAristóteles, Dialéctica Hegeliana y Evolución de la Ingeniería de Software
Aristóteles, Dialéctica Hegeliana y Evolución de la Ingeniería de Software
 
Criterios para la Adaptabilidad de Estándares y Modelos de Procesos de softwa...
Criterios para la Adaptabilidad de Estándares y Modelos de Procesos de softwa...Criterios para la Adaptabilidad de Estándares y Modelos de Procesos de softwa...
Criterios para la Adaptabilidad de Estándares y Modelos de Procesos de softwa...
 
Estándar IEEE-12207
Estándar IEEE-12207Estándar IEEE-12207
Estándar IEEE-12207
 
PORTAL EDUCATIVO DE GESTION DEL PROCESO DE ENSEÑANZA-APRENDIZAJE BASADO EN EL...
PORTAL EDUCATIVO DE GESTION DEL PROCESO DE ENSEÑANZA-APRENDIZAJE BASADO EN EL...PORTAL EDUCATIVO DE GESTION DEL PROCESO DE ENSEÑANZA-APRENDIZAJE BASADO EN EL...
PORTAL EDUCATIVO DE GESTION DEL PROCESO DE ENSEÑANZA-APRENDIZAJE BASADO EN EL...
 
MODELO DE GESTION DE OPERACIONES DE TI COMBINANDO BALANCED SCORECARD E ITIL
MODELO DE GESTION DE OPERACIONES DE TI COMBINANDO BALANCED SCORECARD E ITILMODELO DE GESTION DE OPERACIONES DE TI COMBINANDO BALANCED SCORECARD E ITIL
MODELO DE GESTION DE OPERACIONES DE TI COMBINANDO BALANCED SCORECARD E ITIL
 
Programación por pares mediante el entorno Eclipse, una visión educativa
Programación por pares mediante el entorno Eclipse, una visión educativaProgramación por pares mediante el entorno Eclipse, una visión educativa
Programación por pares mediante el entorno Eclipse, una visión educativa
 
MBUID para la generación de interfaces de usuario para aplicaciones Groupware
MBUID para la generación de interfaces de usuario para aplicaciones GroupwareMBUID para la generación de interfaces de usuario para aplicaciones Groupware
MBUID para la generación de interfaces de usuario para aplicaciones Groupware
 
NUEVA HERRAMIENTA PEDAGÓGICA PARA LA ENSEÑANZA DE LA DESTILACIÓN
NUEVA HERRAMIENTA PEDAGÓGICA PARA LA ENSEÑANZA DE LA DESTILACIÓNNUEVA HERRAMIENTA PEDAGÓGICA PARA LA ENSEÑANZA DE LA DESTILACIÓN
NUEVA HERRAMIENTA PEDAGÓGICA PARA LA ENSEÑANZA DE LA DESTILACIÓN
 
DISEÑO DE HERRAMIENTAS VIRTUALES HACIENDO USO DE LA REALIDAD VIRTUAL
DISEÑO DE HERRAMIENTAS VIRTUALES HACIENDO USO DE LA REALIDAD VIRTUALDISEÑO DE HERRAMIENTAS VIRTUALES HACIENDO USO DE LA REALIDAD VIRTUAL
DISEÑO DE HERRAMIENTAS VIRTUALES HACIENDO USO DE LA REALIDAD VIRTUAL
 
Calidad de Software como un gobierno para ALM
Calidad de Software como un gobierno para ALMCalidad de Software como un gobierno para ALM
Calidad de Software como un gobierno para ALM
 
Distribución Escalable de Contenidos: Content Delivery Networks CDN
Distribución Escalable de Contenidos: Content Delivery Networks CDNDistribución Escalable de Contenidos: Content Delivery Networks CDN
Distribución Escalable de Contenidos: Content Delivery Networks CDN
 
Comparativa de los protocolos AODV y OLSR en redes Moviles Ad hoc (MANET)
Comparativa de los protocolos AODV y OLSR en redes Moviles Ad hoc (MANET)Comparativa de los protocolos AODV y OLSR en redes Moviles Ad hoc (MANET)
Comparativa de los protocolos AODV y OLSR en redes Moviles Ad hoc (MANET)
 
Agenda del Congreso
Agenda del CongresoAgenda del Congreso
Agenda del Congreso
 

Último

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 

Último (10)

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 

LÍNEAS DE PRODUCTOS DE SOFTWARE

  • 1. LÍNEAS DE PRODUCTOS DE SOFTWARE Marcos Raúl Córdova Bayas Facultad de Ingeniería de Sistemas, Escuela Politécnica Nacional Campus “José Rubén Orellana”, Ladrón de Guevara E11-253, Quito, Ecuador raul.cordova@epn.edu.ec Resumen El presente trabajo recopila el estado del arte de las Líneas de Productos de Software. Por mucho tiempo ha existido la inquietud por reutilizar software, pero en la mayor parte de los casos, la reutilización ha sido oportunista, es decir, ha surgido de la posibilidad de reutilizar componentes de software a posteriori, puesto que no era algo que se supiera que se iba a poder reutilizar. Por ello, muchos esfuerzos de re-utilización no tenían el éxito esperado, ya que no se conseguía reutilizar adecuadamente los productos previamente elaborados. Esta situación cambia con las Líneas de Productos de Software. Ahora ya no se quiere producir un único producto, sino una cadena de montaje que gestione eficiente y eficazmente las diferentes variaciones que pueden existir entre los productos. Aparecen los conceptos de dominios y familias de productos, orientados a facilitar la reutilización de productos de software de manera masiva, similar a la manera de fabricar productos en otras áreas, como en el área automovilística o en la de construcción de todo tipo productos industriales. Para describir esta nueva manera de desarrollar software, este trabajo contiene primero una Introducción a las Líneas de Productos de Software, para luego definir los aspectos fundamentales que se deben seguir para insertar y adoptar esta práctica en las empresas de desarrollo de software, como son los aspectos Conceptuales, Tecnológicos, Metodológicos, Organizacionales y Gerenciales. Al final se listan las conclusiones obtenidas y la bibliografía consultada. Palabras Claves: Reutilización de Software, Componentes de Software Reutilizable, Dominios de Software, Familias de Software, Activos de Software, Líneas de Productos de Software, Fábricas de Software Abstract The present work compiles the state of the art of Software Products Lines. By long time there has been an interest for reuse software, but in the majority of the cases, the reuse has been opportunist, in other words, it has emerged from the possibility of a post reuse of software components, since it didn´t know that it could be reused. By this reason, a lot of efforts to reuse didn´t have the expected success, since it didn´t properly achieve the reuse of previously products produced. This condition changes with de Software Products Lines. Now we don´t want to produce an only product, but an assembly line that manages in an efficient and effective way the different variations between software products. So, now appears the concepts of product families and product scopes, tended to facilitate the reuse of software products in a large-scale, as an assembly products in other areas, as in the automotive area or as in a construction of different industrial products. To describe this new form to develop software, this work first contains an Introduction to Software Products Lines, then define the basic aspects to follow to insert and adopt this practice in software companies, like the Conceptual, Technological, Methodological, Organizational and Managerial aspects. At the end, it lists the conclusions obtained and the bibliography consulted. Key words: Software Reuse, Reusable Software Components, Software Domains, Software Families, Software Assets, Software Products Lines, Software Factories.
  • 2. 1. Introducción las metodologías ayudaban a agilizar y sistematizar la creación de un único producto. Existe una inquietud Cuando una empresa ofrece un producto software a por reutilizar, pero en la mayor parte de los casos, la distintos clientes, surge toda la problemática reutilización es oportunista, es decir, surgía la relacionada al manejo de las versiones y a la posibilidad de reutilizar a posteriori, no era algo que evolución del producto. En este escenario, no es raro se supiera positivamente que se iba a poder reutilizar. encontrarse con alguna de las siguientes situaciones: Por ello, muchos esfuerzos de re-utilización no se amortizaban ya que no terminaba de surgir la • Relaciones conflictivas entre los equipos de oportunidad para poder reutilizarlo. marketing y de ingeniería a causa de la incapacidad de los segundos para adecuarse a las Esta situación cambia con las líneas de producto. solicitudes de nuevas variaciones de producto Ahora ya no se quiere producir un único producto, provenientes del negocio. sino una cadena de montaje que gestione eficiente y eficazmente las diferentes variaciones que pueden • Coordinación compleja y costosa de múltiples existir entre los productos. La empresa ya no se centra tareas de desarrollo en paralelo que comparten en un producto para un cliente (por ejemplo, construir software común. un portal para TAME), sino en un dominio (por ejemplo, construir portales para líneas aéreas). El reto • Código fuente poco robusto, que resulta difícil de está en delimitar el ámbito de este dominio, identificar extender con variaciones del nuevo producto y las variaciones que se van a soportar, y dotarse de la propenso al error. infraestructura que permita producir el producto a bajo costo pero manteniendo alto nivel de calidad. Es Esta problemática no es exclusiva del software. Se decir, aplicar los principios de la producción en serie da también en la fabricación de otros productos como también al software. Este enfoque resulta en mejoras automóviles, aparatos de telefonía, electrodomésticos, tanto en la eficiencia (reducción del time-to-market) y en general, cuando un mismo producto admite como en la eficacia (mejora de la calidad del distintas variaciones. La producción en serie (mass software). Entre los precursores de este enfoque en el production) ––la capacidad para crear eficientemente mundo del software se encuentran McIllory (1968), múltiples copias del mismo producto–– constituyó un Parnas (1976) y Neighbors (1989) que en sus trabajos gran avance en el mundo de la fabricación. Pero crear ya intuían el potencial de estas ideas. múltiples copias de un producto software es trivial. Sin embargo, la personalización en serie (mass Las Líneas de Productos de Software (LPS) se customization) ––la capacidad para crear engloban dentro del anhelo permanente dentro de la eficientemente múltiples variaciones de un producto– Ingeniería del Software que es la reutilización. Pero – es un importante reto tanto en la fabricación de mejorar la reutilización no lleva necesariamente a lavadoras como en la venta de un ERP o cualquier reducir los costos globales de desarrollo debido a los otro producto software. La pregunta es cómo se costos adicionales de desarrollar (y gestionar) estos plasma el enfoque de “personalización en serie” en el artefactos re-usables. Las LPS han confirmado que la desarrollo de productos software. reutilización eficaz no es sólo un problema técnico, sino también de procesos y organización. El proceso Si se mira al sistema de producción de las lavadoras, determina cuándo y dónde se debe realizar el esfuerzo por ejemplo, la personalización en serie se consigue de reutilización. La decisión no es simple. De hecho, mediante la introducción de la cadena de montaje o muchos de los fracasos en el desarrollo basado en línea de producto. El objetivo: sacar partido de los componentes (también orientado a la reutilización), se elementos comunes y gestionar de una manera eficaz deben a fallas en el proceso, más que en las técnicas las variaciones. En lugar de permitir la máxima que se utilizaban: se invertían esfuerzos en hacer el flexibilidad que permite el proceso artesanal pero con componente reutilizable para determinadas situaciones grandes costes, las líneas de producto delimitan las que finalmente no se presentaban. variantes de sus productos a un conjunto prestablecido, y optimizan los procesos para estas Así mismo, las LPS suponen una importante variantes. reorganización de los equipos humanos. De estar orientados al producto pasan a orientarse a las Líneas En la producción de software, el proceso ha venido de Productos de Software. Aquí pueden surgir estando centrado en el producto antes que en la línea tensiones entre los desarrolladores de los artefactos de montaje. Las herramientas de desarrollo (IDE) y comunes (o reutilizables) frente a aquellos encargados
  • 3. de desarrollar el producto con estos artefactos. ¿Qué • Gestionada ocurre ante nuevas peticiones del cliente no o Institucionalizada, sistemática, contempladas hasta entonces? Si la planificación no se planificada, mejorada. cumple o se detecta algún error, ¿a qué equipo se le carga el costo? ¿Cómo se reparten las De las anteriores, la más utilizada ha sido la responsabilidades/presupuestos entre los dos tipos de reutilización basada en oportunidad, donde los equipos? componentes se almacenan en un repositorio a la espera de una oportunidad de reutilización. Este artículo comienza con una introducción a LPS, luego se centra en sus aspectos conceptuales y Una de las técnicas más conocidas para el uso de la tecnológicos, para luego tratar sus aspectos reutilización en software ha sido aquella basada en metodológicos, organizacionales y gerenciales que componentes reutilizables, donde las aplicaciones se permiten alcanzar los beneficios que esta nueva crean mediante la integración de componentes nuevos, tecnología impulsa. Para terminar, se establecen las legados o de terceros conocidos como componentes conclusiones del trabajo y se lista la bibliografía COTS (Commercial Off-The-Shelf). consultada. 2.2 Definiciones de Línea de Productos de 2. Introducción a las LPS Software En este punto se trata sobre lo que es una Línea de Las definiciones que se escriben a continuación son Productos de Software, definiciones sobre LPS, el de los más autores más reconocidos en el ámbito de modelo básico de la LPS, sus beneficios y sus las LPS: aspectos fundamentales. “Las Líneas de Productos de Software se 2.1 Línea de Productos de Software refieren a técnicas de ingeniería para crear un portafolio de sistemas de software La idea básica de las LPS es que se basan en el similares, a partir de un conjunto compartido ensamblaje de partes de software previamente de activos de software, usando un medio elaboradas, y está inspirada en la manera de realizar común de producción" (Krueger, 2006). los procesos de producción de sistemas físicos, como la producción de aviones, vehículos, computadores, ". Líneas de Productos de Software es un aparatos electrónicos en general, etc. Está conjunto de sistemas de software que fundamentada pues, en la Reutilización de Software y comparten un conjunto común y gestionado asume la existencia de una industria de partes de de aspectos que satisfacen las necesidades software. específicas de un segmento de mercado o misión y que son desarrollados a partir de un Los antecedentes de las LPS están en la reutilización conjunto común de activos fundamentales [de de software; entre las definiciones más conocidas software] de una manera preescrita" están de reutilización de software están: (Clements and Northrop, 2002). “La reutilización de software es el proceso "Línea de Productos de Software consiste de de implementar o actualizar sistemas de una familia de sistemas de software que software usando activos de software tienen una funcionalidad común y alguna existentes” (Sodhi & Sodhi, 1999). funcionalidad variable" (Gomma, 2004). • La funcionalidad común descansa en el "Reutilización de software es el proceso de uso recurrente de un conjunto común de crear sistemas de software a partir de activos reutilizables (requisitos, diseños, software existente, en lugar de desarrollarlo componentes, servicios web, etc.). desde el comienzo" (Sametinger, 1997). • Los activos son reutilizados por todos los miembros de la familia. Existen varias modalidades de reutilización utilizadas por las empresas de software: 2.3 El Modelo Básico de LPS • Individual En la Figura 1 se muestra el Modelo Básico de una • Oportunista Línea de Productos de Software (LPS).
  • 4. La entrega de productos de software de una manera:  más rápida,  económica y  con una mejor calidad  Las LPS producen mejoras en:  Tiempo de entrega del producto (time to market)  Costos de ingeniería  Tamaño del portafolio de productos  Reducción de las tasas de defectos  Calidad de los productos Figura 1. Modelo Básico de una Línea de Productos de Software (LPS)  Beneficios tácticos y estratégicos (Krueger, 2006): El modelo está constituido por:  Beneficios tácticos de ingeniería:  Reducción en el tiempo promedio de La entrada: Activos de Software (Software Assets creación y entrega de nuevos Inputs): productos  Reducción en el número promedio • Una colección de partes de software de defectos por producto (requisitos, diseños, componentes, casos de  Reducción en el esfuerzo promedio prueba, etc.) que se configuran y componen requerido para desarrollar y de una manera prescrita para producir los mantener los productos productos de la línea.  Reducción en el costo promedio de producción de los productos El control: Modelos de Decisión y Decisiones de  Incremento en el número total de Productos (Product Decisions: Decision Models productos que pueden ser and Products Decisions) efectivamente desplegados y • Los Modelos de Decisiones describen los mantenidos aspectos variables y opcionales de los  Beneficios estratégicos de negocios productos de la línea.  Reducción en el tiempo de entrega (time- • Cada producto de la línea es definido por un to-market) y el tiempo de retorno (time- conjunto de decisiones (decisiones de to-revenue) de nuevos productos producto).  Mejoras en el valor competitivo del producto El proceso de producción (Production)  Márgenes mayores de ganancias • Establece los mecanismos o pasos para  Mejor calidad de los productos componer y configurar productos a partir de  Mejoras en la reputación de la empresa los activos de entrada.  Mayor escalabilidad del modelo de • Las decisiones del producto se usan para negocios en términos de productos y determinar que activos de entrada utilizar y mercados como configurar los puntos de variación de  Mayor agilidad para expandir el negocio esos activos a nuevos mercados La salida: Productos de software (Software  Reducción de riesgos en la entrega de Product Outputs) productos • Conjunto de todos los productos que pueden o son producidos por la línea de productos.  Algunas empresas han reportado mejoras que van en el rango de factores de 3 a 50 en los 2.4 Beneficios de las LPS beneficios discutidos anteriormente. Entre los mayores beneficios de las LPS se pueden anotar los siguientes:
  • 5. 2.5 Aspectos fundamentales En la Figura 2, se muestra el proceso de evolución El paradigma de desarrollo de software LPS de la reutilización de software requiere que las empresas que lo adopten consideren los siguientes aspectos fundamentales: 3.1 Reutilización de software La reutilización de activos de software en LPS tiene a) Aspectos conceptuales varias características: Conceptos en los que las LPS se fundamentan. a) Es estratégica, porque consolida lo común b) Aspectos tecnológicos entre la línea de productos, maneja Qué tecnologías son fundamentales para estratégicamente la variación entre los desarrollar y mantener activos y productos de productos de la línea y elimina la duplicación software de esfuerzos de ingeniería. c) Aspectos metodológicos b) Es predictiva, porque la reutilización de Cómo desarrollar y mantener los activos y activos se da en uno o más productos sobre productos de software una línea bien definida y porque se reutilizan d) Aspectos organizativos arquitecturas de software, en lugar de Cómo debe la empresa organizarse internamente reutilizar componentes de manera e) Aspectos gerenciales oportunista. Cómo gestionar los proyectos de desarrollo de c) Es gestionada, ya que es sistemática, activos y productos. planificada, institucionalizada y mejorada. 3. Aspectos conceptuales 3.2 Activos de software reutilizable Un activo de software reutilizable es un producto En este punto se tratarán los Aspectos Conceptuales de software diseñado expresamente para ser utilizado que sirven de fundamento a las LPS y que tienen que múltiples veces en el desarrollo de diferentes sistemas ver con la Reutilización de software, los Activos de o aplicaciones. software, los Componentes de software reutilizable, los Dominios y familias y las Líneas de productos de Un activo de software puede ser: software. Su conocimiento permite a las  Un componente de software organizaciones y profesionales involucrados en el área  Una especificación de requisitos de Desarrollo de Software, entender las bases de las  Un modelo de negocios LPS para poderlas aplicar en sus procesos de  Una especificación de diseño producción de software.  Un algoritmo  Un patrón de diseño (design pattern) Reutilización de Software  Una arquitectura de dominio  Un esquema de base de datos  Una especificación de prueba Desarrollo de Software Basado en Líneas de  La documentación de un sistema Productos  Un plan 3.3 Componentes de software reutilizable (CSR) Desarrollo de Software Basado en Componentes Un componente de software reutilizable es “Una pieza [de software] funcional que es liberada independientemente [de otras] y que proporciona Ingeniería de Ingeniería de acceso a sus servicios a través de sus interfaces” Dominio Aplicaciones (Brown, 2000). Un componente de software puede ser liberado Desarrollo de Desarrollo de (desplegado o instanciado) independientemente de Software para Software con otros y ofrece servicios a través de sus interfaces, es Reutilización reutilización decir, que para utilizar su funcionalidad se emplean sus interfaces. Figura 2. Evolución de la reutilización de software
  • 6. Según el CBDi Forum, “Un componente es una pieza de software que describe y/o libera un conjunto Redes de Servicios de servicios que son usados sólo a través de interfaces bien definidas” (CBDi Forum, 1999). Redes Otras eléctricas redes Así, un componente de software reutilizable (CSR) debe ser: Acueductos Oleoductos  Identificable  Autocontenido  Rastreable a través de su ciclo de desarrollo  Reemplazable por otro componente  Accesible solamente a través de su interfaz  Inmutabilidad de sus servicios Figura 3. Ejemplo de dominio  Documentación de sus servicios  Mantenido sistemáticamente Una familia de productos de software es un conjunto de productos de software asociados a un dominio determinado.  Clasificación de los Componentes de software reutilizable (CSR) Los miembros de la familia comparten aspectos  Según su modificabilidad comunes tales como un diseño arquitectónico común, • Caja negra un conjunto de componentes reutilizables, • Caja blanca capacidades y servicios comunes, y tecnologías  Según su granularidad comunes. • Componentes de uso específico • Componentes de negocio • Marcos (frameworks) 3.5 Líneas de productos de software (LPS) • Componentes de aplicación  Según su fabricante Una LPS es una familia de productos de software • Componentes hechos en casa que tiene un conjunto de aspectos gestionados que son • COTS – Commercial Off-The-Shelf comunes a todos los miembros de la familia, además  Según la tecnología usada de que los productos de la línea son desarrollados a • Componentes imperativos partir de un conjunto de activos de software o Módulos, funciones reutilizables. • Componentes OO o Clases Una familia de productos de software tiene: • Componentes distribuidos • Aspectos comunes que son compartidos por o Componentes CORBA todos sus productos o Componentes .NET • Aspectos variables que establecen o Componentes J2EE diferencias entre los productos o Servicios web El objetivo principal de una LPS es reducir el 3.4 Dominios y familias tiempo, esfuerzo, costo y complejidad de crear y mantener los productos de la línea mediante la Un dominio es un área de aplicación de productos capitalización de los aspectos comunes de la línea de de software que están centrados en torno a un cuerpo productos, a través de la consolidación y reutilización de conocimientos, tienen una economía de alcance de los activos de entrada a la línea, y del manejo de asociada que ocurre cuando al construirse un activo y los aspectos variables de los productos de la línea, a usarlo en múltiples productos ocasiona más beneficios través de los puntos de variación de los activos y los que crear el activo para cada producto y, que pueden modelos de decisión (Krueger, 2006). dividirse en subdominios. La Figura 3 muestra un dominio sobre Redes de Servicios.
  • 7. 4. Aspectos tecnológicos. 4.2 Repositorios LPS En esta parte del documento se hablará sobre las Las líneas de productos de software requieren Arquitecturas de LPS, los Repositorios de LPS y las almacenar sus activos de software en repositorios. Un Áreas de prácticas y patrones para LPS. repositorio LPS es conocido como una base de datos especializada, que almacena los activos de software y 4.1 Arquitecturas de LPS facilita la recuperación y el mantenimiento de los activos de software. Su objetivo es asegurar la Una arquitectura de software es la estructura o disponibilidad de activos para apoyar el desarrollo de estructuras de un sistema que comprende los productos de la LPS. Su representación se la muestra componentes del software, las propiedades visibles en la Figura 4. externamente de estos componentes, y las relaciones entre ellos (Bass, 1998). Activos de Las propiedades externas de los componentes son Software sus interfaces (APIs) y sus características, como rendimiento, manejo de errores, uso compartido de recursos, etc. Figura 4. Representación de los Activos de Software La arquitectura de una LPS es una arquitectura de software genérica que describe la estructura de toda la El repositorio mantiene información relevante de familia de productos y no solamente la de un producto cada activo usado en la LPS, como la especificación particular. Además, captura los aspectos comunes y técnica del activo, la historia o registro de uso, la variables de una familia de productos de software. Los clasificación del activo y la documentación del activo. aspectos comunes de la arquitectura son capturados por los componentes de software que son comunes a Tipos de Repositorios LPS toda la familia. Los aspectos variables de la arquitectura son capturados por los componentes de Los Repositorios LPS se clasifican según su software que varían entre los miembros de la familia. alcance, aplicabilidad y propósito de la siguiente manera: La arquitectura de una LPS también se la conoce como arquitectura de dominio. Es importante acotar  Según su alcance que la arquitectura LPS debe ser instanciada cada vez  Locales: son desarrollados y reusados que se desarrolla un producto de la línea. Esta internamente por una organización o instanciación se la hace a través de mecanismos de empresa. variabilidad, que pueden ser:  Globales o de uso comercial: disponibles a terceros bajo adquisición o subscripción.  Herencia. Ej. Suplantación de un método  Ejemplos: COTS, Servicios Web. heredado de una clase en un componente  Puntos de extensión. Ej. Se agrega nueva  Según su aplicabilidad funcionalidad o comportamiento a un  De dominio específico componente.  De dominio general  Parametrización. El comportamiento de un componente puede ser parametrizado a tiempo de  Según su propósito diseño y definido a tiempo de implementación.  De reuso: permiten el almacenamiento y Ej. macros o templates. recuperación de activos de software  Configuración. Selección y "deselección" de los  De referencia: facilitan la localización de componentes de la arquitectura. activos en otros repositorios.  Selección a tiempo de compilación. La  Ejemplo: UDDIs (siglas del catálogo de implementación de una funcionalidad es negocios de Internet denominado Universal seleccionada, entre varias posibles, al momento Description, Discovery and Integration). de la compilación del componente o de la aplicación. 4.3 Áreas de prácticas y patrones para LPS
  • 8. La introducción del paradigma LPS en una empresa o La justificación del negocio. de software es un proceso complejo, gradual y lleno o El proceso para describir el conjunto de de dificultades. Para obtener los beneficios que este productos que serán incluidos en la línea paradigma ofrece, una empresa debe tomar en de productos. consideración los factores tecnológicos, A su vez, las áreas de práctica requeridas por la metodológicos, organizacionales y gerenciales. solución son: Así, Clements y Northrop (2002) definen un  Análisis del Mercado: ayuda a entender el conjunto de áreas de prácticas y patrones que son mercado que tendrán los productos de la línea: necesarios considerar para asegurar el éxito de la qué productos tienen mayor demanda, cuál es la implantación del paradigma LPS en una empresa. competencia, cuál es el tamaño del mercado y cuáles las oportunidades. Un área de práctica es una colección de  Entendimiento de dominios relevantes: actividades que una empresa debe ejecutar y dominar proporciona un modelo del dominio, los para implantar exitosamente una LPS. Estas áreas de requisitos del dominio y los aspectos comunes y práctica describen actividades que son normalmente variables a todos los sistemas (aplicaciones) que recomendadas por el SEI (Software Engineering forman el dominio. Institute), para el desarrollo exitoso de software y que  Proyección tecnológica: permite predecir qué guardan una correspondencia estrecha con las áreas de productos pueden llegar a ser factibles en el procesos definidas por el CMMI-SW (Capability futuro cercano. Maturity Model Integration – Software).  Construcción de un caso de negocios: proporciona una justificación de la selección de Tres tipos de áreas de prácticas LPS son productos y del enfoque que se usará para recomendadas por Clements y Northrop (2002): construirlos.  Definición del alcance (scoping): describe  Área de práctica de Ingeniería de Software. cuáles productos serán incluidos en la línea de Ejemplos: Definición y evaluación de una productos y cuáles no. arquitectura LPS.  Áreas de práctica de Gestión Técnica. Ejemplo: 5. Aspectos Metodológicos. Planificación de los proyectos de desarrollo de componentes o de productos (aplicaciones). Los aspectos metodológicos de las LPS involucran  Áreas de práctica de Gestión Organizacional. la aplicación de un conjunto de prácticas de Ejemplo: Estructuración de la empresa ingeniería, como las siguientes: Un patrón es una regla de tres partes que expresan  Definición de la arquitectura LPS una relación entre un contexto, un problema y una  Evaluación de la arquitectura LPS solución (Alexander, 1979).  Desarrollo de componentes Los patrones LPS plantean soluciones a problemas  Utilización de COTS recurrentes relacionados con las situaciones  Minería de activos existentes organizacionales de las LPS. Estas soluciones son  Ingeniería de Requisitos planteadas en términos de las áreas de prácticas y sus  Integración de sistemas software relaciones. El siguiente ejemplo muestra las tres partes  Pruebas del patrón “Qué construir”:  Entendimiento de dominios relevantes  El Contexto: una empresa ha decidido crear una La Figura 5 muestra los procesos de negocio de una línea de productos de software y conoce bien el LPS. dominio de aplicación de los productos.  El Problema: determinar qué productos deberán La Ingeniería de Dominio (ID) captura ser incluidos en la línea de productos. información y representa el conocimiento sobre un  La Solución: para determinar qué productos dominio determinado, con el fin de crear activos de producir, se requiere información relacionada software reutilizables en el desarrollo de cualquier con: nuevo producto de una LPS. Los productos de la ID o El dominio de aplicación, la tecnología y son: el mercado.
  • 9. que se emplearán para producir los productos de Activos de Productos de software. Software Software La Ingeniería de Aplicaciones (IA) se encarga del Procesos LPS desarrollo de los productos de la LPS a través de la reutilización de activos de software y de los planes de producción. Ingeniería de Ingeniería de Dominio Aplicaciones La arquitectura de dominio es empleada en la IA como un modelo de referencia para diseñar los productos de la LPS. A su vez, el repositorio LPS Gestión Tecnológica provee los activos requeridos durante el desarrollo de cada nuevo producto de la LPS. Algunos de los más conocidos Modelos de Gestión Organizacional Procesos para LPS son el Modelo TWIN, el Modelo del SEI y el modelo ESPLEP (Evolutionary Software Product Lines Engineering Process) propuesto por Proceso de Organización de Gomma (2004). desarrollo la empresa 6. Aspectos Organizacionales Figura 5. Procesos de negocio de una LPS Los aspectos organizacionales están relacionados con la organización misma de la empresa y con las  Definiciones de dominios (descripciones del actividades que ella debe implantar para asegurar el contexto) aprovechamiento eficaz y eficiente del paradigma  Modelos del dominio LPS.  Modelos de requisitos del dominio  Modelos arquitectónicos (arquitecturas del Los aspectos organizacionales de las LPS dominio) involucran la aplicación de un conjunto de prácticas  Ontologías del dominio de gestión:  Lenguajes del dominio  Estándares del dominio  Construcción de casos de negocio  Gestión de relaciones con los clientes Las actividades principales de la Ingeniería de  Desarrollo de una estrategia de adquisición Dominio son el Análisis de Aspectos, el Diseño de la  Análisis de mercados Arquitectura LPS y la Implementación del Dominio.  Operaciones  Planificación organizacional El Análisis de Aspectos analiza la familia para  Gestión de riesgos organizacionales determinar los requisitos que son comunes, opcionales  Estructuración de la empresa y diferentes a todos sus miembros.  Proyección de tecnologías  Capacitación de personal El diseño de la Arquitectura LPS produce una arquitectura de dominio que tiene componentes comunes a todos los miembros de la familia, 7. Aspectos Gerenciales componentes opcionales que son requeridos por algunos miembros y componentes variantes, de los Están relacionados con la aplicación de los cuales algunos miembros de la familia emplean procesos gerenciales en las actividades de Ingeniería distintas versiones y tienen puntos de variación que de Dominio e Ingeniería de Aplicación de una LPS. permiten configurarlos. Esto incluye: La Implementación del Dominio consiste en la  Planificación de Proyectos creación y almacenamiento de los activos de software  Organización de Grupos de Trabajo, que pueden dividirse en Grupos de Soporte,
  • 10. como el de la Administración de producto, además de la construcción de Repositorios de Activos de Software y los herramientas de especialización o adaptación. Grupos de Mantenimiento de Aplicaciones y Grupos de Desarrollo, como los Grupos de  Si bien las ideas aquí expuestas fueron desarrollo de componentes y los de desarrollo de aplicaciones. aparecieron hace ya más de 30 años, no es hasta  Dirección hace poco más de diez años que estas ideas se han  Administración de recursos evaluado en casos reales de cierta envergadura.  Control Los resultados han sido muy esperanzadores y los trabajos para profundizar en modelos de Los aspectos gerenciales de las LPS involucran la organización, metodologías y técnicas adaptadas aplicación de un conjunto de prácticas de gestión a las LPS son temas de interés creciente. técnica:  Gestión de la Configuración  Recolección de datos, métricas y seguimiento 9. Referencias  Análisis de hacer/comprar/descubrir/encomendar [1] Krueger, Ch. Introduction to Software (aprovisionamiento de activos)  Definición de procesos Product Lines. [On-line].  Alcance www.softwareproductlines.com. 2006  Planificación técnica  Gestión de riesgos técnicos [2] Greenfield, J. et al. Software factories:  Soporte de herramientas Assembling Applications with Patterns, Models, Frameworks, and Tools. John 8. Conclusiones Wiley & Sons. 2004  Las Líneas de Productos de Software representan [3] Gomma, H. Designing Software Product el estado del arte en Reutilización de Software. Lines with UML: From Use cases to pattern-based Software Architectures.  La implantación del paradigma LPS en una Addison Wesley. 2004 empresa es un proceso complejo. [4] Clements, P. and Northrop, L. Software Product Lines: Practices and Patterns.  Para manejar esta complejidad se requiere Addison Wesley. 2002. considerar diferentes aspectos: Conceptuales, Tecnológicos, Metodológicos, Organizacionales y [5] Montilva, J. Desarrollo de Software Basado Gerenciales. en Líneas de Productos de Software. [On- line].  Las LPS se pueden considerar como fábricas de http://www.ieee.org.ar/downloads/2006- software, ya que poseen las mismas montilva-productos.pdf. 2012 características que las fábricas de productos físicos, en donde los productos se elaboran [6] CBDi Forum. [On-line]. http://everware- mediante las denominadas líneas de producción. cbdi.com/cbdi-forum. 1999.  Las LPS tienen el potencial de disminuir costos y [7] Bass, Len et al. Software architecture in practice. Addison-Wesley. 1998 tiempos de desarrollo de software, sin disminuir su calidad. [8] Brown A.W., Large-scale Component-Based Development, Prentice-Hall. 2000.  Las LPS implican la especialización en un dominio y la construcción de un patrón de [9] Sodhi, Jag; Sodhi, Prince. Computer software; Reusability. McGraw-Hill, New
  • 11. York. 1999. [10] Sametinger, J. Software Engineering with Reusable Components. Springer-Verlag. 1997. [11] Alexander, Christopher. A Pattern Language: Towns, Buildings, Construction. Oxford University Press, USA. 1979. [12] McIlroy, Malcolm Douglas. Mass produced software components. Software Engineering: Report of a conference sponsored by the NATO Science Committee, Garmisch, Germany. 1968. [13] Parnas David Lorge. On the Design and Development of Program Families. IEEE Transaction on Software Engineering. Vol. 2, n. 1, 1976. [14] Neighbors, James. Draco: A Method for Engineering Reusable Software Systems. Software Reusability, Volume I: Concepts and Models, Ted Biggerstaff and Alan Perlis, Editors, ACM Frontier Series, Addison- Wesley. 1989. [15] Díaz, O. Líneas de Producto de Software. [On-line]. http://alarcos.inf- cr.uclm.es/per/fruiz/cur/santander/odiaz- lineasproducto.pdf. 2012