Framework (někdy framework ; anglicismus , neologismus z frameworku - kostra , rámec, rámec, struktura) - softwarová platforma, která určuje strukturu softwarového systému; software , který usnadňuje vývoj a integraci různých součástí velkého softwarového projektu.
Používá se také slovo „framework“ a někteří autoři jej používají jako hlavní, včetně toho, že vůbec nevycházejí z anglického analogu [1] [2] [3] . O rámcovém přístupu [3] lze také mluvit jako o přístupu k vytváření programů, kde se jakákoli konfigurace programu skládá ze dvou částí:
"Framework" se liší od konceptu knihovny v tom, že knihovnu lze v softwarovém produktu použít jednoduše jako sadu podprogramů s podobnou funkčností, aniž by to ovlivnilo architekturu softwarového produktu a aniž by na něj byla kladena jakákoli omezení. Zatímco „rámec“ diktuje pravidla pro stavbu aplikační architektury, nastavení výchozího chování v počáteční fázi vývoje – „rámce“, které bude potřeba rozšiřovat a měnit podle zadaných požadavků. Příkladem softwarového rámce je CMF ( Content Management Framework ) a ukázkovou knihovnou je e-mailový modul .
Na rozdíl od knihovny, která kombinuje sadu podobných funkcí, může „rámec“ obsahovat velké množství knihoven různých témat.
Klíčový rozdíl mezi „rámcem“ a knihovnou je inverze kontroly : uživatelský kód volá funkce knihovny (nebo třídy) a po volání přebírá kontrolu. V „rámci“ může uživatelský kód implementovat specifické chování, které je zasazeno do obecnějšího – „abstraktního“ kódu frameworku. V tomto případě "rámec" volá funkce ( třídy ) uživatelského kódu [4] .
Toto je rámec softwarového systému (nebo subsystému). Může zahrnovat: obslužné programy, knihovny kódů, skriptovací jazyk a další software , který usnadňuje vývoj a integraci různých součástí velkého softwarového projektu. Ke spojení obvykle dochází pomocí jediného API .
Příklady: webové rámce jako Zend Framework, Laravel nebo Symfony PHP frameworky nebo Django napsané v Pythonu .
Jednou z hlavních výhod používání „wireframe“ aplikací je „standardní“ struktura aplikace. „Rámce“ se staly populární s příchodem grafických uživatelských rozhraní , která inklinovala k implementaci standardního rámce pro aplikace. S jejich použitím bylo mnohem snazší vytvářet nástroje pro automatické vytváření grafických rozhraní, protože struktura vnitřní implementace kódu aplikace byla známa předem. Techniky objektově orientovaného programování se obvykle používají k poskytování rámce (například části aplikace mohou být zděděny ze základních tříd rámce).
Jedním z prvních komerčních aplikačních frameworků byl MacApp , napsaný společností Apple pro „ Macintosh “. Původně vytvořený s rozšířenou (objektově orientovanou) verzí jazyka " Object Pascal ", byl následně přepsán do " C++ ". Mezi další populární frameworky "Macintosh" patřily:
Aplikační rámce jsou v různé míře " Cocoa " pro Mac OS X , stejně jako bezplatné rámce , které existují jako součást projektů Mozilla , OpenOffice.org , GNOME a KDE .
Microsoft vytvořil podobný produkt pro " Windows " s názvem Microsoft Foundation Classes (MFC). V současnosti je vlajkovou lodí společnosti Microsoft pro vývoj softwaru „ .NET “.
Meziplatformní aplikační frameworky (pro operační systémy Linux , Macintosh a Windows) jsou například widget toolkit , wxWidgets , Qt , .NET , MyCoRe nebo FOX toolkit .
Abstraktní pojem struktury, který se používá ve výzkumu k identifikaci možných způsobů řešení problému nebo reprezentace myšlenky.
„Rámec“ je definován jako soubor konkrétních a abstraktních tříd a definic jejich vzájemné interakce. Konkrétní třídy obvykle realizují vzájemné vztahy mezi třídami. Abstraktní třídy jsou body rozšíření , kde lze rámce použít nebo upravit.
Bod rozšíření je ta „část“ rámce, pro kterou není uvedena žádná implementace. V souladu s tím se rámec koncepčního modelu skládá z pojmových tříd a rámec softwarového systému se skládá z tříd univerzálního programovacího jazyka.
Proces vytváření rámce spočívá ve výběru podmnožiny úloh problému a jejich implementací. V průběhu implementací jsou obecné nástroje pro řešení problémů obsaženy v konkrétních třídách a měnitelné nástroje jsou přesunuty do bodů rozšíření.