A lot of talk around agile development these days is about scalability and distributed development, so large enterprises can benefit from the techniques. For organizations creating safety-critical software, such as the kind used in airplanes and traffic control systems, there are other issues to consider.
Jose Ruiz, a software engineer at AdaCore, is working with a team to develop a framework that will help the company’s customers adopt agile practices. Safety-critical software requires that certification standards be met, and that seemingly goes against one of agile development’s prime tenets: be able to adjust to change quickly.
“The certification process always is associated with a typical ‘V’ development model of requirements, modeling, coding and testing at the end,” Ruiz said. “Once all of the software and artifacts have gone through certification, it’s costly and hard to introduce any modification.”
Yet one agile technique (continuous integration) is being used to create something Ruiz called continuous certification. This requires builds, tests and requirements to be deeply integrated, so that any change in the system triggers verifications and notifies developers about artifacts that no longer are valid and need to be redone.
“In rigid development, you don’t pick this up until the end, when it’s most costly to fix,” Ruiz said. Using agile, he said, lets software evolve more easily and at a much lower cost.