developed an integration between ElectricCommander and the Perforce SCM system to enable CI with no need for manual scripting. In addition, we utilized a Perforce integration with the JIRA defect tracking tool, along with ElectricAccelerator, to facilitate fast, efficient CI and verification. In essence, this integration allows our team to associate issues with Perforce changelists or link them directly with Perforce jobs. When code is checked into a specified depot within Perforce, ElectricCommander invokes a build/test procedure. Perforce then updates the issue as appropriate ("in progress," "complete," etc...).
The combination of these tools provides an end-to-end build and change management system. In this way, our developers are able to get rapid feedback, find and fix errors early in the process, and deliver software in an agile fashion.
Since deploying this system along with additional best practices, our software production process is more automated, scalable, visible, and has a measurably shorter production cycle times.
Production Time Reduced by 30 Percent
"What used to take six months, now takes us less than four months," said Wallgren. "This time reduction alone has saved us an estimated $700,000 per year, notwithstanding the 'soft' benefits of predictably meeting deadlines and having the confidence that we are consistently producing highly reliable, top quality software."
A major contributing factor to our efficient system is the notion of parallel builds. With the script-driven approach, our development team only had two "lanes" for builds (where only two builds or procedures could be executed at a time). With the new system, the team can easily manage four lanes, meaning it can do four simultaneous builds at one time. This has allowed us to develop versions faster and support our expanding business. This infrastructure also lets the team take the next step beyond CI, providing the bandwidth and automation needed for "pre-flight" developer builds.
CI has gained favor among developers in part because they gain rapid, frequent feedback on their work and thus reduce the likelihood that they will introduce errors during an integration build. Automated pre-flight builds, where developers are able to run their own builds and a reasonable set of tests prior to code check-in, takes that benefit a step further. Integration errors are identified as quickly as possible without affecting production builds, thus bringing validation even earlier in the lifecycle. Our developers are responsible for writing their own unit tests and some system tests, and they run those along with the build prior to checking code into Perforce. If the build breaks or these tests fail, they have not impacted the rest of the team and can rapidly fix the problem. Developers can run pre-flight builds and tests on more than just their local machine, thus ensuring they have covered all necessary targets/platforms.
Pre-flight builds and tests are now a best practice at Electric Cloud and among many of our customers. We've seen that this approach is directly related to better software quality and ensuring we meet product delivery dates.
Improved Visibility and Reporting
Automating the build and change management process has provided powerful development intelligence that allows us to keep a pulse on our entire build and release system -- often considered the "heartbeat" of development. We have new visibility into our software production, allowing us to quickly answer questions such as, "How many tests were run today?", "Which teams are building successfully?" and "How many clean builds have run this month?" Before, it could take weeks to get simple reports on trends over time. Now, just a few clicks and it's done.
Moreover, we now have a