HW16: Chapter 9

Ex 9.8 Briefly describe the three main types of software maintenance. Why is it sometimes difficult to distinguish between them?

Fault repairs to fix bugs and vulnerabilities:
These are coding, design and requirement errors. The cost from least to most: coding; design; requirement.

Environmental adaptation to adapt the software to new platforms and environments
This is when a system's hardware or software is no longer supported or has been upgraded.

Functionality addition to add new features and to support new requirements
When requirements change and a new feature needs to be added to support the change.

The line between fixing bugs and functionality addition is a little blurry in that a requirement could have been overlooked in the original design phase or it could be a completely new requirement.

9.10 Do software engineers have a professional responsibility to develop code that can be easily maintained even if their employer does not explicitly request it?

Yes, software engineers are hired to make code that follow good programming guidelines. If they follow those guidelines, the code will be easily maintained without that engineer.