La ingeniería
De software basada en la reutilización es una estrategia en la que se engrana//el
Proceso de desarrollo para reutilizar el software existente. Aunque la
Reutilización se//propuso como una estrategia de desarrollo hace más de 40 años
(McIlroy, 1968), es sólo a//partir de 2000 cuando el “desarrollo con
Reutilización” se convirtió en la norma de los nuevos//sistemas empresariales.
El movimiento hacia el desarrollo basado en la reutilización//fue en respuesta
A las demandas para reducir los costos de producción y mantenimiento//del
Software, entregar los sistemas con mayor rapidez y aumentar la calidad del
Software.//Cada vez más compañías consideran su software como un activo
Valioso. Así, promueven//su reutilización para incrementar el rendimiento en
Las inversiones de software.//La disponibilidad de software reutilizable
Aumentó drásticamente. El movimiento de//fuente abierta significó que se
Dispone de una enorme base de código de reutilización a//bajo costo. Esto puede
Ser en la forma de librerías de programa o aplicaciones completas.//Existen
Muchos sistemas de aplicación de dominio específico disponibles que pueden//ajustarse
Y adaptarse a las necesidades de una compañía específica. Algunas grandes
Compañías//ofrecen varios componentes de reutilización para sus clientes. Los
Estándares, como//los estándares de servicios Web, han facilitado el desarrollo
De servicios generales y su//reutilización a través de varias aplicaciones.//La
Ingeniería de software basada en la reutilización es un enfoque al desarrollo
Que//trata de maximizar la reutilización del software existente. Las unidades
De software que se//reutilizan pueden ser de tamaños sustancialmente
Diferentes. Por ejemplo://
1.
Reutilización del sistema de
Aplicación Todo un
Sistema de aplicación puede reutilizarse//al incorporarlo sin cambios en otros
Sistemas o al configurar la aplicación para//diferentes clientes. De manera
Alternativa, pueden desarrollarse familias de aplicación//que, aunque tengan
Una arquitectura común, se ajustan a clientes específicos.//Más adelante, en
Este capítulo, se hablará de la reutilización de componentes.//
2. Reutilización de componentes Los componentes de una
Aplicación, que varían en//tamaño desde subsistemas hasta objetos individuales,
Pueden reutilizarse. Por ejemplo,//un sistema de identificación de patrones
Desarrollado como parte de un sistema//de procesamiento de texto puede
Reutilizarse en un sistema de administración de//base de datos. La
Reutilización de componentes se desarrolla en los capítulos 17 y 19.//
3. Reutilización de objetos y
Funciones Pueden
Reutilizarse los componentes de software//que implementan una sola función, tal
Como una función matemática, o una//clase de objeto. Esta forma de
Reutilización en torno a librerías estándar ha sido//común durante los últimos
40 años. Muchas librerías de funciones y clases están disponibles//de manera
Gratuita. Las clases y funciones en dichas librerías se reutilizan//al
Vincularlas con un código de aplicación de desarrollo reciente. Este enfoque es//particularmente
Efectivo en áreas como algoritmos matemáticos y gráficas, donde se//necesita
Experiencia especializada para desarrollar objetos y funciones eficientes.//Los
Sistemas y componentes de software son entidades potencialmente reutilizables,//pero
Su naturaleza específica significa que en ocasiones es costoso modificarlos
Para una//nueva situación. Una forma complementaria de reutilización es la “reutilización
De concepto”//en la que, en vez de reutilizar un componente de software, se
Reutiliza una idea,//una vía, un funcionamiento o un algoritmo. El concepto que
Se reutiliza se representa//en una notación abstracta (por ejemplo, un modelo
De sistema), que no incluye detalles//de implementación. Por lo tanto, puede
Configurarse y adaptarse para varias situaciones.//El concepto de reutilización
Puede incorporarse como en el diseño de patrones de diseño//(que se estudiaron
En el capítulo 7), productos de sistema configurables y generadores de//Capítulo 16 ■
Reutilización de
Software 427//programa.
Cuando se reutilizan conceptos, el proceso de reutilización incluye una
Actividad//donde los conceptos abstractos se ejemplifican para crear
Componentes ejecutables//de reutilización.//Una ventaja evidente de la
Reutilización de software es que deberían reducirse los//costos totales de
Desarrollo. Habrá que especificar, diseñar, implementar y validar menos//componentes
De software. Sin embargo, la reducción del costo es sólo una ventaja de//la
Reutilización. En la figura 16.1 se mencionan otras ventajas de la
Reutilización de los//activos de software.//No obstante, existen costos y
Problemas asociados con la reutilización (figura 16.2).//Hay un costo
Significativo asociado con entender si un componente es adecuado o no//para su
Reutilización en una situación particular, y probar dicho componente para
Garantizar//su confiabilidad. Tales costos adicionales significan que las
Reducciones en los costos//totales del desarrollo mediante la reutilización
Pueden ser menores que lo previsto.//Como se estudió en el capítulo 2, los
Procesos de desarrollo de software deben adaptarse//para tomar en cuenta la
Reutilización. En particular, debe haber una etapa de corrección//de
Requerimientos en la que se modifiquen los requerimientos del sistema para//reflejar
El software de reutilización disponible. Las etapas de diseño e implementación//del
Sistema pueden incluir también actividades explícitas para buscar y evaluar
Componentes//candidatos para su reutilización.//La reutilización de software es
Más efectiva cuando se planea como parte de un programa//de reutilización de
Toda la organización. Un programa de reutilización implica la//creación de
Activos reutilizables y la adaptación de procesos de desarrollo para incorporar//dichos
Activos en el software nuevo. La importancia de la planeación de reutilización
Se//reconoce desde hace varios años en Japón (Matsumoto, 1984), donde la
Reutilización era//parte integral del enfoque “fabril” Japónés al desarrollo de
Software (Cusamano, 1989).//Beneficio Explicación//
Confiabilidad creciente El software de
Reutilización, que se experimentó y ensayó en sistemas//operativos, debe ser
Más confiable que el software nuevo. Sus fallas de diseño//e implementación
Debieron descubrirse y corregirse.//Reducción de riesgo//de proceso//Se conoce
Ya el costo del software existente, mientras que el de desarrollo//siempre es
Una cuestión de juicio. Éste es un factor importante para la gestión//del
Proyecto, ya que reduce el margen de error en la estimación de costos del//proyecto.
Esto es particularmente cierto cuando se reutilizan componentes de//software
Relativamente grandes, como los subsistemas.//Uso efectivo de especialistas En
Lugar de hacer el mismo trabajo una y otra vez, los especialistas de aplicación//pueden
Desarrollar software de reutilización que encapsule su conocimiento.//Cumplimiento
De estándares Algunos estándares, como los de la interfaz de usuario, pueden
Implementarse//como un conjunto de componentes de reutilización. Por ejemplo,
Si los menús//en una interfaz de usuario se implementan con componentes
Reutilizables,//todas las aplicaciones presentan a los usuarios los mismos
Formatos de menú.//El uso de interfaces de usuario estándar mejora la
Confiabilidad, porque los//usuarios cometen menos errores cuando se les
Presenta una interfaz familiar.//Desarrollo acelerado Llevar un sistema al
Mercado tan rápido como sea posible con frecuencia es//más importante que los
Costos totales de desarrollo. La reutilización de software//puede acelerar la
Producción del sistema, ya que pueden reducirse los tiempos//de desarrollo y
Validación.//Figura 16.1//
Beneficios de la//reutilización//de software//428
Capítulo 16 ■
Reutilización de
Software//Compañías
Tales como Hewlett-Packard han tenido también mucho éxito en sus programas//de
Reutilización (Griss y Wosser, 1995), y su experiencia se documentó en un libro//de
Jacobson et al. (1997).//16.1 Panorama de la
Reutilización//
Durante
Los últimos 20 años, se han desarrollado muchas técnicas para apoyar la
Reutilización//de software. Dichas técnicas aprovechan el hecho de que los
Sistemas en el mismo//dominio de aplicación son similares y tienen potencial de
Reutilización (esa reutilización//es posible a diferentes niveles desde simples
Funciones hasta completas aplicaciones), y//el hecho de que estándares para
Componentes reutilizables facilitan la reutilización. La//figura 16.3 establece
Algunas formas posibles de implementar la reutilización de software,//y en la
Figura 16.4 se describe brevemente cada una de ellas.//Teniendo en cuenta este
Arreglo de técnicas para la reutilización, la pregunta clave//es: ¿Cuál es la
Técnica más adecuada para usar en una situación particular? Desde luego,//esto
Depende de los requerimientos del sistema a desarrollar, la tecnología y los
Activos//reutilizables disponibles, y la experiencia del equipo de desarrollo.
Los factores clave//que deben considerarse al planear la reutilización son://
1. El calendario de desarrollo para
El software Si
El software debe desarrollarse//rápidamente, usted debe tratar de reutilizar
Sistemas comerciales en vez de//Problema Explicación//
Costos crecientes//de
Mantenimiento//Si no está disponible el código fuente de un sistema o
Componente de software//de reutilización, entonces los costos de mantenimiento
Podrían ser superiores,//porque los elementos reutilizados del sistema pueden
Volverse cada vez más//incompatibles con los cambios del sistema.//Falta de
Apoyo//de herramientas//Algunas herramientas de software no apoyan el
Desarrollo con reutilización. Tal vez//sea difícil o imposible integrar dichas
Herramientas con un sistema de librería de//componentes. El proceso de software
Supuesto por dichas herramientas quizá no//tome en cuenta la reutilización.
Esto es particularmente cierto para herramientas//que dan apoyo a la ingeniería
De sistemas embebidos, aunque menos cierto para//herramientas de desarrollo
Orientadas a objetos.//Síndrome “no se inventó//aquí”//Algunos ingenieros de
Software prefieren rescribir los componentes, porque//consideran que pueden
Mejorarlos. Esto en parte tiene que ver con la confianza//y en parte con el
Hecho de que escribir software original se observa como más//desafiante que
Reutilizar el software de alguien más.//Creación, mantenimiento//y uso de una
Librería de//componentes//Suele ser costoso dotar a una librería de componentes
De reutilización y garantizar//que los desarrolladores de software puedan
Utilizar esta librería. Hay que adaptar//procesos de desarrollo para asegurar
Que se use la librería.//Descubrimiento,//comprensión y adaptación//de
Componentes de//reutilización//Deben descubrirse componentes de software en una
Librería, entenderse y, en//ocasiones, adaptarse para trabajar en un nuevo
Entorno. Los ingenieros deben estar//ampliamente seguros de encontrar un
Componente en la librería antes de incluir//una búsqueda de componentes como
Parte de su proceso de desarrollo normal.//Figura 16.2//
Problemas con//la reutilización//16.1 ■
Panorama de la
Reutilización 429//componentes
Individuales. Éstos son activos reutilizables de grano grueso. Aunque//el
Ajuste con los requerimientos tal vez sea imperfecto, este enfoque minimiza la//cantidad
De desarrollo requerido.//
2.
La vida esperada del software Si usted desarrolla un sistema de
Prolongada duración,//debe enfocarse en la capacidad de mantenimiento del
Sistema. No sólo debe//considerar los beneficios inmediatos de la
Reutilización, sino también las implicaciones//a largo plazo.//Durante su vida
útil, podrá adaptar el sistema a nuevos requerimientos, lo que significará//hacer
Cambios a partes del sistema. Si no tiene acceso al código fuente, es//preferible
Evitar los componentes COTS (véase la sección 16.4) y los sistemas de//proveedores
Externos, pues éstos tal vez no sean capaces de continuar con el servicio//de
Apoyo para el software de reutilización.//
3. Los antecedentes, las habilidades y la experiencia del equipo de
Desarrollo Todas//las
Tecnologías de reutilización son bastante complejas, y es necesario mucho//tiempo
Para entenderlas y usarlas de manera efectiva. Por consiguiente, si el equipo//de
Desarrollo tiene habilidades en un área particular, probablemente es ahí donde//deban
Enfocarse.//
4. La criticidad del software y sus
Requerimientos no funcionales Para un sistema//crítico que deba certificarse mediante un
Regulador externo, quizá deba crear un//caso de confiabilidad para el sistema
(como se estudió en el capítulo 15). Esto es//difícil si no tiene acceso al
Código fuente del software. Si su software cuenta con//requerimientos rigurosos
De rendimiento, tal vez sea imposible usar estrategias tales//como la
Reutilización basada en generador, donde el código se forma a partir de una//representación
De reutilización específica de dominio de un sistema. Estos sistemas//a menudo
Crean un código relativamente ineficiente.//
5. El dominio de aplicación En algunos dominios de aplicación, tales como los sistemas//de
Fabricación e información médica, existen muchos productos genéricos//que
Pueden reutilizarse al configurarlos para una situación local. Si trabaja en
Tal//dominio, siempre debe considerarlo como una opción.//Patrones//de diseño//Ingeniería
De software//basada en componentes//Frameworks//de aplicación//Sistemas
Orientados//al servicio//Integración//COTS//Líneas de producto//de software//Encadenamiento//de
Sistemas heredados//Librerías//de programa//Generadores//de programa//Desarrollo
De software//orientado a aspectos//Aplicaciones verticales//configurables//Patrones//arquitectónicos//Sistemas//ERP//Ingeniería
Dirigida//por modelo//Figura 16.3
Panorama//de reutilización//430
Capítulo 16 ■ Reutilización de software//
6. La plataforma en la que operará
El sistema Algunos
Modelos de componentes,//como .NET, se especifican para plataformas Microsoft.
De igual modo, sistemas//genéricos de aplicación pueden ser específicos de
Plataforma y sólo podrá reutilizarlos//si su sistema está diseñado para la
Misma plataforma.//Enfoque Descripción//
Patrones arquitectónicos Se usan arquitecturas de
Software estándar que apoyan tipos comunes//de sistemas de aplicación, tales
Como la base de las aplicaciones.//Se describen en los capítulos 6, 13 y 20.//Patrones
De diseño Las abstracciones genéricas que ocurren a través de las aplicaciones//se
Representan como patrones de diseño que muestran objetos e//interacciones
Abstractas y concretas. Se detallan en el capítulo 7.//Desarrollo basado//en
Componentes//Se desarrollan sistemas al integrar componentes (colecciones de//objetos)
Que se conforman a estándares de modelo de componentes.//Se estudian en el
Capítulo 17.//Frameworks de aplicación Colecciones de clases abstractas y
Concretas adaptadas y extendidas para//crear sistemas de aplicación.//Encadenamiento
De sistemas//heredados//Los sistemas heredados (véase el capítulo 9) se “enlazan”
Al definir un//conjunto de interfaces y proporcionar acceso a estos sistemas
Heredados//a través de dichas interfaces.//Sistemas orientados a servicios Se
Desarrollan sistemas mediante la vinculación de servicios compartidos,//que
Pueden proporcionarse externamente. Se tratan en el capítulo 19.//Líneas de
Producto de software Un tipo de aplicación se generaliza en torno a una
Arquitectura común,//de forma que pueda adaptarse para diferentes clientes.//Reutilización
De productos COTS Los sistemas se desarrollan al configurar e integrar sistemas
De aplicación//existentes.//Sistemas ERP Los sistemas a gran escala que
Encapsulan funcionalidad empresarial//genérica y reglas se configuran para una
Organización.//Aplicaciones verticales//configurables//Se diseñan sistemas
Genéricos de manera que puedan configurarse a las//necesidades específicas de
Clientes del sistema.//Librerías de programa Librerías de clase y función que
Implementan abstracciones de uso//común están disponibles para reutilización.//Ingeniería
Dirigida por modelo El software se representa como modelos de dominio y modelos//independientes
De implementación, y se genera un código a partir//de dichos modelos. Se
Refiere en el capítulo 5.//Generadores de programa Un sistema generador
Incrusta conocimiento de un tipo de aplicación//y se usa para generar sistemas
En dicho dominio a partir de un modelo//de sistema suministrado por el usuario.//Desarrollo
De software orientado//a aspectos//Cuando se compila el programa, los
Componentes compartidos se//hilvanan dentro de una aplicación en lugares
Diferentes. Se expone en//el capítulo 21.//Figura 16.4//
Enfoques que//apoyan la reutilización//de software//16.2 ■
Frameworks de aplicación
431//
La gama de técnicas disponibles
De reutilización es tal que, en la mayoría de las situaciones,//existe la
Posibilidad de cierta reutilización de software. Ya sea que se logre o//no la
Reutilización, con frecuencia es un conflicto administrativo más que técnico.
Los//administradores pueden estar ansiosos de comprometer sus requerimientos
Para permitir//el uso de componentes de reutilización. Es posible que no
Comprendan los riesgos//asociados con la reutilización, tanto como entienden
Los riesgos del desarrollo original.//Aunque los riesgos del desarrollo de
Nuevo software pueden ser elevados, algunos administradores//prefieren los
Riesgos conocidos a los desconocidos.//16.2 Frameworks de aplicación//
Los primeros entusiastas del
Desarrollo orientado a objetos sugerían que uno de los beneficios//clave de
Usar un enfoque orientado a objetos era que éstos pudieran reutilizarse en//diferentes
Sistemas. Sin embargo, la experiencia demostró que los objetos normalmente//son
Muy pequeños y están especializados para una aplicación particular. Entender y//adaptar
El objeto tarda más tiempo que volver a implementarlo. Ahora se ha vuelto claro
Que//la reutilización orientada a objetos tiene mejor apoyo en un proceso de desarrollo
Orientado a//objetos a través de abstracciones de grano más grueso, llamadas
Frameworks (estructuras).//Como sugiere el nombre, un framework es una
Estructura genérica que se extiende//para crear una aplicación o un subsistema
Más específico. Schmidt y sus colaboradores//(2004) definen un framework como://. . . Un conjunto integrado de
Artefactos de software (tales como clases, objetos y//componentes), que
Colaboran en la facilitación de una arquitectura de reutilización//para una
Familia de aplicaciones relacionadas.//Los frameworks brindan soporte para carácterísticas genéricas que
Es probable que//sean utilizadas en todas las aplicaciones de un tipo similar.
Por ejemplo, un framework//de interfaz de usuario ofrecerá soporte para manejo
De evento de interfaz, e incluirá un conjunto//de artilugios que pueden usarse
Para construir despliegues. Entonces se permite al//desarrollador especializar
éstos al agregar funcionalidad específica para una aplicación particular.//Por
Ejemplo, en un framework de interfaz de usuario, el desarrollador define
Plantillas//de despliegue adecuadas para la aplicación a implementar.//Los
Frameworks apoyan la reutilización de diseño en la que ofrecen una arquitectura//que
Sirve de esqueleto para la aplicación, así como la reutilización de clases
Específicas//Reutilización basada en generador//
La reutilización basada en
Generador consiste en incorporar conceptos y conocimiento reutilizables en//herramientas
Automatizadas, y ofrecer una forma sencilla de que los usuarios de la
Herramienta integren un//código específico con este conocimiento genérico. Por
Lo general, este enfoque es más efectivo en aplicaciones//específicas de
Dominio. Soluciones conocidas a los problemas en dicho dominio se incrustan en
El sistema//generador y el usuario las selecciona para crear un nuevo sistema.//http://www.SoftwareEngineering-9.Com/Web/Reuse/Generator.Html//432
Capítulo 16 ■
Reutilización de
Software//en el
Sistema. La arquitectura se define por las clases de objetos y sus
Interacciones. Las//clases se reutilizan directamente y pueden extenderse
Utilizando carácterísticas como la//herencia.//Los frameworks se implementan
Como una colección de clases de objetos concretos//y abstractos en un lenguaje
De programación orientado a objetos. Por lo tanto, los frameworks//son
Específicos del lenguaje. Existen frameworks disponibles en todos los lenguajes//de
Programación orientados a objetos de uso común (por ejemplo, Java, C#, C++,//así
Como lenguajes dinámicos como Ruby y Python). De hecho, un framework puede//incorporar
Muchos otros frameworks, cada uno de los cuales se diseña para soportar//el
Desarrollo de parte de la aplicación. Es posible usar un framework para crear
Una//aplicación completa o implementar parte de una aplicación, como la
Interfaz de usuario//gráfica.//Fayad y Schmidt (1997) analizan tres clases de
Frameworks://
1. Frameworks de infraestructura de
Sistema Dichos
Frameworks apoyan el desarrollo//de infraestructuras de sistema como
Comunicaciones, interfaces de usuario y//compiladores (Schmidt, 1997).//
2. Frameworks de integración de
Middleware Consisten en
Un conjunto de estándares//y clases de objetos asociados que soportan
Comunicación de componentes e//intercambio de información. Los ejemplos de este
Tipo de framework incluyen .NET//de Microsoft y Enterprise Java Beans (EJB).
Dichos frameworks brindan soporte//para modelos estandarizados de componentes,
Como se estudia en el capítulo 17.//
3. Frameworks
De aplicación empresarial Se ocupan de dominios de aplicación//específicos, tales como los
Sistemas de telecomunicaciones o financieros (Baumer//et al., 1997). El conocimiento del
Dominio de la aplicación integra y apoya el desarrollo//de aplicaciones de usuario
Final.//Los frameworks de aplicación Web (WAF) son un tipo de framework más
Reciente e//importante. Ahora los WAF, que apoyan la construcción de sitios Web
Dinámicos, están//ampliamente disponibles. La arquitectura de un WAF se basa
Por lo general en el patrón//compuesto Modelo-Vista-Controlador (MVC) (Gamma et al., 1995), que se muestra//en la
Figura 16.5.//El patrón MVC se propuso originalmente en la década de 1980, como
Un enfoque//al diseño GUI que permitía múltiples presentaciones de un objeto y
Separaba estilos//de interacción con cada una de estas presentaciones. Permite
La separación del estado de//Métodos del controlador Métodos de la vista//Entradas//de usuario//Ver
Mensajes//de modificación//Edición//del modelo//Consultas//y actualizaciones//del
Modelo//Estado del controlador Estado de la vista//Métodos del modelo//Estado
Del modelo//Figura
16.5
Patrón//Modelo-Vista-//Controlador//16.2 ■
Frameworks de aplicación
433//aplicación de la interfaz de
Usuario de la aplicación. Un framework MVC permite la presentación//de datos en
Diferentes formas y admite la interacción con cada una de dichas//presentaciones.
Cuando los datos se modifican a través de una de las presentaciones, se//modifica
El modelo del sistema y los controladores asociados con cada punto de vista//actualizan
Su presentación.//A menudo, los frameworks son implementaciones de patrones de
Diseño, como se estudió//en el capítulo 7. Por ejemplo, un framework MVC incluye
El patrón Observer, el//patrón Strategy, el patrón Composite y algunos otros
Que analizan Gamma y sus colaboradores//(1995). La naturaleza general de los
Patrones y su uso de clases abstractas y concretas//permite la extensibilidad.
Es casi seguro que, sin patrones, los frameworks serían poco//prácticos.//Los
Frameworks de aplicación Web incorporan regularmente uno o más frameworks//especializados
Que apoyen las carácterísticas específicas de aplicación. Aunque cada framework//incluye
Funcionalidad sutilmente diferente, la mayoría de los frameworks de//aplicación
Web soportan las siguientes carácterísticas://
1. Seguridad Los WAF pueden incluir clases para ayudar a implementar
Autenticación//de usuario (login) y el control de acceso para garantizar que
Los usuarios sólo//puedan tener acceso a la funcionalidad que permite el
Sistema.//
2. Páginas Web dinámicas Se ofrecen clases para ayudar a
Definir las plantillas de la//página Web y dotar dinámicamente a éstas con
Datos específicos de la base de datos//del sistema.//
3. Soporte de base de datos Los frameworks usualmente no
Incluyen una base de//datos, sino suponen que se usará una base de datos
Separada, como MySQL. El framework//puede proporcionar clases que ofrezcan una
Interfaz abstracta a diferentes//bases de datos.//
4. Gestión de sesíón Clases para crear y administrar
Sesiones (algunas interacciones//con el sistema por parte de un usuario) por lo
General son parte de un WAF.//
5. Interacción
De usuarios La
Mayoría de los frameworks Web brindan ahora soporte//AJAX (Holdener, 2008), que
Permite la creación de páginas Web más interactivas.//Para extender un
Framework no es necesario cambiar el código de éste. En vez de ello,//usted agrega
Clases concretas que heredan operaciones de clases abstractas en el framework.//Además,
Quizá deba definir callbacks (comunicaciones de regreso). Los callbacks//son
Métodos que se solicitan en respuesta a eventos reconocidos por el framework.//Schmidt
Y sus colaboradores (2004) llaman a esto “inversión de control”. Los objetos//framework,
Y no los objetos específicos de aplicación, son los responsables del control en//el
Sistema. En respuesta a eventos de la interfaz del usuario, base de datos,
Etcétera, dichos//objetos framework recurren a “métodos gancho” que entonces se
Vinculan a la funcionalidad//que proporciona el usuario. La funcionalidad
Específica de la aplicación responde//de una forma adecuada al evento (figura
16.6). Por ejemplo, un framework tendrá un//método que manipule un clic del
Ratón desde el entorno. Este método llama a un método//gancho, que usted debe
Configurar con la finalidad de llamar a los métodos de aplicación//adecuados
Para manejar el clic del ratón.//Las aplicaciones que se construyen utilizando
Frameworks pueden ser la base para una//posterior reutilización a través del
Concepto de líneas de producto de software o familias//434
Capítulo 16 ■
Reutilización de
Software//de
Aplicación. Puesto que dichas aplicaciones se construyen mediante un framework,
La//modificación de los miembros de la familia para crear instancias del
Sistema con frecuencia//es un proceso directo. Implica rescribir clases y
Métodos concretos que deberán//adicionarse al framework.//Sin embargo, los
Frameworks usualmente son más generales que las líneas de producto//de
Software, enfocadas en una familia específica de sistemas de aplicación. Por//ejemplo,
Es posible usar un framework basado en Web para construir diversos tipos de//aplicaciones
Basadas en Web. Uno de éstos podría ser una línea de productos de software//que
Soporte escritorios de ayuda basados en Web. Entonces esta “línea de productos//de
Escritorio de ayuda” puede especializarse aún más para ofrecer tipos
Particulares de//soporte de escritorio de ayuda.//Los frameworks son un enfoque
Efectivo a la reutilización, aunque costosos para introducirse//en procesos de
Desarrollo de software. Se consideran inherentemente complejos,//y aprender a
Usarlos es una actividad que tal vez dure muchos meses. También es posible//que
Sea difícil y costoso evaluar frameworks disponibles para elegir los más
Adecuados.//Depurar las aplicaciones basadas en frameworks resulta complicado,
Porque tal vez no se//comprenda cómo interactúan los métodos framework. Éste es
Un problema general con el//software de reutilización. Las herramientas de
Depuración pueden brindar datos sobre los//componentes del sistema de
Reutilización que un desarrollador no entiende.//16.3 Líneas de productos de
Software//
Uno de los
Enfoques más efectivos para la reutilización es la creación de líneas de
Productos//de software o familias de aplicación. Una línea de productos de
Software es un//conjunto de aplicaciones con una arquitectura común y
Componentes compartidos, con//cada aplicación especializada para reflejar
Diferentes requerimientos. El sistema central//se diseña para configurarse y
Adaptarse a las necesidades de los diferentes clientes del//sistema. Esto puede
Implicar la configuración de algunos componentes, implementar//componentes
Adicionales y modificar varios de los componentes de acuerdo con nuevos//requerimientos.//Clases específicas de
Aplicación//Base de datos Ciclo de//evento//Callbacks Callbacks//Callbacks//Plataforma
Ciclo de//evento//GUI Ciclo de//evento//Figura 16.6
Inversión//de control en//frameworks//16.3 ■
Líneas de productos de
Software 435//
Desarrollar
Aplicaciones mediante la adaptación de una versión genérica de la aplicación//significa
Que se reutiliza una alta proporción del código de aplicación. Además,//la
Experiencia de la aplicación muchas veces es transferible de un sistema a otro.
En//consecuencia, cuando los ingenieros de software se reúnen en un equipo de
Desarrollo, se//acorta su proceso de aprendizaje. Las pruebas se simplifican
Porque éstas también pueden//reutilizarse para gran parte de la aplicación, lo
Que en consecuencia reduce el tiempo//total del desarrollo de la aplicación.//Las
Líneas de producto de software surgen por lo general de aplicaciones
Existentes.//Esto es, una organización desarrolla una aplicación y, luego,
Cuando se requiere un sistema//similar, el código de ésta se reutiliza de
Manera informal en la nueva aplicación. El mismo//proceso se usa conforme se
Desarrollan otras aplicaciones similares. Sin embargo, el cambio//tiende a
Corromper la estructura de la aplicación, así que, a medida que se desarrollan//más
Instancias nuevas, se vuelve cada vez más difícil crear una nueva versión. Por
Consiguiente,//puede tomarse entonces una decisión para diseñar una línea de
Productos genéricos.//Esto implica identificar la funcionalidad común en instancias
De producto e incluirla//en una aplicación base, que después se usa para un
Desarrollo futuro. Esta aplicación base//se estructura deliberadamente para
Simplificar la reutilización y la reconfiguración.//Desde luego, los frameworks
De aplicación y las líneas de productos de software//tienen mucho en común.
Ambos soportan una arquitectura y componentes comunes, y//requieren un nuevo
Desarrollo para crear una versión específica de un sistema. Las principales//diferencias
Entre dichos enfoques son las siguientes://
1. Los frameworks de aplicación se apoyan en carácterísticas
Orientadas a objetos,//como herencia y polimorfismo, para implementar
Extensiones al framework. Por//lo general, el código framework no se modifica y
Las posibles modificaciones están//limitadas a lo que permite el framework. Las
Líneas de producto de software no//necesariamente se crean mediante un enfoque
Orientado a objetos. Los componentes//de aplicación cambian, se borran o
Rescriben. No hay límites, al menos en principio,//para que puedan realizarse
Cambios.//
2. Los frameworks de aplicación se
Enfocan principalmente en brindar apoyo técnico//antes que dominio específico.
Por ejemplo, existen frameworks de aplicación para//crear aplicaciones basadas
En Web. Una línea de productos de software por lo general//incrusta información
Detallada de dominio y de plataforma. Por ejemplo, podría//haber una línea de
Productos de software que se ocupe de aplicaciones basadas en//Web para la
Administración de registros de salud.//
3. Las
Líneas de producto de software generalmente son aplicaciones de control para//equipo.
Por ejemplo, puede haber una línea de productos de software para una familia//de
Impresoras. Esto significa que la línea de productos debe dar soporte para//interfaz
De hardware. Los frameworks de aplicación con frecuencia están orientados//al
Software, y pocas veces ofrecen soporte para interfaz de hardware.//
4. Las líneas de productos de
Hardware constituyen una familia de aplicaciones relacionadas,//propiedad de la
Misma organización. Cuando usted crea una nueva aplicación, su//punto de
Partida es habitualmente el miembro más cercano de la familia de aplicación,//no
La aplicación central genérica.//Si desarrolla una línea de productos de
Software usando un lenguaje de programación//orientado a objetos, en ese
Momento puede usar un framework de aplicación como base del//436
Capítulo 16 ■
Reutilización de
Software//sistema.
Usted crea el núcleo de la línea de productos al extender el framework con
Componentes//específicos de dominio, a través de sus mecanismos internos.
Entonces hay una//segunda fase de desarrollo, donde se crean versiones del
Sistema para diferentes clientes.//Pueden desarrollarse varios tipos de
Especialización de una línea de productos de//software://
1. Especialización de plataforma Se elaboran versiones de la
Aplicación para diferentes//plataformas. Por ejemplo, pueden existir versiones
De aplicación para plataformas//Windows, Mac OS y Linux. En este caso, la
Funcionalidad de la aplicación//por lo regular no cambia; sólo se modifican
Aquellos componentes que hacen interfaz//con el hardware y el sistema
Operativo.//
2. Especialización de entorno Se crean versiones de aplicación
Para manejar entornos//operacionales particulares y dispositivos periféricos.
Por ejemplo, un sistema para//los servicios de emergencia puede existir en
Diferentes versiones, dependiendo del//sistema de comunicaciones en los
Vehículos. En este caso, los componentes del sistema//cambian para reflejar la
Funcionalidad del equipo de comunicación utilizado.//
3. Especialización funcional Se crean versiones de aplicación
Para clientes específicos//que tengan diferentes requerimientos. Por ejemplo,
Un sistema de automatización//bibliotecario se podrá modificar en función de si
Se utiliza en una biblioteca//pública, una biblioteca de consulta o una
Biblioteca universitaria. En tal caso, es//posible variar los componentes que
Implementan la funcionalidad y agregar al sistema//nuevos componentes.//
4. Especialización de proceso El sistema se adapta para hacer
Frente a los procesos//empresariales específicos. Por ejemplo, un sistema de
Pedidos puede adaptarse para//enfrentarse con un proceso de pedidos
Centralizado en una compañía y con un proceso//distribuido en otra.//La
Arquitectura de una línea de productos de software con frecuencia refleja un
Estilo//o patrón arquitectónico general, específico para una aplicación. Por
Ejemplo, considere//un sistema de línea de productos que se diseñe con la
Finalidad de manejar salidas de//vehículos para servicios de emergencia. Los
Operadores de este sistema reciben las llamadas//de los incidentes, localizan
El vehículo adecuado para responder a la emergencia//y envían el vehículo al
Sitio del incidente. Los desarrolladores de tal sistema pueden//comercializar
Versiones de éste para los servicios de policía, bomberos y ambulancias.//Este
Sistema de envío de vehículos es un ejemplo de una arquitectura de gestión de//recursos
(figura 16.7). En la figura 16.8 se ejemplifica dicha estructura de cuatro
Capas, y//se muestran los módulos que es posible incluir en una línea de
Productos de sistemas de//envío de vehículos. Los componentes en cada nivel en
El sistema de línea de productos//son los siguientes://
1. A nivel de interacción, existen
Componentes que ofrecen una interfaz de pantalla de//operador y una interfaz
Con los sistemas de comunicaciones usados.//
2. A nivel de la gestión I/O (nivel 2), hay componentes que manejan
Autenticación//del operador, generan reportes de incidentes y vehículos
Enviados, permiten salida de//mapas y planeación de rutas, y ofrecen un
Mecanismo para que los operadores consulten//las bases de datos del sistema.//16.3 ■
Líneas de productos de
Software 437//3.
A nivel de gestión de recursos
(nivel 3) existen componentes que permiten la localización//y el envío de
Vehículos, componentes para actualizar el estatus de los vehículos//y el
Equipo, y un componente para registrar detalles de incidentes.//
4. A nivel de base de datos, además
Del apoyo de gestión de transacción usual, existen//bases de datos separadas de
Vehículos, equipo y mapas.//Interfaz de usuario//Rastreo//de recursos//Política de//control de
Recursos//Asignación//de recursos//Autenticación//de usuarios//Gestión//de
Consulta//Entrega//de recursos//Gestión de transacción//Base de datos de
Recursos//Interacción//Gestión I/O//Gestión de recursos//Gestión de base de
Datos//Figura
16.7//
Arquitectura
De un//sistema de asignación//de recursos//Autenticación//de operadores//Gestor
De estatus//de vehículos//Bitácora//de incidentes//Despachador//de vehículos//Gestor//de
Equipo//Localizador//de vehículos//Planeador de//mapas y rutas//Gestor//de
Consulta//Generador//de reportes//Interfaz del operador Interfaz de sistemas//de
Comunicaciones//Base de datos//de equipo//Base de datos de vehículos Base de
Datos de mapas//Figura 16.8
Gestión de transacción Bitácora de incidentes//Arquitectura de
Línea//de productos de un//sistema de envío//de vehículos//438
Capítulo 16 ■
Reutilización de
Software//Para crear
Una versión específica de este sistema, habrá que modificar los componentes//individuales.
Por ejemplo, la policía tiene un mayor número de vehículos, pero menor//número
De tipos de vehículos, mientras que los bomberos cuentan con muchos tipos de//vehículos
Especializados. En consecuencia, tal vez sea necesario definir una estructura//diferente
De base de datos de vehículos cuando se implemente un sistema para esos
Distintos//servicios.//La figura 16.9 muestra los pasos considerados en la
Extensión de una línea de productos//de software para crear una nueva
Aplicación. Tales pasos en este proceso general son los//siguientes://
1. Adquirir requerimientos de las
Partes interesadas Puede
Comenzar con un proceso//de ingeniería de requerimientos normal. Sin embargo,
Puesto que ya existe un sistema,//éste deberá comprobarse para luego hacer que
Los interesados lo experimenten//y expresen sus requerimientos como
Modificaciones a las funciones ofrecidas.//
2. Seleccionar el sistema existente que se ajuste más a los
Requerimientos Cuando
Se//crea un nuevo miembro de una línea de productos, puede comenzar con la
Instancia//más cercana al producto. Se analizan los requerimientos y se elige
Modificar al//miembro de la familia más cercano.//
3. Renegociar los requerimientos Conforme surgen más detalles de
Cambios requeridos//y el proyecto se planea, puede haber alguna renegociación
De requerimientos//para minimizar los cambios necesarios.//
4. Adaptar el sistema existente Se desarrollan nuevos módulos
Para el sistema existente,//y los módulos de sistema existentes se adaptan para
Cumplir con los nuevos//requerimientos.//
5. Entregar
Al nuevo miembro de la familia Se entrega al cliente la nueva instancia//de la línea de producto.
En esta etapa, usted debería documentar las carácterísticas//clave, de manera
Que pueda usarse en el futuro como base para otros desarrollos de//sistema.//Cuando
Usted crea un nuevo miembro de una línea de productos, es probable que//encuentre
Un compromiso entre reutilizar la mayor cantidad de aplicación genérica//posible
Y satisfacer los requerimientos detallados de las partes interesadas. Cuanto
Más//detallados sean los requerimientos del sistema, menos probabilidad tendrá
De que los//componentes existentes cumplan tales requerimientos. Sin embargo,
Si las partes interesadas//desean ser flexibles y limitar las modificaciones
Que requiera el sistema, por lo//general se podrá entregar el sistema más
Rápido y a menor costo.//Las líneas de productos de software se diseñan para
Reconfigurarse, y esta reconfiguración//puede implicar el agregar o eliminar
Componentes del sistema, definir parámetros y//Adquirir//requerimientos de//las partes
Interesadas//Elegir instancia//de sistema//más cercana//Entregar nueva//instancia
De sistema//Renegociar//requerimientos//Adaptar sistema//existente//Figura 16.9//
Desarrollo//de instancias//de
Producto//16.3 ■ Líneas de productos de software 439//restricciones para componentes del sistema, e incluir conocimiento
De procesos empresariales.//Esta configuración puede ocurrir en diferentes
Etapas en el proceso de desarrollo://
1. Configuración
A tiempo de diseño La
Organización que desarrolla el software//modifica una línea común de productos
Básicos mediante el desarrollo, la selección//o la adaptación de componentes
Para crear un nuevo sistema para el cliente.//
2. Configuración a tiempo de implementación Se diseña un sistema genérico
Para la//configuración por parte de un cliente o de algún consultor que trabaje
Con el cliente.//El conocimiento de los requerimientos específicos del cliente
Y el entorno operacional//del sistema se incrustan en un conjunto de archivos
De configuración que usa el//sistema genérico.//Cuando un sistema se configura
A tiempo de diseño, el proveedor comienza ya sea con//un sistema genérico o con
Una instancia de producto existente. Al modificar y extender//los módulos en
Este sistema se crea un sistema específico que entrega la funcionalidad//requerida
Por el cliente. Esto implica, por lo general, cambiar y extender el código
Fuente//del sistema, de manera que es posible mayor flexibilidad que con la
Configuración a//tiempo de implementación.//La configuración a tiempo de
Implementación supone usar una herramienta para crear//una configuración
Específica del sistema que se registre en una base de datos o como un//conjunto
De archivos de configuración (figura 16.10). El sistema en ejecución consulta//esta
Base de datos cuando se ejecuta, así que su funcionalidad puede especializarse
Para//su contexto de ejecución.//Existen muchos niveles de configuración en
Tiempo de implementación que un sistema//puede proveer://
1. Selección de componentes, donde
Se seleccionan los módulos en un sistema que//ofrecen la funcionalidad
Requerida. Por ejemplo, en un sistema de información de//pacientes, es posible
Seleccionar un componente de gestión de imagen que permita//vincular imágenes
Médicas (rayos X, tomografías, etcétera) con el registro médico//del paciente.//
2. Definición de flujo de trabajo y
Reglas, donde se definen los flujos de trabajo (cómo//se procesa la
Información, etapa por etapa) y reglas de validación que deben aplicarse//a la
Información que los usuarios ingresen o que genere el sistema.//Configuración de//la base de
Datos//Sistema de base de datos//Sistema genérico//Configuración de la//herramienta
De planeación//Figura 16.10//
Configuración//a tiempo de diseño//440
Capítulo 16 ■
Reutilización de
Software//
3. Definición de parámetros, donde
Se detallan los valores de parámetros específicos//del sistema, que reflejan la
Instancia de la aplicación que se crea. Por ejemplo, puede//especificarse la
Longitud máxima de los campos para la entrada de datos por parte de//un usuario
O las carácterísticas del hardware unido al sistema.//La configuración de la
Implementación a través de despliegue en pantalla puede ser//muy compleja, y la
Labor de configurar el sistema para un cliente tal vez tarde muchos//meses. Los
Grandes sistemas configurables pueden apoyar el proceso de configuración//al
Ofrecer herramientas de software, tales como herramientas de planeación de
Configuración,//para apoyar el proceso de configuración. En la sección 16.4.1
Se estudia con más//detalle la configuración de la implementación a través de
Despliegue en pantalla. Esto//cubre la reutilización de sistemas COTS que deben
Configurarse para trabajar en diferentes//entornos potenciales.//La
Configuración a tiempo de diseño se usa cuando es imposible utilizar las
Instalaciones//existentes de la configuración de implementación a través de
Despliegue en pantalla//en un sistema para desarrollar una nueva versión del
Sistema. Sin embargo, con el tiempo,//cuando se crean varios miembros de la familia
Con funcionalidad comparable, se puede//decidir si se refactoriza la línea
Central de productos para incluir funcionalidad que se haya//implementado en
Varios miembros de la familia de aplicación. Entonces se hace configurable//esta
Nueva funcionalidad cuando se implementa el sistema.//16.4 Reutilización de productos
COTS//
Un producto
COTS (por las siglas de Comercial-Off-The-Shelf ) es un sistema de software//que puede adaptarse a las necesidades
De diferentes clientes sin cambiar el código//fuente del sistema. Prácticamente
Todo el software de escritorio y una gran variedad de//productos del servidor
Son software COTS. Puesto que este software se diseña para uso//general,
Incluye regularmente muchas carácterísticas y funciones. Por consiguiente,
Tiene//el potencial de reutilización en diferentes entornos como parte de
Diversas aplicaciones.//Torchiano y Morisio (2004) descubrieron que los
Productos de código abierto se usaron a//menudo como productos COTS. Esto es,
Los sistemas abiertos se empleaban sin cambiar//ni observar el código fuente.//Los
Productos COTS se adaptan al usar mecanismos de configuración internos que//permiten
Que la funcionalidad del sistema se adecue a necesidades específicas del
Cliente.//Por ejemplo, en un sistema de registro de pacientes en un hospital,
Pueden definirse formatos//de entrada y reportes de salida separados para
Diferentes tipos de pacientes. Otras//carácterísticas de configuración permiten
Al sistema aceptar plug-ins que extiendan la//funcionalidad o comprueben las
Entradas del usuario para garantizar que son válidas.//Este enfoque para la
Reutilización del software se adoptó ampliamente en grandes//compañías durante
Los últimos 15 años, puesto que ofrece beneficios significativos sobre//el
Desarrollo de software personalizado://
1. Al
Igual que sucede con otros tipos de reutilización, es posible la implementación//más
Rápida de un sistema fiable.//16.4 ■ Reutilización de productos COTS 441//2.
Es
Posible ver qué funcionalidad ofrece la aplicación, de manera que es más fácil//juzgar
Si es probable que sea adecuada o no. Quizás otras compañías ya usen las//aplicaciones,
De manera que existen antecedentes de experiencia con el sistema.//
3. Se evitan algunos riesgos de
Desarrollo al usar software existente. Sin embargo, este//enfoque tiene sus
Propios riesgos, como se verá más adelante.//
4. Las empresas pueden enfocarse en su actividad central sin tener
Que dedicar muchos//recursos al desarrollo de sistemas TI.//
5. Conforme evolucionan las
Plataformas operativas, las actualizaciones de tecnología//se pueden
Simplificar, pues éstas son responsabilidad del proveedor del producto//COTS y
No del cliente.//Desde luego, este enfoque a la ingeniería de software entraña
Ciertos problemas://
1. Tienen que adaptarse los
Requerimientos para reflejar la funcionalidad y el modo de//operación del
Producto COTS. Esto puede conducir a cambios bruscos en los procesos//empresariales
Existentes.//
2. El producto COTS puede basarse en
Suposiciones que sean casi imposibles de//cambiar. Por lo tanto, el cliente
Debe adaptar su empresa para reflejar dichas suposiciones.//
3. Elegir el sistema COTS correcto
Para una empresa puede ser un proceso difícil,//en especial porque muchos
Productos COTS no están debidamente documentados.//Tomar la decisión equivocada
Podría ser desastroso, ya que tal vez sea imposible//hacer funcionar el nuevo
Sistema como se requiere.//
4.
Quizá no haya experiencia local
Para apoyar el desarrollo de los sistemas. En consecuencia,//el cliente deberá
Apoyarse en el proveedor y en consultores externos para//obtener consejos de
Desarrollo. Estos consejos podrían estar sesgados y dirigidos a//vender
Productos y servicios, y no a satisfacer las necesidades reales del cliente.//
5. Los proveedores de productos COTS
Controlan el soporte y la evolución del sistema.//Pueden salir del negocio,
Perder el control o incluso hacer cambios que ocasionen//dificultades a los
Clientes.//La reutilización de software basado en COTS cada vez se ha vuelto
Más común. La//vasta mayoría de los nuevos sistemas de procesamiento de
Información empresarial se//construyen ahora utilizando COTS, en vez de emplear
Un enfoque orientado a objetos.//Aunque con frecuencia hay problemas con este
Enfoque para el desarrollo de sistemas//(Tracz, 2001), las historias de éxito
(Baker, 2002; Balk y Kedia, 2000; Brownsword y//Morris, 2003; Pfarr y Reis,
2002) indican que la reutilización basada en COTS reduce el//esfuerzo y el
Tiempo para implementar el sistema.//Existen dos tipos de reutilización de
Productos COTS, a saber: sistemas de solución//COTS y sistemas integrados COTS.
Los primeros consisten en una aplicación genérica//de un solo proveedor que se
Configura de acuerdo con los requerimientos del cliente. Los//sistemas
Integrados COTS implican la integración de dos o más sistemas COTS (quizá//442
Capítulo 16 ■
Reutilización de
Software//de diferentes
Proveedores) para crear un sistema de aplicación. La figura 16.11 resume//las
Diferencias entre estos diferentes enfoques.//16.4.1 Sistemas de solución COTS//Los sistemas de solución COTS son
Sistemas de aplicación genéricos que pueden diseñarse//para dar apoyo a un tipo
De empresa particular, actividad empresarial o, en ocasiones,//a toda la
Empresa. Por ejemplo, es posible generar un sistema de solución COTS//para los
Dentistas que se encargue de registrar citas, llevar expedientes, programar
Llamadas//a pacientes, etcétera. A mayor escala, un sistema de Planeación de
Recursos//Empresariales (ERP, por las siglas de Enterprise Resource Planning) puede apoyar//todas las
Actividades de fabricación, pedidos y servicio de atención a clientes en una//compañía
Grande.//Los sistemas de solución COTS específicos de dominio, como los
Sistemas que brindan//apoyo a una función empresarial (por ejemplo, manejo de
Documentos), ofrecen la//funcionalidad que requieren algunos usuarios
Potenciales. Sin embargo, tales sistemas//incorporan también suposiciones
Internas acerca de cómo trabajan los usuarios, y esto//puede causar problemas
En situaciones específicas. Por ejemplo, un sistema que apoye en//la tarea de
Registrar a estudiantes en las universidades puede suponer que los estudiantes//se
Registrarán para obtener un grado determinado en una universidad. Sin embargo,
Si//varias universidades colaboran para ofrecer grados conjuntos, entonces será
Casi imposible//representar esto en el sistema.//Los sistemas ERP, como los
Producidos por SAP y BEA, son sistemas integrados a//gran escala, diseñados
Para dar apoyo a prácticas empresariales, tales como pedidos y//facturación,
Manejo de inventarios y fechas de producción (O’Leary, 2000). El proceso//de
Configuración para estos sistemas incluye la recopilación de información
Detallada//acerca de la empresa y los procesos empresariales del cliente, e
Incrustan esto en una//base de datos de configuración. Con frecuencia, ello
Requiere conocimiento detallado de//anotaciones y herramientas de
Configuración, y por lo general lo realizan consultores que//trabajan junto con
Los clientes del sistema.//Sistemas de solución COTS Sistemas COTS integrados//
Un solo producto que ofrece
La funcionalidad//requerida por un cliente.//Muchos productos heterogéneos de
Sistema se//integran para ofrecer funcionalidad personalizada.//Basados en una
Solución genérica y procesos//estandarizados.//Pueden desarrollarse soluciones
Flexibles para//procesos del cliente.//El desarrollo se enfoca en la configuración//del
Sistema.//El desarrollo se enfoca en la integración del sistema.//El proveedor
Del sistema es responsable//del mantenimiento.//El dueño del sistema es
Responsable del//mantenimiento.//El proveedor del sistema ofrece la plataforma//para
El sistema.//El dueño del sistema ofrece la plataforma para el//sistema.//Figura 16.11//
Sistemas de//solución COTS//y
COTS integrados//16.4 ■ Reutilización de productos COTS 443//
Un sistema ERP genérico contiene algunos módulos que pueden
Componerse en//diferentes formas con la finalidad de crear un sistema para un
Cliente. El proceso de//configuración implica elegir cuáles módulos deben
Incluirse, configurar dichos módulos//individuales, definir los procesos y las
Reglas empresariales, y definir la estructura//y organización de la base de
Datos del sistema. En la figura 16.12 se presenta un//modelo de la arquitectura
Global de un sistema ERP que apoya algunas funciones//empresariales.//Las
Carácterísticas clave de esta arquitectura son://
1. Algunos módulos para dar apoyo a
Diferentes funciones empresariales. Estos módulos//de grano grueso pueden
Apoyar a departamentos o divisiones enteros de la//empresa. En el ejemplo que
Se señala en la figura 16.12, los módulos seleccionados//para su inclusión en
El sistema son: un módulo que apoya las compras, un módulo//que apoya la
Gestión de la cadena de abastecimiento, un módulo logístico que apoya//la
Entrega de bienes, y un módulo de gestión de atención al cliente (CRM, por las//siglas
De Customer Relationship Management) para mantener información sobre
La//clientela.//
2. Un conjunto definido de procesos
Empresariales, asociados con cada módulo, que se//relaciona con actividades en
Dicho módulo. Por ejemplo, puede haber una definición//del proceso de pedidos
Que especifique cómo crear y aprobar los pedidos. Esto precisará//los roles y
Las actividades implicados en el levantamiento de pedidos.//
3. Una base de datos común que
Mantiene información acerca de todas las funciones//empresariales relacionadas.
Esto significa que no debe ser necesario duplicar la//información, como los
Detalles de un cliente, en diferentes partes de la empresa.//
4. Un conjunto de reglas
Empresariales que se aplican a todos los datos en la base de//datos. Por lo
Tanto, cuando se ingresan datos desde una función, dichas reglas deben//garantizar
Que esto es consistente con los datos requeridos por otras funciones.//Por
Ejemplo, tal vez exista una regla empresarial que establece que alguien de
Mayor//jerarquía que la persona que hace la solicitud debe aprobar todas las
Solicitudes de//gastos.//Los sistemas ERP se usan casi en todas las grandes
Compañías para apoyar algunas//o todas sus funciones. Por consiguiente, se
Trata de una forma de reutilización de//Base de datos del sistema//Reglas empresariales//Compras//Procesos//Cadena
De//abastecimiento//Procesos//Logística//Procesos//CRM//Procesos//Figura 16.12//
Arquitectura de//un sistema
ERP//444
Capítulo 16 ■
Reutilización de
Software//software
Ampliamente difundida. No obstante, la limitación evidente de este enfoque a//la
Reutilización es que la funcionalidad del sistema se restringe a la
Funcionalidad del//núcleo genérico. Más aún, los procesos y las operaciones de
Una compañía tienen que//expresarse en el lenguaje de configuración del
Sistema, y puede haber desajuste de concordancia//entre los conceptos en la
Empresa y los conceptos incluidos en el lenguaje de//configuración.//Por
Ejemplo, en un sistema ERP que se vendíó a una universidad, debía definirse el//concepto
De cliente. Esto causó grandes dificultades cuando se configuró el sistema. Sin//embargo,
Las universidades tienen múltiples tipos de clientes, como estudiantes,
Agencias//que patrocinan investigaciones, instituciones que proveen fondos
Educativos, etcétera,//cada uno de los cuales posee diferentes carácterísticas.
Ninguno de ellos es realmente//comparable a la noción de un cliente comercial
(esto es, una persona o empresa que//adquiere productos o servicios). Una
Discordancia seria entre el modelo empresarial//usado por el sistema y el del
Comprador del sistema hace altamente probable que el sistema//ERP no cumpla con
Las necesidades reales del comprador (Scott, 1999).//Tanto los productos de
Dominio específico COTS como los sistemas ERP por lo general//requieren de una
Extensa configuración para adaptarlos a los requerimientos de cada//organización
Donde se instalan. Esta configuración puede implicar://
1. Seleccionar la funcionalidad
Requerida del sistema (por ejemplo, al decidir qué//módulos deben incluirse).//
2. Establecer un modelo de datos que
Defina cómo se estructurarán los datos de la organización//en la base de datos
Del sistema.//
3. Definir las reglas empresariales
Que se aplican a dichos datos.//
4. Definir
Las interacciones esperadas con sistemas externos.//
5. Diseñar los formatos de entrada y
Los reportes de salida generados por el sistema.//
6. Diseñar nuevos procesos
Empresariales que se conformen al modelo de proceso subyacente//apoyado por el
Sistema.//
7. Establecer parámetros que definan
Cómo se implementará el sistema en su plataforma//subyacente.//Una vez
Completados los escenarios de configuración, el sistema de solución COTS//está
Listo para las pruebas. Las pruebas son un gran problema cuando los sistemas se
Configuran//en vez de programarse con un lenguaje convencional. Puesto que
Dichos sistemas//se construyen mediante una plataforma fiable, las fallas y
Caídas evidentes del sistema//son relativamente excepcionales. Más bien, los
Problemas con frecuencia son sutiles y se//relacionan con las interacciones
Entre los procesos operacionales y la configuración del//sistema. Esto sólo
Puede ser detectable por parte de los usuarios finales y, por lo tanto,//tal vez
Pase inadvertido durante el proceso de pruebas del sistema. Además, no pueden//usarse
Las pruebas automatizadas de unidad, apoyadas por los frameworks de pruebas//como
JUnit. Es improbable que el sistema subyacente soporte algún tipo de
Automatización//de pruebas, y es posible que no haya especificación completa
Del sistema que pueda//usarse para derivar pruebas del sistema.//16.4 ■
Reutilización de
Productos COTS 445//
16.4.2 Sistemas COTS integrados//Los sistemas COTS integrados son aplicaciones que
Incluyen dos o más productos COTS//o, en ocasiones, sistemas de aplicación
Heredados. Usted podrá usar este enfoque cuando no//existan sistemas COTS
Individuales que cumplan todas sus necesidades, o cuando quiera//integrar un
Nuevo producto COTS con los sistemas que ya utiliza. Los productos COTS//pueden
Interactuar a lo largo de sus interfaces de programación de aplicación (API,
Por//las siglas de Application
Programming Interfaces)
O interfaces de servicio si están definidas.//Alternativamente, pueden
Componerse al conectar la salida de un sistema a la entrada//de otro o al
Actualizar las bases de datos usadas por las aplicaciones COTS.//Para
Desarrollar sistemas usando productos COTS, debe hacer algunas elecciones de//diseño://
1. ¿Cuáles productos COTS ofrecen
Funcionalidad más adecuada? Por lo general,//habrá varios productos COTS disponibles, que
Pueden combinarse en diferentes//formas. Si aún no tiene experiencia con un
Producto COTS, tal vez le resulte difícil//decidir cuál producto es el más
Adecuado.//
2. ¿Cómo se intercambiarán los
Datos? Por lo
General, diferentes productos usan//estructuras y formatos de datos únicos.
Usted tendrá que escribir adaptadores que//conviertan de una representación a
Otra. Dichos adaptadores son sistemas a tiempo//de ejecución que operan junto
Con los productos COTS.//
3.
¿Qué carácterísticas de un
Producto se usarán realmente? Los productos COTS//tal vez incluyan más funcionalidad de la
Necesaria, y la funcionalidad puede duplicarse//a través de diferentes
Productos. Usted tendrá que decidir cuáles carácterísticas//y en cuál producto
Son las más adecuadas para sus requerimientos. Si es posible, también//debe
Negar acceso a la funcionalidad no utilizada, porque esto podría interferir//con
La operación normal del sistema. La falla del primer vuelo del cohete Ariane 5//(Nuseibeh,
1997) fue consecuencia de un problema en un sistema de navegación inercial//del
Sistema Ariane 4 que se reutilizó. Sin embargo, la funcionalidad que falló no//se
Requería en realidad en el Ariane 5.//Considere el siguiente escenario como una
Ilustración de la integración COTS. Una//gran organización pretende desarrollar
Un sistema de compras que permita al personal//realizar pedidos desde su
Escritorio. Al introducir este sistema en la organización,//la compañía estima
Que puede ahorrar cinco millones de dólares al año. Al centralizar las//compras,
El nuevo sistema de adquisición puede garantizar que los pedidos siempre se//realicen
Desde proveedores que ofrecen los mejores precios, y que se reduzcan los costos//de
Papeleo asociados con los pedidos. Como sucede con los sistemas manuales, el
Sistema//implica elegir los bienes disponibles de un proveedor, planear un
Pedido, aprobarlo,//enviar la solicitud a un proveedor, recibir los bienes y
Confirmar el pago.//La compañía tiene un sistema de pedidos heredado que se
Utiliza en una oficina//central de compras. Este software de procesamiento de
Pedidos está integrado con un//sistema existente de facturación y entrega. Para
Crear el nuevo sistema de pedidos,//el sistema heredado se integra con una
Plataforma de comercio electrónico basada en//Web y un sistema de correo
Electrónico que maneje las comunicaciones con los usuarios.//446
Capítulo 16 ■
Reutilización de
Software//En la figura
16.13 se muestra la estructura final del sistema de compras, construida usando//COTS.//Este
Sistema de compras se basa en cliente-servidor y, en el lado del cliente, se
Usa//navegación Web y software de correo electrónico estándar. En el servidor,
La plataforma//de comercio electrónico debe integrarse con el sistema de
Pedidos existente a través de//un adaptador. El sistema de comercio electrónico
Tiene su propio formato para los pedidos,//confirmaciones de entrega, etcétera,
Y éstos se convierten en el formato que usa//el sistema de pedidos. El sistema
De comercio electrónico utiliza el sistema de correo electrónico//para enviar
Notificaciones a los usuarios, pero el sistema de pedidos nunca se diseñó//para
Ello. Por lo tanto, debe escribirse otro adaptador para convertir las
Notificaciones del//sistema de pedidos en mensajes de correo electrónico.//Es
Posible ahorrar meses, a veces años, de esfuerzo de implementación, y el tiempo//de
Desarrollo e implementación de un sistema puede reducirse drásticamente usando
Un//enfoque COTS integrado. El sistema de compras descrito anteriormente se
Implementó//y desplegó en una compañía muy grande en nueve meses, en vez de los
Tres años que se//requerirían, de acuerdo con las estimaciones, para
Desarrollar el sistema en Java.//La integración COTS puede simplificarse al
Usar un enfoque orientado a servicios. En//esencia, un enfoque orientado a
Servicios significa permitir el acceso a la funcionalidad//del sistema de
Aplicación mediante una interfaz de servicio estándar, con un servicio//para
Cada unidad discreta de funcionalidad. Algunas aplicaciones pueden ofrecer una//interfaz
De servicio, pero, en ocasiones, ésta debe implementarse mediante el integrador//de
Sistema. En esencia, debe programarse una capa (wrapper) que oculte la aplicación//y
Ofrezca servicios claros en el exterior (figura 16.14). Este enfoque es valioso
En particular//para los sistemas heredados que deben integrarse con sistemas de
Aplicación más//recientes.//En principio, la integración de los productos COTS
Es igual que la integración de cualquier//otro componente. Deben entenderse las
Interfaces del sistema y usarlas de forma//exclusiva para comunicarse con el
Software; habrá que negociar requerimientos específicos//contra desarrollo
Rápido y de reutilización, y diseñar una arquitectura de sistema que//permita a
Los sistemas COTS operar en conjunto.//Sin embargo, el hecho de que tales
Productos por lo regular sean sistemas grandes por//derecho propio, y que se
Vendan con frecuencia como sistemas independientes, entraña//Cliente//
Navegador Web Sistema de
Correo electrónico//Servidor//
Sistema de//comercio electrónico//Sistema de//Adaptador pedido y
Facturación//Figura 16.13
Sistema Sistema de correo electrónico Adaptador//de procuración
COTS//integrado//16.4 ■ Reutilización de productos COTS 447//problemas adicionales. Boehm y Abts (1999) examinan cuatro
Problemas importantes de//la integración de sistemas COTS://
1. Falta de control sobre la
Funcionalidad y el rendimiento Aunque la interfaz publicada//de un producto indique que ofrece
Las facilidades requeridas, éstas tal vez//no se implementen de manera adecuada
O se desempeñen mínimamente. El producto//podría tener operaciones ocultas que
Interfieran con su uso en una situación//específica. Corregir dichos problemas
Puede ser una prioridad para el integrador//de productos COTS, pero tal vez no
Sea una preocupación real para el proveedor del//producto. Es posible que los
Usuarios simplemente tengan que encontrar una solución//a los problemas si
Quieren reutilizar el producto COTS.//
2. Problemas
Con la interoperabilidad del sistema COTS A veces es difícil hacer//que los productos COTS
Funcionen en conjunto, porque cada producto establece sus//propias suposiciones
Sobre cómo se utilizará. Garlan y sus colaboradores (1995), al//reportar su
Experiencia para tratar de integrar cuatro productos COTS, descubrieron//que
Tres de estos productos se basaban en eventos, pero cada uno usaba un modelo//diferente
De eventos. Cada sistema supuso que tenía acceso exclusivo a la cola de//eventos.
En consecuencia, la integración fue muy difícil. El proyecto requirió cinco//veces
Más de esfuerzo que el que se pronosticó originalmente. La fecha de entrega//se
Extendíó a dos años en lugar de los seis meses previstos. En un análisis
Retrospectivo//de su trabajo 10 años después, Garlan y sus colaboradores (2009)
Concluyeron//que no se habían resuelto los problemas de integración
Descubiertos. Torchiano y//Morisio (2004) encontraron que la falta de
Cumplimiento con los estándares en algunos//productos COTS significaba que la
Integración era más difícil que lo esperado.//
3. Ningún control sobre la evolución del sistema En respuesta a presiones del
Mercado,//los proveedores de productos COTS toman sus propias decisiones acerca
De//cambios al sistema. En particular para productos PC, se generan a menudo
Nuevas//versiones, aunque tal vez no sean compatibles con todas las versiones
Anteriores.//Las nuevas versiones pueden tener funcionalidad adicional no
Deseada, y las versiones//anteriores podrían quedar fuera de disposición y no
Recibir servicios de apoyo.//
4.
Soporte de los proveedores COTS El nivel de soporte disponible de
Los proveedores//COTS varía ampliamente. El servicio de soporte del proveedor
Es específicamente//importante cuando surgen problemas, pues los
Desarrolladores no tienen//acceso al código fuente ni a la documentación
Detallada del sistema. Aunque quizá//Sistema//de aplicación//Capa de servicio//Servicios
Servicios//Figura
16.14
Capas//de
La aplicación//448
Capítulo 16 ■ Reutilización de software//los proveedores se comprometan a brindar servicios de asesoría,
Tanto el mercado//cambiante como las circunstancias económicas podrían
Dificultar el cumplimiento//de este compromiso. Por ejemplo, un proveedor de
Sistemas COTS tal vez decida discontinuar//un producto debido a una demanda
Limitada, o quizás otra firma tome el control//de la compañía proveedora y no
Quiera dar servicios de apoyo a los clientes que//adquirieron ciertos
Productos.//Boehm y Abts suponen que, en muchos casos, el costo de
Mantenimiento y evolución//del sistema es mayor para los sistemas COTS
Integrados. Todas las dificultades anteriores//son problemas del ciclo de vida
Que no sólo afectan el desarrollo inicial del sistema.//Cuanto mayor sea el
Número de personas implicadas en el mantenimiento del sistema que//se distancie
De los desarrolladores originales del sistema, más probable será que surjan//dificultades
Reales con los productos COTS integrados//