Softverski okvir

U računarskom programiranju, **softverski okvir** () jest apstrakcija u kojoj se softver koji pruža generičku funkcionalnost može selektivno mijenjati dodatnim korisničkim kodom, pružajući tako softver specifičan za aplikaciju. Pruža standardni način za izgradnju i primjenu aplikacija i univerzalno je softversko okruženje za višekratnu upotrebu koje pruža određenu funkcionalnost kao dio veće softverske platforme za olakšavanje razvoja softverskih aplikacija, proizvoda i rješenja. Softverski okviri mogu uključivati programe podrške, kompajlere, biblioteke koda, skupove alata i interfejsa za programiranje aplikacija (API-ji) koji okupljaju sve različite komponente kako bi omogućili razvoj projekta ili sistema.

## Karakteristike 
Okviri imaju ključne karakteristike koje ih razlikuju od uobičajenih biblioteka:

* inverzija kontrole: U okviru, za razliku od biblioteka ili u standardnim korisničkim aplikacijama, ukupni tok kontrole programa ne diktira pozivalac, već okvir. To se obično postiže obrascem metode predloška.
* zadano ponašanje: Ovo se može dobiti s invarijantnim metodama uzorka metode predloška u apstraktnoj klasi koju pruža okvir.
* proširivost: Korisnik može proširiti okvir - obično selektivnim nadjačavanjem - ili programeri mogu dodati specijalizirani korisnički kod za pružanje određene funkcionalnosti. To se obično postiže metodom kuke u potklasi koja nadjačava metodu predloška u superklasi.
* neizmjenjivi okvirni kod: Okvirni kod, općenito, ne bi trebao biti modificiran dok prihvaća proširenja koja su implementirali korisnici. Drugim riječima, korisnici mogu proširiti okvir, ali ne mogu mijenjati njegov kôd.

## Primjeri 
Softverski okviri obično sadrže značajan kôd za održavanje i uslužni program kako bi se pomoglo pokretanje korisničkih aplikacija, ali uglavnom se usredotočuju na određene domene problema, kao što su:

* Umjetnički crtež, glazbena kompozicija i mehanički CAD
* Primjene financijskog modeliranja
* Primjene za modeliranje zemaljskog sistema
* Sistemi za podršku odlučivanju
* Reprodukcija i autorizacija medija
* Ajax framework/JavaScript framework
* Web framework
* Middleware
* Cactus Framework - Naučno računanje visokih performansi.
* Okvir aplikacije - općeniti GUI programi.
* Okvir arhitekture preduzeća
* Oracle Okvir za razvoj aplikacija
* Laravel (PHP Framework)
* Okvir u programskom jeziku 

## Arhitektura 
Prema Preeu, softverski okviri sastoje se od smrznutih () i vrućih tačaka (). Zamrznuta mjesta definiraju ukupnu arhitekturu softverskog sustava, odnosno njegove osnovne komponente i odnose između njih. Oni ostaju nepromjenjeni (zamrznuti) u bilo kojoj instanci aplikacijskog okvira. Vruće tačke predstavljaju one dijelove u kojima programeri koji koriste okvir dodaju vlastiti kôd kako bi dodali funkcionalnost specifičnu za vlastiti projekt.

U objektno orijentiranom okruženju, okvir se sastoji od apstraktnih i konkretnih klasa. Instanciranje takvog okvira sastoji se od sastavljanja i potklasiranja postojećih klasa.

Potrebna funkcionalnost može se implementirati korištenjem obrasca metode predloška u kojem su smrznuta mjesta poznata kao invarijantne metode, a žarišta poznata kao varijante ili metode zakačenja. Invarijantne metode u superklasi pružaju zadano ponašanje, dok metode kuke u svakoj podklasi pružaju prilagođeno ponašanje.

Kada razvijaju konkretan softverski sistem sa softverskim okvirom, programeri koriste žarišta u skladu sa specifičnim potrebama i zahtevima sistema. Softverski okviri oslanjaju se na holivudski princip: "Ne zovite nas, mi ćemo vas zvati." To znači da korisnički definirane klase (na primjer, nove podklase) primaju poruke iz unaprijed definiranih okvirnih klasa. Programeri obično to rješavaju primjenom apstraktnih metoda superklase.

## Reference 
## Vanjski linkovi 
*What Is Framework In Programming Language ? 
* Programski jezik vs okvir

Kategorija:Softverska arhitektura