Здравствуйте, evgeny.e, Вы писали:
EE>подобные принципы теперь не модны и называются futurecoding-ом (произносить помощив нос), а когда выяснится что приложение не справляется с нагрузкой, а внести изменения уже нельзя не только расширяя но и изменяя — тогда хором петь "нам просто не дали быть достаточно agile" (драматично вскинув руки)
Читая этот наезд, всё же крайне важно понимать, что цели софта меняются постоянно и непредсказуемо. И решение, которое предвиделось по всем параметрам 3 года назад и под которое была заложена максимальная гибкость, может принципиально перестать удовлетворять, потому что стало требоваться совсем другое. Именно поэтому "futurecoding" плох. Морщение носа тут ни при чём.
В реальности оказывается, что не менять поведение в принципе невозможно, и единственное, что остаётся устойчивым — это интерфейс, он же (обычно) API. И то — вариант типа "сегодня 03.08.2008, так вот, с 01.01.2014 мы выкидываем поддержку этого интерфейса" достаточно распространены даже у тех, для кого совместимость долго была принципиальным методом развития. Как в XP и Vista выкинули сначала поддержку DOS mode, а затем — 16-битных Windows программ: снаружи ничего не изменилось, но внутри появилась возможность убрать целые геологические слои древних костылей.
Кстати, ситуация типа
EE> внести изменения уже нельзя не только расширяя но и изменяя
мягко говоря, нереальна. Выкрутиться можно. Но иногда для этого требуется навернуть несколько каскадов промежуточных лесов.