Final answer:
(4) Both P and Q, reflecting correct statements about software reengineering and software reverse engineering in the field of software engineering.
Step-by-step explanation:
The correct answer is option (4) Both P and Q. Statement P speaks to the concept of software reengineering, which is indeed preferred for software products that are failing often, have a poor design, or have an inefficient code structure.
This is because reengineering focuses on improving and modernizing existing software to extend its useful life without completely starting from scratch, which can be more economical and efficient in certain cases.
On the other hand, Statement Q accurately describes software reverse engineering, which is the process of examining software to comprehend its design and to extrapolate requirements.
This is often done to understand legacy systems for which documentation is incomplete or to ensure interoperability. Both statements P and Q correctly reflect practices in the field of software engineering.