By Mike Johnson, JETS Defense Leader
DevOps represents the next level in software development. It takes the development principles of Agile methodologies and couples them with the continuous development, integration, and testing tools necessary to ensure that development does not sacrifice correctness and security for time to release.
Performance operates within the avionics sector, where the correctness and security of the development process is a necessity. In avionics (and related fields such as defense and aerospace), a mistake or oversight in the development process can have significant impacts, including loss of life.
Performance has successfully applied DevOps methodologies in a sector where many may be afraid to even attempt it. Based upon our experiences, there are five things that an organization requires in order to have a successful DevOps journey in such a demanding field.
- Executive Leadership Buy-In
Transitioning from traditional development practices to DevOps often requires significant cultural change throughout the organization. This transition affects how teams operate, are managed, and are evaluated; a change that may even require an updated enterprise Mission/Vision statement to support. In order to transition successfully to DevOps, executive leadership needs to understand and champion the process and work to mitigate or remove roadblocks faced by the development team. - Loosely Coupled Architecture Supporting Small Teams
Traditional development often creates monolithic architecture that requires large teams to support. With DevOps, the focus should be on a looser architecture that enables small teams to develop and support individual components. This transition has the dual benefits of streamlining the development process for each component and concretely defining how the overall system works and how each component interacts. - Full-Lifecycle Development by Software Team Members
In the avionics sector, development and test teams are often separate groups working on different components of the software development lifecycle. While this approach allows role specialization, it also decreases the effectiveness of testing. The test team often has a lesser understanding of the product, resulting in less effective tests. Since testing comes at the end of the process, any detected errors can significantly impact release date and the effectiveness and security of the product.In DevOps, the software team is involved in both development and testing, and testing occurs throughout the development process. Developers should have access to Subject Matter Experts (SMEs) early in the development process so that requirements, test scenarios, and test cases meet the project requirements. This ensures that the developers and testers have the same understanding of the product and that any errors are caught and corrected early in the development process.
- Scalable Continuous Integration
Continuous integration is a key component of the DevOps philosophy. Rather than separating development and testing, code and test cases are developed in parallel to meet the project requirements. This allows every modification to the code to be tested against the requirements so that any deviation is identified immediately and that all code submitted to the codebase fulfills requirements.The challenges of continuous integration and testing depend on the platform that it is developed for. Laptops, servers, etc. are cheap to acquire for testing purposes, but embedded devices are more expensive. This is where virtualization technology is valuable for DevOps. The ability to emulate any system in a traditional desktop environment and integrate the emulated system into the continuous integration and testing system enables the software team to develop a binary that will transition seamlessly to its intended hardware.
- Cloud Support for Continuous Integration
When using cloud integration technology, the speed of the system makes a huge difference. Since each submitted piece of code needs to pass testing before being accepted, significant delays due to testing may have a major impact.Cloud computing provides a great deal of flexibility and scalability to computing systems. By placing continuous integration and testing resources on the cloud, organizations can take advantage of the scale of the cloud when they need it without needing to make massive investments in computing resources.
DevOps for Avionics
Performance operates within the avionics industry, where software needs to be done right the first time. With traditional development processes, this means large teams and long development schedules due to the need to exhaustively check every detail. With DevOps, the development process and tools are engineered to provide these guarantees with minimal overhead. The five factors listed above are essential to an effective DevOps program and can enable organizations in any industry to efficiently develop secure, operational software.
To learn more about DevOps and how it can benefit your organization, contact Performance Software today.