Capítulo 4. Técnicas y herramientas

Sistema de Documentación: SGML(DocBook v3.1)/gtk-doc-tools v0.3

He utilizado SGML (Standard Generalized Markup Language) por su flexibilidad, este sistema permite dar significado a las distintas partes de un documento de manera que posteriormente se pueden mecanizar muchas de las tareas de elaboración. Ya que el documento no tiene formato sino significado, se pueden asignar distintos estilos de formato según sea el soporte de destino: Papel, Paginas web, PostScript, Portable Document Format, Braille... etc.

Concretamente he elegido el DTD (Document Type Definition) DocBook ya que parece ser el estándar de facto en la documentación de productos software, utilizado por empresas como Hewelt Packart, SUN MicroSystems u O'Reilly.

Por ser un estándar internacional (ISO 8879) es totalmente independiente del software utilizado y totalmente portable, al contrario que otros formatos propietarios como Word, WordPerfect, QuarkXpress...

Como ventaja adicional, es un formato basado en texto, y no en caracteres binarios no imprimibles, lo que permite un control de cambios más fácil, especialmente con herramientas como CVS (Concurrent Version System).

También he utilizado gtk-doc-tools, un sistema de generación de documentación SGML a partir de comentarios estructurados dentro del código fuente del programa. Es el sistema utilizado en GTK+ y GNOME para la creación del manual de referencia del API.

API de programación: GNOME v1.2.4/GTK+ v1.2.8/Xwindow v3.3.6

GTK+, una biblioteca de elementos gráficos inicialmente apoyada en Xwindow, que está siendo portada a Win32, fue originalmente desarrollada para satisfacer las necesidades del magnífico programa de tratamiento fotográfico GIMP (GNU Image Manipulation Program) y progresivamente se ha convertido en el estándar de facto para la programación de aplicaciones gráficas en el mundo del software libre, desplazando a la todopoderosa Motif. Posteriormente surgió la iniciativa, de manos de Miguel de Icaza de crear un entorno de programación más cómodo y flexible que denominó GNOME (GNU Network Object Model Environment) que utilizo GTK+ para dibujar ventanas, botones y demás elementos gráficos.

Este entorno, goza de toda la flexibilidad del sistema Xwindow ( ejecución remota, independencia del gestor de ventanas ...) y además está libremente disponible, incluido todo su código fuente y proporciona documentación gratuita en múltiples formatos (la editan en SGML).

Además estas herramientas están hechas para ser portables, por supuesto a través de la mayoría de los sistemas de tipo UN*X y muy pronto Win32 (Microsoft Windows 95/98/NT).

Editor: vi/emacs

Para la mayor parte del programa he utilizado una versión mejorada del clásico VI (Visual Interactive:) denominada VIM (VI iMproved).

Posteriormente para la edición de la memoria a partir de las notas he utilizado emacs, con un paquete de extensión para documentos SGML.

Compilador: GCC v2.95.2 (GNU C Compiler)

Es un compilador muy portable, también de libre distribución que es capaz de compilar C, C++, Java, Pascal y Fortran. Está disponible para casi todas las plataformas UN*X, Win32, Beos, DOS, y puede que otras.

Depurador: gdb v4.18 (GNU Debuger)/DDD v3.2.1(Data Display Debuger)

Para la depuración he utilizado el programa de consola gdb y a menudo su "front end" gráfico DDD.

Control de Versiones: CVS v1.20.8 (Concurrent Version System)

Este es el sistema de control de versiones "estándar" en el mundo del software libre. Permite registrar los cambios de colecciones completas de archivos, pudiendo señalar momentos importantes del desarrollo para su posterior examen, y el mantenimiento de distintas ramas de desarrollo. También permite acceso remoto a las colecciones de archivos para facilitar la colaboración a través de Internet.

Sistema de compilación: automake v1.4/autoconf v2.13

"Automake" genera de forma semiautomática todo el sistema de compilación (archivos Makefile) ricos en funcionalidad y de acuerdo con los estándares de GNU.

"Autoconf" es capaz de detectar las distintas peculiaridades el entorno de desarrollo permitiendo una compilación fácil a todo tipo de usuarios en todas las plataformas soportadas.