It is a well-known Software Engineering axiom that the cost of building a system only represents 25% to 30% of its cost. The cost of maintaining and enhancing a system is far greater as the operational life of a system is typically much longer than the build cycle. So one must think in terms of Total Cost of Ownership (TCO). If maintenance and enhancements attributes to over 70% of the cost over the life of the system, how can one reduce that cost?
One place to look and a major contributor to higher costs is a lack of accurate, complete and timely Documentation. There is an old but true rule of thumb; “you cannot fix it if you do not know what you’re fixing.” It is similar to maintaining a plane, without the manual, it takes longer and is a lot riskier. When it comes to maintaining or enhancing systems it is not just helpful, but necessary, to have accurate and complete documentation. That just does not happen! Either the documentation was never created, if it was created it was not kept up to date or it is just plain wrong. But without it, an inordinate amount of time has to be spent understanding the Code Base, figuring out where the changes have to be made and even more time to determine the impact the change will have on other parts and functions of the system. But perhaps the most lethal is the rule of unintentional consequences, since there is no comprehensive way of knowing what each component is doing, the impacts of change are almost impossible to determine. Code base analysis without documentation has a high cost to get it right. Unintentional consequences have a ripple effect across the analysis, code and test activities. The ripples of unintentional consequences radiate out and impact programs upstream, downstream or other systems all together. All attributing to higher costs. The more complex the system, the higher the impacts and the higher the costs.
To reduce costs and TCO, what is needed is up to date, complete and easy to access documentation! Documentation that addresses the identification and understanding of key items such as:
Flow of Control - at the Program and System level - how information flows through the system, the logic path
Data Stores - the files and data bases that are used by the system
Data Access - the location of the Reads / Writes and /or SQL statements
Variable Cross Reference – the local and global data elements and where they are used, including Copy Books
Code Anomalies – logic structures, use of Language Syntax that are not commonly encountered and could cause maintenance problems
Dead Code – sections of the Code Base that are not executed
We have developed a methodology which can reduce the costs of maintenance by up to 20%, through the rapid creation of complete, accurate and timely documentation. By using up-to-date and accurate documentation one not only reduces Costs … but reduces the Risks frequently inherent in maintaining undocumented or poorly documented systems.
Phil Teplitzky, a Managing Partner and CTO at HP Marin, offers insights based on his long career as Technology Leader and his extensive Enterprise Architecture experience. He has consulted across many industries as Management Consultant as well as served in various CIO/CTO positions. Phil can be reached at firstname.lastname@example.org.