Сегодня как то гуляя по просторам интернета задался вопросом.
Согласно методике Agile -> Scrum необходимо итерациями получать требования от заказчика, в том числе и после показания временного решения. В том числе что то изменять в уже существующем коде.
Однако с другой стороны считается, что если что то приходиться изменять в текущем коде, то это обходиться намного дороже, чем если бы изначально аналитик составил описание. (то есть фаза исправлений на этапе анализа стоит дешевле, чем фаза исправлений на этапе разработки).
При этом, если идет такой "поток задач", то откуда берется зафиксированная конечная архитектура решения и как можно гарантировать что:
1) Себестоимость проекта не "съедает" маржу
2) Система выполнена качественно, а не в виде "нагроможденных" блоков программы
3) Что заказчик, принимая работы согласиться под свою ответсвенность подписаться под ТЗ (или тем документом, который описывал систему), которе будет неактуально на конец работ ?
Вот, хотелось бы понять