Ex 9.8
Q: Briefly describe the 3 main types of software maintenance. Why is it sometimes difficult to distinguish between them?
A:
1. Fault repairs to fix bugs and vulnerabilities- coding errors ($ typically cheep to correct) , design errors ($$ worst case: write several program components), and requirement errors ($$$ worst case: extensive system redesign)
2. Environmental adaptation to adapt the software to new platforms and environments- required when some aspect of a system's environment (hardware, platform os, or other support software) changes; application systems may have been modified to cope with these environmental changes
3. Functionality addition to add new features and to support new requirements- necessary when system requirements change in response to organizational or business change; the scale of the changes required to the software is often much greater than for the other types of maintenance
It is sometimes difficult to distinguish between them since performing the act of one software maintenance technique may cause a chain reaction to the others. There are also multiple names for each of these three types of software maintenance which may cause confusion in what type of maintenance is being performed depending on the project.
Ex 9.10
Q: Do software engineers have a professional responsibility to develop code that can be easily maintained even if their employer does not explicitly request it?
A: I personally believe software engineers do have a personal responsibility to create maintainable code as this is a vital component to promoting the longevity of successful software. My thoughts on this questions stem from the ACM Code of Ethics 2.9 stating to "design and implement systems that are robust and usably secure."
Comments