Softver je dio računalnog sustava koji se sastoji od podataka kao digitalnih uputa, za razliku od fizičke opreme iz koje je sustav izgrađen. U računalnoj znanosti i razvoju softvera to su sve informacije obrađene računalnim sustavima, programima i podacima. To uključuje računalne programe, knjižnice i srodne ne-izvršne podatke, kao što su online dokumentacija ili digitalni mediji. Tehnike i softver ovise jedni o drugima i ne mogu ih koristiti sami. S druge strane, klasifikacija softvera može se provesti na nekoliko različitih osnova.
Na najnižoj razini, izvršni kod se sastoji od uputa strojnog jezika koje su specifične za jedan procesor, obično centralni (CPU). Strojni jezik sastoji se od skupina binarnih vrijednosti koje označavaju upute procesora koje mijenjaju stanje računala iz njegova prethodnog stanja. Na primjer, instrukcija može promijeniti vrijednost koja se nalazi na određenom mjestu pohrane u računalu. Ovaj učinak nije izravno vidljiv za korisnika, ali je od velike važnosti. Uputa može (neizravno) uzrokovati pojavu nečega na zaslonu računalnog sustava - promjenu stanja koja bi trebala biti vidljiva korisniku. Procesor izvršava takva uputstva redoslijedom kojim su dani, osim ako se ne naloži prebacivanje na drugu instrukciju ili prekid postupka.
Većina programa je napisana programski jezici visoke razine koji rade lakše i učinkovitije za programere. Prevedeni su na strojni jezik pomoću kompilatora ili tumača, ili njihove kombinacije. Dakle, softverski alati su posebni kodovi.
Shema (algoritam) onoga što bi bio prvi dio softvera napisao je Ada Lovelace u 19. stoljeću za analitički stroj. Međutim, niti ovaj razvoj, niti bilo koji drugi sličan softver nikada nije stvoren u praksi.
Prvu teoriju o softveru - prije stvaranja računala koja su danas poznata - predložio je Alan Turing u svom eseju iz 1935. godine "Computable Numbers". To je u konačnici dovelo do stvaranja dvaju akademskih područja računalne znanosti, koja proučavaju softver i njegovo stvaranje. Računalna znanost je više teorijska, dok se softversko inženjerstvo fokusira na više praktičnih zadataka. Međutim, do 1946. godine još nije bilo modernog softvera.
Na gotovo svim računalnim platformama, softver se može grupirati u nekoliko širokih kategorija. Dakle, na temelju cilja, računalni softver može se podijeliti:
1. Aplikacija, softver koji koristi sustav za obavljanje posebnih funkcija ili za obavljanje zabavnih zadataka izvan rada glavnog računala. Brojni razvoji pripadaju aplikacijskom softveru, jer je raspon zadataka koji se mogu izvoditi na suvremenom uređaju vrlo velik.
2. Sustav - izravno upravlja računalnim hardverom, pruža osnovne funkcije potrebne korisnicima i drugom softveru te pruža platformu za pokretanje aplikacije.
K softver sustava uključuju:
1. Operativni sustavi su važni setovi softvera koji upravljaju resursima i pružaju zajedničke usluge za drugi softver koji se pokreće "na vrhu njih". Upravljački programi, utovarivači, školjke i prozorski sustavi glavne su komponente operacijskih sustava. U praksi, operativni sustav dolazi u paketu s dodatnim softverom (uključujući aplikacijski softver), tako da korisnik može potencijalno raditi s računalom na kojem je instaliran samo operacijski sustav.
2. Upravljački programi upravljaju određenom vrstom uređaja spojenog na računalo. Svaki uređaj treba barem jedan odgovarajući upravljački program. Budući da računalo obično ima barem jedno ulazni uređaj i izlaz, obično je potrebno više od jedne vrste ovog softvera.
3. Uslužni programi su računalni programi osmišljeni da pomognu korisnicima u održavanju i njezi uređaja.
4. Softver sustava također uključuje zlonamjerni softver koji je dizajniran da šteti računalima. Njezin nastanak i razvoj usko je povezan s kriminalom povezanim s digitalnom tehnologijom, iako se neke njegove vrste mogu razviti kao praktične šale. Korisnici često ne razumiju uvijek kada je takav softver prisutan na uređaju.
Klasifikacija softvera tipa sustava može se nastaviti raznim visoko specijaliziranim razvojima.
Kao što je već napomenuto, softver sustava je program stvoren za rad računalnog sustava. Osim stalnih sredstava, postoje i njezine sorte koje se koriste samo u određenim područjima. Dakle, koja je klasifikacija računalnog softvera?
1. Desktop aplikacije stvorene za određenu aplikaciju. Ovo je najbrojnija kategorija, kao primjer, web preglednici i Microsoft Office, kao i razne usluge za pametne telefone i tablete. Ovdje vrijedi napomenuti da u nekim dijelovima softverske industrije postoji tendencija kombiniranja stolnih i mobilnih aplikacija. Dakle, prilikom razvoja Windowsa 8 i novije verzije UbuntuTouch, stručnjaci su pokušali dopustiti korištenje istog programskog sučelja na stolnim računalima, prijenosnim računalima i mobilnim telefonima.
2. JavaScript skripte su poseban softver, tradicionalno ugrađen u web stranice koje se pokreću izravno u pregledniku, bez upotrebe dodataka. Softver napisan na drugim programskim jezicima može se pokrenuti iu web pregledniku ako je preveden na JavaScript ili je instalirano proširenje koje podržava taj jezik. Najčešći primjer potonjeg je ActionScript, koji podržava Adobe Flash plugin.
3. Poslužiteljski softver obično radi na web poslužitelju i prikazuje dinamički generirane web-stranice preglednicima koji koriste PHP, Java, ASP.NET ili čak JavaScript.
4. Dodaci i proširenja su softver koji povećava ili mijenja funkcionalnost drugih usluga. U ovom slučaju, glavni program se koristi izravno za rad, a ugrađeni program je firmware dizajniran za obavljanje jedne ili više dodatnih svrha.
Klasifikacija softvera uključuje alate za programiranje. Mogu se predstaviti kao usluge ili aplikacije koje programeri (poznati i kao programeri, koderi, hakeri ili inženjeri) koriste za stvaranje, otklanjanje pogrešaka, održavanje (tj. Poboljšanje ili popravak) ili podršku softvera.
Što je softver za masovnog potrošača? Korisnici često vide proizvode kreirane drugačije od programera. Ljudi koji koriste moderna računala opće namjene obično koriste tri razine softvera koji obavljaju mnoge zadatke: platformu, aplikacije i korisničke usluge.
Platforma uključuje firmware, upravljačke programe uređaja, operativni sustav i obično grafičko korisničko sučelje koje općenito omogućuje korisniku interakciju s računalom i njegovim perifernim uređajima (pripadajući hardver). Softver platforme često je povezan s računalom. Većina računala ima mogućnost modificiranja ovog softvera.
Aplikacijski softver - Ovo su najčešći i najpoznatiji tipovi programa. Primjerice, aplikacijski softver uključuje uredske pakete i videoigre. Često se kupuje odvojeno od računalne opreme. Ponekad dolazi u paketu s računalom, ali to ne mijenja činjenicu da rade kao neovisne aplikacije. Oni su obično neovisni programi iz operativnog sustava, iako su često prilagođeni određenim platformama. Najčešće je to licencirani softver. Također je vrijedno napomenuti da većina korisnika smatra kompajlerima, bazama podataka i drugim sistemskim softverskim aplikacijama.
Ovo je korisnički pisani softver. Klasifikacija softvera uključuje razvoj naprednih korisnika. Oni prilagođavaju sustave specifičnim potrebama. Korisnički softver uključuje predloške tablica i procesori riječi. Čak i filtri e-pošte vrsta su softvera za korisnike. Potrošači sami stvaraju ovaj softver i često zaboravljaju koliko je to važno.
Računalni softver mora se učitati u pohranu računala (na primjer, na tvrdi disk ili memoriju). Nakon što se učita, računalo može izvršiti taj ili onaj zadatak. To uključuje slanje uputa iz aplikacijskog softvera kroz hardver sustava, koji na kraju dobiva instrukciju kao strojni kod. Svaka naredba dovodi do toga da računalo izvodi operacije koje premještaju podatke, izvode izračune ili mijenjaju protok kontrolnih naredbi. Kretanje podataka obično se odvija s jednog mjesta u memoriji na drugo. Ponekad je to zbog kretanja podataka između memorije i registara, koji omogućuju brz pristup podacima u CPU-u.
Prijenos podataka, osobito velikih količina, može biti predug i dugotrajan. Zbog toga se često koriste pokazivači podataka. Izračuni uključuju jednostavne operacije, kao što je povećanje vrijednosti varijable elementa podataka. Složeniji izračuni mogu uključivati više operacija i elemenata u isto vrijeme.
Kvaliteta softvera je vrlo važna, posebno za komercijalne i sistemske tipove softvera (Microsoft Office, Microsoft Windows i Linux mogu biti primjeri klasičnih primjera). Ako je neispravan (daje pogreške), može ukloniti korisnikov rad, onemogućiti računalo i dovesti do drugih neugodnih posljedica. Smetnje u radu softvera nazivaju se bugovi i "greške" koje se često otkrivaju tijekom alfa i beta testiranja.
Što je licencirani softver? Licenca daje korisniku pravo na neograničeno korištenje usluge, au slučaju dopuštenja za slobodan pristup također pruža i druge opcije (na primjer, pravo na kopiranje).
Klasifikacija softvera također se može provesti na sljedeći način:
1. Besplatno, što uključuje kategoriju "besplatno probno razdoblje", ili freemium (u prošlosti, pojam shareware često se koristio za besplatnu probnu verziju). Kao što ime sugerira, može se koristiti besplatno, iako je u slučaju besplatnih uzoraka ili freemium softvera, to ponekad vrijedi samo za ograničeno vremensko razdoblje ili s ograničenom funkcionalnošću.
2. Softver koji je dostupan uz naknadu često se pogrešno naziva "komercijalna". Može se legalno koristiti samo pri kupnji licence.