The version control tool recommended in
Applied Software Project Management
is Subversion, a free and open source version control system. It is
available from
http://subversion.tigris.org for many operating systems
and platforms, including Linux, BSD, Solaris, BeOS, OS/2, Mac OS X and
Windows. Subversion provides many advanced features for bringing source
code under control, but it takes only a few basic commands for a
programming team to use a simple version control repository
effectively. Subversion can be downloaded from
http://subversion.tigris.org. A free book about Subversion,
Version Control with Subversion, is published by O'Reilly and available at
http://svn-book.tigris.org.
The Subversion installation procedure does not install a graphical user
interface—all functions are accessed through command-line programs.
There are graphical utilities and web interfaces which work with
Subversion, including
TortoiseSVN,
ViewCVS and
SmartSVN.
There are many version control t
Unit Testing
The most common (and effective) way for programmers to do unit testing
is to use a framework, a piece of software that automatically runs the
tests and reports the results. A framework typically allows a
programmer to write a set of test cases for each unit. Most frameworks
provide an automated system for executing a suite of unit tests and
reporting the results. This allows a full battery of unit tests to be
executed automatically at any time with little or no effort. Unit
testing frameworks are available for most modern programming languages.
Automated Build Tools
When projects become complex and require many steps to
build, it’s easy for programmers to forget a step. A programmer may build a
version of the software which is missing a library, or is compiled with
incorrect options. What’s more, some programming teams have discovered that, as
their build process becomes more and more complex, they have to dedicate more
of a senior team member’s time generating new builds on a regular basis, which
can cause delays in the project. Eventually it becomes difficult for the team
to even generate a reproducible build.
When the build is delivered to users, are often defects which can be traced
back to missing libraries, or to required files which should have been
included.
There are many automated build tools that address all of the
problems caused by an unpredictable and difficult-to-reproduce build process.
Popular ones include:
Automated Project Monitoring
One of the most important ways a software project can be
automated is with a development monitoring system. Two of the most popular ones
are CruiseControl (http://cruisecontrol.sourceforge.net)
and TinderBox (http://www.mozilla.org/projects/tinderbox),
both of which are free and open source. These tools allow a project team to set
up a set of tasks to be run automatically on a schedule. These tasks include:
- Retrieving the latest build from the
version control system, building it, copying it to a folder, and
reporting any build warnings or errors
- Running automated unit tests, generating a test report and reporting critical failures
- Running automated code review tools and reporting any warnings or rule violations
- Listing any changes which have been committed and by whom, including links to code listings for the changes
- E-mailing results as text or visual reports (or sent via SMS text messages or some other communications system)