Torbz - Fotolia

Evaluate Weigh the pros and cons of technologies, products and projects you are considering.

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

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.

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.

Next Steps

Check out our guide on moving from Agile to continuous development

Gerie Owen sees continuous delivery as a method of continuous improvement

Learn from's continuous software development journey

Dig Deeper on Topics Archive

Join the conversation


Send me notifications when other members comment.

Please create a username to comment.

What does the word 'continuous' mean to your software development efforts?
Continuous software development means the continuous improvement efforts that are implemented in a given software. Software development should be a continuous process. This means that changes to the software should be made as needed and when needed. As technology evolves, software programs require certain modifications to their source codes to meet the current technology needs. As such, continuous development is the process of looking out for needed changes and implementing them in the software.
I feel the word continuous is misused. I prefer the word 'Discrete' Development.  We test 'Discrete' Changes, as they are committed and deployed to environments.   I think very few companies use continuous software development in the most, strictest sense.  

I do think the improvements in that direction are healthy for the industry, but I think we over blow it as being truly 'continuous'.
I always thought of the term "continuous improvement" to refer to the team's functionality, more so than strictly referring to the team's software products. For example, we have bi-weekly retrospectives and discuss the team's strengths and weaknesses, and try to come up with some ways that we can build on strengths and improve weaknesses. These discussions usually end up being as much about people as they are about code.

Our team does have continuous integration, but we don't have continuous deployment or continuous delivery. Because of the nature of what we work on, we frequently don't have a product feature that can be deployed each iteration.
I think the most important features behind any continuous software development are:

  • Planning
  • Less complexity
  • High quality
  • Fast response
  • Use technological ways
  • Delivery on time
I love the way you worded the introduction:

"Combining iterative development with automation produces code so quickly it is now thought of as continuous."

I still am growing to hate the term continuous because of the math connotations that come to mind.  Continuous implies continual repeating without fail ... like a function that is linear drawn on a chart without lifting a pen.  Most processes that are described as continuous probably aren't continuous as that.  I'm not sure, whether grabbing it and applying to everything is actually helping us communicate what we mean better.

I don't feel its continuous, I feel its really discrete, repeated frequently as part of a cycle of process.  People are sometimes lose with how they improve by saying 'we are improving all the time', which isn't accurate, but what they probably mean, is we grow often and big and small increments over big and small time frames.
Let's not forget about continuous testing. Automation might be of great help in dealing with known risks but it takes skilled human testing to discover newly emerging problems.