
Miércoles 6 de Septiembre, 15:30 hs. (Aula IV)
Alvaro Ortigosa
ISISTAN - UNICEN
Disponer de documentación de calidad es un requisito
fundamental para el éxito del proceso de desarrollo de software.
Los documentos fluyen a través de este proceso, comunicando decisiones
tomadas durante las distintas etapas que lo componen. Más aún,
la documentación desempeña un papel central en la reutilización
de software, donde es necesario que cada componente de software a ser reutilizada
sea bien comprendida.
Este aspecto cobra especial importancia en el caso de
los frameworks de aplicaciones orientados a objetos. Estos frameworks constituyen
un gran avance en la reutilización de software porque, más
que la reutilización de código de componentes individuales,
permiten reutilizar el diseño de sistemas o subsistemas. Sin embargo,
dependiendo de la complejidad del framework, el desarrollo de nuevas aplicaciones
es, generalmente, una tarea difícil y trabajosa, principalmente
en el caso de usuarios inexpertos. Esta dificultad constituye el mayor
obstáculo a una utilización más generalizada de esta
tecnología.
Por este motivo, durante los últimos 10 años
se ha invertido un considerable esfuerzo en la creación de técnicas
de documentación más poderosas. Las técnicas tradicionales
de documentación de diseño y código orientado a objetos
no son suficientes para describir el complejo diseño de un framework,
especialmente si se tienen en cuenta los distintos tipos de usuarios que
pueden necesitar la documentación del mismo. Cuatro tipo de usuarios
de frameworks han sido identificados: programadores de aplicaciones, encargados
de mantenimiento del framework, diseñadores de otros frameworks
y verificadores. Considerando esta variedad de tipos de usuarios, distintos
métodos de documentación han sido específicamente
propuestos para documentar frameworks. Algunos de ellos son informales
y prescriptivos, es decir, describen cómo el framework debe ser
utilizado. Otros métodos, en cambio, son más formales y descriptivos:
describen el diseño del framework y el usuario debe deducir cómo
utilizarlo. Cada método está orientado a un determinado tipo
de usuario y, si bien algunos son capaces de describir adecuadamente algunos
aspectos del framework, ninguno consigue satisfacer con éxito todos
los requisitos de la documentación de frameworks. Esto es especialmente
cierto desde el punto de vista de los programadores de aplicaciones.
Estas limitaciones llevan a pensar que resulta necesario
complementar la documentación con herramientas que ayuden de forma
efectiva al usuario en la instanciación de un framework determinado.
En la comunidad de Ingeniería de Software cuenta cada día
con mayor aceptación la idea de que es esencial la utilización
de herramientas más inteligentes para conseguir una mayor eficiencia
en el desarrollo de software, especialmente en términos de reducir
los costes de desarrollo de software confiable. En esta dirección,
entre las diferentes propuestas que se han realizado, destacan los llamados
libros de recetas interactivas (active cookbooks). Estos libros proporcionan
al usuario una interfaz que le permite acceder a recetas que le proveen
ayuda semiautomatizada para el proceso de instanciación. Las recetas
no explican los motivos subyacentes a las soluciones que proponen, sino
únicamente la forma en que el problema planteado se puede resolver
mediante la utilización del framework. Este tipo de asistencia simplifica
la instanciación de funcionalidad prevista a priori, ya que para
una persona resulta sencillo seguir una lista de instrucciones detalladas
paso a paso. Sin embargo, es precisamente su secuencialidad estricta el
aspecto que representa una de las desventajas fundamentales de esta forma
de abordar el problema. El usuario de un manual de recetas interactivas
tiene que limitarse a seguir cada receta del principio al final hasta el
último detalle, sin ningún grado de flexibilidad, o resignarse
a no utilizar la herramienta.
En este sentido, la herramienta de asistencia ideal sería
aquella que permita al usuario del framework describir la funcionalidad
requerida y, en función de eso, genere automáticamente una
aplicación que provea esa funcionalidad. Aunque actualmente no es
posible ofrecer este tipo de herramientas, sí es posible construir
herramientas inteligentes que le indiquen al usuario qué debe hacer
para implementar una determinada funcionalidad. De esta forma se potencia
al máximo tanto la capacidad del ordenador para planificar y realizar
actividades repetitivas y rutinarias como la capacidad de la persona para
tomar decisiones en función de análisis más profundos
y matizados.
En esta charla se presentará SmartBooks, un método
para documentar y asistir la instanciación de frameworks. El objetivo
de SmartBooks es permitir la construcción de sistemas inteligentes
de documentación y seguimiento del proceso de instanciación,
que puedan guiar activamente el proceso de instanciación, pero que
al mismo tiempo sean lo suficientemente flexibles para adaptarse a las
distintas necesidades de los usuarios.
En consecuencia, SmartBooks se basa en la idea de ofrecer
explicaciones procedurales sensibles al contexto, de acuerdo con la funcionalidad
requerida para la nueva aplicación. Para lograr flexibilidad y adaptabilidad,
SmartBooks propone la utilización de explicaciones generadas dinámicamente
utilizando técnicas de planificación, en particular planificación
con minimización de compromisos. Las explicaciones generadas, denominadas
planes de instanciación, son estructuradas como una secuencia de
actividades que el usuario debería ejecutar para implementar la
aplicación.
Para mayor información comuníquese a jaiio2000@exa.unicen.edu.ar