80 likes | 485 Views
Reverse Engineering. When is it the most cost effective?. Raymond Utz. The Problem. When is Reverse Engineering the correct choice over Forward Engineering?. Terminology.
E N D
Reverse Engineering When is it the most cost effective? Raymond Utz
The Problem • When is Reverse Engineering the correct choice over Forward Engineering?
Terminology • Reverse Engineering - the process of recovering the design conditions of a legacy system that is currently being used and that is not fully documented. • Forward Engineering - is the process of moving from high-level abstractions and models to the physical implementation of a system.
There is already a working system in place If tools are available then process can be automated to an extent The legacy system could be very hard to follow The lead software engineers for the legacy system are usually not around Benefits and Drawbacks of Reverse Engineering
What and How to measure • Looked at the Algorithmic Model: • Effort = A x SizeB x M • “A” is a constant factor for all local projects of the same type • “Size” is the number of lines of code or function points • “B” is usually assigned the values between 1 and 1.5 • “M” is a multiplier that consists of the sum of process, product, and development attributes
Effort = A x SizeB x M • The main difference between Reverse and Forward Engineering in this model would be the “Size” • “M” would also vary because of the many factors it is based on
Ethics • Therac 25 system • They Reverse Engineered code for different hardware due to the cheaper cost • A lot of the problems could have been stopped by just Forward Engineering a new system
Conclusion • To improve a system’s maintainability no matter the size Reverse Engineering would be the best choice • To try and migrate a small system to new hardware it would be beneficial to Reverse Engineer the design as a means to Reengineer the system. • For a larger system Forward Engineering would be beneficial