Many software companies with which I've worked didn't have any type of process in place for tracking and managing their software. Usually two or three lead developers controlled software. Everyone else had to work behind them to update or integrate their individual components. As projects grew, developers became confused, management became frustrated, and writers quit because it was hard to keep up with so many simultaneous changes.
--- What is Software Configuration Management? ---
The purpose of Software Configuration Management (SCM) is to identify state and configuration of a software project and be able to control changes to maintain software's integrity, traceability, and accountability throughout software life cycle. The core objective of SCM is to bring control to development process through:
- increasing development productivity, - supporting better control over project, - supporting better project management, - reducing errors and bugs, - supporting faster problem identification and bug fixes, - improving customer goodwill.
One problem is that a single SCM solution is not suited for all projects. While core SCM objectives and functions remain same, SCM system has to be tailored for each project.
--- SCM Process for Technical Writer ---
Many software projects I've seen changed course daily. One day product worked one way, next day it was completely different. Many of writers at these companies walked out door mumbling that "the company wasn't ready for documentation."
Actually, this is norm for many newer software companies and you'd be surprised how ready they are to have you!
When working on software documentation, it's important to either get involved in SCM process, or put one in place so that you can always have most recent version of software with which to work. Of course, you can't afford to spend days working on a complete process that, in mean time, won't be adopted by company. However, you can take a piece of puzzle and use it to your advantage.
Of course, once development settles down a bit, you'll have a real product to work with. But, in mean time, you have core product that you can use in your task analysis and research. This single step will place you leaps and bounds in front of other writers who give up because of ever-changing state of a product!
The general steps of an SCM process are described in following subsections. Your knowledge of these processes can enhance development and deliverables for any software project!
* Source Code Versioning and Tracking
Source code versioning and tracking is usually handled by some type of source safeing application. The application is used to store and track different versions of source code so that developers can maintain an archive of changes without fear of losing any level of previous changes.
Source safeing applications save each new version of code by archiving differences between previous versions. If you want to go back to a previous version of code, application rebuilds selected version from differences.
If you have numerous files in a given project, you can tag a set of files with a symbolic name. This symbolic name can be used to extract all files for a release or version number so that you can group all current project files together.
The most popular source safeing applications include following:
- Visual Source Safe: http://msdn.microsoft.com/ssafe/Prodinfo/?RLD=25 - PVCS: http://www.merant.com/products/pvcs/ - RCS: http://www.componentsoftware.com/ - CVS: http://www.cvshome.org/
You should talk to system administrator to obtain access so that you can download code. Not only will you be able to better understand what's going on in application by reading code, but you can access various headers to develop Application Programming Interface (API) references as required.
* Installation Builds
It's responsibility of developers to determine and acquire all files associated with a given installation. All files should be uploaded into source safe system and tagged. Once a new tag is created, you can download version onto a build machine and create a new version of product. In some cases, this responsibility is handed off to a Configuration Manager, however, your purpose for getting involved in SCM process is to develop solid documentation...not manage source safe.
Ideally, as part of an SCM process, build process should occur at least once a week. It's a good idea to talk with developers so they can notify you when they tag a new release. In this way you are obtaining a complete and up-to-date set of files to build most current product.