The portability specification example
A client’s Financial Director specified ‘Standard COBOL’ as a requirement in their contract with a software house.
What they really wanted was software portability (measured by ease and cheapness of transporting the software to other machines). They wanted to be able to move their software investment to larger machines later if need be. They did not in fact care whether COBOL itself was used at all.
We found that in this particular case, the use of COBOL would be very bad for system performance for smaller computers (which we had decided to use) which did not support the language very well at that time.
We also found that the software house had decided to interpret the requirement as ‘use standard COBOL when you use COBOL at all’. But the software house had also decided to use a high-level application generator for over half of the application code, and a database management system for another good portion of the logic. Both of these would have given very low portability.
This is a good example of how a well-intentioned, but carelessly formulated software requirement can defeat the very purpose it is trying to achieve.
We changed the requirement to one which read :
Portability :
1. The software system shall be convertible to any major manufacturer’s equipment which has COBOL software for less than 5% additional cost to the cost of the original development of the software.
2. The software house is required to carry out the conversion for us at this cost, or to pay the cost difference if they cannot or will not carry out the conversion.
3. This shall include all data conversion, all database management code, all supporting code or data of any nature required for a successful conversion.
4. This shall be without degradation of any critical attributes specified elsewhere in this contract for the original system (but in particular – without degrading performance, maintainability, reliability or portability.