After writing about Rally Software (which makes software for managing Agile projects), I was introduced to a partner of Rally's named AccuRev. I recently had the chance to talk to Damon Poole, the CTO of AccuRev, and learn a bit about the company's products and what they do.
In recent years, AccuRev shifted its focus to Agile development. It specializes in visualization and enforcement of software development processes. The general idea of AccuRev's products is not to be "heavy handed" but to function instead as a "helping hand." AccuRev's software aims to take the thinking out of following the rules and processes put into place.
Damon said that AccuRev's typical customers are "people where the software is mission critical to them," not shops where coding is a "seat of the pants" process. Its customers range in size and not all of them use Agile.
Multistage continuous integration
One topic that Damon and I discussed is the concept of continuous integration. In Agile development, as each person develops, their work is "continuously integrated" into the main code tree so the other developers are immediately using it too. This works well on smaller teams, but on larger teams, it devolves into chaos. Damon calls it "continuous noise."
Although I have not worked in an environment where this was occurring, I can definitely imagine the difficulty of trying to work while also trying to constantly deal with code breakages due to the constant integrations. To relieve this pain, AccuRev enables "multistage continuous integration" (MCI). MCI breaks the overall team up into a "team of teams," and each team performs its own continuous integrations and then periodically syncs with the main code branch. This allows problems to only cause the relevant team to resolve them, instead of having them impact everyone.
Version control system
The company's flagship product (which is called AccuRev) is a version control system that also contains process management. This is where the MCI system gets implemented. In talking to Damon about AccuRev's version control, it sounds like a system that is very nice to use.
It is an object-oriented system, where each node of the version control can do things like inherit from a parent. AccuRev's system allows the developer to literally see the branching of the code. Because of the object-oriented node structure, you can do code merges quite easily.
Damon also talked about a feature that I find neat; it's the ability to select multiple nodes and perform analysis and selective merging, such as, "show me what bug fixes are in node A and not node B" or "merge only the bug fixes from node A to node B, but not the new features." You can also pick any given node, and see a complete view of the product as it exists at that node. This is pretty powerful functionality. AccuRev's system has an integration engine that allows its products to easily integrate with other systems (including Rally), various build tools, and a number of bug tracking systems.
Useful for specific teams
Based on the features I discussed with Damon, AccuRev does a lot more than most of the version control systems that I've seen. I think its system is very good, particularly for large or distributed teams. AccuRev may be overkill for some developers, but for environments where a strict adherence to a particular process is needed, a system like this could definitely be useful. (The company offers a 30-day trial of AccuRev.)
I would definitely like to hear from anyone who has used AccuRev. If you have, please post your thoughts about the company's products in the discussion forum.
J.JaDisclosure of Justin's industry affiliations: Justin James has a working arrangement with Microsoft to write an article for MSDN Magazine. He also has a contract with Spiceworks to write product buying guides.
—————————————————————————————————————————————————————————-Get weekly development tips in your inbox Keep your developer skills sharp by signing up for TechRepublic's free Web Developer newsletter, delivered each Tuesday. Automatically subscribe today!
Justin James is an OutSystems MVP, architect, and developer with expertise in SaaS applications and enterprise applications.