  |
| Las herramientas que utilizo |
|
 |
 |
 |
Enrique Castilla Contreras
Tlf:
661-247020
� E-mail:
[email protected]
� Web:
www.geocities.com/ecastillac
Es evidente que en un proyecto software es necesario el uso de multitud de herramientas,
cada una de ellas de un tipo diferente, es decir, cada una de ellas especializada en
realizar una tarea espec�fica en una o varias de las fases del proyecto.
Mi objetivo ha sido siempre disponer de al menos, una herramienta de cada tipo, de forma
que entre todas ellas cubran todas las fases y tareas m�s comunes de un proyecto software.
A continuaci�n explico los tipos de herramientas que, en mi opini�n, son necesarios en
la mayor�a de proyectos software, y que herramientas de cada uno de estos
tipos utilizo yo:
- Una herramienta, basada en tecnolog�a UML, para especificar y modelizar software.
Rational Rose
| |
La herramienta de modelado UML por excelencia, como no pod�a ser de otra forma: los inventores
del UML (Rumbaugh, Jacobson y Booch) colaboraron estrechamente con Rational (antes de ser adquirida
por IBM), en el desarrollo de toda su familia de herramientas UML.
|
UML Studio
| |
Admite todos los tipos de diagramas de UML, se pueden crear nuevos s�mbolos y genera c�digo
para Java y C++, y su relaci�n precio/capacidades es inmejorable.
|
- Una herramienta que permita el trabajo concurrente de todas las personas que forman parte
del equipo de desarrollo, sin importar el n�mero de personas que lo formen ni su distribuci�n
geogr�fica, y que adem�s, permita manejar repositorios de c�digos fuente.
CVS
|
CVS (Concurrent Versions System) es sin ninguna duda el mejor software de este tipo.
Adem�s de realizar a la perfecci�n las tareas mencionadas (mas otras muchas que por espacio
no puedo mencionar aqu�), tiene tres importantes ventajas
sobre otros productos similares: funciona en modo mezcla (otros funcionan en modo bloqueo),
es multiplataforma (diponible en UNIX/Linux y Windows) y se distribuye bajo licencia GNU-GPL.
Ideal para controlar proyectos en r�gimen de subcontrataci�n.
|
- Una herramienta que permita a los programadores interaccionar con el repositorio,
independientemente del tipo de plataforma en la que �ste resida.
WinCVS
|
Un cliente de CVS con una interfaz gr�fica a base de ventanas. He traducido el manual de este producto al castellano.
Para mostrar las diferencias entre dos releases distintas del mismo fichero requiere una
herramienta externa que realice esta tarea. Yo utilizo WinDiff.
|
- Una herramienta para generar la documentaci�n del software a partir de los
c�digos fuentes, a ser posible en varios formatos (RTF, PDF, HTML, ...).
pod2html,
pod2pdf,
pod2latex,
pod2rtf,
pod2man,
pod2text,
pod2chm
|
pod2html es una herramienta que se suministra en las distribuciones de Perl. Extrae de un archivo fragmentos de
documentaci�n escritos en lenguaje POD, y genera otro fichero con el resultado de traducir los
fragmentos a HTML. Existen versiones para convertir de POD a cada uno de los formatos de archivo m�s comunes: pdf, LaTeX,
rtf, man, texto, ...
POD (Plain Old Documentation) es un formato de documentaci�n bastante neutro (los
documentos escritos
con �l se pueden generar en cualquier otro formato) y sencillo (POD es texto con algunas etiquetas).
Cada una de estas utilidades est� tambi�n disponible como un API de programaci�n que permite generar la
documentaci�n program�ticamente en el formato correspondiente, as� es posible automatizar la generaci�n de
documentaci�n en m�ltiples formatos.
|
JavaDoc
| |
Extrae documentaci�n de c�digos fuente en Java.
|
Mi propia herramienta
| |
Todav�a en desarrollo. Integrar� en una sola herramienta JavaDoc y las otras que se distribuyen
con Perl (pod2html, pod2pdf, ...). Se distribuir� bajo licencia GNU-GPL.
|
- Un servidor de bases de datos.
Teradata
| |
Sin duda el mejor RDBMS para la implantaci�n de un Data Warehouse.
|
Oracle
| |
Muy extendido, con muchas e interesantes extensiones al estandar SQL, y dispone de
una familia de excelentes productos de desarrollo, basados en el servidor de bases de datos.
|
MySQL
| |
Para aplicaciones de bajo coste.
|
- Una herramienta cliente que permita ejecutar SQL, a ser posible independientemente
de cual sea el servidor de bases de datos.
WinDDI
| |
Cliente de Teradata RDBMS. Para m�quinas Windows.
|
MySQL Control Center
| |
Cliente de MySQL. Es una herramienta que pueden usar tanto programadores como administradores:
proporciona una interfaz c�moda para escribir y ejecutar c�digo SQL, a la vez que permite administrar
cualquier n�mero de servidores de bases de datos MySQL. Tambi�n para m�quinas Windows.
|
Emacs con m�dulo SQL
|
El m�dulo SQL de Emacs colorea la sintaxis a la vez que uno escribe. Adem�s, se puede ejecutar
el c�digo SQL a la vez que se escribe, y ver los resultados. Todo ello dentro del mismo entorno.
En la configuraci�n del m�dulo SQL se especifican los par�metros necesarios para establecer la
conexi�n con el servidor de bases de datos.
Este cliente se puede usar en cualquier plataforma donde
funcione Emacs, que son pr�cticamente todas (todos los UNIXes, Windows, VMS, ...). Para m�
esto es una caracter�stica muy importante porque me permite trabajar en varias plataformas
sin necesidad de utilizar herramientas espec�ficas en cada una de ellas.
|
DBI Shell
|
Es un cliente de l�nea de comando que proporciona conectividad con cualquier base de datos
v�a DBI (interfaz de conexi�n con bases de datos que se usa en el mundo Perl).
Por estar basado en Perl, este cliente es tambi�n multiplataforma. Se puede usar con una
interfaz m�s c�moda utiliz�ndolo como cliente del m�dulo SQL de Emacs.
|
- Lenguajes de programaci�n.
Perl
|
Lo utilizo para todo, y en cualquier plataforma. No he encontrado nada que no se pueda
programar con Perl. Desde administraci�n de servidores hasta interfaces gr�ficas de usuario.
La CPAN
es el mayor repositorio de librer�as (modules en terminolog�a Perl), de uso p�blico.
|
Java
| |
Lo utilizo para aplicaciones en las que el cliente pide expl�citamente el uso de este
lenguaje y otras tecnolog�as relacionadas con �l.
|
C/C++
| |
Lo utilizo para desarrollar software embebido en dispositivos y aplicaciones o partes
de aplicaciones donde la velocidad es un factor esencial.
|
- Un entorno de desarrollo que cumpla, al menos, con las funciones b�sicas: escribir
c�digo fuente y documentaci�n, buscar cadenas de caracteres entre todos los ficheros
de un proyecto, mostrar las diferencias entre dos ficheros, depurar el c�digo, ejecutar
makefiles, y si el lenguaje lo requiere, compilar y enlazar.
Algunos entornos de desarrollo, adem�s de realizar estas funciones b�sicas tienen
integradas algunas herramientas mencionadas en puntos anteriores, por lo que en caso de
utilizarlos, se reduce en n�mero de herramientas necesarias.
Emacs
|
Emacs es, adem�s de un potente editor de c�digos fuente para desarrolladores, un completo
entorno de desarrollo modular. Colorea la sintaxis de cualquier lenguaje (Java, Perl, C/C++,
Ada, Phyton, SQL, HTML, SGML, XML, ...), existe un m�dulo que proporciona una interfaz de
alto nivel con cualquier sistema de control de versiones (en particular CVS), y se pueden
realizar multitud de funciones sin salir del entorno: compilar y enlazar, comparar ficheros,
buscar cadenas de caracteres en el arbol de directorios de un proyecto, ...
Uno instala los m�dulos que necesita, y cuando necesita nuevas funcionalidades puede instalar
nuevos m�dulos que las realicen. De esta forma, uno se puede configurar su propio entorno
de desarrollo.
Es multiplataforma, lo que me permite cambiar de una plataforma a otra y seguir utilizando
el mismo entorno de desarrollo.
|
WebSphere Studio, Studio Site Developer
|
Completo entorno de desarrollo para Java. Entre otros muchos componentes, tiene
integrado un cliente de CVS, lo que permite trabajar con un repositorio de
fuentes CVS sin abandonar el propio entorno de desarrollo.
Puede trabajar con servidores de aplicaciones WebSphere (IBM) y Tomcat (este �ltimo
se distribuye bajo licencia GNU).
|
- Una herramienta para generar analizadores l�xicos.
Perl y expresiones regulares
| |
Las expresiones regulares de Perl permiten codificar codificar cualquier analizador
l�xico solo con este lenguaje, sin tener que recurrir a herramientas externas.
|
Flex
| |
Flex es Lex (el generador de analizadores l�xicos t�pico del mundo UNIX), pero con licencia
GNU y multiplataforma. Genera c�digo C o C++
|
- Una herramienta para generar analizadores sint�cticos.
Bison
| |
Bison es Yacc (el generador de analizadores sint�cticos t�pico del mundo UNIX), pero
con licencia GNU y multiplataforma. Genera c�digo C o C++.
|
Yapp
| |
Yapp (Yet Another Perl Parser compiler) es tambi�n un Yacc pero desarrollado como una librer�a
de Perl (Parse::Yapp) por Francois Desarmenien. Por supuesto, genera c�digo Perl, se distribuye
bajo licencia GNU y funciona en cualquier plataforma donde funcione Perl.
|
- Una librer�a de componentes (widgets) para desarrollar Interfaces Gr�ficas de Usuario (GUI).
Perl/Tk
|
Tk es una excelente librer�a de componentes (controles, widgets) para desarrollar interfaces
gr�ficas de usuario, creada por el MIT. Tradicionalmente, la �nica forma de usar Tk era
programando en lenguaje Tcl (Tcl/Tk).
Hasta que Nick Ing-Simmons cre� Perl/Tk (thanks Nick). El trabajo de Nick
consisti� en integrar Tk en Perl, es decir, desarrollar una interfaz de Perl hacia Tk.
Con Perl/Tk se pueden desarrollar aplicaciones a base de interfaces gr�ficas de usuario y
orientaci�n a objetos, as� como desarrollar nuevos widgets a partir de otros.
Perl/Tk se distribuye como un conjunto de librer�as de Perl bajo licencia GNU-GPL, y esta
disponible para casi cualquier plataforma, incluido Windows.
|
- Una herramienta que permita testear el software desarrollado.
No hay una soluci�n universal al problema de testear aplicaciones, entre otras razones porque
el software de test depende del tipo de la aplicaci�n y de la plataforma.
Por ejemplo, los mecanismos de test para una aplicaci�n web no sirven para una aplicaci�n de escritorio, y
la misma aplicaci�n de escritorio en plataformas distintas se testea con software
diferente.
Lo que si hay son excelentes soluciones parciales. Por ejemplo, existen excelentes productos
para testear aplicaciones .NET, o aplicaciones web basadas en Java y WebSphere.
IBM Rational XDE Tester
| |
Automatiza la ejecuci�n de tests de regresi�n y funcionales para aplicaciones web desarrolladas
en Java. Se integra con IBM WebSphere Studio.
|
Test::Builder,
Test::Harness,
Test::More,
Test::Simple
|
Son 4 librer�as (m�dulos) de Perl para escribir tests de aplicaciones.
Perl es un lenguaje especialmente adecuado para escribir tests de aplicaciones servidoras
(aplicaciones web, aplicaciones de bases de datos, ...), y por supuesto aplicaciones Perl.
|
- Una herramienta para generar distribuciones del software y los manuales.
Wise Installer
| |
Genera distribuciones de software para plataformas Windows.
|
ExtUtils::MakeMaker
|
Una librer�a Perl que genera distribuciones de software. Funciona en cualqier plataforma
donde funcione Perl.
|
- Un sistema de distribuci�n de software de forma remota.
CPAN (Comprehensive Perl Archive Network),
Cliente de la CPAN
|
La CPAN es el sistema de distribuci�n remota de software mas sencillo y eficiente que
conozco.
Un sistema de distribuci�n remota de software necesita: un repositorio de paquetes software,
un servidor que publique el material del repositorio y un cliente capaz de buscar, descargar e
instalar paquetes.
La CPAN es esto mismo: el repositorio de paquetes es una estructura de carpetas en una m�quina
o en una base de datos, el servidor es el de FTP y HTTP, y el cliente se llama CPAN::Shell.
Instalando otros repositorios con la misma estructura de la CPAN, y permitiendo el acceso
con los mismos protocolos, se puede usar el cliente de la CPAN aunque el repositorio
no sea la propia CPAN sino otro similar.
CPAN::Shell es un cliente de la CPAN basado en Perl. Entre otras
funcionalidades permite buscar, examinar, instalar y generar distribuciones de software.
Como muchas librer�as Perl, adem�s de un API de programaci�n, dispone de una interfaz de usuario a
base de l�nea de comando. El API permite desarrollar procesos de mirroring y de actualizaci�n
autom�tica de versiones.
|
- Una herramienta que permita hacer un seguimiento de bugs detectados en el
software.
- Una herramienta que permita publicar y asignar tareas pendientes.
- Una herramienta que extraiga informaci�n estad�stica acerca de un proyecto (tiempo
empleado en el desarrollo, n�mero de personas o perfiles de cada tipo que han participado,
n�mero y tama�o de los ficheros desarrollados, ...).
- Una herramienta que permita medir el esfuerzo necesario en el desarrollo de
un proyecto.
- Una herramienta para planificar proyectos, asignando personas y recursos.
- Una herramienta para controlar proyectos, que permita hacerse una idea del
grado de cumplimiento respecto a la planificaci�n.
- Herramientas adicionales: ofim�tica, compresores, navegador web, cliente
de correo, cliente FTP, cliente Telnet y visualizadores de los principales tipos de
archivos (PDF, Postscript, ...).
Adem�s, para determinados tipos de proyectos puede requerirse el uso de herramientas adicionales.
Por ejemplo, en el desarrollo de aplicaciones tipo web:
- Un servidor de aplicaciones web o al menos, un servidor HTTP.
IBM WebSphere
|
Un servidor de aplicaciones web basado en Java. El producto que hace las veces de servidor
HTTP es Apache.
Se integra perfectamente con el entorno de desarrollo IBM WebSphere Studio
|
Tomcat
|
Un servidor de aplicaciones web basado en Java. Tomcat es una ampliaci�n de Apache. Licencia GNU.
|
mod_perl
|
mod_perl es un m�dulo (una expansi�n que a�ade nuevas funcionalidades) del servidor HTTP Apache.
Con mod_perl instalado, un servidor Apache es un servidor de aplicaciones web basadas en Perl.
|
Apache
| |
El mejor y m�s extendido servidor HTTP.
|
- Una herramienta para dise�ar y ensamblar componentes HTML.
Template Toolkit
| |
Es una herramienta de templates, v�lida para usar templates en cualquier tipo de
aplicaci�n, no solo HTML. Licencia GNU
|
- Una herramienta para dise�ar formularios.
Adobe GoLive
| |
Es una excelente herramienta de dise�o web, con funciones mucho m�s amplias que el
dise�o de formularios HTML, aunque yo la utilizo principalmente para esto.
|
- Una herramienta para dise�ar y aplicar hojas de estilo.
TopStyle
|
Aunque otras herramientas como GoLive tambi�n sirven para dise�ar hojas de estilo,
sin embargo, la herramienta m�s especializada en esta tarea es Top Style.
|
- Un lenguaje de scripting en el lado del cliente web.
- Una herramienta XML que automatice la confecci�n de listados y gr�ficos.
Uno de mis proyectos (a proyectar), es el desarrollo de una herramienta de este tipo.
- Una herramienta XML para implementar interfaces de usuario.
- Una herramienta para desarrollar portales sin tener que partir de cero.
Slash
| |
Un producto para implementar un tipo especializado de portal denominado
|
- Una herramienta para tratamiento de im�genes.
Por ahora, el tratamiento de im�genes no es un campo que llame mi atenci�n.
Por supuesto, para manejar la mayor�a de estas herramientas es necesario conocer la tecnolog�a que
aplican. Por ejemplo, de nada sirve disponer de la mejor herramienta para modelar sistemas con UML
si uno no conoce la tecnolog�a UML.
En la p�gina de las tecnolog�as que domino encontrar� la lista
de tecnolog�as en las que se basan estas herramientas.
Finalmente, he aqu� los criterios que siempre he seguido, para elegir que herramientas incorporar a
mi repertorio:
- Potencia.
- Portabilidad.
- Tipo de licencia.
- Amplia aceptaci�n.
|
|
 |
 |
|
|
 |
 |
Herramientas (recopilaci�n) |
 |
 |
|