Softver
![](http://upload.wikimedia.org/wikipedia/commons/thumb/8/87/Operating_system_placement_%28software%29.svg/langbs-220px-Operating_system_placement_%28software%29.svg.png)
Računarski softver ili samo softver je skup podataka i računarskih instrukcija koje računaru govore kako treba da radi. U računarstvu i softverskom inženjerstvu, računarski softver je sva informacija koju obrađuju računarski sistemi, programi i podaci. Računarski softver uključuje računarske programe, biblioteke i srodne neizvršive podatke, poput digitalnih medija. Računarski hardver i softver usko su povezani, i nije ih moguće koristiti samostalno.
Na najnižem programskom nivou, izvršni kôd se sastoji od instrukcija na mašinskom jeziku kojeg podržava centralna procesorska jedinica (CPU) ili grafička procesorska jedinica (GPU). Mašinski jezik se sastoji od grupe binarnih brojeva koji naznačuje procesorske instrukcije. Na primjer, instrukcija može promijeniti vrijednost pohranjenu na određenoj lokaciji za pohranu u računaru – efekt koji korisnik ne može direktno da vidi. Instrukcija se može pozvati i na jednu od mnogih operacija ulaza/izlaza, na primjer prikazivanje određenog teksta na ekranu računara; promjene stanja koje bi trebale biti vidljive korisniku. Procesor izvršava upute redoslijedom koji mu je dat, osim ako mu je naređeno da "preskoči" na neku drugu instrukciju ili ga operativni sistem prekine. Do 2015, većina ličnih računara, pametnih uređaja i servera imaju procesore sa više izvršnih jedinica (višejezgreni procesori) ili više procesora koji zajedno obavljaju računanje.
Većina softvera napisana u programskom jeziku visokog nivoa. Lakši su i efikasniji programerima jer su bliži prirodnim jezicima nego mašinskom jeziku.[1] Jezici visokog nivoa se prevode na mašinski jezik koristeći kompajler ili interpreter ili s kombinacijom oba. Softver može biti napisan i na asemblerskom jeziku, koji je također jezik niskog nivoa i bliži je mašinskom jeziku, a prevodi se pomoću asemblera.
Historija
[uredi | uredi izvor]Algoritam za ono što se smatra prvim softver napisala je Ada Lovelace u 19. vijeku, za nadolazeću Analitičku mašinu.[2] Izradila je dokaz koji su trebali izračunati Bernoulli brojeve.[2] Zbog dokaza i algoritma ona se smatra prvim računarskim programerom.[3][4]
Prvu teoriju o softveru, prije stvaranja računara kakve ih danas poznajemo, predložio je Alan Turing u svom eseju iz 1935. godine On Computable Numbers, with an Application to the Entscheidungsproblem (O Računarskim Brojevima, sa aplikacijom na Entscheidungsproblem – problem odluke).
To je na kraju dovelo do stvaranja akademskog polja računarske nauke i softverskog inženjerstva. Računarstvo je teorijska studija računara i softvera, dok je softverski inženjering primjena inženjeringa i razvoja softvera.
Prije 1946. softver još nije bio program pohranjen u memoriji digitalnih računara kao što je danas uobičajeno. Prvi uređaji za elektroničko računanje su nanovo spajani žicama kako bi bili reprogramirani. Najranija upotreba termina "softver" u inženjerskom kontekstu zabilježena je u augustu 1953. u radu Richarda R. Carharta.[5]
Tipovi softvera
[uredi | uredi izvor]Softver koji koristi računarski sistem za obavljanje posebnih funkcija izvan osnovnog rada samog računara. Postoji mnogo različitih tipova aplikativnog softvera, jer je raspon zadataka koji se mogu obavljati sa modernim računarom jako velik.
Softver za upravljanje računarskim hardverom, kako bi pružio osnovne funkcionalnosti koje su potrebne korisnicima ili da bi se drugi softver ispravno pokretao, ako ga uopšte ima. Sistemski softver je također dizajniran za pružanje platforme za pokretanje aplikativnog softvera,[6] a uključuje sljedeće:
Ključna zbirka softvera koji upravlja resursima i pruža zajedničke usluge za drugi softver koji se izvodi na njemu. Nadzorni programi, pokretački programi za dizanje sistema, ljuske i prozori su osnovni dijelovi operativnih sistema. U praksi se operativni sistem isporučuje u paketu s dodatnim softverom (uključujući aplikativni softver).
- Upravljački program (driver)
Upravlja određenom vrstom uređaja koji je priključen na računar. Svaki uređaj treba najmanje jedan odgovarajući upravljački program; jer računar obično ima najmanje jedan uređaj za unos i najmanje jedan izlazni uređaj, tako da računar obično treba više od jednog upravljačkog programa.
Ovaj tip računarskog programa dizajniran da pomogne korisnicima u održavanju i njezi njihovih računara.
Softver razvijen da naudi i ošteti računare i kao takav nepoželjan na računaru
Domena izvršavanja
[uredi | uredi izvor]- Aplikativni softver poput internet preglednika i Microsoft Office, kao i aplikacije za pametne telefone i tablete
- JavaScript skripte su dijelovi softvera koji su tradicionalno ugrađeni u web stranice koje se pokreću unutar interenet preglednika kada se web stranica učita. Softver napisan na drugim programskim jezicima može se pokrenuti i u pregledniku ako je softver ili preveden na JavaScript ili ako je instaliran dodatak za preglednik koji podržava taj jezik; najčešći primjer posljednjih su ActionScript skripte koje podržava Adobe Flash dodatak.
- Serverski softver, uključujući:
- Web aplikacije, koje se vrte na web serveru i serviraju dinamičke web stranice, koristeći npr. PHP, Java, ASP.NET ili čak JavaScript koji se pokreće na serveru.
- Dodaci i proširenja su softver koji proširuje ili modificira funkcionalnost drugog dijela softvera i zahtijeva da se taj softver koristi kako bi radio.
- Ugrađeni softver nalazi se kao firmver u ugrađenim sistemima, uređajima koji su posvećeni nekoj specifičnoj upotrebi kao što su automobili i pametni televizori.[7] U ugrađenom sistemskom kontekstu ponekad ne postoji jasna razlika između sistemskog softvera i aplikativnog softvera. Neki ugrađeni sistemi pokreću ugrađene operativne sisteme, a ti sistemi zadržavaju razliku između sistemskog softvera i aplikativnog softvera (iako će korisnik uvijek vidjeti samo jednu, fiksnu pokrenutu aplikaciju).
- Mikroprogram je poseban, relativno nepoznat tip ugrađenog softvera koji direktno govori procesoru kako da izvršava mašinski kod, tako da je on još niži nivo od mašinskog koda. Obično je vlasništvo proizvođača procesora.
Alati za programiranje
[uredi | uredi izvor]Alat za programiranje također je softver u obliku programa ili aplikacije koje programeri softvera (poznati i kao programeri, koderi, hakeri ili softverski inženjeri) koriste za stvaranje, uklanjanje greški (debug), održavanje softvera
Softver je napisan na jednom ili više programskih jezika. Postoji mnogo programskih jezika i svaki ima najmanje jednu implementaciju, a svaki se sastoji od vlastitog skupa programskih alata. Ovi alati mogu biti relativno samostalni programi kao što su kompajleri, debuggeri, interpreteri, linkeri i uređivači teksta, koji se mogu kombinirati zajedno ili mogu biti u obliku integrisanog razvojnog okruženja (integrated development environment – IDE).
Teme
[uredi | uredi izvor]Arhitektura
[uredi | uredi izvor]Korisnici često vide stvari drugačije od programera. Ljudi koji koriste savremene računare opće namjene (za razliku od ugrađenih sistema, analognih računara i superračunara) obično vide tri sloja softvera koji obavljaju različite zadatke: platformski, aplikacijski i korisnički softver.
- Platformski softver
Platforma uključuje firmver, upravljačke programe uređaja, operativni sistem i grafički korisnički interfejs koji omogućavaju korisniku da komunicira s računarom i njegovim perifernim uređajima.
- Aplikativni softver
Aplikativni softver ili Aplikacije su ono što većina ljudi asocira sa softverom. Tipični primjeri uključuju proračunske tabele i videoigre. Aplikativni softver se često kupuje odvojeno od hardvera računara.
- Korisnički napisan softver
Krajnje korisničko programiranje odnosi se na aktivnosti i alate koji omogućavaju krajnjim korisnicima - ljudima koji nisu profesionalni programeri - za programiranje računara Korisnički softver može biti predloška (template) proračunske tabele.
Izvršavanje
[uredi | uredi izvor]Računarski softver mora biti "učitan" u podatkovno skladište računara (poput tvrdog diska ili memorije). Nakon što se softver učita, računar je u mogućnosti da ga izvrši. Ovo uključuje prenošenje instrukcija iz aplikativnog softvera, preko sistemskog softvera, na hardver koji na kraju dobija instrukciju u obliku mašinskog koda. Svaka instrukcija uzrokuje izvršavanje operacije, kao što je premještanje podatka ili izvršavanje računanja.
Kvalitet i pouzdanost
[uredi | uredi izvor]Kvalitet softvera je jako bitan, posebno za komercijalni i sistemski softver poput Microsoft Office, Microsoft Windows i Linux. Ako je softver pun grešaka, može izbrisati nečiji rad, srušiti računar i učiniti druge neočekivane stvari. Greške i pogreške se nazivaju "bugovi". Softver je često žrtva nečega što je poznato i kao starenje softvera, progresivna degradacija performansi uzrokovana nekim nepredvidivim greškama.
Mnogo grešaka se otkrije i ukloni testiranjem softvera. Međutim, testiranje softvera rijetko, ako ikad, eliminira svaku grešku.[8] U kaskadnoj metodi razvoja softvera obično se koriste odvojeni timovi za testiranje, ali u novijim pristupima kao što je agilni pristup razvoju softvera, programeri često rade sami testiranja i redovno demonstriraju softver korisnicima/klijentima kako bi dobili povratne informacije.
Licenca
[uredi | uredi izvor]Softverska licenca daje korisniku pravo na upotrebu softvera u licenciranom okruženju, a u slučaju besplatnih licenci za softver daje i druga prava, poput prava na kopiranje.
Vlasnički softver može se podijeliti na dvije vrste:
- besplatan softver (freeware), koji uključuje kategoriju softvera "besplatna proba" (free trial) ili "freemium" softver (softver koji je u osnovi besplatan, ali se plaćaju dodaci i dodatne funkcionalnosti, u prošlosti se izraz shareware često koristio za besplatni probni/freemium softver).
- softver dostupan uz naknadu koji se legalno može koristiti samo uz kupovinu licence.
Softver otvorenog koda dolazi sa besplatnom licencom za softver koji omogućava primaocu prava da modifikuje i redistribuira softver.
Dizajn i primjena
[uredi | uredi izvor]Dizajn i primjena softvera varira ovisno o složenosti softvera. Na primjer, stvaranje Microsoft Worda trajalo je mnogo više vremena od dizajniranja i razvoja Microsoft Notepada jer je Notepad dosta jednostavan program u odnosu na Word. Softver se obično dizajnira i programira u integrisanim razvojnim okruženjima (IDE) poput Eclipse, IntelliJ i Microsoft Visual Studio koji mogu pojednostaviti postupak i kompajlirati softver. Softver se obično stvara preko postojećeg softvera i aplikativnog programskog interfejsa (API) koji temeljni softver pruža, kao što su GTK+, JavaBeans ili Swing. Biblioteke (API-jevi) mogu se kategorizirati prema svojoj namjeni. Na primjer, Spring Framework koristi se za primjenu poslovnih aplikacija, biblioteka Windows Forms koristi se za dizajn aplikacija grafičkog korisničkog interfejsa (Microsoft GUI) poput Microsoft Worda, a Windows Communication Foundation koristi se za dizajniranje web usluga. Na primjer, Microsoft Windows desktop aplikacija može pozvati API funkcije u .NET bibliotekci Windows Forms kao što je Form1.Close() i Form1.Show()[9] da biste zatvorili (close) ili otvorili (show) aplikaciju. Bez ovih API-ja programer bi morao nanovo sam napisati ove funkcionalnosti. Tvrtke poput Oracle i Microsoft pružaju vlastite API-je, tako da se mnoge aplikacije pišu korištenjem njihovih softverskih biblioteka koje u njima obično sadrže brojne API-je.
Strukture podataka kao što su hash tabele, nizovi i binarna stabla, te algoritmi poput quicksorta mogu biti korisni za kreiranje softvera. Osoba koja stvara softver naziva se programer, softverski inženjer ili softverski programer, izrazi koji imaju slično značenje. Postoje i neformalni termini za programera kao što su "coder" i "hacker" iako upotreba ove posljednje riječi može izazvati konfuziju, jer se češće koristi za označavanje nekoga ko ilegalno stekne pristup računarskom sistemu.
Industrija i organizacije
[uredi | uredi izvor]Veliki broj softverskih kompanija i programera u svijetu čine softversku industriju. Softver može biti prilično profitabilna industrija: Bill Gates, suosnivač Microsofta, bio je najbogatija osoba na svijetu u 2009. godini, velikim dijelom zbog vlasništva nad značajnim brojem dionica u Microsoftu, kompaniji odgovornoj za Microsoft Windows i Microsoft Office.
Neprofitne softverske organizacije uključuju Fondaciju za slobodni softver, GNU projekat i Mozilla fondaciju. Organizacije softverskog standarda poput W3C, IETF razvijaju preporučene softverske standarde kao što su XML, HTTP i HTML, tako da softver može uzajamno komunicirati putem tih standarda.
Ostale poznate velike softverske kompanije uključuju Google, IBM, TCS, Infosys, Wipro, HCL Technologies, Oracle, Novell, SAP, Symantec, Adobe Systems, Sidetrade i Corel.
Veza sa hardverom
[uredi | uredi izvor]Softver ne može raditi bez hardvera, kao što hardver ne može raditi bez softvera. Na hardveru (kao što je hard disk) nalazi se softver (kao što je operativni sistem), softver upravlja hardverom. Obično, softver sa hard diska se učitava na RAM memoriju odakle se prosljeđuje procesoru koji izvršava naredbe koje sadrži neki program (softver). Najniži nivo softvera je mašinski kod (binarni kod), najjednostavniji oblik programa koji je obično teško promijeniti. Softver se zato češće piše u programskim jezicima višeg nivoa koje ljudi mnogo bolje razumiju nego li nule i jedinice. Za prevođenje programskih naredbi se koristi kompajler koji ponovo prevodi taj kod u, najniži, mašinski kod koji računar razumije (nule i jedinice).
Pouzdanost i kvalitet softvera
[uredi | uredi izvor]Pouzdanost softvera podrazumijeva greške, mane i propuste pri stvaranju nekog programa.
Također pogledajte
[uredi | uredi izvor]- Programiranje
- Programski jezici
- Kompajler
- Algoritam
- Razvojni alati
- Održavanje softvera
- Softverska optimizacija
- API (Application Programming Interface)
- Računarska grafika
- Grafički program
- Matematički softver
- Softversko inženjerstvo
- Licenciranje softvera
- Informatički portal
- IT certifikacija
- GEM
- Hunspell
- Mac OS X 10.6
- Metasploit
- Norton Ghost
- Specifikacija programa
- Wine
Termini za određene vrste softvera
[uredi | uredi izvor]- Open source softver
- Nelegalni softver
- Shovelware
- Freeware
- Postcardware
- Shareware
- Uninstaller
- Slobodni softver
- Porijeklo računarskih termina
Izvori
[uredi | uredi izvor]- Parsons, June Jamrich; Oja, Dan (2013). New Perspectives on Computer Concepts 30 14: Comprehensive. Cengage Learning. str. 129. ISBN 978-1-285-09692-6.CS1 održavanje: ref=harv (link)
- Services, EMC Education (2010). Information Storage and Management: Storing, Managing, and Protecting Digital Information. John Wiley & Sons.CS1 održavanje: ref=harv (link)
- Dhotre, I.A. (2009). Operating Systems. Technical Publications. str. 1.CS1 održavanje: ref=harv (link)
- Stallings (2005). Operating Systems, Internals and Design Principles. Pearson: Prentice Hall. str. 6.CS1 održavanje: ref=harv (link)
- Kuck, David (1978). Computers and Computations, Vol 1. John Wiley & Sons, Inc. str. 12. ISBN 978-0-471-02716-4.CS1 održavanje: ref=harv (link)
- Matthew Robinson, Pavel Vorobiev: Swing, Second Edition, Manning. Softver
- David M. Geary: Graphic Java 2, Volume 2: Swing. . Prentice Hall. ISBN 978-0-13-079667-7. Parametar
|title=
nedostaje ili je prazan (pomoć) - John Zukowski: The Definitive Guide to Java Swing, Third Edition, Apress. Softver
- James Elliott, Robert Eckstein, Marc Loy, David Wood, Brian Cole: Java Swing, O'Reilly. Softver
- Walrath, Kathy; Campione, Mary; Huml, Alison; Zakhour, Sharon (1999). The JFC Swing Tutorial: A Guide to Constructing GUIs. Addison-Wesley Professional. ISBN 978-0-201-91467-2. CS1 održavanje: nepreporučeni parametar (link) CS1 održavanje: ref=harv (link)
- Joshua Marinacci, Chris Adamson: Swing Hacks, O'Reilly. Softver
- Ivan Portyankin, Swing, Effective User Interfaces (Russian)., , Moscow, "Lory". (2nd izd.). 2010. ISBN 978-5-469-00005-1. Parametar
|title=
nedostaje ili je prazan (pomoć)
Reference
[uredi | uredi izvor]- ^ "Compiler construction". Arhivirano s originala, 2. 11. 2013.
- ^ a b Evans 2018.
- ^ Fuegi, J.; Francis, J. (2003). "Lovelace & Babbage and the creation of the 1843 'notes'". Annals of the History of Computing. 25 (4): 16–26. doi:10.1109/MAHC.2003.1253887.
- ^ "Ada Lovelace honoured by Google doodle". The Guardian. 10. 12. 2012. Pristupljeno 25. 11. 2018.
- ^ Carhart, Richard (1953). A survey of the current status of the electronic reliability problem (PDF). Santa Monica, CA: Rand Corporation. p. 69.
[…] It will be recalled from Sec. 1.6 that the term personnel was defined to include people who come into direct contact with the hardware, from production to field use, i.e., people who assemble, inspect, pack, ship, handle, install, operate, and maintain electronic equipment. In any of these phases personnel failures may result in unoperational gear. As with the hardware factors, there is almost no quantitative data concerning these software or human factors in reliability: How many faults are caused by personnel, why they occur, and what can be done to remove the errors. […]
- ^ "System Software". The University of Mississippi. Arhivirano s originala, 30. 5. 2001.
- ^ "Embedded Software—Technologies and Trends". IEEE Computer Society. maj–jun 2009. Arhivirano s originala, 28. 10. 2013. Pristupljeno 6. 11. 2013.
- ^ "scripting intelligence book examples". 9. 5. 2018. Arhivirano s originala, 6. 11. 2015.
- ^ "MSDN Library". Arhivirano s originala, 11. 6. 2010. Pristupljeno 14. 6. 2010.