Software Re-engineering

Ever wondered if the software currently in used in your business can go obsolete in a few years as a result of the rapid changes in computer technology? Indeed this is a common problem faced by many organizations today. It is a known fact that developing software is not an easy task and it consumes a considerable amount of time as well as resources. Nevertheless, with time there can be increased needs by the organization such as better performance, more functionality and possibly much more. But, as a business are you willing to throw away the existing software and go through the entire development process again? Statistics show that most business would say NO. But how can the existing software system made to adapt to new trends? The answer to this question is Software Re-engineering! 

As the name suggests itself, Software Re-engineering is the process of tweaking the existing (current) software to adapt to changed circumstances. In other words, it is taking the finished product (software), break it apart, analyze and re-examine its contents, modify the required contents (or the entire software as needed) and then put it back together again. Since this activity is the exact opposite of Software Development, it is also referred to as Reverse Engineering. This page intends to give you the merits of Software Re-engineering and the key milestones involved in this nature of projects. Let’s look at these topics briefly below.

Software Re-engineering: THE MERITS

There are a number of reasons as to why a business can opt to go for Software Re-engineering projects instead of creating a new software altogether. These include:

  • Protect investments and maintain competitive advantage in the market – As previously stated, a lot of resources including time and money is spent when developing new software. There are number of different stages through which the organization has to go through before the end product is present and functioning. If the organization is to throw away the existing system for a newer one, they would have to spend twice as much resources. This can be easily avoided when the existing software can be re-engineered to suite current times and needs.

  • Reduces costs – Running older software can be particularly expensive! The simple reason is being the rapid evolution of computer technology. Common problems faced include:

    • It may be increasingly difficult to find experts specialized in that particular area to maintain the existing system.

    • Replacing or finding replacement parts for the old hardware used with the current software can pose as a problem as it becomes obsolete.

In such an event, the organization will be forced to throw out their existing system. Instead, it is in the best interest of the company to re-engineer the existing software. Furthermore, it is also relatively less costly to re-engineer the existing system when compared to creating new software.

  • Reduces risks – There is high risk involved in new software development projects. One of the biggest risk is errors! A single error made during any of the phases of the software life cycle can multiply into a bigger error resulting in the production of faulty software. Software Re-engineering can help not only help to correct any errors that were made during its production but also reduce the tendency in re-creating a similar error associated when creating new software.

  • Improves the business process – Any software that is designed; it either compliments or replaces the existing business process. When Software Re-engineering takes place the existing business process will also have to be tweaked concurrently to go in-line with the improved version of the software.

  • Increases the maintainability of the existing software – Re-engineered software can be easy to maintain when compared with older systems as appropriate tools and expertise (skilled persons) are readily available in the market.

Software Re-engineering: THE PROCESS

When looking at the Software Re-engineering process at a glance you can easily see that it is carried out in a similar fashion as Software Development. However, it should be kept in mind that both are different from each other. An overview of both Software Re-engineering and Software Development is illustrated below using a simple diagram.

Sofware-Re-engineering

Looking further into the Software Re-engineering process, you will notice that it has are several key milestones. However, depending on the nature of the existing software and the different needs of the organization these milestones may vary from project to project. In other words, there is no hard and fast rule that says each milestone (described below) should be carried out in a Software Re-engineering project. Let’s look at these key milestones briefly.

  • Translate the existing software into a modern computer language – Legacy systems often written in old computer programming languages are required to be re-written in a modern computer language. For an example software written using the programming language COBOL maybe re-written using a modern computer programming language such as Visual Basic.

  • Organizing and restructuring the software – For an example, employees in your company may complain that the computer system is slow and taking long time to process the data. One possible reason is the software maybe written with a lot of unnecessary programming code. There can be many reasons for doing this; one common reason usually identified is the usage of a legacy programming language written to match the legacy hardware. Hence, re-organizing and restructuring the programming code can be classified as a part of the Software Re-engineering task.

  • Modification of data values and structures within the software – Data structure instructs the computer on how to accept data and store them within the system. A good example for this scenario is the Y2K Bug. In the earlier days of computing, computer systems were programmed to accept the date in the MM/DD/YY format. Since the discovery of the bug and its potential harm they were re-programmed to accept the format MM/DD/YYYY.

  • Re-documenting the software – Documentation is a key element in the Software Development process as it captures all elements of the entire process and serves as a blue print for the end product. Sadly there is a greater chance of paying a lesser focus in this prospect when developing new software. What does this result in? The maintenance task becomes a nightmare for anyone novice to the software. Writing good documentation for the existing system is also another Software Re-engineering task.

Conclusion

Software Re-engineering is an ideal and cost effective way to give that much needed boost to your existing software system. Although there are a series of steps involved in the life cycle of a Software Re-engineering project, it is not compulsory to carry them out individually as it is entirely dependent on the nature of the software and the needs of the organization.

We at Cloud Computing can help you to re-engineer your existing software to suit both your budget and your organization’s needs using the best tools in the industry. Contact Cloud Computing Consultants today for a no obligation consultation on Software Re-engineering.

sales@cloud-team.com