Reengineering Activities: He Who Fails to Plan, Plans to Fail
I have already written about how important the stage of analyzing a legacy software system is. After you have analyzed your system and decided that it requires reengineering, the next step is to make a plan for further activities.
To make a plan means:
- Indicate the scope of work;
- Identify the tasks and milestones;
- Estimate the required efforts;
- Prepare a schedule.
While planning, you should perform the following tasks:
- Determine resources and technologies – When preparing for the discussion about reengineering, you definitely have to discuss the resources and technologies that could be used. The next step is to list all the possibilities and make sure that the selected items are not only suitable, but that the team will be able to gain maximum benefits from such tools.
- Define business processes optimization – Identify unchangeable key processes, separate the essential from the non-essential, reveal potential areas for improvement. This is important because the results may influence other tasks.
- Identify application changes – You should decide which of the following activities are needed: code translation or upgrade, application architecture improvement, components deployment, data flow optimization.
- Identify data changes – Nowadays, data is the cornerstone of any software system, which is why efficient interactions with data and data storage are so important. It’s also important to highlight the required changes: improve data structure, migrate database, provide database partitioning, etc.
- Plan implementation and testing – Depending on the necessary changes, the list of tasks may vary. An implementation plan should include a prioritized list of improvements and enhancements with estimation of the possible effects and regression risks. A testing plan includes testing strategies, techniques, methods and tools used during reengineering.
- Plan system transition – When the modernized system becomes stable, you will need to launch it and migrate existing clients to it. Migrating clients covers migrating data and migrating business processes (teaching clients to work with the new system). This process needs time and has certain risks, that’s why it requires planning.
Reengineering of an enterprise software system cannot be implemented in one iteration and not even in one release. Each subsequent iteration needs planning. Poor planning causes uncertainty, risks and serious problems later in the project. Spending time on planning saves time needed for correcting problems. That’s why they say, “He who fails to plan, plans to fail.”