Ohjelmistokehys - Software framework


Vuonna ohjelmointi , eli ohjelmistokehys on abstraktio , jossa ohjelmisto , joka tarjoaa yleistoimivuus, voidaan selektiivisesti muuttaa lisäkäyttäjä kirjoitettu koodi, mikä antaa sovelluskohtaiset ohjelmisto. Se tarjoaa tavanomaisen tavan rakentaa ja ottaa käyttöön sovelluksia ja on universaali, uudelleenkäytettävä ohjelmistoympäristö, joka tarjoaa tiettyjä toimintoja osana laajempaa ohjelmistoalustaa helpottaakseen sovellusten , tuotteiden ja ratkaisujen kehittämistä. Ohjelmistokehykset voivat sisältää tukiohjelmia, kääntäjiä, koodikirjastoja, työkalusarjoja ja sovellusohjelmointirajapintoja (API), jotka yhdistävät kaikki eri osat , jotta projekti tai järjestelmä voidaan kehittää .

Kehyksissä on tärkeitä erottavia ominaisuuksia, jotka erottavat ne tavallisista kirjastoista :

  • ohjauksen kääntäminen : puitteissa, toisin kuin kirjastoissa tai vakiokäyttäjäsovelluksissa, koko ohjelman ohjausvirtaa ei määrätä soittaja vaan kehys. Tämä saavutetaan yleensä Template Method Patternilla .
  • oletuskäyttäytyminen : Tämä voidaan tarjota mallin menetelmäkuvion muuttumattomilla menetelmillä abstraktissa luokassa, jonka kehys tarjoaa.
  • laajennettavuus : Käyttäjä voi laajentaa kehystä - yleensä valikoivalla ohituksella - tai ohjelmoijat voivat lisätä erikoistuneita käyttäjäkoodeja tarjotakseen tiettyjä toimintoja. Tämä saavutetaan yleensä koukumenetelmällä alaluokassa, joka ohittaa mallin menetelmän superluokassa.
  • ei-muokattava kehyskoodi : Kehyskoodia ei yleensä ole tarkoitus muuttaa, mutta se hyväksyy käyttäjän toteuttamat laajennukset. Toisin sanoen käyttäjät voivat laajentaa kehystä, mutta eivät voi muokata sen koodia.

Perustelut

Ohjelmistokehysten suunnittelijoiden tavoitteena on helpottaa ohjelmistokehitystä antamalla suunnittelijoille ja ohjelmoijille mahdollisuuden käyttää aikaa ohjelmistovaatimusten täyttämiseen sen sijaan, että he tekisivät tavanomaisia ​​matalan tason yksityiskohtia toimivan järjestelmän tarjoamisesta, mikä lyhentää kokonaiskehitysaikaa. Esimerkiksi tiimi, joka käyttää verkkokehystä pankkisivuston kehittämiseen, voi keskittyä pankkikoodin kirjoittamiseen pikemminkin kuin pyyntöjen käsittelyn ja valtionhallinnan mekaniikkaan .

Kehykset lisäävät usein ohjelmien kokoa, ilmiötä nimeltä " koodin paisuminen ". Asiakkaiden kysyntään perustuvien sovellustarpeiden vuoksi sekä kilpailevat että täydentävät puitteet päätyvät joskus tuotteeseen. Lisäksi niiden sovellusliittymien monimutkaisuuden vuoksi suunniteltu kehitysajan lyhentäminen ei välttämättä onnistu, koska tarvetta viettää lisäaikaa puitteiden käytön oppimiseen; tämä kritiikki on selvästi pätevä, kun kehityshenkilöstö kohtaa ensimmäisen kerran erityisen tai uuden kehyksen. Jos tällaista kehystä ei käytetä myöhemmissä työtehtävissä, puitteiden oppimiseen käytetty aika voi maksaa enemmän kuin hankkeen henkilökunnalle tuttu tarkoitukseen kirjoitettu koodi; monet ohjelmoijat säilyttävät kopioita hyödyllisestä kattilasta yleisiin tarpeisiin.

Kuitenkin, kun puitteet on opittu, tulevat projektit voivat olla nopeampia ja helpompia toteuttaa; kehyksen tarkoituksena on tehdä kaikille sopiva ratkaisusarja, ja perehtyneenä koodintuotannon pitäisi loogisesti kasvaa. Tällaisia ​​väitteitä ei esitetä lopputuotteeseen liitetyn koodin koosta eikä sen suhteellisesta tehokkuudesta ja ytimekkyydestä. Minkä tahansa kirjastoratkaisun käyttäminen vaatii välttämättä lisäosia ja käyttämättömiä vieraita resursseja, ellei ohjelmisto ole kääntäjä-objektin linkittäjä, joka tekee tiukan (pienen, kokonaan ohjatun ja määritellyn) suoritettavan moduulin.

Ongelma jatkuu, mutta vuosikymmenen plus alan kokemus on osoittanut, että tehokkain kehysten osoittautua jotka kehittyvät uudelleen factoring yhteisen koodin yrityksen käyttämisen sijaan geneeristä "yksi koko sopii kaikille "kehys, jonka kolmannet osapuolet ovat kehittäneet yleisiin tarkoituksiin. Esimerkki tästä olisi se, miten tällaisen sovelluspaketin, kuten toimistopaketin, käyttöliittymästä tulee yleinen ulkoasu, tuntuma ja tietojen jakamisominaisuudet ja -menetelmät, kun kerran erilliset paketoidut sovellukset kasvavat yhtenäiseksi paketiksi, joka on tiukempi ja pienempiä; uudempi/kehittynyt sarja voi olla tuote, joka jakaa kiinteät apuohjelmakirjastot ja käyttöliittymät.

Tämä trendi kiistassa tuo esiin tärkeän kysymyksen kehyksistä. Tyylikkään kehyksen luominen verrattuna pelkästään ongelman ratkaisemiseen on edelleen pikemminkin käsityö kuin tiede. "Ohjelmiston tyylikkyys " tarkoittaa selkeyttä, ytimekkyyttä ja vähän jätettä (ylimääräisiä tai vieraita toimintoja, joista suuri osa on käyttäjän määrittämiä). Esimerkiksi koodia tuottaville kehyksille "eleganssi" merkitsisi sellaisen koodin luomista, joka on puhdas ja ymmärrettävä kohtuullisen asiantuntemuksen omaavalle ohjelmoijalle (ja joka on siksi helposti muokattavissa), verrattuna sellaiseen, joka luo vain oikean koodin. Eleganssikysymys johtuu siitä, että suhteellisen harvat ohjelmistokehykset ovat kestäneet ajan testin: parhaat kehykset ovat kyenneet kehittymään hienosti niiden taustalla olevan tekniikan kehittyessä. Jopa siellä kehittyessään monet tällaiset paketit säilyttävät vanhoja ominaisuuksia, jotka tuhoavat lopullisen ohjelmiston, koska muuten korvatut menetelmät on säilytetty rinnakkain uudempien menetelmien kanssa.

Esimerkkejä

Python Powered.png

Ohjelmistokehykset sisältävät tyypillisesti huomattavaa taloudenhoitoa ja apuohjelmakoodia, jotta ne voivat auttaa käynnistämään käyttäjän sovelluksia, mutta keskittyvät yleensä tiettyihin ongelma -alueisiin, kuten:

Arkkitehtuuri

Preen mukaan ohjelmistokehykset koostuvat jäätyneistä ja kuumista paikoista . Jäädytetyt paikat määrittelevät ohjelmistojärjestelmän kokonaisarkkitehtuurin eli sen peruskomponentit ja niiden väliset suhteet. Nämä pysyvät muuttumattomina (jäädytettyinä) kaikissa sovelluskehyksen pikaesittelyissä. Hot spotit edustavat niitä osia, joissa kehystä käyttävät ohjelmoijat lisäävät oman koodinsa lisätäkseen omalle projektilleen ominaisia ​​toimintoja.

Vuonna olio ympäristö, puitteet koostuu abstrakteja ja konkreettisia luokkia . Instantiation tällaisen puitteet koostuvat säveltäminen ja alaluokitteleva nykyiset luokat.

Tarvittavat toiminnot voidaan toteuttaa käyttämällä Template Method Patternia , jossa jäädytetyt paikat tunnetaan invariantteina menetelminä ja hot spotit muunnelmina tai koukkumenetelminä. Yliluokan invariantit menetelmät tarjoavat oletuskäyttäytymisen, kun taas kunkin alaluokan koukumenetelmät tarjoavat mukautetun käyttäytymisen.

Kehittäessään konkreettista ohjelmistojärjestelmää, jossa on ohjelmistokehys, kehittäjät hyödyntävät kuumia pisteitä järjestelmän erityistarpeiden ja -vaatimusten mukaan. Ohjelmistokehykset perustuvat Hollywoodin periaatteeseen : "Älä soita meille, me soitamme sinulle." Tämä tarkoittaa, että käyttäjän määrittämät luokat (esimerkiksi uudet alaluokat) vastaanottavat viestejä ennalta määritetyistä kehysluokista. Kehittäjät hoitavat tämän yleensä toteuttamalla superluokan abstrakteja menetelmiä .

Katso myös

Viitteet