Visualización OpenGL de sistemas de software

Últimamente he probado algunas herramientas que permiten generar representaciones basadas en OpenGL de distintos aspectos de un proyecto de software.

Esta entrada describe algunos proyectos que encuentro especialmente interesantes en este ámbito.

CodeCity

CodeCity es un proyecto de Richard Wettel escrito en Smalltalk sobre la impresionante plataforma de análisis de software Moose.

CodeCity representa ciertas propiedades de un sistema de software orientado a objetos como una ciudad tridimensional, en la que las clases constituyen edificios, que se agrupan en barrios, que a su vez representan los paquetes. Además, codifica información adicional sobre cada clase, como el número de métodos (altura del edificio), el número de líneas de código (intensidad del color) y el número de atributos (superficie de la base del edificio).

Esta presentación visual permite conocer de un sólo vistazo algunas de las características fundamentales de un sistema de software y establecer comparaciones entre diferentes sistemas. El salón de la fama de CodeCity incluye ejemplos de diferentes sistemas analizados, pudiendo observarse a simple vista sus diferentes diseños. Por ejemplo, estas son las ciudades de los proyectos Moose y JMol, respectivamente:

Representación CodeCity de Moose Suite
Representación CodeCity de JMol

Por si esto fuera poco, CodeCity incluye algunas de las métricas descritas en el libro Object-Oriented Metrics in Practice de Lanza y Marinescu, con lo que es posible mostrar sobre la ciudad 3D mapas que señalan posibles problemas de diseño a nivel de clases y de métodos, como Brain Class, God Class, etc.

Gource

Otro proyecto de visualización basado en OpenGL es Gource. Consiste en una herramienta que genera una representación arborescente de la actividad en un control de versiones, representando los directorios como ramas del árbol y los archivos como hojas.

Es un proyecto similar a CodeSwarm, que ya habíamos probado hace algún tiempo generando este pequeño video, aunque Gource ofrece más información al representar también la estructura de directorios y archivos del proyecto.

Actualmente Gource soporta Git y Mercurial directamente, aunque también es posible usarlo con un repositorio Subversion, como demostramos con el siguiente video que muestra nuestro primeros 9 sprints de desarrollo en el proyecto BKOOL (la canción es It’s-An Italian! del álbum Bassic de 1st Dude con licencia Creative Commons)

BKOOL development until Sprint 9 from Osoco on Vimeo.

Logstalgia

Otra herramienta de visualización espectacular es Logstalgia, del mismo autor que Gource, procesa los registros de acceso de un servidor web, representando las peticiones y respuestas recibidas como un juego Pong, en el que las peticiones se representan como bolas que viajan desde las direcciones IP de los clientes hacia el servidor, representado por la paleta, que devuelve cada una de las bolas, a no ser que se produzca un código de error (por ejemplo, un código 404).

Al igual que Gource, Logstalgia es capaz de generar una salida PPM, con lo que es fácil realizar un video usando ffmpeg. A modo de demostración, el siguiente video muestra el resultado generado con Logstalgia para algo más de un minuto del tráfico recibido por uno de nuestros servidores:

Web access traffic as a Pong game from Osoco on Vimeo.

Otra aplicación especialmente interesante es observar en tiempo real la actividad de un servidor web, lo que se puede conseguir mediante el siguiente comando:

ssh -i KEY_PATH USER@WEB_SERVER tail -f ACCESS_LOG_PATH | logstalgia --sync

Corolario

Esta es tan sólo una muestra de algunas herramientas existentes que he podido probar hasta ahora. El proyecto Moose, mencionado anteriormente, ha dado lugar a un gran número de herramientas de análisis y visualización, que se han desarrollado como subproyectos del mismo.

Más allá de la vistosidad y el efectismo de algunas de estas herramientas, creo que el análisis visual del software puede resultar de gran utilidad a los desarrolladores, con lo que no me sorprendería que este tipo de herramientas empezaran a proliferar y acabarán formando parte integrante de los entornos de desarrollo en un futuro próximo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>