Have worked on several projects where the "requirements spec" developed in parallel with software development, but where there are big changes, it can result in rewrites of major sections of code simply because the original software architecture is unable to support the new features. It's a dangerous path and always results in added expense and time to market for the client. Guess who gets the blame when the project is late, or the product unreliable etc ?,
It's up to engineers to hold the line against such sloppy project management, even if it means walking away from the job. You always have a choice. There are a lot of smaller to medium sized companies that pay lip service to good development practice and quality, but it gets lost in the political noise, especially if marketing / finance / engineering are at war with each other, (pick any two, or even all 3) which is not uncommon. Lack of understanding, ethics, communication, ego and mistrust etc all contribute to this.
Agreed, and is to be expected, but there are limits. There are more constructive ways to be challenged by your work, without being a hero or martyr :-)...
Chris