We learned software maintenance process in a nutshell.
refer to the following material for more detailed information
shortnote
https://www.dropbox.com/s/u8jmwgjfycqvxrk/BCS%20PGD%20SE2%2021st%20Jan%20Maintenance.docx?dl=0
detailed note
https://www.dropbox.com/s/8ff0jzz2y3afxl5/BCS%20P_GD%20SE2%2021st%20Jan%20Maintenance%20extra%201.ppt?dl=0
https://www.dropbox.com/s/rrwak60bjkrv7ln/BCS%20PGD%20SE2%2021st%20Jan%20Maintenance%20extra%202.ppt?dl=0
Software Evolution :
system evolution involves
understanding the program that has to be changed and then implementing these
changes.
In addition to generic topics , you need to have a sound understanding about software evolution methods
1. Reverse engineering
2. Re-engineering
3. Software Refactoring
Re-engineering
Reengineering may involve
- re-documenting the system,
- refactoring the system architecture,
- translating programs to a modern programming language
- modifying and updating the structure and values of the system’s data.
- The functionality of the software is not changed and normally, you should try to avoid making major changes to the system architecture.
Why Re-engineer ?
To make legacy software systems easier to maintain, you can reengineer these systems to improve their structure and understandability. The cost of reengineering may be significantly less than the cost
of developing new software.
Reverse Engineering
Reverse engineering The program is analyzed and information extracted from it.
This helps to document its organization and functionality. Again, this process is
usually completely automated.
Refactoring
Refactoring is the process of making improvements to a program to slow down degradation
through change. It means modifying a program to improve its structure, to reduce its complexity, or to make it easier to understand.When you refactor a program, you should not add functionality but should concentrate on program improvement. You can therefore think of refactoring as ‘preventative maintenance’ that reduces the problems of future change.
whats the difference between Re-Engineering and Refactoring ?
Reengineering takes place after a system has been maintained for some time and maintenance costs are increasing. You use automated tools to process and reengineer a legacy system to create a
new system that is more maintainable.
Refactoring is a continuous process of improvement throughout the development and evolution process. It is intended to avoid the structure and code degradation that increases the costs and difficulties of maintaining a system
Can you try this question ?
March 2016 A2
b) Explain the differences between reverse engineering, re-engineering and re-structuring in software projects. (6 marks)
c) Outline the process of preventive maintenance and discuss why such maintenance is needed. (9 marks)