CM Cost Effectiveness
Here is something that I present to the different teams at my corporation as a selling document for CM. It is formulated from Alexis Leon's
A Guide to Software Configuration Management. There is no dollar value associated, but it could be added.
The Four Development Issues that are Resolved with CM
Communication Breakdown
The more people you have, the more likely this is to happen.
Shared Data
Developer one makes a change to a shared component and Developer two suddenly notices their program not working. No reason to suspect the shared component unless he/she knows about the change.
Simultaneous Updates
Last one wins!
Multiple Maintenance
This occurs when there are multiple versions that must be independently maintained and evolved. You have to make changes in all the supported evolution paths. Related to the shared data problem
Benefits
Supports Increased Complexity of Software Systems
In the early days, program were typically less the 1000 machine instructions in size, required one programmer, seldom took more than a month and average cost was around $5000.00.
Today it’s 25 million source code statements, requires hundreds or thousands of Developers and have development costs of $500,000,000. [1]
Supports Increase in the Demand for New Software
New third-party components, different languages, different operating systems and size of legacy systems require some way of managing all these different characteristics.
Supports the Changing Nature of Software
Software systems are subject to constant changes-during design, during development, and even after development. The only constant thing about software is change.
Supports Improved Software Development Productivity
Reducing the four development issues that are discussed above.
Provides Lower Software Maintenance Costs
According to the Iceberg Effect as defined by B.S. Blanchard [2], 75% of software costs are not visible. They occur as operational and maintenance costs. If requirements and other documentation are well defined and evolved, these costs are reduced.
Earlier Problem Detection and Bug Fixes
Once you have defect logging and tracking systems in place, once the QA team starts looking into the causes of the problems and starts correcting them, once the checks and audits are made to ensure that the project standards and guidelines are followed, then the number of bugs and problems will be reduced.
Faster Problem Identification and Bug Fixes
In the usual system of testing, bugs are found and fixed. But if there is a mechanism for logging the bug\problem reports, categorizing them, analyzing the causes, and recording how the problem was resolved, then much time can be saved the next time the problem occurs.
Process-Dependent Development Rather than Person-Dependent Development
First-class people are essential, but they need the support of an orderly process to do first-class work. In early days, when software projects were simple and small, a single individual often handled the design and details of a project. Even though projects have become larger and more complex, the dependency on the individual still exists. For example, in many projects, if you remove a few key people, the projects will come to a standstill, basically because the other members of the team do not have the whole picture of the project.
There is no way they can have the whole picture because no documentation exists, and even if it exists, it is only understood by the person who wrote it.
Provides Assurance that the Correct System was Built
There has to be some process for documenting the initial requirements and the changes made to them. This means there should also be some mechanism for checking or auditing the software system or product that is being delivered and certify that the product meets the requirements. This also assures that the tester knows the added functionality from the business requests and the which defects were fixed and need to be tested.
Provides Assurance that code does not get “lost”
Lost code can be an extremely high cost issue. A proper CM system ensures that the code is secure.
Risks of not Having CM
Missing Source Code
Incorrect Versions of Component Libraries
Inability to Determine What has Happened to a Particular Program or Data
Inability to Track Why, When, and Who Made a Change.
Why the Heck Did a Program that was Working Suddenly Quit Working?
References
- A Guide to Software Configuration Management, Alexis Leon
- System Engineering Management, B.S. Blanchard
--
BryanSkinner?, Configuration Manager - 10 Jul 2003
--
BradAppleton? - Jul 10 2003 (minor corrections/updates)