
Safety-critical development standards, such as DO-1781, have been very successful in guiding the production of reliable software. These standards assist developers in applying good software practices during development, ensuring, as much as possible, the absence of errors. Compliance with these stringent standards involves a high cost because of their labor-intensiveness and high levels of know-how.
One aspect that has been largely neglected in safety-critical development is evolvability. Evolvable systems demand the use of agile engineering processes to hit hard deadlines in shrinking time windows.
Another problem is that system integration comes late and costly. Complex and interconnected systems developed by different groups or subcontractors must integrate successfully, and they need to be readied or adapted quickly to meet changing needs in shorter timescales without forgetting their safety-critical constraints.
A new open-source collaborative initiative, called Open-DO2, tries to increase the agility and the level of automation in the production and certification of safety-critical software, focusing on more continuous and incremental certification approaches. The goal is to provide the processes and infrastructure to guide safety-critical software development in a way that the application and its related material are ready and verified at any time.
Safety-critical standards focus on the adequate definition and execution of software engineering processes and activities. They define the objectives for the different processes, the activities that need to be performed for achieving these objectives, and the evidences (artifacts) that indicate that the objectives have been satisfied.
Main software development processes which take place in any high-integrity software project are:
The planning process determines what will be done to produce safe software conforming to the system requirements. The software development process (requirements, design, production/coding, and integration) is the one that creates the software product. There are three other processes which are orthogonal (integral) to software development: