Desarrollo de soluciones de negocio en los entornos corporativos

El software en un entorno global. Capitulo 4

El desarrollo basado en componentes es, según los analistas, una de las principales tendencias en el actual mercado del software . Los componentes son la clave fundamental de la informática distribuida y de la migración de aplicaciones existentes a arquitecturas orientadas a la Web, hoy por hoy . Las empresas dedicadas al desarrollo, en su búsqueda de soluciones que permitan a sus equipos de programación ahorrar tiempo y esfuerzos, tienen cada vez más claro que no es necesario “reinventar la rueda”, es decir, que la reutilización de código ya escrito, bien propio o diseñado por terceros, es la mejor opción .

Una definición técnica de componente, diría que se trata de piezas de código con una funcionalidad determinada y que son totalmente ajenos a elementos externos como pueden ser otros programas, procesos o servicios . Dicho de otra manera, la pieza de código de cada componente se ejecuta de manera independiente, aporta servicios concretos y sigue unas normas comunes para que cualquier aplicación ( orientada a componentes ) pueda utilizarlas . Para un simple y práctico programador, un componente no es más que algo que se elige de una paleta, que se introduce en los formularios o fichas y que realiza mucho trabajo sucio, simplificando al máximo el programa que se está desarrollando .

El Santo Grial

La reutilización de código a gran escala es el Santo Grial de la tecnología de objetos . Aproximaciones tradicionales como las librerías de clase C++ han ayudado, pero no son suficientes, principalmente porque no existe en la actualidad un mercado de terceros para objetos reutilizables empaquetados como librerías de clase .

Sin embargo, sí existe este mercado para la tecnología de códigos reutilizables, como los objetos creados con el estándar COM ( Component Object Model ) , el modelo objeto que sirve de pilar básico de la tecnología de componentes . Cualquier otro software puede reutilizar fácilmente los métodos de un objeto COM, independientemente de cómo esté empaquetado . Por ejemplo, muchas empresas venden en la actualidad componentes empaquetados como controles ActiveX -componentes reutilizables basados en COM para aplicaciones desktop- .

No obstante, el empaquetamiento de objetos COM reutilizables no se tiene por qué limitar a ActiveX . También pueden ser construidos dentro de aplicaciones para usuarios finales, de manera que las aplicaciones que aprovechan las ventajas de los objetos COM muestran sus funcionalidades no sólo a los usuarios sino también a cualquier otro software que pueda necesitar su utilización . Los componentes, unidos, son capaces de proporcionar un buen número de servicios muy útiles en el entorno empresarial, y permitir, asímismo, la construcción de nuevas aplicaciones .

Un tipo especial de los objetos COM, son los DCOM o COM distribuidos . Se trata de una extensión que soporta comunicación entre objetos situados en distintos ordenadores interconectados a través de una red local, Internet o cualquier otro sistema .

Ventajas

La utilización de los servicios que estos componentes son capaces de proporcionar para la construcción de aplicaciones se traduce en un buen número de beneficios desde el punto de vista de los desarrolladores de soluciones . En primer lugar, los expertos aseguran que el desarrollo basado en componentes incrementa considerablemente la calidad y fiablidad del software . Además, aunque lleva cierto tiempo comprender la utilización de un componente ya existente, es a todas luces mucho más rápido que escribir uno nuevo desde cero, así como mucho más barato en términos de ahorro a largo plazo en mantenimiento .

En este sentido, la tecnología de componentes reduce considerablemente los costes de desarrollo porque construir sobre componentes existentes minimiza la redacción y comprobación de nuevos códigos .

El desarrollo basado en componentes permite crear aplicaciones que se integran perfectamente con las soluciones y sistemas que los usuarios tienen ya instaladas .

En muchas organizaciones, además, los empleados cada vez tienen que realizar un número mayor de actividades que van más allá de las fronteras tradicionales de su labor . Por ello, las soluciones empresariales deben permitir a estos usuarios abarcar todas esas actividades y ejecutar funcionalidades cada vez más complejas sin la necesidad de aprender a manejar las aplicaciones desde el principio, y los componentes son una de las opciones más válidas, en este sentido . Por ejemplo, un usuario corporativo debe ser capaz de localizar, visualizar y modificar la información referente a un cliente de una manera consistente a través de todas las aplicaciones incluidas en el sistema .

Aquellas arquitecturas basadas en componentes con un cierto nivel de efectividad, permite la creación de estos componentes y del código que los utiliza en una gran variedad de lenguajes y con una amplia gama de herramientas . De esta manera, los desarrolladores de software pueden moverse en el entorno que prefieran y seguir creando y utilizando los servicios basados en el estándar COM con la misma efectividad . Por último, el programador podrá centrarse en resolver nuevos problemas, en vez de perder el tiempo reinventando las soluciones existentes ya que de la misma manera que un sistema operativo proporciona servicios estándar de infraestructura, un conjunto sólido de servicios estándar de aplicaciones liberará a los desarrolladores de este tipo de preocupaciones .

Fundamentos de los COM

Técnicamente, un COM es una arquitectura de componentes de software que cumple las características siguientes: define un estándar binario para interoperatividad de componentes, es independiente del lenguaje de programación, es multiplataforma y es extensible . Además, debe ofrecer mecanismos para la comunicación entre componentes ( incluso a distancia ) , para gestionar la memoria compartida entre componentes, para informar de su estado o posibles errores y para su carga dinámica en el sistema .

Un COM está constituido por uno o más bloques denominados interfaces, los cuales engloban un conjunto de prototipos de funciones o métodos con un propósito determinado . Precisamente con el fin de obtener un estándar binario, la interfaz contiene una tabla ( llamada vtable ) de funciones virtuales en memoria . También existe un modo estándar de llamada a las funciones a través de los punteros contenidos en las vtables, soportado por cualquier lenguaje que sea capaz de utilizar punteros a funciones . En realidad se trata de una doble indirección, pues el proceso cliente manipula un puntero que apunta a un puntero de la vtable .

Según lo expuesto, los clientes sólo interactuan con punteros a interfaces y nunca es posible tener acceso directo al área de datos del componente, lo que asegura la total encapsulación .

Un componente puede tener varias interfaces, cada uno de los cuales con un conjunto de funciones que da una funcionalidad específica . Existe otra razón por la cual puede existir más de una interfaz, que es la revisión del componente, como ahora veremos . Por un lado, cada interfaz tiene su propio identificador, un único y global identificador denominado GUID . Cuando se accede a la interfaz, se comprueba que el identificador es el adecuado . Por otro lado, no se admiten revisiones de las interfaces, siendo éstas inmutables, ni para añadir funciones ni para corregir o modificar atributos de las ya existentes . De esta forma se evitan conflictos ocasionados por la evolución natural de los mismos .

El lenguaje que define las interfaces y sus relaciones se ha bautizado con el nombre de IDL ( Interface Description Language ) . Una revisión de un componente suele acarrear o bien la generación de un nuevo componente en su total

Viñeta publicada el 20 de febrero de 1870 en La Flaca n.º 35 Tendencias

ny2 ACTUALIDAD

ny2 Sociedad de la información

Día de la Movilidad y el BYOD Coffee Break