Traditional Software Development such as in Waterfall Model, programmers often code in isolation for days or even months before integrating different modules developed by the team. Code shared between multiple people and frequent changes often introduce lot of integration complications, dependent bugs etc. In Scrum, team is in hyper productive mode and usually churns out code at a faster pace. Often, Scrum team spends time in debugging conflicts resulted in integrating software modules and it is very time consuming. This is one of the reasons why Scrum experts recommend using CI – Continuous Integration. Continuous Integration allows us to have several clean builds in a day. There are several tools such as Apache Continuum, CruiseControl etc are capable of automating compilation, unit tests etc activities to ensure that the code submitted is always consistent and with good quality.
-
Always use a Software Revision Control – A code repository is a must to manage software development project. Revision Control software such as Subversion, CVS, Rational Clearcase etc are industry standard software that manage your software efficiently.
-
Automating the build – Single command should run the build – using tools such as Ant, Maven, MSBuild etc. This is very essential as it avoids manual build process/conflict/dependency issues and successful builds can even be emailed or SMSed to the concerned people. Build errors/stats could also be documented.
-
Every commit should trigger the automated build – This will ensure the integrity of each commit automatically.
-
Automated tests on built binaries/load (Self Test) – As soon as the build process completes, the sanity test cases are run – automated. Again, the test results can be broadcasted via email or SMS or via a Build Portal. This automation will avoid doing mundane tests on the build. This will give more time for the team to do more serious work.
-
Latest Builds Get Deployed automatically - There is no other better way to please the customer to send the build or deploy the load automatically to their environment as soon as the build completes. We may decide to do this every end of sprint. Customer need to put any effort to get the new load.
Benefits are priceless but the main challenge is to build the CI environment and it requires some time and expertise. There are tools available for developers which could make life simpler.
List of CI Tools:
-
CruiseControl – Java based framework to setup CI
-
Apache Continuum – Continuous Integration Server and Build server
-
Bamboo – Bamboo is used for continuous integration by over 1100 organisations in 53 countries around the globe
-
Cascade – Faster, Smarter Software Development
-
Rational Team Concert – Tool from Rational to improve build process.
Many tools are out there, please try and chose for your Scrum development work. Do let us know your feedback.