In one test flight, the hydraulic system of the V-22 Osprey helicopter failed just as the pilot was tilting the wing to land. A previously undiscovered error in the aircraft’s control software caused it to decelerate in response to each of the pilot’s eight attempts to reset the software. The aircraft had a built-in back-up system to handle such failures, but it had not been tested under those precise conditions, and the defect in the back-up system’s software had not been found. The uncontrollable aircraft fell 1,600 feet (490 m) and crashed in a forest.
As systems become more difficult and complex, organizations must focus on software quality
Events like this outline the importance of ensuring high quality software in aerospace and defense industry. These projects typically fail as a combination of technical, project management and business decisions – each interacting with others in complicated ways magnifying risk and increasing chances of failure. As systems become more complex and advanced, it becomes difficult to test all specific use cases ahead of time during the testing phase. Many tragedies have been avoided because testers have been able to test most scenarios where systems are used. However, many code bugs may slip through undetected during the testing phase and cause problems in unique situations. The longer a bug persists undetected, the costlier it is to fix and the worse the disaster may be. Many organizations engage in an ad-hoc development process and simply inspect at the end through tests to remove all defects. But this isn’t enough.
To ensure fully functioning, high-quality code, developers should implement a strong debug process along with a strong code review process, even before testing process. As Capers Jones points out, "A synergistic combination of formal inspections, static analysis and formal testing can achieve combined defect removal efficiency levels of 99%." In this sector debugging is typically long and arduous as bugs are highly variable, and embedded systems involve many critical components. Bugs may rise from different use cases and may be difficult to pinpoint in large scale applications with millions of lines of code. Code defects can come in various forms: memory leaks, code coverage gaps, and performance bottlenecks all which can surreptitiously degrade functionality, and crash applications. In certain situations, these software reliability problems can cause the entire system to fail and potentially leading to compromised safety.
‘Code profilers’ allow developers to pin point defects quickly, and overcome the traditionally long and arduous debug process
The best approach to make debugging seamless is to have an iterative process using a code profiler, a tool that collects crucial performance and memory/resource allocation information at runtime, synthesize it and display results to a developer. These outputs can be statistical summaries of the events observed (profile), a stream of recorded events (a trace), or graphical representation of information. Code profilers allow developers to find bugs without sacrificing speed and time to market. For robust, large-scale projects where code quality is paramount, AQtime Pro is the profiling tool to use. AQtime Pro is a powerful memory, code coverage and performance profiler that can perform static tests, traces, failure emulations, and more, allowing developers to drill down to code defects that may not be exposed during the testing stage. Through intuitive visualizations, it allows developers to pin-point bugs faster, and has strong language support (C/C++, Delphi, .NET, Java, etc.). It also integrates with Visual Studio, and RAD Studio IDEs to integrate seamlessly into a developer’s workflow. AQtime Pro is trusted by over 1000 developers across the world in organizations where code quality is mission critical.
In the aerospace/defense, poor code quality can be the difference between being successful and loss of life-- don’t ever sacrifice when it comes to the safety. AQtime Pro helps developers find tough bugs, and also helps accelerate code delivery. Learn more about how AQtime Pro can help your organization achieve unparalleled levels of code quality. We can cure your mission critical “code aches”.