Software Configuration Management. Diego N. Pamio Software Configuration Manager Software and Solutions Group Oct 31 – Dec 5, 2007. ICE Breaker #1. “Truth and lies” I’ve never been on a business travel overseas. I had an interview with Bjarne Stroustrup. (creator of C++). I’m 29.
Software Configuration Management Diego N. Pamio Software Configuration Manager Software and Solutions Group Oct 31 – Dec 5, 2007
ICE Breaker #1 • “Truth and lies” • I’ve never been on a business travel overseas. • I had an interview with Bjarne Stroustrup. (creator of C++). • I’m 29. • I’m a magician. • I play guitar. • I’ve started teaching at universities 5 years ago. • I was in France last year giving a presentation about Processes and CMMI in the European SEPG Congress. • I used to practice fencing.
Eng. Diego N. Pamio (firstname.lastname@example.org) SWE Experience Software Developer Process Engineer Software Configuration Manager SCM Experience Large Corporations Small Companies Startups Teaching Experience University Teaching Computer Graphics Quality Management Systems Enterprise Trainer/Coacher Seminars SWE Eng. Process/CMMi SCM About the presenter
About the attendees • Present yourself • (nick)Name • SWE Related Education • Professional experience/background • Previous knowledge on SCM (if any) • Distinctive tag
About the course • First time • Previous & Related: SCM Seminar • Why a course on SCM? • Fill the gap • Prepare people for current work environments • Teach to teach
Course Topics Introduction Tools Concepts Activities
Configuration Management Introduction Course Presentation Context of the SCM discipline What SCM is and what SCM is not State of the Practice State of the Art Resources on SCM Course Topics
SCM Concepts Configuration Configuration Item Versions, revisions, and evolutions Labels Baseline Course Topics
SCM Activities Configuration Identification Change Control Status Accounting Audits Build Management Release Management SCM Planning Course Topics
SCM Tools Introduction Types of tools to aid SCM. Versioning Tools. Distributed vs. Centralized. Change Management Tools. Comparison Criteria. OpenSource Tools. Microsoft Workshop: Visual Source Safe Doing de basics. Microsoft SCC IBM-Rational Workshop: ClearCase Perforce Workshop: P4, P4Web OpenSource SCM Workshop: Subversion. TortoiseSVN Distributed SCM Workshop: Mercurial Other tools: Accurev, PlasticSCM, CVS, PCVS Course Topics
Specific Course Objectives • Understand the scope and components of the SCM discipline. • Comprehend the importance of SCM in SWE. • Get knowledge and know-how apply SCM terminology. • Comprehend the different SCM strategies and approaches and know when to apply each one and which tools supports each one of them. • Be able to perform the basic SCM related activities of any SWE Engineer, using different tools.
Level of Skills Evaluation Synthesis Analysis Application Comprehension Knowledge • Bloom’s Taxonomy
Exam • At the end of the course, of course. • Weighted Multiple Choice+Exercise resolution • Open-wikipedia • Levels of skills to be evaluated: • Knowledge (trivial) • Comprehension • Applicatoin • Exam Report
Relationship with SW Engineering Software Engineering Body of Knowledge ASQ Certified SW Engineer Body of Knowledge FDD Best Practices Configuration Management Configuration Management Configuration Management Domain Obj. Modeling General, Ethics Requirements Project Management Regular Builds Methods and Tools Develop by Feature Construction Quality Management Project Management Design Processes Inspections Processes Individual Ownership Testing Metrics Feature Teams Quality Visibility of Progress Maintenance Verification & Validation
What is SCM Integrity Work in teams Manage the Change Recover the past
What else? • Adictive (in the good sense) • Challenging • Sometimes hard-to-solve problems • Plenty of Professional Judgement involved • Disciplined
and what is not • Process • See SWE BoK • Quality • See SWE BoK • CMMi • A Tool, any tool, all the tools together • Configuration MANAGEMENT, not SLAVERY.
SCM Myths • SCM is Difficult, monotonous, and time consuming • It is worth only when you are working in (big) teams • It is worth only when you have distributed development • Is just for the source code • Is expensive • Software development can succeed without SCM
What can be achieved • Retrieve the source code of a 2 years old released version of a product, patch it and deliver it for an specific customer • Never loose work “because someone else overwrite it” • Seamless propagate changes (fixes, features) from one version or development branch to other • Demonstrate that the bug was not introduced by you! • DON’T BE SCARED WHEN YOU DELIVER!
Garages, Factories and Techno-centers • Garages: • Though, but possible. • Must be really cheap to be implemented. • Factories: • The Best Place for SCM. • Repeatability is a undoubted value. • Tecno-centers: • A real challenge. • Diversity of work
Evolution of the practice in space-time There Here Here-There • Bureaucratic use of SCM 5 years ago Now
ALM • Application Lifecycle Management • Flow of activities between phases (includes all of them) • IDEs taking big part of it • New age: ALM developer-centric • Is ALM SCM? ALM Process Enacting Configuration Management Project Management
Centralized vs. Distributed • Centralized: • One server, where “shared” items live • Private workspaces • Distributed • Each one versions its work • The way to “share” is to ask to a trusted party for their work
The war of tools • Tools Suppliers are fighting to gain market share on: • Versioning Tools • Change and Defect Management Tools • Application Lifecycle Management • Entry Points • Features • Visualization • IDEs Integration
IEEE and other associations • Standards available in the IEEE. • Not free • Somewhat outdated. Update in progress. • Mostly useful for planning • IEEE’s SWEBOK has a very clear description of the boundaries and components of SCM • ACM and IEEE has lots of SCM papers
Web Portals • Wikipedia • As with everything else • CM Crossroads • Largest SCM portal • Articles, webminars and blogs • Even Podcast
SCM Patterns • Brad Appleton introduced the concept of Patterns applied to SCM (brought from the Design Patterns arena) • Brief Description available @ www.scmpatterns.com • Full content only in a book
YouTube? • Not only for fun (ClearCase vs. Accurev, Homer’s Build process, or CruiseControl for kids) • Some software tools demos available (e.g.: Codice Software) • Google long seminars videos on new SCM approaches (descentralized SCM) • Linus Torvalds on Git (yes, Linus) • Bryan O'Sullivan on Mercurial • Other not-so-interesting talks about Predicting bugs in code changes using SCM information • UTN Seminar on SCM (coming soon!)
Ice Breaker II • Take a Bingo card • Start collecting participant’s names (+ initial of surname) • When you fill a row, shout “BINGO!!” you win. • Second round: Complete the entire card.
Ice Breaker III - Biggest SCM Disasters • ESA rocket for launching satellites • Crashed 40 seconds after first launch in 1996, cost about US$500 million • SRI = Inertial Reference System: a bunch of gyroscopes and stuff, attached to a computer • Software reused from Ariane 4 • Was only needed before launch • After launch, a variable went out of range, the overflow caused a system crash. • Exception handling had been disabled to improve performance. • The team proved it couldn’t go out of range. • But the proof was only valid for Ariane 4, not Ariane 5.
Ice Breaker III - Biggest SCM Disasters • Córdoba Software – 2001 • Software System developed to consolidate account balance between different departments in a company • The function was run over a different database configuration • It deleted all the accounts information • We have to rebuild the information from printed records • Today: Córdoba Software has a strong configuration management approach, supported by tools which avoids this kind of problems.
Ice Breaker III - Biggest SCM Disasters • Motorola, myself, 2002 • Skills Database tool internal development • Small and young team • Three different environments: development, test and production • Testing of v1.1 was run, obviously, on the TEST environment • But the database connection on the repository wasn’t reverted to the TEST environmnet, and thus, kept pointing to the PRODUCTION database. • Result: The Admin became a C++ expert and the Process & Quality Manager appeared to have no knowledge of CMMI • It was an exception due the characteristics of the team and the project (internal, low risk)