Novell AppWare se presenta como paradigma de la programación visual, enfocado a la creación rápida de aplicaciones, incluyendo sistemas de soporte de redes.

No cabe la menor duda que el diseño visual y la creación de aplicaciones cliente/servidor marcan, de una manera muy profunda, las directrices de los más modernos sistemas de programación. Novell no tenía, hasta el presente, ninguna baza que presentar en este ámbito y centrada en los gestores de redes (recordemos el papel casi hegemónico de Novell NetWare) y, más recientemente, en las aplicaciones finales (WordPerfect, Quattro Pro, Presentations y demás), nadie creía que tuviera tentaciones de adentrarse en ningún tipo de programación que no estuviera directamente enfocada a potenciar sus dos líneas estratégicas.

Un cierto grado de colaboración con Borland, en un principio, y un ulterior desarrollo propio, han dado como resultado Novell AppWare, casi un perfecto desconocido hasta que vio la luz su versión 1.2, que además acompaña a Novell Perfect Office Professional. Realmente se trata de una aplicación inusual para una suite, representación por excelencia de aplicaciones para usuarios finales y clientes corporativos (GroupWare, como se tiende a denominarlos y para los que Novell proporciona servicios específicos a través de GroupWise, también incluido en Perfect Office).

Dicho esto, Novell AppWare V. 1.2 es un resultado bastante satisfactorio, aunque se nota bastante la restricción impuesta por una, tal vez excesiva, carga de lo visual, que resta cierta flexibilidad al producto. En el estado actual de la tecnología, no hay herramientas absolutamente visuales, a menos que su simplicidad sea manifiesta. Algo de esto, sin ser llamativo al máximo o preocupante, le sucede a Novell AppWare, que carece de un lenguaje soporte como tal.

Realmente parece que nos encontramos un poco entre la espada y la pared. Una herramienta de programación no casa en una suite o en ámbitos poco amigos del código fuente puro y duro. Pero una herramienta absolutamente visual no da para desarrollos de una entidad que pase de lo mediano (siendo benévolos). Ahí, entre uno y otro está Novell AppWare, pero veamos precisamente qué es capaz de hacer y cómo exactamente se puede realizar.

Señalar que Novell Appware 1.2 se distribuye, conjuntamente en el mismo paquete, para las plataformas Microsoft Windows y Apple Macintosh. Un punto muy a tener en cuenta para aquellos que precisen de programación multiplataforma.

Novell AppWare, visto en su globalidad

Novell AppWare se presenta en formato CD-ROM, con multitud de añadidos que potencian sus prestaciones básicas. Los elementos singulares de AppWare se guardan en archivos ALM (AppWare Loadable Module), que no son otra cosa que código precompilado en bibliotecas de enlace dinámico (las conocidas DLL, Dynamic Link Library). El código generado es muy similar al de Visual Basic, en el que el componente interpretado tiene un papel bastante relevante.

El diseño de un programa AppWare puede ser absolutamente visual, aunque cabe la posibilidad de llamar a subrutinas (usando el lenguaje C como base sintáctica) e incluso crear funciones externas en otros lenguajes (Borland y Microsoft C++ y Borland Turbo Pascal, a través de un kit complementario, etc.) e integrarlas como módulos ALM.

Si toma la referencia de un diagrama de flujo, en el que se enlazan convenientemente etapas, ya se habrá formado una idea aproximada de lo que es un diseño AppWare. Obviamente, las diferencias con una estructura lineal de flujo son obvias, entre otras cuestiones debido ala naturaleza de eventos (mensajes y respuestas) en que está basado Windows (y todos los modernos sistemas operativos gráficos).

El entorno de trabajo no está basado, como parece ser la norma en los más recientes entornos de desarrollo visual, en formularios, sobre los que se insertan controles y se establecen enlaces y funciones de respuesta. Por contra, la base son piezas de código (una de las más importantes es la ventana de la aplicación) que se van incluyendo en una ventana de diseño de la funcionalidad de la aplicación. El núcleo neurálgico es, por tanto, piezas de código, que pueden referirse a elementos visuales o a funciones de respuesta, que se enlazan mediante arrastrar y soltar.

Una vez definido el cuerpo de la aplicación, puede probarse el proyecto sin necesidad de compilación y enlazado; es decir, trabajando simplemente en memoria. La velocidad de generación del código ejecutable es más que aceptable y las pruebas y modificaciones pertinentes se pueden llevar a cabo de manera muy ágil. Uno de sus pilares básicos, y más de agradecer, es esta facilidad manifiesta de integrar elementos y probar su comportamiento de manera casi inmediata.

La ventana de diseño de Novell AppWare es del tipo MDI (Multiple Document Interface), presentado inicialmente dos ventanas referentes a objetos y funciones agrupadas por categorías (seleccionadas en una lista adjunta). Los diversos elementos se muestran en forma de iconos con una leyenda y se utilizan seleccionándolos allí y arrastrándolos y soltándolos en donde queremos insertarlos; aparecerán en forma de iconos. Cada uno de ellos dispone de una ayuda contextual, a la que se accede haciendo clic con el botón derecho del ratón sobre el icono, tanto en la ventana en que se agrupan, como en el lugar de inserción en la ventana de diseño.

La programación con AppWare

A los diversos objetos (ventanas, menús, bases de datos, tablas, etc.) se les dota de funcionalidad mediante su asociación a funciones. La asociación se realiza enlazándolos con las funciones mediante líneas que se crear arrastrando y soltando. Ya que son funciones de respuestas ante eventos, sobre la línea de unión se puede desplegar una lista de eventos y seleccionar el que forzará la ejecución de la correspondiente función. Lo mismo se puede hacer entre funciones sucesivas, creando así una estructura semejante a las líneas de un programa, pero con iconos y líneas de enlace.

Una aplicación Novell AppWare comienza por la definición de un nuevo proyecto, que puede contener uno o varios sujetos (subjects), que son ventanas de diseño visual. Por ejemplo, en uno se podrían definir sistemas de menús, en otro la ventana y el flujo de respuestas a mensajes. Una vez asociados los menús con la ventana, por medio de un alias, tendríamos un esqueleto básico de nuestra aplicación.

El diseño de la ventana se realiza en otra ventana separada, a la que se accede con un doble clic sobre el objeto ventana que ha sido depositado en la ventana de diseño base de AppWare. Allí podemos incluirle todo tipo de recursos Windows (por ejemplo, botones de control, cajas de edición, etc.). Su modo de uso nos ha recordado bastante a los editores de recursos tipo Resource Workshop de Borland, o los correspondientes de Microsoft y Symantec.

Durante el trabajo, nos ha parecido algo enrevesado el sistema de asociaciones mediante alias. Por ejemplo, para tener una ventana con un menú hemos de: insertar el objeto ventana, insertar un objeto Menu Bar, otro tipo Menu, los correspondientes a las opciones de menu, asociar las opciones con el menú, el menú con la barra de menús, crear un alias, asociar el alias con la ventana y, finalmente, pasar al diseño de la ventana. Creemos que para operaciones tan habituales, un simple paso debería ser suficiente y podría diseñarse el menú en la ventana de diseño de ventanas. Ciertamente no hemos de introducir una sola línea de código, pero resulta poco intuitivo.

Mucho más claro y fácil de realizar resultan las asociaciones a funciones de respuesta. El método de enlaces mediante arrastrar y soltar está magnificamente implementado y es muy sencillo seleccionar el evento. Sólo hemos de hacer clic sobre la etiqueta que aparece en la línea de unión y escoger en un menú flotante