ReEngineering :
- Restructuring or rewriting part or all of a system without changing its functionality
- Applicable when some (but not all) subsystems of a larger system require frequent maintenance
- Reengineering involves putting in the effort to make it easier to maintain
- The reengineered system may also be restructured and should be re-documented
When do you decide to reengineer?
- When system changes are confined to one subsystem, the subsystem needs to be reengineered
- When hardware or software support becomes obsolete
- When tools to support restructuring are readily available
Re-Engineering Process:
Economics of Reengineering:
- Cost of maintenance = cost annual of operation and maintenance over application lifetime
- Cost of reengineering = predicted return on investment reduced by cost of implementing changes and engineering risk factors
- Cost benefit = Cost of reengineering - Cost of maintenance
Re-engineering advantages:
Reduced risk
- There is a high risk in new software development. There may be development problems, staffing problems and specification problems
Reduced cost
- The cost of re-engineering is often significantly less than the costs of developing new software
The complete Software Re-Engineering lifecycle includes:
- Product Management: Risks analysis, root cause analysis, business analysis, requirements elicitation and management, product planning and scoping, competitive analysis
- Research and Innovation: Definition of a problem, data gathering and analysis, identifying a solution and developing best-of-breed or innovative algorithms, verification of quality for data and results, patent preparation
- Product Development: Technology analysis and selection, software architecture and design, data architecture, deployment architecture, prototyping and production code development, comprehensive software testing, data quality testing, and product packaging and deployment preparation
- Product Delivery and Support: Hardware/Platform analysis and selection, deployment and release procedures definition, installations and upgrades, tracking support issues, organizing maintenance releases.
- Project Management: Brings efficiency and productivity to your software re-engineering project by utilizing modern, practical software project management, software quality assurance, data quality assurance, and advanced risk management techniques.