Теперь детально.
Если оставаться инструментом в чужих руках — то такие проблемы будут возникать всегда.
Выход из ситуации — как минимум верификация проектных решений на предмет соответствия решаемым пользовательским задачам. Для этого нужно с ними ознакомиться. Если их нет — затребовать, если не дают — выявлять и анализировать самому.
Второй уровень — это понимание того, как эти задачи соотносятся друг с другом. Как часто возникает та или иная задача и в какой связи.
Третий уровень — понимание контекста использования, а именно — ЧТО это за люди, которые пытаются выполнять эти задачи, что ими движет, зачем они это делают, в каком случае они будут считать, что система помогает им в выполнении задач, какие другие интерфейсы им нравятся и почему, какие операции являются избыточными и т.д.
Чтобы не возникало постоянных переделок, необходимо фиксировать пользовательские задачи и автоматизировать их, разбирая по итерациям. При попытке внесения изменений требовать обоснование в терминах критериев успеха данного проекта — больше денег, меньше затрат, меньше процент ошибок, больше количество обработанных заявок и т.д — всё измеренное в «на сколько именно»?