En el desarrollo de software se conjugan muchas habilidades, personas, conocimientos, áreas, entre muchas otras cosas; y como es de esperarse también se necesitan muchas herramientas diferentes.
En este artículo se intenta dar un pequeño listado de herramientas que ayudan a llevar la ardua tarea de desarrollar software de la manera más cómoda y eficiente posible.
Cada una de las herramientas aquí listadas tienen un propósito, sin embargo su uso no es obligatorio ni indispensable pero sí de gran ayuda a la hora de realizar un trabajo ordenado y en equipo.
En el caso de ArgoUML, en mi opinión, es uno de los mejores en su categoría por tres detalles que lo destacan: 1) es Open Source, 2) al estar desarrollado en JAVA corre en cualquier SO, 3) permite crear diagramas de clases desde archivos fuentes y viceversa.
Sin embargo, uno de los puntos en contra que posee esta aplicación es su alto consumo de recursos lo cual tiene como consecuencia una ralentización que a veces se vuelve molesto.
Por otro lado Gaphor es una herramienta un poco más amigable y mucho más liviana, pero sin las ventajas que provee ArgoUML.
Otra herramienta similar a estas es StarUML. Lamentablemente sólo corre en entornos Windows, es un aplicación Open Source muy completa y actualizada.
IDEs
Ya son conocidos por todos los desarrolladores alrededor del mundo, pero no está de más mencionarlos.
Netbeans y Eclipse, son por lejos los más usados, y sus ventajas y desventajas archiconocidas.
Pero también existen otros un poco más simples y con menos pompas como el Komodo IDE aunque el IDE posee una licencia propietaria, Komodo liberó su editor con lo cual puede descargarse gratuitamente el Komodo Edit el cual funciona muy bien, es simple y muy intuitivo. Quizás no posee todos las facilidades de un IDE pero cumple su función.
Ya son conocidos por todos los desarrolladores alrededor del mundo, pero no está de más mencionarlos.
Netbeans y Eclipse, son por lejos los más usados, y sus ventajas y desventajas archiconocidas.
Pero también existen otros un poco más simples y con menos pompas como el Komodo IDE aunque el IDE posee una licencia propietaria, Komodo liberó su editor con lo cual puede descargarse gratuitamente el Komodo Edit el cual funciona muy bien, es simple y muy intuitivo. Quizás no posee todos las facilidades de un IDE pero cumple su función.
Testing
El testeo y depuración del software es muy importante y crucial para el éxito, es por eso que se debe utilizar alguna herramienta para el desarrollo de pruebas unitarias.
Las pruebas unitarias no son más que código que prueban código.
Permiten crear un entorno de pruebas de cada porción del código que se haya escrito.
Los frameworks para las pruebas unitarias depende mucho del lenguaje de programación, los principales son:
- PHPUnit
- JUnit
Una lista muy completa para cada lenguaje la pueden encontrar en Wikipedia (Leer Más..).
Otro conjunto de herramientas son las aplicaciones para realizar pruebas funcionales, es decir pruebas que ejecuten los casos de uso y verifiquen que el resultado sea el esperado.
Selenium es una herramienta de automatización para aplicaciones web. Permite crear acciones simuladas y controladas sobre las aplicaciones web y seguir un "guión" con cada acción lo que permite detectar problemas en las interfaces de usuario, reproducir bugs reportados, o simplemente testear la aplicación de manera automática mientras nos dedicamos a realizar otras tareas.
Cacique es una herramienta desarrollada por MercadoLibre.com y que sirve para automatizar procesos sobre sistemas/páginas web.
Uno de los usos interesantes que se logra con Cacique es la carga automática de datos a través de la aplicación que estamos testeando. Podemos indicarle a Cacique que batería de datos utilizar y cómo es la secuencia de pasos que se deben seguir en cada pantalla.
Documentación
Ningún programador en ninguna parte del mundo le gusta escribir documentación sobre el software que desarrolla.
Por suerte los desarrolladores no somos así ;-)
La documentación es la parte más importante del desarrollo de software ya que un proyecto no documentado no es más que un montón de código que hace algo y que hay que adivinar de porque hace lo que hace, cómo lo hace y qué hace.
"Pero si yo comento todo mi código" La verdad es que no alcanza, ya que los comentarios en el código no explican (o al menos no deberían) los requerimientos del usuario/cliente, ni las decisiones de diseño y tampoco permiten una clara visualización de la estructura de la aplicación.
Esto se logra con unos cuantos documentos, los nombres no importan ya que cada equipo de desarrollo los puede nombrar como gusten de acuerdo a la metodología o proceso que utilicen:
- En un documento (o varios) es necesario contar lo que se espera que haga la aplicación. Esto surge del relevamiento con el usuario final, o de leer los procesos definidos o la reglamentación vigente dependiendo del ámbito donde se implementará la aplicación. Es muy importante saber qué reglamentación (leyes, ordenanzas, resoluciones, reglamentos, etc.) debemos tener en cuenta y esto debe quedar registrado para que todo el equipo tenga el conocimiento a disposición.
- Otros documentos son aquellos que agrupan los diagramas de clases, los casos de uso, los diagramas de entidad-relación, los modelos del dominio, diagramas de secuencias, diagramas de actividades, diccionarios de datos, etc. Esta documentación surge del análisis y diseño de la aplicación partiendo de los requerimientos.
- En una cierta etapa de madurez del ciclo de desarrollo se puede confeccionar un documento donde se detallan las funcionalidades/módulos que posee o poseerá la aplicación. Esto sirve para contestar la pregunta ¿Qué hace el sistema? o bien para tener una definición clara del alcance del desarrollo para que éste no sea algo infinito y sin límites. Si bien el software siempre está en constante desarrollo, ésto se hace por partes y de ahí surgen las versiones.
Dos aplicaciones que pueden utilizarse para mantener la documentación son Google Docs y OpenOffice.org. Me inclino por estas soluciones ya que son gratuitas y funcionan en diferentes sistemas operativos.
Conclusiones
En cualquier profesión la diferencia está en las personas y en las herramientas que utilizan para llevar a cabo su trabajo.
Tómense el tiempo para elegir sus herramientas, para aprender a utilizarlas de la manera correcta y no de la manera que ustedes creen que debería funcionar.
Las herramientas deben proveer todo, o al menos la mayor cantidad de funcionalidades que su equipo necesita.
Piensen a futuro, no usen una herramienta que posee todo si saben que esa herramienta ha sido abandonada por sus desarrolladores ya que a medida que pase el tiempo estará aún más obsoleta y luego será dificil migrar a otra.
Eviten crear sus propias herramientas a menos que sea extremadamente necesario; pero si lo hacen DOCUMENTEN! para que las futuras generaciones del equipo puedan continuar su desarrollo y/o adaptación.
No concentren el conocimiento. Indispensable no es aquel que sabe todo y lo que sabe no lo sabe nadie más, sino aquel que aporta siempre al equipo.
Comentarios
Publicar un comentario