components can be changed, replaced, or removed to make the software more
effective or efficient. According to Chikofsky and Cross, reengineering usually
involves some level of reverse engineering, along with forward engineering.
Often, portions of the software system may need to be reverse engineered to