Software Configuration Management Donna Albino LIS489, December 3, 2014
Why do I need it? Do you have multiple people working on software development? Do you have multiple clients for your software? Do they want to have exactly the same version of software as all the others, or will they want custom solutions? Does your client want to be able to roll back to an older version if a new version does not function correctly? Do you want to be able to do new development on a file, and still have a way of rolling back to a released version of the file in order to investigate a bug report? Do you want to keep track of which versions of compilers and development tools you used to create your software, and be able to know when you updated tools in your software development?
Benefits of Software Configuration Management Track changes in software – What bugs do we have to fix? – What requirement does this bug trace back to? – Who is assigned to fix each bug? – A new release to your client/clients will include which fixes? – What files did each fix involve, and what lines changed? – What happens if several people are creating changes in the same file? Easily roll back to a previous version to undo a fix, or make another change if the fix is incomplete Create an archive of the changed files that can be installed on multiple machines
How does it work? Create baseline – What files will be part of it? – One baseline, or more? Check files out – For reading? Or for editing? – Current version? Or an earlier version? Check files in, or discard changes and revert to a previous version Add new files to the baseline, or delete obsolete ones Get information about files – What is being edited? – What is the latest version? – What is the history on this file? Create new releases Comparing files under control
Branches and Merges
What to look for in tools? Open source vs. proprietary How it deals with two people wanting the same file for different fixes How it deals with merging fixes that affect the same file Do you want only version control, or do you want bug tracking, requirements tracing, wikis, blogs, etc.
Implementation Differences File locking vs File Merging Client-server vs Distributed
File Locking Some tools guarantee that only one developer has access to a file at one time by locking the file. If someone has it checked out for editing, no one else can check it out. Advantage: no merging problems Disadvantage: serial development takes longer, or developers don’t use the tools
Version Merging Look for split screen merging – Easy to see your change vs baseline and select appropriate action at each merge point Merges in image files will be challenging – If you anticipate this, talk with the vendor and see if they support what you need to do
Unified Modeling Language (UML)
Distributed vs Client-Server Revision Control Client-server: Single central repository against which a developer merges Distributed: Each developer owns a working copy of the code base, and swaps patches among themselves Distributed system plus: – Faster; no communication with central server – Each developer’s working copy is a backup of the code base Distributed system minus: – No baseline exists by default, only working copies
A look at a few tools SCCS SVN Clearcase
SCCS Source Code Control System Bundled with Unix, open source Stable; no active development Checkouts done one file at a time File locking Text-based Client-server Construct a release by creating a set of file versions
SVN Subversion Apache, open source Check out a copy of the whole baseline Client-server Can move directories and files around in the source tree without losing history Merging needs work – Integration with IBM Rhapsody is buggy
Clearcase Rational Software division of IBM, proprietary Create a view (sandbox with read-only source) Check out files within your view Configuration spec coordinates what other baselines you are using Integrates with Clearquest for tracking bugs and DOORS for referencing requirements Produces a Configuration Record, which contains the build procedure, all the input files, and all the derived files that are part of a release Text interface or graphic interface
Many other tools RCS, CVS influenced many newer tools Git designed by Linus Torvalds for Linux – An example of distributed revision control SVK is a distributed version of SVN Fossil is a cross-platform system of version control and bug tracking cmcrossroads.com