Agile development

In the field of software development, we use agile methodologies, with several certified Scrum Masters as well as a complete set of techniques at the forefront of software development, including:


TDD / BDD (Test Driven Development / Behaviour Driven Development).
This technique has direct implications in the design of software, because to write a line of application code, there must first be a test to verify that functionality. This uses the idea of ​​writing the test first, deriving from the expectations of the user (user stories), regarding a description of the desired behavior, and adding that test to the battery of tests that apply to software development. Once the code that's covered by the test is implemented, it's verified that the test passes (as well as all other tests of the battery of tests).


This technique consists in modifying parts of the source code without changing its behaviour. This is done to improve the quality of it (for ease of maintenance, simplify the code, unify it, eliminate duplication, facilitate extensibility, etc.). This technique relies on the TDD / BDD so you do not raise new bugs caused by the modifications.


CI (Continuous Integration).
This technique involves the execution of build scripts, execution of automated tests and deployment of the project on a reference machine every time you upload a change to the version control system. This allows early detection of bugs.


Pair programming.
This technique is actually a social skill that allows two developers to work together with a single computer to develop software. Its effectiveness lies in the increase of the creativity and the ability of the couple considered as a unit, the reduction in the development time (taking into account the reduction in the number of bugs), and the increase of the quality of the result.


SCA (Static Code Analysis).
This technique uses tools that analyze the source code searching for possible errors, taking into account information on possible lines of execution, unreleased resources, and so on.


Our goal is to adapt these practices to software development in the aeronautical sector, and make them evolve so that they can be applied also in more stringent certification environments, such as the DO178B.