Search
Enter Keywords:
Home
Design and Programming Tools Print E-mail

There are many tasks over the course of a software project which can be automated. Unit tests are a good example of automation—before programmers started using automated unit tests, they had to manually verify each function and user interface element before delivering a build. By automating unit tests, the programmers were able to make them much less time-consuming task, and as a result many more programmers take the time to build unit tests.

But unit tests are not the only manual programming task that can be automated. Automation can ensure that the software is built the same way each time, that the team sees every change made to the software, and that the software is tested and reviewed in the same way every day so that no defects slip through or are introduced through human error. A project manager can help the programmers avoid chronic quality problems by adopting some of these tools.

Version Control

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.

 LanguageFramework Name (URL)
Java
 JUnit (http://www.junit.org)
Visual Studio .NET
 NUnit (http://www.nunit.org)
C
 CUnit (http://cunit.sourceforge.net)
 C++ CppUnit (http://cppunit.sourceforge.net)
 SmallTalk SUnit (http://sunit.sourceforge.net)
 Perl Test (http://search.cpan.org/~sburke/Test)
 Python PyUnit (http://pyunit.sourceforge.net)
 Borland Delphi
 DUnit (http://dunit.sourceforge.net)

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)

< Prev   Next >

Main Menu
Home
Software Project Planning Practices
Review Practices
Product Engineering Practices
For Educators: Lecture Notes and Handouts
Glossary
Praise for "Applied Software Project Management"
News from O'Reilly
Latest Releases from O'Reilly
Contact Us
Buy the Book
"Applied Software Project Management" © 2005 O'Reilly Media, Inc.
Website © 2006 Stellman & Greene Consulting LLC. Photos by Nisha Sondhe.