Read an Excerpt
Whether it's a single company making use of metrics or nine companies finding out from measurements how much difference a new technology made, metrics can tell us that we are doing things right. Metrics provide and enable the following:
- dependable estimates of project effort, schedule, and reliability
- control of the project during its course
- ability to replan an errant project along the way
- master-planning the assignment of resources to all projects within the organization
- monitoring process improvement from year to year
Furthermore, an organization can apply these same metric capabilities to the oversight of development subcontractors and outsourcing contractors.
But first we must ask, What do we mean by doing things right? We mean that, fundamentally, we are turning out software products in less development time, with less effort, at a better reliability level. What are those "things" we are trying to do right? If we do some "thing" and then make some measurements, the metrics tell us whether it was the right "thing" to do. Moreover, advancing metrics confirm our confidence in the value of continuing to do that "thing."
By now, enough organizations have done some "things" and tracked favorable metrics as a result that we have a pretty good idea of what the "things" are. In fact, the "things" plus the metrics to measure them constitute "the intelligence behind successful software management." What are the most important of these "things"?
Process.At a minimum, a software organization needs a process that it can repeat the next time. Repeatability lies at the heart of estimating and bidding. More importantly, it enables a project to meet the expectations of its own and the client's management. Beyond repeatability lie two more stages. The first is the employment of guides to improve the process, such as specifications and the Capability Maturity Model. The second is the move to a process standard, such as the Unified Software Development Process (described further in Chapter 3).
Standardization. We hesitate to bring the dreaded word standardization into play. Many software people regard the writing of code as more an art than a science. Indeed, at a certain point, there is art in it. But Shakespeare did write in the English of his day, then an emerging standard. Artists of software can work in standards intelligible to other artists, as well as to their other co-workers, managers, and certain of the client representatives. One of these "standards," dating from as recently as 1997, is the Unified Modeling Language (UML). It gives developers a "drawing" medium to work in. It enables them to recall their own work months later. It enables developers to read each other's work. It provides a permanent record of the work accomplished.
Software tools. An important outgrowth of standardization is software tools. When everybody does his own thing in his own way, you can't reduce that proliferation of half-formed methods to tools. Tool builders have to have a large market (in other words, some degree of standardization) to support their cost of development and marketing.
The software product. Before management can intelligently assign staff to a project and forecast the schedule it will take, it needs a clear grasp of what the product is to be. That preliminary task itself takes some staff and time, so people in a hurry sometimes bid before they have product functionality, commonly known as "size," as the basis for a more reliable bid. In other words, an effective software process provides for certain phases before formal construction under a bid (or other costing arrangement) begins.
Risk. A software product of some size and novelty involves risk:
- Critical risks: Elders determine that the product is within the current state of the art and within the capabilities of the project organization available.
- Significant risks: Elders establish that the project can surmount these risks within the schedule and effort planned.
These "things" and the metrics that measure them are what we mean by "the intelligence behind successful software management."