О разработки фреймворков…
Мне тут кинули ссылку на статью в которой автор рассуждает о целесообразности создания фреймворки. В числе прочего там есть сравнение двух подходов к разработке фреймворков от Мартина Фаулера — Foundation Framework и Harvested Framework.
За долгое время работы программистом я создал несколько фреймворков, которые вполне успешно применялись и статья инициировала мысли по этому поводу. Ни один из них не был в том сценарии, о которых говорится в статье, так что это не комментарии, а мысли на тему — вот и делюсь ими в своем блоге.
Существуют модели и области разработки, в которых задачей является разработка более-менее типовых приложений. И там создание фреймворка (специализированного решения), позволяющего реализовывать большинство из возникающих задач путем применения достаточно регламентированных процедур дает ощутимый эффект — за счет того, что при этом можно переложить задачу разработки на гораздо менее квалифицированный персонал. Собственно, именно для этого в свое время писал фреймворки я сам — с их помощью наша компания разрабатывала достаточно типовые проектные решения силами разработчиков ограниченной квалификации. Но это — давно в прошлом, мы сменили подход в сторону привлечения квалифицированных программистов (хотя дата у меня сильно примерная). А квалифицированным программистам фреймворки не нужны, вернее, им нужны другие, расширяемые фреймворки, такие как VS .Net.
Их тоже, в принципе, можно создавать и специализированными, но их создавать много сложнее. По сути, ногие промышленные решения, например 1C-Предприятие или Oracle Retail — это такие специализированные фреймворки, в которых четко проведена граница между тем, куда может лезть внедренец, а где область компании-разработчика. И тут фреймворк нужен как раз для проведения границы.
А еще важную роль играет время жизни и количества проектов. Если бы имеется поток более-менее однотипных проектов со средним сроком от пары месяцев до года, то создание фреймворка обычно существенно облегчает их реализацию. На SoftwarePeople я слышал интересный доклад Александра Горника — их компания делает сайты под промоакции, и основная задача — сделать быстро. Они сделали свой фреймворк под это дело — и сейчас делают заказы за неделю, а то и быстрее (начинали с пары месяцев) — потому что делают преимущественно типовое решение.А вот если каждый проект развивается долго, и новые появляются раз в несколько лет, то фреймворки — они устаревают. над ними начинает довлеть проблема обратной совместимости и многие другие известные проблемы. Кстати, поэтому переход на новую версию SAP, например, превращается в отдельный и не дешевый проект — версии слабо совместимы.