<<

Continuous Integration - Agile Best Practice Nita Patel [email protected]

Agile methodologies are gaining a larger share of development programs. According to “The Cranky Product Manager”, October 10, 2006, the waterfall development methodology constituted 55% of development. Waterfall is a sequential methodology where progress flows through the phases of Requirements, Design, Analysis, Implementation, Verification and Maintenance sequentially.

Figure 1: 2006 Distribution of Software Development Methodology

However, from a survey done in 2008, “The Cranky Product Manager” indicates that only 28% of products are developed using the waterfall methodology. More people are using Agile and Scrum methodologies. Nevertheless, waterfall is still in many product development cycles in which Agile cannot be used such as embedded, medical, defense, or heavily regulated industries. Figure 2: 2008 Distribution of Software Development Methodology

The primary idea behind Agile is iterative development, teamwork and collaboration. Since more and more people are using Agile, there is an abundance of best practices being shared.

I recently listened to a webinar by Damon Poole, Founder and CTO of AccuRev and Johnny Scarborough, area VP of Product Engineering at GlobalLogic, on Continuous Integration, an Agile software-development best practice.

Software developers changes on a regular basis but merge, build and test at the end of a series of changes. To find and resolve issues quickly, Mr. Poole and Mr. Scarborough recommended merging and testing right away.

Whether you are working in a small group or on a team which is part of a larger development group, you can use continuous integration to find problems sooner. The idea is that developers should create branches and merge on an hourly basis so that changes can be verified. The team would operate in the same way. Any point release or addition of a feature by a team should be merged into the main branch on a daily basis. This would allow for automated verification on a nightly build.

By always striving for continuous integration, you tend to develop more modular code, bring visibility into team builds, provide a focal point for and help you identify where you are in the development process.

Agile is not a cure-all for software development. But the idea of collaboration and continuous integration are certainly steps in the right direction for more robust code.