Application development project is by nature highly prone to failure. In many cases, the failure is caused by miscommunication between stakeholders and development team, which ultimately resulted in great disparity between the expectations of the stakeholder with the deliverable. It is exactly for that reason, the application blueprint process was created. A good application blueprint, supported with clear and concise explanation on the parts, will allow stakeholders to accurately describe their ideas and expectations, which in turn can be clearly understood by the development team. That way, if there is still discrepancy between the deliverable and the blueprint, it is easy to point out where exactly it differs and how it should have been done.
If an existing application is to be expanded with new features, in addition to requiring update to the blueprint, the programming language itself may need to be evaluated; is it still very much current, or perhaps it has become obsolete? Or maybe some functions written for that version has been deprecated? There most obvious reason why this matter is because when a version of a programming language is no longer supported by most operating system, or no longer being used by younger generations of programmers, you will find that the cost to maintain it become so high, developing a new version with a more current programming language may actually cost only half what you will need to spend to maintain an old one.