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 | 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 Arhivirano 22. 10. 2020. na Wayback Machine
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]- ^ Riehle, Dirk (2000), Framework Design: A Role Modeling Approach (PDF), Swiss Federal Institute of Technology
- ^ 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
- ^ Johnson, R E (1992), "Documenting frameworks using patterns", Proceedings of the Conference on Object Oriented Programming Systems Languages and Applications, ACM Press: 63–76
- ^ 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
- ^ 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
- ^ 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
- ^ 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
- ^ Buschmann, F (1996), Pattern-Oriented Software Architecture Volume 1: A System of Patterns. Chichester, Wiley, ISBN 978-0-471-95869-7
- ^ 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
- ^ 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)