P4 Branching Overview


Published on

Go2Group's Tom Tyler presents at the 2007 Perforce User Conference in Las Vegas on the topic of Branching and Merging.

Published in: Technology, Business
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
  • “ Hello, and Good Afternoon, Ladies and Gentlemen! I'm Tom Tyler, Chief Technology Officer of The Go To Group. Today I'll be presenting a topic I'm particularly passionate about, Software Production Line Automation. We refer to a period of the late 18th and early 19th centuries as the "Industrial Revolution." Standards were established, manufacturing processes and tools evolved, and the contributions of individual craftsmen were multiplied many times over. Now, it was hardly a revolution , as it took about 50 years to really catch on. I'd say the "Software Industrial Revolution" started about 15 years ago, and it's still under way. The state of the software development industry today is one in which there are many examples of well-established best practices, but they haven't fully permeated the culture of our industry. Today I'll convey what I see as some of those best practices. I hope you'll find it useful and informative, or at least entertaining.”
  • P4 Branching Overview

    1. 1. Perforce Branching Moving Fast from Theory into Practical Application by C. Thomas Tyler The Go To Group, Inc. www.Go2Group.com
    2. 2. Overview <ul><li>Introduction </li></ul><ul><li>Branch Model Basics </li></ul><ul><ul><li>The Mainline Model </li></ul></ul><ul><ul><li>Planned and Organic Release Processes </li></ul></ul><ul><ul><li>More than one MAIN? </li></ul></ul><ul><li>Directory Structure Considerations </li></ul><ul><ul><li>How Many Depots? </li></ul></ul><ul><ul><li>Products, Product Families, and Projects </li></ul></ul><ul><ul><li>Branch Container Directories </li></ul></ul>
    3. 3. Overview <ul><li>Interview: Release Process Classification </li></ul><ul><ul><li>Planned vs. Organic? </li></ul></ul><ul><ul><li>Simple Patches or Complex Maintenance? </li></ul></ul><ul><ul><li>Hosted, Licensed, or Burn & Ship? </li></ul></ul><ul><ul><li>Generic Product or Custom? </li></ul></ul><ul><ul><li>Scale? Large-scale, globally distributed? </li></ul></ul><ul><ul><li>Sophistication? </li></ul></ul><ul><li>Sample Case Studies </li></ul><ul><li>Q&A </li></ul>
    4. 4. What is Software Production Line Automation? <ul><li>The Mainline Model </li></ul>MAIN Int FSA Rel Dev 3.0-R 4.0-R 4.1-R FSB
    5. 5. What is Software Production Line Automation? <ul><li>A phrase that describes the objective, a Software Production Line, and the means to achieve it – Automation ! </li></ul><ul><li>An approach to Software Development that recognizes: </li></ul><ul><ul><li>Software development infrastructure should be thought of as a competitive differentiator, not just an expense of software development </li></ul></ul><ul><ul><li>To remain competitive, regular retooling and modernization are required </li></ul></ul><ul><ul><li>There needs to be an ongoing effort to produce software Better, Cheaper, Faster, not just a reaction to pain </li></ul></ul>
    6. 6. What is Software Production Line Automation? <ul><li>Goals: Bring to Software Development new capabilities: </li></ul><ul><ul><li>Agile Release Capability </li></ul></ul><ul><ul><ul><li>“I want to create a release with whatever functionality has passed QA to date, and ship it NOW !” </li></ul></ul></ul><ul><ul><li>Real-Time Project Status </li></ul></ul><ul><ul><ul><li>“Did Bug 32342 make it into Release 3.4?” </li></ul></ul></ul><ul><ul><ul><li>“Did the build we shipped today pick up the emergency fix coded last night?” </li></ul></ul></ul><ul><ul><ul><li>“Is Heather’s fix for Bug 992 checked in yet?” </li></ul></ul></ul>
    7. 7. Are We There Yet? <ul><li>&quot;Ford is in the middle of a manufacturing journey,&quot; ... &quot;We're making record investments in our plants. It started in the spring of 2004 with the grand opening of Dearborn Truck. This plant is the future. It defines sustainable manufacturing and is being studied by industrialists from all over the world.“ </li></ul><ul><ul><li>– Matt DeMars, Ford Motor Company’s 's vice president of North American Vehicle Operations </li></ul></ul>
    8. 8. Terminology <ul><li>Product Line (or Product ) – The name of a software product. Examples: </li></ul><ul><ul><li>Oracle ® Database </li></ul></ul><ul><ul><li>Microsoft ® Office PowerPoint ® </li></ul></ul><ul><ul><li>Jeep ® RuggedCar </li></ul></ul><ul><li>Project </li></ul><ul><ul><li>A defined set of software changes to a Product, including enhancements and bug fixes </li></ul></ul><ul><ul><li>Temporary concept with a scheduled beginning and end </li></ul></ul><ul><ul><li>Examples: </li></ul></ul><ul><ul><ul><li>Oracle ® 9i </li></ul></ul></ul><ul><ul><ul><li>Microsoft ® Office PowerPoint ® 2003 </li></ul></ul></ul><ul><ul><ul><li>The 2006 Year Model Jeep ® RuggedCar </li></ul></ul></ul><ul><li>Release – An official delivery a project </li></ul>
    9. 9. Automotive Industry Analogy V1.0 Product Lines: FastCar V3.0 V1.0 V2.0 2006 RuggedCar 2005 FastCar 2006 FastCar 2007 FastCar 2007 RuggedCar V2.0 , RuggedCar
    10. 10. What is Concurrent Development? <ul><li>Advanced Capability provided by modern Software Production Lines </li></ul><ul><li>Benefits: </li></ul><ul><ul><li>Optimal Resource Utilization </li></ul></ul><ul><ul><ul><li>Development and QA resources can be load-balanced among Projects </li></ul></ul></ul><ul><ul><li>Project Management Flexibility </li></ul></ul><ul><ul><ul><li>Agile processes can better adapt to changing requirements and schedules </li></ul></ul></ul><ul><ul><li>Enhanced Production Capacity – over the course of a year, more functionality can be delivered per unit time </li></ul></ul>
    11. 11. What is Concurrent Development? Dev QA UAT Old Production Lines – Serial V2.0 V3.0 <ul><li>No Isolation from Unrelated Changes </li></ul><ul><li>Difficult to Pull Functionality from a Project once work is started. Only option is to deliver LATE … or Ship It Broken </li></ul><ul><li>Poor Resource Utilization </li></ul><ul><li>No Clear “Quality Level” Separation </li></ul>Problems:
    12. 12. What is Concurrent Development? Dev QA UAT Modern Production Lines – Concurrent Dev QA Main Codeline Contains “Shareable Quality” Code Project A Project B UAT V2.0 V3.0 Project “Feature Sets” Defined Earlier Release-Commit Decisions for changes can be Deferred, enhancing PM Flexibility
    13. 13. Modern Software Production Lines Hot Fix Main Codeline (Initial Baseline) Project B Project C Dev QA UAT Dev QA Planned Integration Production Codeline V2.0 V3.0 V2.2 V2.4 V2.0.5 Project A
    14. 14. Requirements Management Issue and Defect Tracking Systems Call Center and Help Desk Ticket Systems Modern Software Production Lines Workflow Automation Systems (Defined and Automated Process) Advanced Software Configuration Management Systems with Branch & Merge Capability Critical Software Production Line Infrastructure:
    15. 15. Modern Software Production Lines <ul><li>Supported By: </li></ul><ul><li>Automated Build Systems </li></ul><ul><li>Continuous Integration Systems </li></ul><ul><li>Project Status Dashboards </li></ul><ul><li>Codeline Management Policies </li></ul><ul><li>Automated Unit Test Suites </li></ul><ul><li>Automated Regression Test Suites </li></ul><ul><li>Directory Structure Standards </li></ul>Workflow Automation Systems (Defined and Automated Process) Advanced Software Configuration Management Systems with Branch & Merge Capability Critical Software Production Line Infrastructure:
    16. 16. Modern Software Production Lines Directory Structure Standards Source Area – Developer’s View Release Area – “No Humans Allowed” Area Populated by Builds Config Area – Contains things that vary on a per-runtime environment basis Deployment Area – Contains fully configured files for runtime environment, providing an Operational View
    17. 17. Business Case Ingredients <ul><li>Companies like Nokia, HP, and Lucent have done the pioneering – they’ve taken the arrows … </li></ul><ul><li>… and paved the roads. </li></ul><ul><li>Arrows: </li></ul><ul><li>Experimental Processes and Tools </li></ul><ul><li>Uncertain ROI </li></ul><ul><li>Great Effort Required </li></ul><ul><li>Paved Roads: </li></ul><ul><li>Established Best Practices </li></ul><ul><li>Evolved Development Infrastructure Systems </li></ul><ul><li>Proven Methodologies </li></ul>
    18. 18. <ul><li>Reduced Time-to-Market, Defect Rates, and Engineering Costs by factors of 3 to 50! </li></ul><ul><li>Increased ability to hit Market Windows </li></ul><ul><li>The SPLA Roadmap is complimentary with Sarbanes-Oxley Compliance effort </li></ul><ul><li>… and can help climb the SEI Scale or attain other industry recognition </li></ul>Business Case Ingredients
    19. 19. Roadmap to Automation <ul><li>Assess your current Software Development Infrastructure </li></ul><ul><ul><li>Identify “Low Hanging Fruit” (Easy, High ROI Objectives) </li></ul></ul><ul><li>Create a Vision of an efficient Software Production Line for your Organization </li></ul><ul><li>Modify Objectives of Project Leads – Make enhancement of the Software Production Line a priority </li></ul><ul><li>Dedicate Staff to Software Production Line Engineering </li></ul><ul><ul><li>Estimate 1 Engineer per n contributors, where n ranges widely from 20 to 200, depending on level of evolution and automation already in place. More automation requires less staff </li></ul></ul>
    20. 20. Roadmap to Automation <ul><li>Form a Software Production Line Engineering Team </li></ul><ul><ul><li>Include an energetic, optimistic, and persistent Software Production Line Evangelist </li></ul></ul><ul><li>Dedicate Capital Acquisition Budget to Software Production Line Engineering </li></ul><ul><li>Set the Mission of the Team: </li></ul><ul><ul><li>To Drive the Definition, Modeling, Improvement and Automation of the Software Development Process </li></ul></ul><ul><ul><li>To constantly evaluate and prototype emerging software production line technologies </li></ul></ul><ul><ul><li>To purchase and integrate selected tools and systems </li></ul></ul><ul><ul><li>To strive for better/cheaper/faster production methods </li></ul></ul>
    21. 21. Conclusions <ul><li>Software Production Lines vastly improve efficiency of software development processes </li></ul><ul><li>Modern Software Production Lines with Concurrent Development provide Agile Release Capabilities </li></ul><ul><li>New Software Production Line processes, tools, and standards are continually emerging – Have Someone on the Lookout! </li></ul><ul><li>Plan to reinvest continually in your Software Production Lines </li></ul>
    22. 22. Conclusions <ul><li>What some refer to as the “Software Industrial Revolution” is Under Way </li></ul>
    23. 23. Questions?
    24. 24. Thank You! Software Production Line Automation with Concurrent Development [email_address] www.Go2Group.com