Virtual Machines and Aerospace: Lessons Learned
By Julian Thomson, Product Leader
Software and hardware virtualization has become one of the go-to technologies for streamlining operations, improving consistency and reducing costs throughout the commercial IT and software community. Industries that leverage commodity hardware and mass market or open-source applications have embraced virtual machines as an extension of their existing technology baseline, enabling productivity improvements like DevOps and continuous delivery as well as increased reliability and scalability. Until recently, adoption of virtualization technologies for the embedded and specialized applications common in the aerospace industry has been more modest. Nonetheless, there are significant benefits to virtual machines in the development and maintenance of modern aerospace systems, as we have learned through our efforts to integrate them into a variety of avionics, flight management, radar and UAV applications.
One benefit of virtualization during the development phase of an aerospace system is that it can take the place of real hardware for engineers writing, debugging and unit testing the code. Hardware test rigs are expensive, meaning they are often shared among multiple developers working on independent parts of the system, and often lack formal tools for deployment and management of the source baseline. In addition, due to compressed schedules or production delays, real hardware is sometimes not even available until the project is well underway. As an alternative, many organizations develop test harnesses or simulators, which solve the scalability problem, but don’t necessarily simulate the real hardware with 100% fidelity. This approach wastes considerable development time and energy, forcing avionics or system developers to become emulation experts just to get work done. Virtual machines offer a strategy for development productivity that is both high fidelity and scalable without significant hardware costs. In many instances, each developer can have his/her own copy of the platform baseline, encouraging good CM practices and enabling modern development strategies like DevOps. At the same time, product managers can be confident that the code being developed will work seamlessly with the real hardware.
Virtualization can also improve overall quality of an aerospace software application, even as it delivers reduced development time and cost. This is because virtual machines enable the creation of highly scalable test architectures that dramatically increase code coverage and the frequency of unit and integration testing. Multiple platform configurations, usage scenarios and system states can be stored as part of a test archive, with virtual machines dedicated to performing automated tests on a more-or-less continuous basis, as well as in response to developer check-ins, change requests and evolving system requirements. For organizations shifting to a DevOps “automate everything” strategy, virtual machine testing can often be automatically integrated with source submission and release management processes. Virtual machines can also be configured to inject difficult-to-induce hardware errors into system testing, without compromising the integrity of real hardware or playing “what if” guessing games or conducting detailed failure analyses. As aviation failures often result from a cascading series of events, rather than a single fault, hardware fault inject offers the opportunity to significantly improve overall reliability and safety.
Finally, virtualization can also offer cost savings in the integration and validation of whole aircraft systems. Because virtual machines run the same binary code as real hardware, and are capable of communicating on the same external interfaces, approved virtual hosts can often take the place of native hardware processors as subsystems are integrated into a fully-functioning whole. Individual virtual hosts can be configured to interact with real hardware, or with other virtualized hardware over virtual busses, giving hardware, software and system engineers a continuous perspective of how the overall system functions, even as it continues to developmentally evolve.
When taken in total, virtualization can offer some real savings in cost and schedule. The adoption of continuous delivery strategies has been shown to reduce the time to implement a minor change from several weeks and tens of thousands of dollars to a few days and a few thousands of dollars in the lifecycle of a major commercial aircraft system. Virtualization also allows an organization to use development resources more efficiently, allowing them to focus on writing code and tests instead of waiting for test rig availability and debugging on real hardware. These gains translate into faster and more frequent releases, fewer errors in the field and market advantages for teams that adopt virtualization.