Softver

**Softver** (**software**) je zbirka kompjuterskih programa i pratećih podataka koji zajedno daju instrukcije kompjuterskom hardveru šta i kako da radi. Softver čine svi programi i podaci koji se nalaze na kompjuteru, uključujući operacijski sustav. Također se koriste termini **programska podrška** ili **programska potpora**. Softver kolokvijalno označava aplikacijski softver, dok je u informatici i softverskom inženjeringu to naziv za sve informacije koje procesiraju kompjuterski sustav, programi i podaci.

Prvu teoriju o softveru osmislio je Alan Turing 1935. u svom eseju *Computable numbers with an application to the Entscheidungsproblem (Decision problem)*. Termin softver prvi je koristio John W. Tukey 1958. godine.

## Podjela
Postoji više vrsta softvera:

**Sistematski softver** su osnovni programi koji omogućavaju izvođenje osnovnih funkcija na računalu te su bitni za rad hardvera kompjutera te kompjuterskog sustava. U njega spadaju: 
* operacijski sustav - kao što su Windowsi ili Linux
* pokretači uređaja (*device [[drivers]]*)
* grafičko korisničko sučelje (GUI)
* utility softver

Ovaj tip softvera često dolazi s kupljenim računalom.

**Aplikacijski softver** su programi koji pomažu u izvršenju određenih zadataka. Riječ je o tipu softvera na koji većina ljudi pomisli kada se spomene softver. Ovo je poprilično široka kategorija koja se sastoji od mnogo programa raznih vrsta, koji uključuju i internetski preglednik (*browser*) koji prikazuje ovu stranicu. Osim internetskog preglednika u aplikacije spadaju i baze podataka, računalne igre, obrazovni softver, softver za obradu dokumenata, slike, zvuka i/ili videa, medicinski softver, matematički softver, simulacijski softver, komunikacijski softver, poslovni softver itd.
 
**Programski softver** su programi koje programeri koriste za vrijeme stvaranja drugih programa te njihovog modificiranja. Uključuje kompajlere, interpretere, debuggere, linkere i tekstualni editor.

Integrirano razvojno okruženje ili *integrated development enviroment* (IDE) je jedna aplikacija koja uključuje sve prethodno navedene funkcije.

### Opis
Većina softvera ima priloženu dokumentaciju koja krajnjem korisniku objašnjava kako se koristi i što radi. Bez dobrog sustava pomoći softver može biti teško koristiti, pogotovo ako je riječ o nekom vrlo specijaliziranom i kompleksnom programu kao što je Photoshop ili AutoCAD. Također može biti dostupna i dokumentacija za *developere*, s priloženim kodom kao komentarima i/ili odvojenim datotekama, koja objašnjava kako program radi i kako se može izmijeniti.

Softverske knjižice su kolekcija funkcija i funkcionalnosti koje se mogu ugraditi u druge aplikacije. Operacijski sustavi dolaze sa standardnim softverskim knjižnicama, a većina aplikacija se distribuira s njihovim vlastitim softverskim knjižnicama. Na Windowsima većina njih ima nastavak .dll ili, nešto rjeđe, .ocx.

Pošto softver može biti dizajniran pomoću brojnih programskih jezika za brojne razne operacijske sustave, softverski standard potreban je kako bi različit softver mogao razumjeti i međusobno izmjenjivati informacije. Tako bi se, na primjer, e-mail poslan Microsoft Outlookom trebalo moći pročitati u Yahoo! Mailu i obrnuto.

### Suradnja softvera i hardvera

Softver ne može raditi bez hardvera, kao što hardver ne može raditi bez softvera. Na hardveru (kao što je što je tvrdi disk), se nalazi softver (kao što je operacijski sustav), softver upravlja hardverom. Obično, softver s tvrdog 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 strojni ili 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, strojni kod koji kompjuter razumije - nule i jedinice.

### Kvaliteta i pouzdanost softvera
Kvaliteta softvera veoma je bitna, posebno za komercijalni i sistemski softver, npr. Microsoft Office, Microsoft Windows i Linux. Ako je softver pun *[[bug]]ova* (grešaka u kodu) odnosno *buggovit*, može izbrisati korisnikov rad, srušiti kompjuter te raditi ostale neočekivane stvari. Većina bugova se otkriva i eliminira softverskim testiranjem. Ipak, softversko testiranje rijetko kada - ako i uopće - eliminira svaki bug; neki programeri kažu da "svaki program ima barem jedan bug više" (Lubarskyev zakon). Sve velike softverske kompanije, primjerice Microsoft, Novell i Sun Microsystems imaju svoje odjele za testiranje s specifičnim ciljem. Postoje razne metode testiranja, poput *unit testing* - testiranje individualnih dijelova koda kako bi se provjerilo rade li. Testiranje se provodi "ručno" ili još češće automatski, jer količina koda potrebna za testiranje zna biti dosta velika.

### Licenca i patent
Softverska licenca daje korisniku pravo da koristi program u licenciranom okruženju. Postoje razne licence: licenca koja se dobije kad korisnik kupi neki komercijalni program, OEM licenca softvera koji dolazi s hardverom (npr. OEM licenca operacijskog sustava), softverska licenca softvera otvorenog koda koja daje korisniku pravo da modificira i dedistribuira softver, freeware te na kraju shareware licenca.

Softver je može patentirati u nekim, ali ne u svim zemljama. Softverski patenti mogu biti kontroverzni u softverskoj industriji gdje razni ljudi imaju razne poglede na njih. Kontroverza je u tome da se specifični algoritmi ili tehnike koje softver koristi drugi ne smiju duplicirati jer spadaju u intelektualno vlasništvo, a njegova povreda se smatra kršenjem autorskih prava.

### Verzije softvera

Kako vrijeme odmiče, tako se pojavljuju nove inačice svakog kvalitetnog softvera (primjenjuje se ista logika kao i kod automobilske industrije). Kako tehnologija napreduje, ljudi je žele koristiti, a vole i redizajn starih stvari. Obično se programi označavaju brojevima u rastućem nizu - 1.0, 2.0 itd. Ponekad autori neke programe odmah nazovu 2.0 ili 3.0, čime žele reći da su njihovi programi dobri i stabilni, jer su već davno prošli 1.0 inačicu. Također se događa da se neki brojevi preskoče.

Kad se radi o softveru otvorenog koda, često su publici dostupne razne inačice dotičnog softvera, npr. stare verzije, prije godinu, dvije ili čak i više dana, zatim zadnja stabilna (provjerena) inačica, te *beta* inačica. Beta inačica je program koji još nije prošao testiranje, no možete ga koristiti na vlastitu odgovornost, i ako dođe do problema javiti ih autorima softvera i na taj im način pomoći u izradi boljeg programa.

### Softverska industrija
Veliki broj softverskih tvrtki i programera u svijetu čine softversku industriju. softver može biti jako profitabilna industrija: Bill Gates, osnivač tvrtke Microsoft, u 2009. godini bio je najbogatija osoba na svijetu velikim dijelom zahvaljujući prodaji Windowsa i Microsoft Officea. Isto vrijedi i za Larrya Ellisona koji se obogatio zahvaljujući svojoj bazi podataka Oracle. Tijekom vremena softverska industrija se sve više specijalizirala.

Neprofitne softverske organizacije uključuju Free Software Foundation, GNU Project i Mozilla Foundation. Organizacije za softverski standard poput W3C i IETF razvijaju softverske standarde tako da većina softvera može vršiti međusobne interakcije pomoću standarda kao što su XML, HTML, HTTP i FTP.

Ostale poznate velike kompanije uključuju Novell, SAP, Symantec, Adobe Systems i Corel. Male softverske tvrtke nerijetko uvode inovacije.

## Vanjske veze
Softver Berza 

## Izvori