Bases de datos desktop y desarrollo cliente/servidor
A lo largo de los años 90 estamos viviendo una verdadera revolución en el mundo de los sistemas de información. Los nuevos proyectos informáticos se afrontan ahora disponiendo de una tecnología que posiblemente no hubiéramos pensado tener al alcance de nuestra mano hace tan solo 10 o 15 años. Nuevos conceptos que ya no son tan nuevos, pero que eran toría hace solo unos años, hoy en día son ya una realidad y por lo tanto se tienen en cuenta cuando se afronta una renovación de cualquier sistema de información.
Entre las diversas razones que han permitido acelerar el uso de estas nuevas tecnologías (Bases de Datos Relacionales, Sistemas Abiertos, Redes Locales, Lenguajes de 4ª Generación, Arquitectura Cliente/Servidor, Orientación a Objeto, etc.) hay que destacar la madurez de las mismas, ya existen en el mercado sistemas que permiten implantarlas con un alto grado de fiabilidad, aunque se deberán tener en cuenta algunas consideraciones que enumeraremos mas adelante.
Por otra parte, otro factor decisivo ha sido la disminución de los costes en los componentes tanto hardware como software necesarios para su implementación. Este abaratamiento se debe en gran medida a la aparición de los sistemas personales (Pc's), los Sistemas Operativos Desktop como DOS, WINDOWS, OS/2, Netware, y los Interfaces Gráficos de Usuario (IGU).
Las ventajas que se obtienen con estos nuevos entornos no solamente son aprovechadas por el usuario final, que consigue aplicaciones mas intuitivas, integradas y potentes, también los desarrolladores dispondrán de herramientas mas potentes, que les permitirán un diseño y generación mas rápido y un mantenimiento mas fácil y dinámico.
Origen de los productos existentes
La mayor parte de los productos actualmente en el mercado, BBDD, Herramientas de Desarrollo y Lenguajes de 4GL, han seguido desde su aparición dos vías opuestas, una ascendente y otra descendente.
Por una parte, los productos que apareciendo para sistemas medios y altos, como Unix o VMS, se han implementado ya sea con versiones completas o de funcionalidad limitada para otros sistemas operativos. departamentales y personales. Por otro lado las herramientas que naciendo claramente alrededor del PC se desarrollan en un claro intento de posicionarse en entornos corporativos mas amplios.
La razón de esta convergencia viene dada por una necesidad creciente de acercar a los usuarios toda la información contenida en los grandes sistemas que hasta ahora solo era accesible por las aplicaciones cerradas. Uniéndola con la utilizada en los entornos personales y ofimáticos.
Quizá los primeros estén en mejor posición para implementarse en plataformas Desktop que viceversa, ya que han sido diseñados para garantizar la integridad, el funcionamiento ininterrumpido, el control de transacciones y el rendimiento, necesarios para cumplir su cometido de forma correcta en los grandes entornos. Los productos clásicos de plataforma PC, aún aportando la sencillez de uso que les hace tan populares, no siempre aportan lo necesario para escalar nuestras aplicaciones a plataformas y sistemas de ámbito corporativo.
Cliente/servidor
El término Cliente/Servidor, lleva ya algunos años en el mercado y como todas nueva tecnología, cuando aparece, automáticamente algunos fabricantes tienden a hacer un uso indiscriminado de ellas, contribuyendo a crear mas confusión sobre su significado exacto y sobre donde se deben de aplicar para conseguir lo mejor de las mismas.
A fin de aclarar conceptos y antes de proseguir, será necesario hacer algunas consideraciones:
- Podríamos definir cliente/servidor como la arquitectura que permite repartir las diversas funciones de un proceso entre dos o mas sistemas de una red, especializando a cada uno de ellos para lo que estén mejor dotados.
- No es conveniente confundir "cliente/servidor" con otros conceptos como "entorno gráfico", como algunas veces se ha pretendido asociar; existen productos en el mercado que permiten tener una distribución de proceso entre sistemas antes de que apareciesen los entornos gráficos. Por ejemplo en Progress se dispone de capacidad cliente/servidor desde el lanzamiento de la versión 5, hace ya mas de 4 años, en tanto que la versión realmente gráfica del producto aparece en septiembre de 1993, con la aparición de Progress 7.
Todo proceso se puede descomponer en tres elementos:
- El interface de usuario (IGU)
- la lógica del programa
- el acceso y almacenamiento de los datos.
Aunque este reparto de funciones es valida desde siempre, es quizás con la aparición de los IGU y cliente/servidor cuando toma realmente importancia, pues es entonces cuando cada uno de estos elementos puede ser implementado en un sistema aparte e incluso pueden estar distribuidos en mas de uno.
Algo que parece obvio al plantear una solución cliente/servidor, es la obtención de un mayor rendimiento implícito, por el simple hecho de aumentar el numero de procesadores dedicando cada uno a una tarea especifica. Sin embargo, no siempre esto es así, debido sobre todo a la sobrecarga en la red producida por el numero de mensajes entre los diversos componentes, IGU, lógica y datos.
Sin lugar a dudas cliente/servidor es hoy ya una tecnología madura y existen en el mercado productos que así lo demuestran. Aunque deberemos, sin embargo, hacer un buen análisis de los mismos, con el fin de conocer como implementan cada uno de ellos cliente/servidor, porque de esto dependerá el éxito de nuestro sistema, y la consecución de unos buenos rendimientos.
Orientación a Objetos
La Orientación a Objetos (OO) es una de las tecnologías emergentes hoy en día y de las que oiremos hablar bastante en los próximos años. El termino se puede aplicar a diferentes ramas del mundo informatico, desde el Diseño OO hasta Bases de Datos OO, pasando por el Análisis OO, la programación OO o el Interfaz de Usuario (IGU). OO. La Orientación a Objetos es un medio para conseguir un fin y este es el que normalmente buscan las organizaciones que desarrollan aplicaciones y los usuarios en definitiva. Podríamos decir que el fin es facilitar el proceso de desarrollo en sistemas complejos y poder diseñar y construir aplicaciones aprovechando al máximo la reutilización de componentes y la independencia de los mismos.
De la misma manera que la implementación de una arquitectura Cliente/Servidor ha sido y es un proceso que se puede hacer por etapas, el paso a Orientación a Objeto debe de poderse hacer también por fases. En Progress pensamos que al hacer la evaluación de producto debemos de seleccionar solamente aquellos que nos permitan incorporar OO y a la vez poder seguir haciendo con la misma herramienta aquellos procesos o programas que hasta ahora hemos necesitado, es decir informes, "batch", etc.
Dentro de los productos Orientados al desarrollo de Objetos, existen por una parte Lenguajes como el C++ o Smalltalk, y diversas herramientas de Desarrollo basadas en ellos y por otra productos basados en Lenguajes 4GL, a los que podremos denominar OO4GL's.
Las ventajas de unas y otras podríamos considerar que son las mismas que existen ahora entre los 3GL clásicos y los 4GL.
El futuro
Los próximos años nos brindaran una oportunidad única, en la cual se van a utilizar todas estas tecnologías aquí comentadas de forma simultánea. Los desarrollos se plantearan mas y mas Orientados a Objeto, y para ello se utilizaran los Lenguajes y las Herramientas que el mercado pone en nuestras manos.
Utilizando un Lenguaje OO4GL, además de aportarnos las ventajas que la Programación OO conlleva, dispondremos de otras que son inherentes a los productos base en cuestión, y que van embebidas en la propia tecnología del fabricante, como portabilidad de código, redu