Make Subversion Agile


Published on

The biggest challenge to effective agile development in a distributed environment lies in maintaining the same level of communication and the same level of access to your Subversion repositories that’s possible when everyone works from one location. The implementation architecture and the tools you choose to support distributed development can either help or hurt.

Published in: Technology
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • I’m a agile software developer who uses SCM to help teams be more effective, and more agile I've worked with distributed teams since I started my career, and almost every project I have worked on has involved collaborating with a development team in another city, or even another timezone. My first development project involved teams in two different cities collaborating on a product, and it was the SCM and build practices that helped enable us to work effectively and to overcome the communications barriers that distance can cause. Because we thought about how we could use our SCM and build practices as a way to communicate, the teams worked together very well, in spite of the distance, the poor network connections, and in spite of the lack of good web-tools. It was working on that team as an engineer where I started thinking about the impact that collaboration and SCM can have on project success, and where I started thinking about what later became SCM patterns. 02/17/10
  • The Agile Manifesto is are principles that guided the development of Agile Methods. Here is how they relate to SCM Individuals and Interactions over Processes and Tools SCM Tools should support the way that you work, not the other way around Working Software over Comprehensive Documentation SCM can automate development policies & processes: Executable Knowledge over Documented Knowledge Customer Collaboration over Contract Negotiation SCM should facilitate communication among stakeholders and help manage expectations Responding to Change over Following a Plan SCM is about facilitating change, not preventing it WHILE GOOD SCM IS ESSENTIAL Bad SCM can make it difficult to be agile. Tools are complicated, code is complicated and teams are complicated. Agile Methods emphasize: Feedback Communication Process that adds value Agile SCM Simple and effective SCM Enables development Not only for agile teams Balance Feedback and Stability 02/17/10
  • So, what’s agile? If you pick up a book on agile, you’ll hear about principles and practices. You’ve probably heard this story before: “ you talk to someone who’s claiming to be agile, and you ask: do you do unit testing? NO, do you do pair programming? NO. Continuous integration? NO. Frequent releases? NO. How can you claim that you are doing agile? WE DON’T DO SPECS or DOCUMENTATION,” So, practices are important… but each team might apply practices slightly differently, so what are the key aspects of agile? Incremental: Small (or at least discrete) steps. Iterative: Adjust and adapt Self Organizing Teams: Agile teams decide how to get the work done and learn from it. Rather than assuming a lot of control (which can slow things down), you’re setting some guidelines and metrics – based on results that the customer cares about, but letting the team work out the details. Because the team is responsible for how they work, they can COMMIT. Self imposed commitment works well. Feedback and Adapt: At the end of each iteration team looks at how well they did against the goal. Some of the issues can involve Requirements, development process, infrastructure… The metric for an agile team is “did they deliver what the customer wants at the end of an iteration?” NOTE: Agile requires lots of discipline. The steps may be fewer, but they must be done well Let’s look at one process briefly: Scrum Agile software development works well in environments where requirement change, where there is uncertainty) SCM processes can support or hinder both incremental and interative approaches. (Talk thorugh scrum diagram. There is testing and CI throughout) 02/17/10
  • START SCM -- Intro to SCM Concepts Module I was speaking to some people at a conference last year about SCM and agile teams. When I reviewed the feedback (in person and forms) I had a couple of reactions: They found the talk useful and they were disappointed that there wasn’t more on branching. The other thing people ask about is Tools. SCM is more than just branching. SCM might not even involve branching at all. SCM is about more than tools. So, we’ll talk about what SCM is, why you (as testers and QA managers) should care, what challenges there are, And also how agile teams might take a different approach to SCM. Agile teams use all of the same tools and concepts, but in a different way. 02/17/10
  • SCM is NOT just branching (Maybe do some effects to reveal each bullet in turn?) Identification: an identification scheme is needed to reflect the structure of the product. This involves identifying the structure and kinds of components, making them unique and accessible in some form by giving each component a name, a version identification, and a configuration identification. For example, this addresses the question, "What version of the file is this?" Control: controlling the release of a product and changes to it throughout the lifecycle by having controls in place that ensure consistent software via the creation of a baseline product. For example, this addresses the question, "How many changes went into the latest version of this product?" Status Accounting: recording and reporting the status of components and change requests, and gathering vital statistics about components in the product. For example, this addresses the question, "How many files were affected by fixing this one bug?" Audit and review: validating the completeness of a product and maintaining consistency among the components by ensuring that components are in an appropriate state throughout the entire project life cycle and that the product is a well-defined collection of components. For example, this addresses the question, "Are all the correct versions of files used in this current release?" The difference is the focus on what you want to do, versus what you are doing. SCM is about putting things together and change management. Version Management is basic, but you also need build management, testing, etc. Branching and Merging are means to an end, but there are many ways to build a tool 02/17/10
  • 02/17/10
  • What this means for agile teams: SCM processes enable you to coordinate, among your team mates, among various sites, between you and your customers. Version Management is a subset of SCM. The most visible one. Build management: Not a typical SCM function, but without the build you don’t know where you are.
  • MODULE START: SCM IN CONTEXT Different SCM for Different teams. Different approaches to solve the problem. For example, a startup team in one room with a shared vision needs less SCM coordination than a team spread across different time zones. A team with one customer, or a software as service provider who controls when updates happen will need less branching than a team with many. The mode modular your architecture, the less variation you need to manage with codelines. Here’s a quick example of modularity using spring 02/17/10
  • Another part of your context is tools. Story: Often people ask me “What SCM Tool should I use.” I can’t give a good answer to that without an understanding of your work style and constraints. Some tools do some things better than others, but you can have an effective process with almost any tool. Here are some things to consider when looking at tools: Start with an understanding of what workflow makes sense for your team. You can be effective with any tool. Don’t put off version control tooling because you can’t get the right too (Skyva Story about not getting Clear Case but being frustrated with current tools.) Qualities: Fast. You want people too commit regularly and not break flow. Transparent: IDE integration Traceability: Integration with issue tracking systems. END CONTEXT ---- End CONTEXT module Photo: Bell Aircraft Corporation, Niagara Falls, New York. Employees must buy their own tools. Many women are learning the use of tools for the first time. Collins, Marjory, 1912-1985, photographer. 02/17/10
  • 02/17/10
  • This slide provides a sampling of the customers who’ve implemented this technology to take advantage of the kinds of benefits and costs savings that it can offer. In fact you can download a Forrester Research report from WANdisco’s website that revealed that customers can expect on average to achieve a 167% return on investment with a 9 month payback period after implementing Subversion MulitSite.
  • Make Subversion Agile

    1. 1. Make Subversion Agile in a Distributed Development Environment Steve Berczuk Agile Expert and Author Jim Campigli VP Product Marketing
    2. 2. QUICKPOLL <ul><li>What agile methodology are you using now? </li></ul><ul><li>Scrum </li></ul><ul><li>XP </li></ul><ul><li>Other </li></ul><ul><li>Not using agile </li></ul>
    3. 3. QUICKPOLL - RESULTS <ul><li>What agile methodology are you using now? </li></ul><ul><li>Scrum </li></ul><ul><li>XP </li></ul><ul><li>Other </li></ul><ul><li>Not using agile </li></ul>
    4. 4. Make Subversion Agile in a Distributed Development Environment Steve Berczuk Agile Expert and Author © 2010 Steve Berczuk
    5. 5. AGENDA <ul><li>Agile Basics </li></ul><ul><li>How SCM Enables Agile Teams </li></ul><ul><li>Distributed Agile Challenges </li></ul><ul><li>Review </li></ul>
    6. 6. Steve Berczuk <ul><li> </li></ul><ul><li> </li></ul><ul><li>[email_address] </li></ul>© 2010 Steve Berczuk
    7. 7. Agile and SCM <ul><li>Communication </li></ul><ul><li>Collaboration </li></ul><ul><li>Feedback </li></ul><ul><li>Agile and SCM establish a framework to </li></ul><ul><ul><li>Enable focus </li></ul></ul><ul><ul><li>Eliminate distractions </li></ul></ul>© 2010 Steve Berczuk
    8. 8. Agile Manifesto <ul><li>Individuals and Interactions over Processes and Tools </li></ul><ul><li>Working software over Comprehensive Documentation </li></ul><ul><li>Customer Collaboration over Contract Negotiation </li></ul><ul><li>Responding to Change over Following a Plan </li></ul><ul><li>Good SCM is essential for Agile Software Development </li></ul>© 2010 Steve Berczuk
    9. 9. What is Agile? <ul><li>Incremental and Iterative </li></ul><ul><ul><li>Feedback, Adapt </li></ul></ul><ul><ul><li>Focus on delivering value </li></ul></ul><ul><li>Self-Organizing Teams </li></ul><ul><ul><li>Commitment </li></ul></ul><ul><li>Communication </li></ul><ul><li>Working Code </li></ul><ul><ul><li>Tests </li></ul></ul><ul><ul><li>Integration </li></ul></ul><ul><ul><li>Private Workspaces </li></ul></ul>© 2010 Steve Berczuk
    10. 10. Agile is… <ul><li>Values: </li></ul><ul><ul><li>Communication </li></ul></ul><ul><ul><li>Feedback </li></ul></ul><ul><ul><li>Working Code </li></ul></ul><ul><li>Tools: </li></ul><ul><ul><li>Continuous Integration </li></ul></ul><ul><ul><li>Version Management </li></ul></ul><ul><ul><li>Automated Testing </li></ul></ul>© 2010 Steve Berczuk
    11. 11. Software Configuration Management <ul><li>SCM Functions </li></ul><ul><li>SCM & Agile Teams </li></ul>© 2010 Steve Berczuk
    12. 12. What is SCM? <ul><li>Functions: </li></ul><ul><ul><li>Identification </li></ul></ul><ul><ul><li>Control </li></ul></ul><ul><ul><li>Status Accounting </li></ul></ul><ul><ul><li>Audit and Review </li></ul></ul><ul><li>Activities: </li></ul><ul><ul><li>Getting Code </li></ul></ul><ul><ul><li>Building </li></ul></ul><ul><ul><li>Branching and Merging </li></ul></ul><ul><li>Communication </li></ul><ul><li>Working Software </li></ul>© 2010 Steve Berczuk
    13. 13. Agile Development © 2010 Steve Berczuk Repository
    14. 14. SCM & Agile Teams <ul><li>Coordination </li></ul><ul><ul><li>Version Management </li></ul></ul><ul><ul><li>Build Management </li></ul></ul><ul><ul><li>Testing </li></ul></ul><ul><li>Essential Function with Low Overhead </li></ul>© 2010 Steve Berczuk
    15. 15. Distributed Teams <ul><li>Challenges </li></ul><ul><ul><li>Communication </li></ul></ul><ul><ul><li>Feedback </li></ul></ul><ul><li>Integration </li></ul><ul><li>SCM tools and processes can help </li></ul>© 2010 Steve Berczuk
    16. 16. SCM In Context © 2010 Steve Berczuk
    17. 17. Distributed Agile Success Factors <ul><li>Project Management </li></ul><ul><ul><li>Shorter Sprints </li></ul></ul><ul><li>Engineering Practices </li></ul><ul><ul><li>Integrate Frequently </li></ul></ul><ul><ul><li>Test </li></ul></ul><ul><li>Review and Retrospect </li></ul>© 2010 Steve Berczuk
    18. 18. Tools <ul><li>Tools Help </li></ul><ul><li>Process/Workflow First </li></ul><ul><li>Qualities </li></ul><ul><ul><li>Fast </li></ul></ul><ul><ul><li>IDE Integration </li></ul></ul><ul><ul><li>Issue Tracking Integration </li></ul></ul><ul><ul><li>Build Integration </li></ul></ul><ul><ul><li>Automation </li></ul></ul><ul><li>People are Human </li></ul>© 2010 Steve Berczuk
    19. 19. Summary <ul><li>SCM Tools and Practices Enable Agility </li></ul><ul><li>Distributed Teams -> Communication Challenges </li></ul><ul><li>Version Management & CI are communication </li></ul>© 2010 Steve Berczuk
    20. 20. More Info <ul><li>Software Configuration Management Patterns: Effective Teamwork, Practical Integration by Steve Berczuk & Brad Appleton </li></ul><ul><li>Continuous Integration: Improving Software Quality and Reducing Risk by Paul Duvall and Andy Glover </li></ul><ul><li>CM Crossroads: </li></ul>© 2010 Steve Berczuk
    21. 21. Thank you! <ul><li>For more information: </li></ul><ul><li>Steve Berczuk </li></ul><ul><li>Engineer, Humedica </li></ul><ul><li>[email_address] </li></ul><ul><li> </li></ul><ul><li> </li></ul><ul><li> </li></ul>© 2010 Steve Berczuk
    22. 22. QUICKPOLL <ul><li>Is your development organization…? </li></ul><ul><li>Local to one site </li></ul><ul><li>Regional </li></ul><ul><li>National </li></ul><ul><li>International </li></ul>
    23. 23. QUICKPOLL - RESULTS <ul><li>Is your development organization…? </li></ul><ul><li>Local to one site </li></ul><ul><li>Regional </li></ul><ul><li>National </li></ul><ul><li>International </li></ul>
    24. 24. Make Subversion Agile in a Distributed Development Environment Jim Campigli VP Product Marketing
    25. 25. AGENDA <ul><li>Central Server Architecture </li></ul><ul><li>Proxy Server </li></ul><ul><li>Subversion MultiSite </li></ul><ul><li>Subversion Clustering </li></ul><ul><li>Summary </li></ul>
    26. 26. Central Subversion Server <ul><li>Central servers can’t support agile in large distributed environments. </li></ul><ul><ul><li>Slow networks cause remote sites to checkout and commit infrequently. </li></ul></ul><ul><ul><li>Continuous build integration becomes impractical </li></ul></ul><ul><ul><li>Single point of failure architecture limits availability. </li></ul></ul>Copyright © 2009 - 2010 WANdisco, Inc. All rights reserved.
    27. 27. Proxy Server <ul><li>Proxy server solutions have the same network performance issues for commits and other writes. </li></ul><ul><ul><li>Remote sites can’t perform builds locally if write steps are involved. </li></ul></ul><ul><ul><li>Master server is a single point of failure for commits and other writes. </li></ul></ul><ul><ul><li>No guarantees of transactional consistency between master and slave servers. </li></ul></ul>Copyright © 2009 - 2010 WANdisco, Inc. All rights reserved.
    28. 28. Subversion Multisite <ul><li>Continuous communication. </li></ul><ul><ul><li>Latest changes are available everywhere at LAN-speed. </li></ul></ul><ul><ul><li>Merge conflicts are caught and fixed when they occur. </li></ul></ul><ul><li>Continuous build integration. </li></ul><ul><ul><li>Each site can perform builds and test locally with the latest code. </li></ul></ul>Copyright © 2009 - 2010 WANdisco, Inc. All rights reserved. Subversion MultiSite supports distributed agile by enabling:
    29. 29. Subversion MultiSite <ul><li>Peer-to-peer architecture with no single point of failure. </li></ul><ul><li>Subversion repositories connected over a WAN synchronize automatically with each write operation. </li></ul><ul><li>Developers at all locations experience LAN speed performance for both read and write operations. </li></ul><ul><li>Built-in hot backup and automated disaster recovery features make third party solutions completely unnecessary. </li></ul><ul><li>Transparent implementation doesn’t change Subversion’s behavior, so there’s no retraining. </li></ul>Copyright © 2009 - 2010 WANdisco, Inc. All rights reserved.
    30. 30. Subversion Clustering <ul><li>Allows Subversion servers to be deployed in an active-active cluster. </li></ul><ul><li>Same replication technology as Subversion MultiSite. </li></ul><ul><li>Offload build process from development servers at large sites. </li></ul><ul><li>Latest changes from development servers are available on build servers. </li></ul>Copyright © 2009 - 2010 WANdisco, Inc. All rights reserved.
    31. 31. Subversion Clustering <ul><li>Shared nothing clustering </li></ul><ul><ul><li>No sharing of disk, memory or CPU. </li></ul></ul><ul><li>No single point of failure. </li></ul><ul><ul><li>Even load balancers can be made redundant. </li></ul></ul><ul><li>The cluster appears to end users as a single Subversion server. </li></ul><ul><li>Intelligent load balancing for optimal performance. </li></ul><ul><li>Failover is transparent and immediate. </li></ul>Copyright © 2009 - 2010 WANdisco, Inc. All rights reserved.
    32. 32. Subversion Clustering <ul><li>Can be implemented in combination with Subversion MultiSite. </li></ul><ul><li>Local clusters can be combined into a active-active WAN cluster. </li></ul><ul><li>Entire solution can be monitored and administered from one location. </li></ul>Copyright © 2009 - 2010 WANdisco, Inc. All rights reserved.
    33. 33. Customers
    34. 34. Summary <ul><li>Unique technology allows distributed teams to work as one at LAN-speed over a WAN, not in silos. </li></ul><ul><li>Subversion MultiSite supports distributed agile development by enabling: </li></ul><ul><ul><li>Continuous communication </li></ul></ul><ul><ul><li>Continuous build integration </li></ul></ul><ul><ul><li>High availability with no downtime. </li></ul></ul><ul><li>All servers can be monitored and administered from a single location. </li></ul><ul><li>Subversion Clustering combines intelligent load balancing with WANdisco’s unique technology to remove the performance bottleneck of a central server and eliminate downtime at a single location. </li></ul><ul><li>Subversion Clustering can be implemented standalone or in combination with Subversion MultiSite to enable local clusters to be combined into an active-active WAN cluster. </li></ul><ul><li>Both solutions make full 24X7 operation possible. </li></ul><ul><li>Both solutions feature a transparent architecture that eliminates retraining. </li></ul>
    35. 35. Questions and Next Steps <ul><li>For more information on Subversion or to request a copy of slides used in today’s presentation, please contact: </li></ul><ul><ul><li>Email: [email_address] </li></ul></ul><ul><ul><li>Web: </li></ul></ul><ul><ul><li>Phone: 866 846 0404 (U.S.) </li></ul></ul><ul><ul><li>Phone: +44 (0)114 3039985 (Europe) </li></ul></ul><ul><ul><li>Join the Subversion Community today! </li></ul></ul><ul><ul><li>http:// / </li></ul></ul><ul><ul><li>Learn more about Subversion services and training </li></ul></ul><ul><ul><li>http:// </li></ul></ul>