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.