HW16: Chapter 9

Software Maintenance and Lasting Professionals

Three different types of software maintenance.

Fault repairs to fix bugs and vulnerabilities involves fixing existing problems with the code itself, the design of the system, or requirements issues. Coding errors are the simplest to fix and the financial and time costs go up when fixing design and requirements problems. A design error may require the developer to re-write many components and requirements errors may require a system overhaul to bring it within acceptable operating levels.

Environmental adaptation to adapt the software to new platforms and environments. I tend to think of this as updates to the 'things' the software runs on such as hardware or other software such as the operating system or some other piece of software that the system interfaces with. These changes may require changes to the system to allow continued operation.

Functionality addition to add new features and to support new requirements. These are typically responses to changes to the requirements due to changes in the organization utilizing the system. These could require extensive changes to the system and cost-benefit analysis should be thought about to ensure adapting the system to the new requirement is the best course of action, or if developing a new system will be more beneficial.

The differences in these maintenance types can be difficult to discern as they often accompany each other. If a system requires environmental adaptations, it is likely that new functionality will be considered at the same time. This can and will likely lead to coding errors and, hopefully not, design and requirements errors that need to be fixed as the process goes forward.

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

I believe that it is important for a professional to perform their job to the best of their abilities and that means in part developing software to promote the longevity of it. Creating a system that is difficult to maintain or even poorly designed leads to a poor reputation for the developing team and will likely leave a bad taste in the mouths of the employer for future development efforts. The poor execution now will likely lead to second and third-order effects down the road and these should be mitigated whenever possible.


Comments

Popular posts from this blog

HW10: Chapter 5

HW11: Chapter 6

HW26:Chapter 24