Torbz - Fotolia
Three traits of continuous software development
What is 'continuous' in software development? Combining iterative development with automation produces code so quickly it is now thought of as continuous.
Software development lingo, like technology, continues to change over time. Does that make it continuous? The word continuous has been used to describe an improvement process, as in "continuous improvement," as well as in processes used throughout the software application lifecycle such as continuous integration, continuous deployment and continuous delivery. Lumped together, technologists call these development processes "continuous software development." The adjective has come to represent many of the same traits found in agile software development such as being iterative, automated and quick to deliver. Let's talk about some of these terms and see how they relate to produce customer-driven results.
Continuous improvement
The idea of continuous improvement was first made popular by W. Edwards Deming to describe a continuous feedback loop of delivery. The model, used in various ways in business, describes a cycle of planning, delivering to a customer, gathering feedback and acting on that feedback. In doing this, a development team continually improves on their products, pleasing their customers with new enhancements or changes based on customer feedback.
This feedback cycle is used and promoted in agile methodologies and, in fact, is one of the few requirements of the Kanban methodology, in its directive to "measure and optimize flow." This optimization of flow is also referred to as, you guessed it, "continuous flow."
Although continuous improvement is not always lumped together in the series of "continuous development" terms, it plays a part in the overall development cycle. With the right methodologies and application lifecycle management (ALM) tools, even continuous improvement will be iterative, automated and speedy.
Continuous integration
In continuous integration the key to quick delivery is all about automating your build and release processes. By automating regression tests and build and deployment processes, development teams can build, test and release code in a fraction of the time it would take to execute each of these steps manually.
SearchSoftwareQuality's Continuous Integration Guide includes a four-part series of tips by Howard Diener that details how you can use continuous integration in a variety of ways to speed the development cycle, remove complexity and improve quality.
By using the appropriate ALM and continuous integration tools and processes, a software development team can shorten development cycles and produce daily (or even quicker) builds. Developers can establish immediately that they have working, integrated code instead of having to wait for weeks to test their code in an integrated fashion.
Continuous deployment and continuous delivery
These terms are similar and carry on the common theme of automation and speed. The first step is continuous integration with builds in the development and test environments. The team continues with automated processes to deploy the code to production environments and to deliver to customers. These terms sometimes are used interchangeably, with a subtle distinction in that continuous delivery means that the team has the automated tools and processes that make the code deployable at any time. Continuous deployment takes the model one step further, with automated deployments to production.
Although used in many different contexts, the word continuous, in software development, is similar to the word agile. Combining iterative development with automation produces code so quickly, it is now thought of as continuous.