We have some idea of this cost to the industry as a whole. Capers Jones estimated that almost two-thirds of developer time is spent repairing software. In Code Complete, he states:
Projects that aim from the beginning at achieving the shortest possible schedules regardless of quality considerations, tend to have the fairly high frequencies of both schedule and cost overruns. Software projects that aim initially at achieving the highest possible levels of quality and reliability tend to have the best schedule adherence records, the highest productivity, and even the best marketplace success.So evidence suggests we're heading down the wrong path when we attempt to be expedient, but how do we quantify this cost? What should high quality code look like?
In Code Complete McConnell lays out the following categories for internal quality characteristics (descriptions are paraphrased):
- Maintainability - Can the software be modified?
- Flexibility - Can the software be repurposed?
- Portability - Can the software be ported to new environments?
- Reusability - Can the software be used in other systems?
- Readability - Can the source code be read?
- Testability - Can the software be verified correct?
- Understandability - Can the software be understood at the system-organizational level?
No comments:
Post a Comment