Archive for the ‘SCM’ category

Do You Really Know what Continuous Integration is All About?

May 17th, 2012 by clucca

When I ask people what Continuous Integration (CI) is, I generally get a lot of different answers. Popular ones include:

“Running builds all the time!”

“Binaries on demand for QA.”

“The automation of the build so that developers don’t have to do it.”

And my favorite – “That server that sits in the corner that only the release engineer cares about.”

While all of these responses might be partially true, they don’t really cut to the core of what Continuous Integration is all about.

The true value that CI provides to your organization is QUALITY.

Let’s take a step back and talk about how quality happens. If we take a typical software development organization, feedback from the QA team is what drives product correctness. This feedback is used to help developers fix mistakes, and even change course in the way that something is designed for a specific release. One of the best ways to improve quality is to get that feedback to the developers faster, so developers don’t invest too much time, effort, and work into something that might actually be broken.

In Mary Poppendieck’s book “Lean Software Development: An Agile Toolkit” she often refers to feedback loops as being an important part of a development cycle – even going as far to point out that feedback loops help optimize certain common objects we use in everyday life, like a traffic light or in my opinion, a toaster oven. Feedback loops are all around us, it’s the difference between waiting at a traffic light that operates on a timer versus the ones that take feedback from the sensors in the road, sensing when vehicles are there. Which one do you think is more efficient?

This is what CI really is, it’s a basic feedback loop to tell your development organization that the code is either alive or dead. If dead, notify everyone and fix it. Without it, you might wait a week without fixing the problem, and will have coded yourself into a bad situation. It’s not about running builds all the time, it’s about knowing your code is still good.

What’s even more interesting about the current state of CI is that people are figuring out all kinds of ways to add new types of automation to it. For example, with Continuous Deployment, teams are measuring how the builds perform in a deployed state, even adding automated testing to it.

CI is turning into the ultimate feedback machine, going beyond regular builds and improving quality for development organizations.

General Availability for Industry’s First Seamless Integration of Enterprise-Level Security and Visualization into Git

April 3rd, 2012 by AccuRev

AccuRev released for general availability today the first Git integration that seamlessly bridges the world of commercial tools and open source software configuration management.

Kando General Availability for Industrys First Seamless Integration of Enterprise Level Security and Visualization into GitAccuRev’s Kando, an enterprise security and compliance platform for Git, which was released in beta in January, complements the open source SCM tool with additional functionality, allowing organizations using Git to simultaneously leverage enterprise-level security and requirements traceability.

Kando is the first software development solution that enables Git development shops to add workflow, issue tracking, security, change requirements and other capabilities to the software development process, all while maintaining the flexibility and familiarity of Git environments.

Kando’s ground-breaking enterprise-level security and compliance capabilities allow its users to:

  • Comply with enterprise-level regulations, by providing full audit and traceability
  • Secure Git with access control capabilities, and support for enterprise authentication via LDAP and Microsoft Active Directory
  • Visualize and manage development processes that use Git in AccuRev’s StreamBrowser™ environment
  • Support Software Change and Configuration Management (SCCM) through change-based development with AccuRev Change Packages

“Our Kando Beta announcement in January had an overwhelmingly positive response, and it is clear that Git adoption has expanded well beyond the Linux community, into product development and IT,” said Lorne Cooper, AccuRev’s CEO. “Kando can solve many security and requirements traceability problems that enterprise organizations face when adopting Git, and really allows Git an opportunity to scale the development process across enterprise software development teams.”

During the development of Kando, AccuRev established the Kando Technical Advisory Board, comprised of representatives from several enterprise organizations with Git environments. To hear what they are saying, or to learn more about Kando, visit http://www.accurev.com/kando.

Avoiding Merge Hell

March 7th, 2012 by clucca

As you start to scale a software development process it becomes apparent that code and user stories have to be merged more frequently. Sometimes changes may flow from one organization to another. This means that you will need to take code from one team, merge, integrate and test those changes with everyone. Each team needs to be able to work on its own schedule, this means that if multiple teams want to work on different sized iterations they can. It also means they can deliver changes as needed and on a regular basis, independent of other teams.

To do this in a traditional Software Configuration Management system, you’ll face two major problems.

  1. You have to merge these code changes daily for them to be of any use.
  2. You also still need to keep visibility into what stories are shared between teams, because delivering changes from user stories that are not completed in a sprint would be disastrous.

Typically, configuration teams use a single baseline or “trunk” methodology for situations like this, where all changes from each team are delivered to trunk and pulled from trunk as their iterations complete.

In terms of traditional Software Configuration Management, your teams will have to deal with these branching and merging issues. But there are STILL other problems that can happen when you use this trunk methodology:

  1. Delivering 2 weeks worth of changes only causes isolation among teams, because teams are working in such a rapidly paced environment.
  2. It’s too difficult to pick out each user story from the codebase as it is completed because no tracking is in place.
  3. Figuring out the dependencies of those above mentioned user stories is complex.
  4. Identifying what changes came from what branch is impossible.

This “baseline pollution” is not scale-able. There are a few ways to alleviate these issues that break the baseline mold. I recommend using a development hierarchy, and manage the relationship of dependencies between branches. This could also include process steps such as integration, quality assurance and code reviews.  A separate code configuration can be used for each step and user stories could simply be drag and dropped between each team, state or branch instead of a merge.

Doing this will increase code stability. As a completed user story is pushed from one stage to the next, the particular change as well as the system as a whole reaches a higher level of maturity. Many traditional SCM tools do not easily support or surface a development hierarchy. AccuRev supports the creation of a hierarchy, gives visibility into the changes at each stage, and enables straightforward merging between stages.