Ir al contenido principal

Herramientas para el desarrollo de software

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.


Análisis y Diseño

ArgoUML y Gaphor, son aplicaciones para crear diagramas diversos, principalmente utilizando UML.

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.


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

Entradas populares de este blog

Configurar Wi-Fi en Slackware

Ahora es común tener una notebook pero no lo es tanto el tener un linux en ella y mucho menos tener un Slackware en la notebook. Sin embargo, es posible tenerlo por lo que vale la pena dedicarle unas líneas a la configuración del Wi-Fi. Primero que nada hay que saber cuál es la placa de red inalambrica que posee la notebook, es decir su marca y modelo. Si ya está Linux instalado en la notebook solo se debe ejecutar el siguiente comando para saber cuál es la marca y modelo de la placa de red inalambrica: # lspci Este comando dará como resultado algo similar a esto: 09:00.0 Ethernet controller: Marvell Technology Group Ltd. Unknown device 4354 (rev 12) 0b:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02) En estas líneas se puede observar que la segunda hace referencia a la placa de red inalambrica que posee la notebook, en este caso una Intel PRO/Wireless 3945ABG . Con esta información lo que se debe hacer es buscar cuál es el módulo que se deb...

¿Qué hace un Licenciado en Sistemas?

Muchas veces, conocidos que no son informáticos, me han preguntado ¿qué hace un Licenciado en Sistemas? ...... " Buena pregunta " - sonaba en mi cabeza. Yo sé lo que yo quiero hacer en mi vida profesional pero realmente ¿qué perfil tiene un Licenciado en Sistemas? Es sencillo saber qué hace un médico, un veterinario, un ingeniero civil, etc. Por ejemplo si su perro se enferma ¿a quién llaman? si quieren construir un puente ... ¿a quién llaman? si ustedes están enfermos ¿a quién llaman? Ahora, si necesitan un sistema para su empresa ¿a quien llaman? ... ¿a un Lic. en Sistemas? ¿a un Ing. en Sistemas? ¿a un programador de aplicaciones? ¿a un analista en sistemas? ¿a un consultor informático? o ¿al amigo que se la pasa en internet y que sabe "todo" sobre computadoras e hizo un montón de cursos (word, excel, windows, redes, etc.)? Esta situación se presenta a menudo; es tan confuso que muchas veces hasta los mismos profesionales informáticos o entendidos en la materia ...

Paquetes para Slackware

Para aquellos que recién comienzan a utilizar Slackware , esta grandiosa distribución GNU/Linux una de las más antiguas, estables y seguras que existen; de seguro se habrán encontrado con la tarea de instalar algún programa extra y que no es distribuido junto con Slackware. Uno de los mejores sitios para encontrar software empaquetado para esta distro es Linuxpackages.net ; en este sitio podrán realizar búsquedas en versiones específicas de Slackware inclusive en la última versión liberada, la 12.1. Los paquete que aquí se encuentran ya han sido precompilados por lo que no deberán realizar los típicos pasos "./configure","make" y "make install"; sino que solamente podrán utilizar las herramientas installpkg, pkgtool o kpackage para instalar los paquetes descargados desde este sitio. Claro que no siempre encontrarán el soft que buscan en este excelente sitio, en esos casos siempre es bueno recurrir a los sitios del autor del soft en cuestión para obtener l...