CSCI 265 notes:

As noted earlier, most of the design, implementation, and testing phases of the software are being left for the software engineering courses. However, we will briefly consider a number of issues that are frequently regarded as outside the scope of those courses.

Change control during production

On projects of any reasonable scale, it is fairly common to divide the files being worked on into three main areas - development, testing, and production.

These may be on entirely separate servers, or different disk partitions, or by some other mechanism, but the goal is to make it physically clear which code is currently being revised, which code is currently being tested, and which code is currently regarded as completed and approved.

The developers create and modify routines in the development area, following the specifications and design documents created earlier in the process. As they make changes to a routine/module, the developers update a log file which contains the development history of the code segment. This will include information about who created it and when, who modified it, when, and why.

When developers believe a routine or module is complete, they submit that version for testing and go on to work on something else.

The testers will either approve the routine/module or return it to the development groups with problem reports.

If the routine/module passes the testers and is approved, then it is moved to the production area for the next release.

Many software development systems support tracking the state of different routines and modules in such a form, as well as supporting the logging of file modification information (again, who changed it, when, what changes were made, and why those changes were made).

Configuration management

The mechanics supporting integrity during change