Revista Digital Universitaria
ISSN: 1607 - 6079 Publicación mensual
 
1 de diciembre de 2011 Vol.12, No.12
  Inicio Ejemplares Directorio Quiénes somos Busca artículos Vínculos Contacto Mapa de sitio
 
Documento sin título
 
Visualización de programas utilizando técnicas orientadas a aspectos
Juan Alberto Hernández Martínez y Ulises Juárez Martínez
CITA
PDF
   
Programación orientada a aspectos...
Visualización del método BubbleSort
Conclusiones y Bibliografía
Aumentar Letra Disminuir Letra Disminuir Letra   facebook
twitter
google
 

Introducción


La programación siempre ha requerido de un nivel de análisis demasiado alto, sin importar el paradigma sobre el cual se trabaja, siendo la estructura de datos una de las áreas que más complejidad demandan. Es muy difícil en la mayoría de los casos saber con exactitud lo que realiza cada algoritmo. Considerado este un problema que afecta en gran medida al aprendizaje de alumnos, debemos considerar que es importante el darle una óptima solución. La Visualización de Programas aborda en gran parte este tipo de situaciones, tratando de hacer visible el funcionamiento de un programa dado, sin embargo, la forma en como se desarrollan las herramientas que pueden dar una solución, no es la mejor.

En este artículo se destacan algunos puntos importantes en el enfoque de la Visualización de Programas, como una buena opción para mejorar el entendimiento de algoritmos. Se presentan algunas herramientas centradas en esta área computacional y se hace mención al paradigma de la Programación Orientada a Aspectos, como alternativa para el desarrollo de aplicaciones enfocadas a la Visualización de Programas, sin alterar el código fuente de los programas originales.

Desarrollo

Porqué la Visualización de Programas

Si bien ya se ha mencionado anteriormente que la programación implica un alto nivel de abstracción, sin importar el paradigma sobre el cual se trabaja, una buena alternativa para lograr esa comprensión del funcionamiento de algoritmos es la Visualización de Programas. En demasiadas ocasiones, el usuario dedicado a la programación se enfrenta a pequeños, medianos y grandes códigos, los cuales cuentan con un grado de complejidad bastante considerable. En algunas ocasiones se puede claramente saber cuál es toda la serie de pasos que se siguen para que el resultado devuelto por el mismo sea el correcto, pero ¿qué pasa cuando el usuario necesita saber el funcionamiento de algoritmos que implican recursividad o estructura de datos? Lo más probable es que sea demasiado complejo saber a ciencia cierta qué hace el programa cada vez que se ejecuta y, por consecuencia, no se tenga la total seguridad de entenderlo. Dadas estas situaciones, la Visualización de Programas funge como área auxiliar a dichas problemáticas, sirviendo en muchas ocasiones como un aspecto importante en términos educacionales, dado que permite al usuario entender de manera clara programas complejos.

Visualización de Programas

La Visualización de Programas presenta vistas del código fuente del programa y de las estructuras de datos. La visualización estática del programa realiza un análisis del texto del mismo y provee la información que es válida para todas las ejecuciones independientemente de su entrada. Los sistemas de Visualización de Programas emplean editores sintácticos u optimizadores de código que producen un mejoramiento de la impresión, como indentado, diferencias de colores entre palabras reservadas y otros identificadores, la representación gráfica de la estructura del programa y de los datos; pero no pueden explicar la conducta del programa, ya que esto depende de los datos de entrada además del código mismo. Una representación dinámica del programa provee información acerca de la ejecución de un programa específico, sobre un conjunto de datos de entrada. Se puede realizar, por ejemplo, destacando las líneas de código fuente cuando éstas están siendo ejecutadas, estableciendo la pila de invocaciones de procesos y mostrando cómo los valores de los datos cambian mientras el programa se está ejecutando (Moroni y Señas, 2002).

Herramientas para Visualización de Programas


Pérez y Velázquez (2009) reportan la aplicación SRec, la cual aporta varias vistas complementarias sobre la ejecución de programas recursivos. La aplicación cuenta con múltiples opciones y facilidades educativas, que convierten su manejo en una actividad sencilla e intuitiva, minimizando su tiempo de implantación y aprendizaje, y facilitando así la labor docente de manera notable.

Almeida, et al. (2009) presentan a EDApplets, una aplicación Web orientada a la enseñanza/aprendizaje de la programación y la algorítmica en las ingenierías. Basada en la tecnología de Applets Java, está orientada a la animación y la visualización mediante trazas de algoritmos y estructuras de datos. La herramienta permite cubrir diversos aspectos en una enseñanza que está dirigida a distintos tipos de estilos de aprendizaje: activo/reflexivo, metódico/intuitivo, visual/oral, etcétera.

Soler y Lezcano (2009) presentan el sistema de visualización de programas VisualProg, que consta de tres funcionalidades principales: edición, ejecución y animación de programas escritos en Sucel, un lenguaje sencillo con similitud al estilo de programación C/C++/Java.

Wannda et al. (2001) presentan un ambiente de programación gráfico interactivo para Windows, el cual es llamado Alice. Ofrece una completa secuencia de comandos y ambiente de prototipos para el comportamiento de objetos 3D. Soporta recursividad como medio para crear animaciones más poderosas, con acciones repetidas que acercan al usuario cada vez más a una tarea completa.

Diferencia entre depuración y visualización

Cuando se habla de Visualización de Programas, inmediatamente se asocia con los depuradores, causando en la mayoría de las ocasiones mucha confusión y, sobre todo, una mala definición acerca del área mencionada. Este tipo de confusiones viene dado principalmente por la cercanía que existe entre la Visualización de Programas y la Depuración, sin embargo ambas áreas tienen un objetivo bastante diferente. El principal objetivo de la Depuración es eliminar los errores de los programas. En general, la Depuración es un proceso que busca detectar, diagnosticar y corregir los errores en un programa dado. La depuración permite mostrar el valor que toma en determinado momento una variable dentro de un código especifico, sin embargo, no está planteado para enseñar al usuario y dar la posibilidad de que obtenga un conocimiento general del funcionamiento de un algoritmo. Simplemente muestra información en puntos específicos, para posteriormente corregirlos en caso de ser necesario.

Ejemplificando lo anterior, podríamos suponer un código que permita ordenar un arreglo de números, en términos de Visualización de Programas. Visualizar al usuario toda una traza de resultados intermedios en cada iteración durante la ejecución del programa, es una de las alternativas. De esta manera el usuario puede ver cómo y cuál fue el cambio de valor en cada iteración para las variables involucradas dentro del código, desde el inicio de la ejecución hasta su final. Si la ordenación es un éxito o no, eso es algo que la visualización no puede solucionar, dado que su principal objetivo es mostrar el funcionamiento de un algoritmo en ejecución. Retomando el mismo ejemplo en términos de Depuración, la situación es diferente. Una vez que sabemos que nuestro programa ordena mal los números, se indica cierto punto dentro de nuestro código para ver si ahí posiblemente se hacen mal las cosas, pero en ningún momento nos hemos percatado de cuál es el funcionamiento del código. Simplemente estamos intentando reparar algo que está mal. He aquí una notable diferencia entre ambas áreas, y es por este detalle que un depurador no es considerado una herramienta que visualice programas.


 
  subir        
 
metadatos en la red
  Editorial
 




Licencia de Creative Commons
Esta obra está bajo una licencia de Creative Commons