Desarrollo ágil

En el campo del desarrollo software, utilizamos metodologías ágiles, con varios Scrum Masters certificados, así como un completo conjunto de técnicas a la vanguardia en desarrollo, incluyendo:

TDD/BDD (Test Driven Development / Behaviour Driven Development).
Esta técnica tiene implicaciones directas en el diseño del software, puesto que para escribir una línea de código de aplicación, primero tiene que haber un test que verifique esa funcionalidad. Para ello se usa la idea de escribir el test primero, derivándolo de las expectativas del usuario (historias de usuario), considerándolo una descripción del comportamiento deseado, y añadiéndolo a la batería de pruebas que se aplican al software en desarrollo. Una vez hecho esto se implementa el código que cubre el test, y se comprueba que dicho test pasa (así como todos los demás test de la batería de pruebas).

 

Refactoring.

Esta técnica consiste en modificar partes del código fuente sin cambiar su comportamiento. Esto se hace para mejorar la calidad del mismo (para facilitar el mantenimiento, simplificarlo, unificarlo, eliminar duplicidades, facilitar la extensibilidad, etc.). Se apoya en la técnica TDD/BDD para que no surjan nuevos bugs causados por las modificaciones.

 

CI (Continuous Integration).
Esta técnica consiste en la ejecución de scripts de compilación, ejecución de tests y despliegue automático sobre una máquina de referencia del proyecto cada vez que se sube un cambio al sistema de control de versiones. Esto permite la detección temprana de bugs.

 

Pair programming.
Esta técnica es en realidad una habilidad social que permite a dos desarrolladores trabajar juntos, con un único ordenador, desarrollando software. Su eficacia reside en que aumenta la creatividad y la capacidad de la pareja considerada como unidad, reduce el tiempo de desarrollo (teniendo en cuenta la reducción en el número de bugs), y aumenta la calidad del resultado.

 

SCA (Static Code Analysis). Esta técnica utiliza herramientas que analizan el código fuente en busca de posibles errores, teniendo en cuenta información sobre posibles líneas de ejecución, recursos no liberados, etc.

 

Nuestro objetivo fundamental es adaptar estas prácticas al desarrollo software propio del sector aeronáutico, y hacerlas evolucionar para que puedan ser de aplicación también en los entornos de certificación más estrictos, como es el caso de la DO178B.