Entradas etiquetadas como XP

Desarrollo Ágil y sus posibilidades con Rails

Proceso SCRUM

Fuente: Scrum Alliance

El desarrollo de software para la Web ha venido a apuntalar y terminar por validar diversas metodologías de Ingeniería de Software conocidas como Metodologías de Desarrollo Ágiles. Aunque existan muchas, y con variantes entre sí, de las más conocidas está SCRUM, XP (Extreme Programming) y la de Desarrollo de software Lean (o delgado). Aunque existen muchas, todas ellas están basadas en el Manifiesto de Desarrollo Ágil:

  • Individuos e interacciones sobre procesos y herramientas
  • Software funcionando sobre documentación extensiva
  • Colaboración con el cliente sobre negociación contractual
  • Respuesta ante el cambio sobre seguir un plan

En general, podemos decir que se intenta provilegiar la construcción iterativa e incremental de los productos de software, tomando mucho en consideración, en cada ciclo, el punto de vista de los usuarios o clientes. Todo esto se basa en la idea, que considero completamente correcta, de que el usuario o el cliente termina por definir los requerimientos del software únicamente después de que ve y “siente y prueba” el software que se está creando, y no antes.

Aunque el cliente previamente puede tener una idea, ya sea extremadamente vaga o bien imaginada, de lo que requiere en su software, es en el momento que ve en la pantalla de la computadora cuando el cliente realmente termina de definir bien lo que requiere. E inclusive podría requerir varios ciclos de mejora antes de que su necesidad haga “click” en su cabeza. Dicho de otro modo, se trata de ir construyendo y clarificando los requerimientos del software durante (y no antes) la construcción del mismo.

Hoy día se intenta ir incluso más allá con técnicas muy innovadoras como el Test Driven Development (TDD – Desarrollo dirigido por las Pruebas) ó el Behaviour Driven Development (BDD – Desarrollo dirigido por el comportamiento del software). A continuación, una brevísima explicación de ambas.

El TDD se basa en el concepto de que el desarrollador debe codificar primero la prueba o pruebas de algún requerimiento específico. Una vez codificada la prueba asegurarse de que la prueba en realidad es fallida y posteriormente realizar la programación para que la prueba pase. Ya que logró pasar la prueba entonces realizar un proceso de afinado del código para “limpiarlo”, optimizarlo y documentarlo. También en muchas ocasiones el developer o equipo de developers debe estar consciente de que antes de codificar la primera prueba de este ciclo primero debe decidir si el sistema tal como está en ese momento es el idóneo para codificar la prueba o si debe restructurarlo para que sea más adecuado para satisfacer el requerimiento que se va a probar/codificar. Algo así:

Técnica TDD = Refactoring (opcional) + Codificación de la primera prueba del requerimiento

Pero lo esencial del TDD es “First code the Test, then code to pass the test” ó “Primero codifica la prueba, luego codifica para pasar la prueba”.

El método BDD incluye TDD pero lo extiende de manera que las pruebas no sólo sean creadas por el Developer sino también por éste y el cliente o usuario final, utilizando para definir el requerimiento (cierto comportamiento específico del software) un lenguaje casi natural. Dicho de otro modo, el cliente en conjunto con el Developer definen (en un lenguaje específico legible para usuarios no técnicos) el comportamiento y tomando este como insumo el developer codifica la prueba y sigue el método TDD. Excelente, ¿eh?

¿Qué tiene que ver todo esto con la computación en la Nube? Bueno pues que el Software-as-a-Service tiene hoy día una matrimonio con las nuevas metodologías Ágiles de desarrollo, y con técnicas como BDD/TDD. La Web, o al menos la buena Web, se está construyendo alrededor de esta Ingeniería de Software. Un proyecto de construcción de un producto para la Nube debe tomar en consideración estos métodos más que los tradicionales métodos de Project Management.

En el caso de Ruby on Rails, el framework no sólo ya cuenta con mecanismos incluidos dentro de la plataforma (por ejemplo, un subsistema de pruebas) que apalancan métodos ágiles y TDD sino que también se han construido herramientas excelentes y que están ganando momentum en el mercado, tales como Cucumber, herramienta programada en Ruby, que automatiza de manera elegante y sencilla el método BDD para proyectos no sólo de Ruby on Rails sino también Java, Python y C#.

¡Bien por Rails y las metodologías ágiles! Si bien es cierto que esto no es exclusivo de Rails, sí es una razón más para seleccionar Rails como framework de desarrollo para la Nube.

, , , , , , , ,

Deja un comentario