Framework (joskus kehys ; anglismi , neologismi kehyksestä - luuranko , kehys , kehys, rakenne) - ohjelmistoalusta, joka määrittää ohjelmistojärjestelmän rakenteen; ohjelmisto , joka mahdollistaa suuren ohjelmistoprojektin eri komponenttien kehittämisen ja integroinnin.
Myös sanaa "kehys" käytetään, ja jotkut kirjoittajat käyttävät sitä pääsanana, mukaan lukien se ei perustu lainkaan englanninkieliseen analogiin [1] [2] [3] . Voit myös puhua kehyslähestymistavasta [3] lähestymistapana ohjelmien rakentamiseen, jossa mikä tahansa ohjelmakokoonpano rakennetaan kahdesta osasta:
"Framework" eroaa kirjaston käsitteestä siinä, että kirjastoa voidaan käyttää ohjelmistotuotteessa yksinkertaisesti saman toiminnallisuuden aliohjelmien sarjana vaikuttamatta ohjelmistotuotteen arkkitehtuuriin ja asettamatta sille mitään rajoituksia. Vaikka "kehys" sanelee säännöt sovellusarkkitehtuurin rakentamiselle, asettaen oletuskäyttäytymisen kehityksen alkuvaiheessa - "kehys", jota on laajennettava ja muutettava määritettyjen vaatimusten mukaisesti. Esimerkki ohjelmistokehyksestä on CMF ( Content Management Framework ) ja esimerkkikirjasto on sähköpostimoduuli .
Lisäksi, toisin kuin kirjasto, joka yhdistää joukon samanlaisia toimintoja, "kehys" voi sisältää suuren määrän eri aiheiden kirjastoja.
Keskeinen ero "kehyksen" ja kirjaston välillä on käänteinen ohjaus : käyttäjäkoodi kutsuu kirjaston toimintoja (tai luokkia) ja ottaa ohjauksen puhelun jälkeen. "Frameworkissa" käyttäjäkoodi voi toteuttaa tiettyä toimintaa, joka on upotettu yleisempään - "abstraktiin" kehyksen koodiin. Tässä tapauksessa "kehys" kutsuu käyttäjäkoodin [4] funktioita ( luokkia ) .
Tämä on ohjelmistojärjestelmän (tai alijärjestelmän) kehys . Voi sisältää: apuohjelmia, koodikirjastoja, komentosarjakieliä ja muita ohjelmistoja , jotka helpottavat suuren ohjelmistoprojektin eri komponenttien kehittämistä ja integrointia. Yleensä yhdistäminen tapahtuu yhden API :n käytön kautta .
Esimerkkejä: verkkokehykset, kuten Zend Framework, Laravel tai Symfony PHP -kehykset tai Pythonilla kirjoitettu Django .
Yksi "wireframe" -sovellusten käytön tärkeimmistä eduista on sovelluksen "vakiorakenne". "Kehyksistä" tuli suosittuja graafisten käyttöliittymien myötä , jotka pyrkivät toteuttamaan sovellusten standardikehyksen. Niiden käytön myötä työkalujen luominen graafisten käyttöliittymien automaattiseen luomiseen tuli paljon helpompaa, koska sovelluskoodin sisäisen toteutuksen rakenne tuli tiedoksi etukäteen. Oliopohjaisia ohjelmointitekniikoita käytetään tyypillisesti kehyksen tarjoamiseen (esimerkiksi sovelluksen osia voidaan periä kehyksen perusluokista).
Yksi ensimmäisistä kaupallisista sovelluskehyksistä oli MacApp , jonka Apple kirjoitti " Macintoshille ". Se luotiin alun perin " Object Pascal " -kielen laajennetulla (oliosuuntautuneella) versiolla , mutta se kirjoitettiin myöhemmin uudelleen " C++ " -kielellä. Muita suosittuja "Macintosh"-kehyksiä olivat:
Sovelluskehykset ovat vaihtelevissa määrin " Cocoa " Mac OS X :lle sekä ilmaisia kehyksiä, jotka ovat osa Mozilla- , OpenOffice.org- , GNOME- ja KDE -projekteja .
Microsoft on luonut Windowsille samanlaisen tuotteen nimeltä Microsoft Foundation Classes (MFC). Tällä hetkellä Microsoftin ohjelmistokehityksen lippulaivatuote on " .NET ".
Monialustaiset sovelluskehykset ( Linux- , Macintosh- ja Windows-käyttöjärjestelmille) ovat esimerkiksi widget toolkit , wxWidgets , Qt , .NET , MyCoRe tai FOX toolkit .
Abstrakti rakenteen käsite, jota käytetään tutkimuksessa tunnistamaan mahdollisia tapoja ratkaista ongelma tai edustaa ideaa.
"Framework" määritellään joukoksi konkreettisia ja abstrakteja luokkia ja määritelmiä niiden vuorovaikutuksesta. Konkreettiset luokat toteuttavat yleensä luokkien välisiä keskinäisiä suhteita. Abstraktit luokat ovat laajennuspisteitä , joissa kehyksiä voidaan käyttää tai mukauttaa.
Laajennuskohta on se "osa" viitekehyksestä, jolle ei ole annettu toteutusta. Vastaavasti käsitteellisen mallin kehys koostuu käsitteellisistä luokista ja ohjelmistojärjestelmän kehys yleiskäyttöisen ohjelmointikielen luokista.
Kehyksen luomisprosessi on valita osajoukko ongelman tehtävistä ja niiden toteutuksista. Toteutusten aikana yleiset ongelmanratkaisutyökalut sisällytetään konkreettisiin luokkiin ja muuttuvat työkalut siirretään laajennuspisteisiin.