<<

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   Check-in,  Metadata  Version  Log, author, date, …   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 , 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)

   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