Reasons to re-engineer a software include:
P: Allow legacy software to quickly adapt to the changing requirements
Q: Upgrade to newer technologies/platforms/paradigm (for example, object-oriented)
R: Improve software maintainability
S: Allow change in the functionality and architecture of the software
Code:
- P, R and S only
- P and R only
- P, Q and S only
- P, Q and R only