regardless, some modifications or custom-developed code may be required to
integrate the new functionality with the unmodified portions of the software.
Additionally, reengineering software may introduce new vulnerabilities
into a system because of an incomplete understanding of the original software