jueves, 16 de julio de 2009

Algunas herramientas útiles para programar y modelar

En mi labor como analista y programador he tenido la oportunidad de trabajar con algunas herramientas que pueden resultarles de utilidad a alguno de ustedes. Cada herramienta tiene lo suyo y regularmente tiendo a utilizar varias de ellas en aspectos diferentes desde modelado, pasando por bases de datos, hasta codificación.

Entornos de desarrollo integrados 
  
Eclipse: Es un entono integrado de desarrollo, basado en java y con versiones en la mayoría de los sistemas operativos usado actualmente, se han desarrollado una gran cantidad de herramientas para este entorno. Entre los recursos de que dispone y que he utilizado se encuentran:

  • PHP Development Tools - excelente para desarrollo de aplicaciones usando php, tiene asistencia para creación y chequeo del código, un excelente explorado de proyectos, facilita documentar tu código y mucho mas.
  • Modelador de base de datos Clay - la versión gratuita de esta herramienta es increíble, hace ingeniería inversa, permite tener una vista logica yla física, genera script con varias opciones útiles como comentarios, forma de declaración de llaves e indices, para casi cualquier gestor de base de datos que tenga un driver jdbc.
  • ERMaster - es una excelente para el diseño de bases de datos, soporta varias notaciones, permite generar documentación de nuestro modelo. Permite crear vistas o regiones en el modelo y visualizar solamente esa perspectiva, además navegar por la demas perspectivas mediante pestañas.
  • Data Tools - esta herramienta es excelente para el desarrollo y depuración de base de datos. Puedes complementar o utilizar alternativamente SQLExplorer o Quantum.
  • Editores XML - facilita muchísimo explorar y construir documentos xml, dtd y estilos xsl.
Lo mejor de eclipse es que es un entorno integrado, y tienes todo al alcance de la mano en un solo entorno. El soporte que tiene para java lo lo hace el mas grande rival de NetBeans.

NetBeans: Entorno de desarrollo integrado muy bueno, el único inconveniente es el uso excesivo de memoria es lo que me consta, para desarrollo java y de interfaz gráfica en java.


Modelado de software

ArgoUML: Para modelar sistemas y aplicaciones ArgoUML es una de esas herramientas que no debe faltar en tu colección. Soporta la especificación 1.4 de UML (el soporte para UML 2 es experimental aun). Permite generar código para varios lenguajes de programación entre ellos java, C++, php4, php5. Cuenta con varias extensiones útiles como la extensión para base de datos, la cual también te permite hacer ingeniería inversa de base de datos.

DBDesigner: Aunque se ha pretendido que WorkBench de MySQL reemplaze a esta herramienta le falta mucho para alcanzar la versatilidad que tenia esta herramienta. Permite realizar diseños de base de datos y conectarte a diferentes gestores de bases de datos. los diseños ademas de útiles son muy bonitos excelentes para presentarlos. Cuenta con dos complementos para crear reportes a modo de diccionario de datos de tu modelo y crear un sitio web para tu pagina de forma rápida con varias opciones para configurar y agrupar tus paginas.

MagicDraw Community Edition: La uso para crear modelos de sistemas web basados en UWE, cuenta con complemento y los diagramas son estéticamente atractivos. Puedes crear desde cero tu modelo o bien trabajar la base lógica con ArgoUML y luego exportar tu modelo como un XMI e importarlo con esta herramienta. Existe una versión de ArgoUML que cuenta con complementos para modelado con UWE la cual no me gusta mucho y solo es compatible con una versión mas antigua de ArgoUML.


Planeación de proyectos

Planner: Herramienta para planeación de proyectos corre en múltiples plataformas y genera reportes útiles para presentar e imprimir.

GanttProyect: Para planeación de proyectos desarrollado en java, es muy buena herramienta, genera un gráfico pert de la ruta critica de tu proyecto, es muy intuitivo.

XMaind: Crea mapas conceptuales fácilmente, incluye plantillas de diagramas de pescado, organigramas, de árbol , tablas y otros, para los que conozcan el Mainjet déjeme decir que esta herramienta tiene casi toda su funcionalidad y es de uso libre.


Diseño web

DreamWeaver: A pesar de lo que muchos tienen en contra de las tecnologías de paga, no he encontrado un editor de paginas web comparable a este, en la cantidad de funciones y su editor visual.

Mozilla Web Developer ToolBar: agrega varias herramientas de diseño al navegador, esta extensión esta disponible para Firefox y Chrome, y corre en todas las plataformas donde estos navegadores estén soportados. Provee muchas opciones útiles para formularios, estilos, imágenes, tamaño de la ventana, elementos de bloque y posicionamiento, entre otras.

Firebug: es una de las herramientas más populares entre los desarrolladores web. Este complemento para firefox esta ahora también disponible en chrome, tiene una interfaz amigable con pestañas que facilitan la inspección y depuración de cada aspecto de la web. Permite editar y ver los cambio de forma inmediata, analizar la velocidad de carga, los requisitos realizados y los parámetros y cabeceras enviados.


Validación, Formato de código y miscelaneos


CSS Formatter and Optimiser: permite dar formato al css y ademas tiene varias opciones de compresión y reducción de código.

JavaScript Formatter: permite dar formato el código js.

Validación

  • Validación HTML de W3C -  http://validator.w3.org
  • Validación CSS de W3C -  http://jigsaw.w3.org/css-validator/
  • Validación XML - http://www.xmlvalidation.com/
  • CSS Test de Selectores -  http://www.css3.info/selectors-test/

Generadores de contenido

  • Generador de texto - http://www.procato.com/lipsum/
  • Generador de Imágenes -  http://dummyimage.com/
  • Generador de MetaTags - http://www.aemilius.net/soporte/utilidades/generador-meta-tags.php



Transferencia de archivos

FileZila: Cliente ftp, aunque no es tan bueno si se trata de archivos muy grandes pero la naturaleza del protocolo tampoco le ayuda con eso.

FireFTP:  es un complemento de Mozilla Firefox para transferencia de  archivos por FTP.

UWE el camino a la orientación a objetos en la web


UML-Based Web Engineering (UWE) es una conjunto de herramientas para modelar aplicaciones web. UWE incluye una expansión del lenguaje UML y nuevos diagramas para modelar algunos aspectos específicos del las aplicaciones web. Integra conceptos de UML y la metodología OOHDM (Modelo de Diseño Hipermedia Orientado a Objetos). Me ha parecido interesante abordar este modelo como una herramienta de gran utilidad dado que esta basada en UML y además cuenta con todo el poder expresivo necesario para el desarrollo de aplicaciones web.

La mayoría de los que nos dedicamos a desarrollo web hemos sentido que las herramientas y el uml convencional quedaba cortos de expresividad ante conceptos que necesitábamos representar y debíamos recurrir a otras herramientas para modelar el comportamiento de nuestras aplicaciones web, si es que realizábamos algún tipo de modelado.

Para los que hayan trabajado anteriormente con la metodología OOHDM trabajar con UWE les resultara alga muy familiar porque muchos de los conceptos son análogos. En la página que tiene el enlace a UWE (http://uwe.pst.ifi.lmu.de/teachingTutorialSpanish.html), encontraran mucho material para estudiar, varios tutoriales, la especificación del modelo que es una extensión del UML y muchos artículos y publicaciones de expertos que ayudan ha entender como se relacionan los modelos de UWE y sus diagramas con los diagramas ya conocidos de UML.


En el ambito del desarrollo web no es usual modelar mucho las aplicaciones. Quizá es una de las razones por las que que los desarrollos se tornan mas complejos de lo pensado. La mayoría de los proyectos complejos ya sean estos basados en web o de otro tipo, el cliente espera ver resultados rápidamente, de modo que se suele desestimar la importancia del buen análisis y modelado. Esta es una muy mala práctica, tomando en cuenta que muchas de la aplicaciones que se desarrollan hoy día y que interactuan en la red son sistemas de complejidad media o alta con la salvedad que opera sobre una plataforma web.

La utilización de UWE en nuestros proyectos, no solo forma parte de las buenas practicas de desarrollo. También provee la documentación necesaria para dar soporte a las aplicaciones desarrolladas y facilita la implementación de las soluciones desarrolladas. UWE nos permite crear un modelo conceptual con todo el poder expresivo de UML, un modelo de navegación claro y un modelo abstracto de la interfaz de usuario.

Se podrían señalar muchas razones para que el uso de herramientas de representación adecuadas dos de ellas sin embargo pueden ser significativas a mediano plazo. 1) Los lenguajes de programación web estan evolucionando hacia la orientación a objetos, los lenguajes más utilizados PHP y ASP ya estan en ese camino, otros como Java, Python y C# son ya orientados a objetos. 2) Las aplicaciones, programas y servicios están cada ves mas integradas o encaminadas a la web. Pese a esto muchos programadores, desarrolladores y analistas aun no actualizan sus "cajas de herramientas". Esta tendencia ponte frente a nosotros la necesidad de utilizar las herramientas de que disponemos para construir aplicaciones web con calidad.