Software re-engineering encompasses all the activities related to restructuring, re-analysing and re-documentation of an already existing software program into a new one. It is an approach used in the event of software product needing to undergo any transformation.
The main idea behind software re-engineering is the need for a change. The reason we need timely changes in our software system is the fact that there are so many new technologies emerging everyday. It becomes an inevitable part of keeping a software product up to date.
Why software re-engineering ?
- Emergence of new technologies
- Increasing competition among companies
- Quality of a product is gaining importance
- Needs of people are changing
The aforementioned reasons lay the foundation for re-engineering a software system.
Software re-engineering activities may comprise of the following types of maintenance activities :
- Understanding the software system : It is important to understand the core need for transforming a software system.
- Taking corrective actions : Deciding upon the fact that how things should be taken forward and what all aspects needs attention.
- Improving: Strategies for improving a software product.
A complete replacement of the existing system is not a feasible option, so the following approaches becomes an inherent factor in the realisation of re-engineering.
- Amount of risk involved in terms of errors peeking into the already developed software product.
- Cost incurred - Obviously the cost involved in recreating the old software product is lesser than building a new one.
The re-engineering activity undergoes through the following process :
- Source Code Translation : The coding scheme is changed from an old version into the latest one.
- Reverse engineering : The old program is carefully analysed so as to base the progress of re-engineering on that documentation .
- Improvement in structure of program : The program structure is analysed and it is modified to enhance its readability and functioning.
- Modularisation : Wherever necessary, parts of program are integrated,removing the redundant ones.
- Data re-engineering : Wherever appropriate, the data processed by the program is modified to reflect the modifications made to the program.
Life cycle of Software Re-engineering :
- Product Management : This involves risk analysis, root cause analysis, analysis from the perspective of business requirements.
- Research and Innovation : Identifying the problems, gathering necessary data and its analysis, identifying a solution and formulate the best kind of algorithm that results in an high-end code.
- Product Development : Preparing the architecture for the software, prototyping and production code development, finding the appropriate technology , its analysis and selection.
- Product Delivery and Support : Analysing compatibility between hardware and software,defining deployment and release procedures, installation and upgrades.
- Project Management: Utilizing the modern software management techniques, ensuring high level software quality mechanisms, applying advanced risk management measures.
The very need for software re-engineering is to be in pace with the technological advancements taking place in the industry. Each day we come across many new changes which poses a challenge for an organisation to retain it's target audience's faith. Hence it becomes important to restructure our software system in a way , so as to stay ahead in the race.