Essential Software Development Tools
To a newcomer to software development, the sheer volume of information can be overwhelming. As a result, use of tools that really help streamline the development process are often postponed because it just seems like too much work to set them up. This section of the website contains simple installation instructions to get people started with two of the more important tools; namely, Subversion and Trac. These are tools that many universities and polytechnics do not teach, yet are almost essential to the development of medium to large scale projects. These tools can also help boost productivity in single-developer projects. In order to make getting started even easier, a set of scripts are also provided that can be downloaded.
Software Version Control
Anyone developing software will eventually encounter a situation in which they wish that they could revert back to an older version of the source-code. Manually making backups is one way to solve this issue, but, there is a temptation to only keep a few backups, which are periodically synchronized. If a serious bug is introduced but only noticed after a backup synchronization, reverting back to the old code is impossible. Added to this, multi-developer projects will quickly make synchronizing multiple versions from multiple programmers a nightmare.
It would be useful to have a record of every significant change made over the entire life-time of a project. Software version control tools provide exactly this functionality. Source-code is held in a central repository which individual developers can "checkout." Once a developer has a block of code finished that must be backed-up or shared with the rest of the team, he/she can commit those changes to the repository. The version control software will keep a record of every change made by every code commit, and can even merge changes made by multiple developers to the same source-file (unless those changes are conflicting). The change tracking feature is worth having even in single-developer projects.
There are other version control tools, however, SubVersioN (SVN) is the tool that I use, so this is the tool that will be focussed on here. SVN has two parts, a server containing the source-code repository, and a client for checking out and committing changes. As with all other similar tools, the server operates over a network. Thus, the source-code repository can also simultaneously be an off-site backup, depending on the location of the server. It is possible to run the server on the same machine that is used for development. However, it is advisable to use a separate machine, as this would provide a backup copy on a separate computer.
One small down side to SVN is that the client software is has no GUI., and its web interface is very primitive. It is, however, fairly easy to use, and entering "svn --help" will provide details on the command line parameters. A complete book on using SVN is also available on-line. On some platforms GUI based clients are available. For example, Synchro SVN Client is a GUI based SVN client that is available for Windows, Mac OS X, and Linux. Windows users also have the option of using TortiseSVN, an SVN client that integrates with Windows Explorer. At present, Amiga OS users will have to use the command-line client.
Software Project Management
Another important part of software development is management. At some point it becomes necessary to have a clear development road map, and track who is implementing what part of that road map. Likewise, bug reports must be recorded, and assigned to developers. A good software management system woiuld automate the tracking processes whilst making finding and updating the status of individual items easy. Ideally such a tool would be linked to the source-code repository, thus providing a complete software development management system.
Trac uses a minimalist approach to software project management. It provides a wiki, bug/enhancement posting and tracking, and the ability to browse the source-code, including past revisions and differences between revisions. Tickets (i.e., bugs/enhancements) can be assigned to milestones (usually associated with future product versions) so that progress toward a new release can be monitored. Trac does not impose any particular workflow, and it is up to the development team to decide how to use the available features.
Using Trac and Subversion
Instructions and scripts for installing and using Trac and SVN can be found on this page. Since it is worth setting up a separate server running these(and possibly other) tools, it may be worth starting on this page first.
Articles » Essential Software Development Tools