Softverski okvir

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

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

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 Arhivirano 22. 10. 2020. na Wayback Machine

Arhitektura uredi

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

  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