Outline
Requirements Vocabulary Project organization Versioning
Software Configuration Management Zvi Gutterman
Software Engineering Tools 2
Outline (2) Requirements
Tools Software is made of many files RCS, CVS Source files, documentation, binaries, Source Safe graphics, etc Clear Case Complex directory tree Subversion Some files are dynamically generated during the build process Additional tools
Which files do we store? In what structure?
Software Engineering Tools 3 Software Engineering Tools 4
1 Requirements (2) Requirements (3)
Many developers Distributed development sites Need the same files Low communication bandwidth Privileges Archive and logging Offline development “When did we add the function x_g?” Mistakes “We want to switch from log4j, do we use it a lot?” Multiple products Management tool Great for summary information Based on the same source code Beware of abuse!
Software Engineering Tools 5 Software Engineering Tools 6
Vocabulary Vocabulary (2)
Repository Branch Working copy, Local copy Tag, label Check-out Merge Check-in, Commit Metadata Version Log, author, date, … Trunk Lock
Software Engineering Tools 7 Software Engineering Tools 8
2 Project Organization Project Organization (2)
First decide on your directory Binaries? structure Anything that goes to a version – yes Source files Else – no need Headers Usually Documentation Executables + DLL’s Build logs Including debug versions QA But no Test suits Object files Test results … Software Engineering Tools 9 Software Engineering Tools 10
Project Organization (3) Directory structure - example
One day you will need them Log4j And the overhead is not so big Small project Redundancy is fine Sub project of Jakarta Plan in advance! Changing the structure will be expensive Usually a cross R&D process
Software Engineering Tools 11 Software Engineering Tools 12
3 Versioning Versioning example - Linux
Global product or branch number tag Used to mark software maturity Good practice Do not mix with the marketing numbering Select meaningful numbering system Add indication for Alpha and Beta versions
Software Engineering Tools 13 Software Engineering Tools 14
RCS - Revision Control System CVS – Concurrent Versions System
By Walter Tichy, Purdue University Open source Developed in early 1980 www.cvshome.org www.cs.purdue.edu/homes/trinkle/RCS/ Use RCS for file level Included in Unix, Linux, Cygwin by Very stable default Multi OS Open source Win, Unix, Linux, Mac, VMS, … File perspective using Unix diff Default control in command line Hence bad with binaries
Software Engineering Tools 15 Software Engineering Tools 16
4 CVS (2) Visual SourceSafe (VSS)
Probably with the largest By Microsoft installation base today By default used in many projects Default tool for Binary, proprietary repository Source forge structure Eclipse Good integration in Visual Studio Large number of plug-ins Windows platform only e.g., http://www.tortoisecvs.org/ which Bad network performance supply a windows gui Default: non-locking
Software Engineering Tools 17 Software Engineering Tools 18
Visual SourceSafe (2) Team System
GUI based interface Microsoft new toolset Default: locking The new Visual Studio Not in use to develop Windows ... msdn.microsoft.com/vstudio/teamsystem/ Vault – VSS like replacement Now in beta (May 2005) Released in November 2005 VSS minus its problems www.sourcegear.com/vault/index.html
Software Engineering Tools 19 Software Engineering Tools 20
5 Team System FAQ Team System FAQ (2)
Why some developers hate Microsoft? Q: Is this the tool that Microsoft uses internally? Q: Is this the tool that Microsoft uses A: Not yet. However, once Visual Studio internally? 2005 Team System ships, the Developer Tools Division at Microsoft will be using the A: Many of the tools in Visual Studio 2005 Team source code control system full-time. This System are tools that Microsoft has used internally is one of our core tenets for change for years, such as profiling, static analysis and work item tracking. Microsoft already has plans to management: we will build the product we use Visual Studio 2005 Team System for product use internally. development.
Software Engineering Tools 21 Software Engineering Tools 22
Clear Case Clear Case (2)
IBM (Rational) Support for offline work www-306.ibm.com/software/awdtools/clearcase/ “View” in rational terms Including virtual local file system OS support Win, Linux, Mac, Mainframe Heavy-weight Large installation (RAM, HD) Usually arrives with a sys admin … Now in three flavors Light (LT), “regular”, Multi-site Leading the high-end market with share of 30-40%
Software Engineering Tools 23 Software Engineering Tools 24
6 Subversion Additional SCM tools
http://subversion.tigris.org/ SCCS – source control system Young project RCS predecessor Goal - CVS replacement Maintained at SourceForge Development started in 2000 AllFusion Harvest Based on Apache web-server All-in-one by CA www3.ca.com/Solutions/Product.asp?ID=255 Improved network efficiency Better support for binary files Serena Version Manager PCVS ancestor plug-ins www.serena.com/Products/professional/vm/home.asp http://tortoisesvn.tigris.org/ Software Engineering Tools 25 Software Engineering Tools 26
Additional SCM tools (2) Additional SCM Tools (3)
Perforce Git www.preforce.com “The stupid content tracker “ Bitkeeper New Linux version system Former Linux SCM Improved interface by cogito http://www.kernel.org/pub/software/scm/cogito/README http://www.bitkeeper.com/ Use only if you must StarTeam Borland http://www.borland.com/starteam/ Targeted for the high end
Software Engineering Tools 27 Software Engineering Tools 28
7