Identifying Actors
When analyzing a system, we first like to draw a box around it, to define the boundaries of that system. This is best done by defining the actorsthe people, software, hardware, and others that interact with the system. In the configuration management world, we can usually write down a list of actors that participate in a CM system fairly quickly. Remember: think of the CM system as a black box. Just make sure you define all of the outside parts of the black box.
Figure 8.1 is a diagram of the actors within a basic CM system, along with a brief description of each.
Figure 8.1 Actors
Software Engineer
The software engineer is responsible for the design and development of the software that makes up your product. The software engineer will use the configuration management system to store designs, code, and sometimes tests, so that they can be integrated into a releasable product.
Configuration Manager
Those of us who come from the CM world might consider the configuration manager as the most important actor in any CM system. It is typically the CM manager's job to control the "crown jewels" of the company: the source code. We typically see the CM people not only administrating ClearCase and the process of software development, but also performing the builds and releases of the product as well. This is especially true in smaller organizations, where resources are tight.
Quality Assurance (Product Validation)
We prefer the term product validation to quality assurance, because these individuals do much more than check the product to find bugs the software engineers created. These teams play a very important role as the final validation of the product use cases before going to the customer. They will use the CM system to store their tests and test suites, and to get controlled release of the product from the configuration manager.
Management
Whether we like it or not, management is a necessary evil. We deal with management on a daily basis (some days better than others), and as the providers of the company's CM solution, they recognize that we supply them with the information they need to make decisions about product direction and strategy. The CM system contains the information that management needs, but it is our job to present the data in a manner that is useful to them.
Customer Support, or a CRM System
Another necessary actor is the customer support organization. Customers just might have problems with your softwareno matter how well it was designedand you need to be able to give information to your customer support organization about product releases, customer requests, and bugs that have been fixed in product releases. This information can either flow directly to the support team or be tracked within a CRM solution.
Defect-Tracking System
This can be part of the system or not. If you do not define this as an actor, you should at least be ready to include it in your system later down the road. If you are not integrating your CM solution with a defect-tracking system, you should seriously consider this option. Joining the defect data with the source code can help you make improvements in project management and the overall quality of your product.
Technical Writer
Make sure you include everyone who will develop artifacts for your product. There is nothing worse than getting documentation that is two versions behind the shipped software. If your tech writers are not using ClearCase, then teach them how to use it. If it is too hard, then write the scripts that they can use to make their jobs easier. Everything will run much more smoothly if they at least know the basics. Just keep it simple.
System Administrator
Your configuration manager is not a system administrator. Of course, in a small organization they could be the same person, but these roles are very different. The system administrator is there as a support for your hardware and, potentially, software problems. He or she should be making sure that the systems are configured according to product specifications and fine-tuned to the requirements of the CM team.