Application development models have undergone a dramatic transformation. New tools, techniques and languages have emerged to meet a range of enterprise computing needs. But perhaps the greatest change is the pace of development.
Constant software iterations and improvements -- produced through a model called continuous application development -- have replaced lengthy development, testing and release cycles. And nowhere has this transformation been more beneficial than in the cloud.
Continuous application development is not a single idea, but an overarching concept that embraces each step of the application development process. The traditional application development process was code, build, integrate, test, release and deploy. Continuous application development is virtually identical to continuous application release, where each iteration of an application is staged for deployment once testing is completed. Each step in the process is usually small, so iterations move through the development pipeline quickly. As a result, a continuous application development model accelerates the overall development process and improves efficiency.
The rapid updates and flexibility that come with continuous application development are an ideal complement to cloud, as cloud computing allows development teams to quickly deploy and test new application iterations.
Comparing application development models
Continuous app development differs from older application development models, such as waterfall and agile, in a number of ways.
Waterfall development is an older and more traditional approach to software creation. The waterfall process usually starts with design, and then moves to development, testing and eventually release. Development teams must meet strict criteria in each step before advancing to the next one. The result tends to be a slow, siloed and inflexible approach.
Agile software development turned waterfall on its head. An agile approach caters to the idea of iteration. Teams deliver smaller pieces, or incremental improvements, over short timeframes, such as two weeks. Agile is noted for its high levels of inter-team collaboration and the ability to change priorities as needs shift.
However, while agile development offers greater flexibility, it's not necessarily continuous. New assets, such as new code versions, may sit unused for long periods before developers integrate them into subsequent release candidates. But with continuous application development, the idea is to constantly move new releases into production.
DevOps is a recent variation of software development that merges continuous software development with interdepartmental efforts, such as quality assurance (QA) and operations. The idea behind DevOps is that creating a new software iteration does not guarantee the iteration is problem-free. Many traditional application development efforts foster silos that separate QA from development; developers create a new iteration and it gets "thrown over the wall" to QA. Even when the iteration passes QA, the new release frequently blindsides IT teams, who then scramble to deploy and support it.
DevOps seeks to eradicate these traditional silos and form a ubiquitous team that can develop, test and deploy new software. Like continuous app delivery, DevOps is playing a crucial role in cloud computing and, in some cases, facilitating the migration of applications to the cloud.
How continuous software development helped Edmunds.com
Tips for transitioning to a continuous delivery model