Ramverk (ibland ramverk ; anglicism , neologism från ramverk - skelett , ram, ram, struktur) - en mjukvaruplattform som bestämmer strukturen för ett mjukvarusystem; programvara som underlättar utveckling och integration av olika komponenter i ett stort programvaruprojekt.
Ordet "framework" används också, och vissa författare använder det som det huvudsakliga, inklusive inte baserat alls på den engelska analogen [1] [2] [3] . Du kan också tala om rammetoden [3] som ett tillvägagångssätt för att bygga program, där alla programkonfigurationer är uppbyggda av två delar:
"Framework" skiljer sig från konceptet med ett bibliotek genom att ett bibliotek kan användas i en mjukvaruprodukt helt enkelt som en uppsättning subrutiner med liknande funktionalitet, utan att påverka mjukvaruproduktens arkitektur och utan att införa några begränsningar för den. Medan "ramverket" dikterar reglerna för att bygga applikationsarkitekturen, ställer du in standardbeteendet i det inledande utvecklingsskedet - "ramverket", som kommer att behöva utökas och ändras enligt de specificerade kraven. Ett exempel på mjukvaruramverk är CMF ( Content Management Framework ) och ett exempelbibliotek är en e -postmodul .
Dessutom, till skillnad från ett bibliotek, som kombinerar en uppsättning liknande funktioner, kan ett "ramverk" innehålla ett stort antal bibliotek med olika ämnen.
Den viktigaste skillnaden mellan ett "ramverk" och ett bibliotek är inversion av kontroll : användarkoden anropar biblioteksfunktioner (eller klasser) och tar kontroll efter samtalet. I "ramverket" kan användarkoden implementera specifikt beteende som är inbäddat i ramverkets mer allmänna - "abstrakta" kod. I detta fall anropar "ramverket" funktionerna ( klasserna ) för användarkoden [4] .
Detta är ramverket för ett mjukvarusystem (eller delsystem). Kan innehålla: verktygsprogram, kodbibliotek, skriptspråk och annan programvara som underlättar utveckling och integration av olika komponenter i ett stort programvaruprojekt. Vanligtvis sker kopplingen genom användning av ett enda API .
Exempel: webbramverk som Zend Framework, Laravel eller Symfony PHP-ramverk eller Django skrivet i Python .
En av de största fördelarna med att använda "wireframe"-applikationer är applikationens "standard" struktur. "Frames" blev populärt med tillkomsten av grafiska användargränssnitt , som tenderade att implementera ett standardramverk för applikationer. Med deras användning blev det mycket lättare att skapa verktyg för att automatiskt skapa grafiska gränssnitt, eftersom strukturen för den interna implementeringen av applikationskoden blev känd i förväg. Objektorienterade programmeringstekniker används vanligtvis för att tillhandahålla ett ramverk (till exempel kan delar av en applikation ärvas från ramverksbasklasser).
En av de första kommersiella tillämpningsramverken var MacApp , skriven av Apple för " Macintosh ". Ursprungligen skapad med en utökad (objektorienterad) version av " Object Pascal "-språket, skrevs den sedan om i " C++ ". Andra populära "Macintosh"-ramverk inkluderar:
I varierande grad är programramverk " Cocoa " för Mac OS X , såväl som fria ramverk som finns som en del av Mozilla- , OpenOffice.org- , GNOME- och KDE- projekten .
Microsoft har skapat en liknande produkt för " Windows " som heter Microsoft Foundation Classes (MFC). För närvarande är Microsofts flaggskeppsprodukt för mjukvaruutveckling " .NET ".
Plattformsövergripande applikationsramverk (för operativsystemen Linux , Macintosh och Windows) är till exempel widget toolkit , wxWidgets , Qt , .NET , MyCoRe eller FOX toolkit .
Ett abstrakt strukturbegrepp som används i forskning för att identifiera möjliga sätt att lösa ett problem eller representera en idé.
Ett "ramverk" definieras som en uppsättning konkreta och abstrakta klasser och definitioner av hur de interagerar. Konkreta klasser implementerar vanligtvis ömsesidiga relationer mellan klasser. Abstrakta klasser är förlängningspunkter där ramverk kan användas eller anpassas.
En förlängningspunkt är den "del" av ramverket för vilken ingen implementering ges. Följaktligen består ramverket för en konceptuell modell av konceptuella klasser och ramverket för ett mjukvarusystem består av klasser av ett allmänt programmeringsspråk.
Processen att skapa ett ramverk är att välja en delmängd av problemets uppgifter och deras implementeringar. Under implementeringarna finns allmänna problemlösningsverktyg i konkreta klasser och föränderliga verktyg flyttas till förlängningspunkter.