Фреймворк ( англ. framework - Каркас, структура) - структура програмної системи; програмне забезпечення, що полегшує розробку і об'єднання різних компонентів великого програмного проекту. На відміну від бібліотек, які об'єднують набір підпрограм близькою функціональності, фреймворк містить в собі велику кількість різних за призначенням бібліотек. Вживається також слово "каркас", а деякі автори використовують його в якості основного, в тому числі не базуючись взагалі на англомовному аналогу. [1] [2] [3] Можна також говорити про каркасному підході [3] як про підхід до побудови програм , де будь-яка конфігурація програми будується з двох частин: перша, постійна частина - каркас, не змінюваний від конфігурації до конфігурації і несе в собі гнізда, в яких розміщується друга, змінна частина - змінні модулі (або точки розширення).


1. Фреймворк програмної системи

Це каркас програмної системи (або підсистеми). Може включати допоміжні програми, бібліотеки коду, мова сценаріїв та інше ПО, що полегшує розробку і об'єднання різних компонентів великого програмного проекту. Зазвичай об'єднання відбувається за рахунок використання єдиного API.

Приклади: веб-фреймворки Symfony, Django.

Відрізняється від бібліотеки тим, що виконує код, написаний для нього, а не виповнюється сам. Приклад програмного фреймворку - CMF ( Content Management Framework), а приклад бібліотеки - модуль електронної пошти.

Також, на відміну від бібліотеки, яка об'єднує в собі набір близькою функціональності, каркас містить в собі велику кількість різних за тематикою бібліотек.


2. Фреймворк додатка

Однією з головних переваг при використанні каркасних додатків є те, що такі додатки мають стандартну структуру. Каркаси додатка стали популярні з появою графічних інтерфейсів користувача, які мали тенденцію до реалізації стандартної структури для додатків. З їх використанням стало набагато простіше створювати засоби для автоматичного створення графічних інтерфейсів, так як структура внутрішньої реалізації коду програми стала відома заздалегідь. Для забезпечення каркаса звичайно використовуються техніки об'єктно-орієнтованого програмування (наприклад, частини додатки можуть успадковуватися від базових класів фреймворка).

Одним з перших комерційних фреймворків додатка був MacApp, написаний Apple під Macintosh. Спочатку створений за допомогою розширеної (об'єктно-орієнтованої) версії мови Паскаль, згодом він був переписаний на C + +. Інші популярні каркаси для Macintosh включали Metrowerks Powerplant і MacZoop (всі засновані на Carbon). Також WebObjects від NeXT.

У різного ступеня фреймворки додатка являють собою Cocoa для Mac OS X, а також вільні фреймворки, існуючі як частина проектів Mozilla, OpenOffice.org, GNOME і KDE.

Microsoft створила схожий продукт для Windows, який називається "Microsoft Foundation Classes" ( MFC). На даний момент основним продуктом Microsoft для розробки ПЗ пропонується . NET Framework.

Багатоплатформовий каркасами додатків для операційних систем Linux, Macintosh і Windows є, наприклад, widget toolkit, wxWidgets, Qt, MyCore або FOX toolkit.


3. Фреймворк концептуальної моделі

Абстрактне поняття структури, яке використовується в дослідженнях для визначення можливих способів вирішення проблеми або подання ідеї.

4. Реалізація фреймворку

Фреймворк визначається як безліч конкретних і абстрактних класів, а також визначень способів їх взаємини. Конкретні класи зазвичай реалізують взаємні відносини між класами. Абстрактні класи являють собою точки розширення, в яких каркаси можуть бути використані або адаптовані.

Точка розширення - це та частина фреймворку, для якого не приведено реалізація. Відповідно каркас концептуальної моделі складається з концептуальних класів, а каркас програмної системи з класів мови програмування загального призначення.

Процес створення фреймворку полягає у виборі підмножини задач проблеми та їх реалізацій. В ході реалізацій загальні засоби вирішення завдань полягають в конкретних класах, а змінні засоби виносяться в точки розширення.


Примітки

  1. В. Фаронов. Створення додатків за допомогою C #, Москва, ЕКСМО, 2008, с. 12
  2. Методи і технології реінжинірингу ІС. К. В. Ахтирченко, Т. П. Сорокваша - www.citforum.ru/SE/project/isr/, Інститут системного програмування РАН
  3. 1 2 Горбунов-Посадов М. М. Розширювані програми - keldysh.ru / gorbunov /. - М .: Поліптих, 1999. - 336 с. - ISBN 5-901-11801-4