Softverski okvir

S Wikipedije, slobodne enciklopedije
Idi na navigaciju Idi na pretragu

U računarskom programiranju, softverski okvir (engleski: Software framework) 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[uredi | uredi izvor]

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.[1] 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[uredi | uredi izvor]

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[2][3]
  • Primjene financijskog modeliranja[4]
  • Primjene za modeliranje zemaljskog sistema[5]
  • Sistemi za podršku odlučivanju[6]
  • 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[uredi | uredi izvor]

Prema Preeu,[7] softverski okviri sastoje se od smrznutih (engleski: frozen spots) i vrućih tačaka (engleski: hot spots). 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.[8]

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."[9][10] 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[uredi | uredi izvor]

  1. ^ Riehle, Dirk (2000), Framework Design: A Role Modeling Approach (PDF), Swiss Federal Institute of Technology
  2. ^ Vlissides, J M; Linton, M A (1990), "Unidraw: a framework for building domain-specific graphical editors", ACM Transactions on Information Systems, 8 (3): 237–268, doi:10.1145/98188.98197
  3. ^ Johnson, R E (1992), "Documenting frameworks using patterns", Proceedings of the Conference on Object Oriented Programming Systems Languages and Applications, ACM Press: 63–76
  4. ^ Birrer, A; Eggenschwiler, T (1993), "Proceedings of the European conference on object-oriented programming", Frameworks in the financial engineering domain: an experience report, Springer-Verlag, str. 21–35
  5. ^ Hill, C; DeLuca, C; Balaji, V; Suarez, M; da Silva, A (2004), "Architecture of the Earth System Modeling Framework (ESMF)", Computing in Science and Engineering, 6: 18–28, doi:10.1109/MCISE.2004.1255817
  6. ^ Gachet, A (2003), "Software Frameworks for Developing Decision Support Systems – A New Component in the Classification of DSS Development Tools", Journal of Decision Systems, 12 (3): 271–281, doi:10.3166/jds.12.271-280
  7. ^ Pree, W (1994), "Meta Patterns: A Means for Capturing the Essentials of Reusable Object-Oriented Design", Proceedings of the 8th European Conference on Object-Oriented Programming, Lecture Notes in Computer Science, Springer-Verlag, 821: 150–162, CiteSeerX 10.1.1.74.7935, doi:10.1007/BFb0052181, ISBN 978-3-540-58202-1
  8. ^ Buschmann, F (1996), Pattern-Oriented Software Architecture Volume 1: A System of Patterns. Chichester, Wiley, ISBN 978-0-471-95869-7
  9. ^ Larman, C (2001), Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process (2nd izd.), Prentice Hall, ISBN 978-0-13-092569-5
  10. ^ Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1994). Design Patterns. Addison-Wesley. ISBN 0-201-63361-2. CS1 održavanje: nepreporučeni parametar (link)

Vanjski linkovi[uredi | uredi izvor]