Фре́ймворк, иногда фреймво́рк (англицизм, неологизм от framework - «остов, каркас, структура») — заготовки, шаблоны для программной платформы, определяющие архитектуру программной системы; программное обеспечение, облегчающее разработку и объединение разных модулей программного проекта.
Уместно использование термина «каркас». Некоторые авторы используют его в качестве основного, не опираясь на англоязычный аналог. Можно также говорить о каркасном подходе как о подходе к построению программ, где любая конфигурация программы строится из двух частей:
- Постоянная часть — каркас, не меняющийся от конфигурации к конфигурации и несущий в себе гнёзда, в которых размещается вторая, переменная часть;
- Сменные модули (или точки расширения).
«Фреймворк» определяется как множество конкретных и абстрактных классов. А также определений способов их взаимоотношения. Конкретные классы обычно реализуют взаимные отношения между классами. Абстрактные классы представляют собой точки расширения, в которых каркасы могут быть использованы или адаптированы.
Точка расширения — это та «часть» фреймворка, для которой не приведена реализация. Соответственно. Каркас концептуальной модели состоит из концептуальных классов. А каркас программной системы — из классов языка программирования общего назначения.
Процесс создания фреймворка заключается в выборе подмножества задач проблем и их реализаций. В ходе реализаций общие средства решения задач заключаются в конкретных классах, а изменяемые средства — выносятся в точки расширения.