HW16: Chapter 9

03 Oct 2016

9.8
The three main types of software maintenance are fault correction, adaptation to new environments, and addition of new features. Fault correction fixes bugs in the product that should have been dealt with during development and are often very expensive. It’s obviously much cheaper, and will piss off the client far less, to prevent faults from making it to the deployment stage. Perhaps clearly defining the cost of this type of maintenance adds some extra motivation to do a better job during the specification, design, and development phases. Environmental changes arise if something that interacts with the product system is modified in such a way that demands some adaptation of the product. Perhaps some environmental changes can be predicted during development, but I’m sure that many of these changes cannot be foreseen and would require some significant maintenance. I think of Blackbeery applications that were perhaps designed with no look toward the future dominance of touch screens as being one example of the importance of considering this type of maintenance activity. the third type is the addition of new features within the system. This probably takes a lot of extra work and might be considered a separte iteration of the system rather than just a straightforward in-place maintenance activity. New features should never be underestimated, they will surely require a redo of the full testing process.

9.10
If the employer does not explicitly request easily maintainable code, then it is most certainly the responsibility of the engineer to design and document it so that it can be easily maintained. I can imagine some strange scenario with dubious ethics wherein an employer forbids an employee from making the code easily maintained, perhaps to create more hassle and financial cost for the client later down the road, but that is sort of silly…one of the core principles for software engineering is to create code that can be easily maintained.