In the diagram above, we present a roadmap to increase software process agility, starting from traditional waterfall development to build automation, test automation, continuous integration and delivery. Moving across the levels involves not only adapting processes and automating them, but also changing organizational culture and structure as needed to fully embrace this approach.
Starting from the left in the diagram, implementing Source Code Control and Build Automation are the first steps in managing software development processes. Virtually every software development organization larger than a handful of developers has implemented them.
When moving towards a more Agile process, the goals are to shorten the software development cycle and increase the frequency of software releases. Implementing Test Automation becomes an attractive value proposition as the develop/test cycle can be repeated more often. As this process of acceleration evolves in an organization, implementing Continuous Integration will allow the developers to write and test software functionality as a continuous process.
The next step is to implement Release Automation, which enables software to be automatically packaged, deployed and tested in a staging infrastructure that simulates the production environment.
Continuous Delivery, or the continuous and automated delivery of software to the end user, is the last stage in that evolution process. Typically it will include offering the software in the cloud (so that software delivery does not require updates on the customer premises or client equipment).
Software development organizations that are moving towards an increased level of Software Process Agility will see significant changes and benefits independent of where the organization is on the path, even before reaching the desired destination.
At Daitan, we work with organizations at different stages of agility. In more conservative and regulated markets (e.g. core telecom), companies operate in a fully structured waterfall model where software goes through discrete and serial phases of development, unit testing, integration and system testing. Companies producing software that is deployed in the Cloud and offered as a service are the ones most aggressively pursuing agility in software development.
The majority is somewhere in the middle of the diagram, trying to move towards more agile software engineering processes. Most of our customers have implemented significant test automation and continuous integration capabilities and are starting to move towards extending this towards release automation and continuous delivery to end users.
To learn more about increasing your software development process agility, download our paper: Software Continuous Integration and Delivery – Increasing Development Agility and Leveraging Outsourcing