logo

Razvoj Softvera

Razvoj softvera složen je proces koji uključuje mnoge faze, od planiranja i dizajna do kodiranja, testiranja i implementacije. Kako biste bili sigurni da je vaš softverski projekt uspješan, važno je slijediti najbolje prakse i metodologije koje su se pokazale učinkovitima. Ovdje su neke od ključnih najboljih praksi i metodologija koje razmatramo:

Agilna metodologija: Agilna je metodologija razvoja softvera koja naglašava fleksibilnost i suradnju. Uključuje razbijanje procesa razvoja u kratke, iterativne cikluse koji se nazivaju sprintovi. Tijekom svakog sprinta, mali dio softvera se razvija, testira i postavlja. Ovaj pristup programerima omogućuje brz odgovor na promjenjive zahtjeve i povratne informacije korisnika.
DevOps: DevOps je skup praksi koje naglašavaju suradnju i komunikaciju između razvojnih i operativnih timova. Cilj DevOps-a je automatizirati proces razvoja softvera i osigurati da se softver može implementirati brzo i pouzdano. To se postiže upotrebom alata kao što su kontinuirana integracija, kontinuirana isporuka i automatizirano testiranje.
Recenzije koda: Recenzije koda najbolja su praksa za osiguravanje da je kod visoke kvalitete, da se može održavati i da nema grešaka. Pregledi koda uključuju da drugi programeri pregledaju izmjene koda prije nego što se spoje u glavnu bazu koda. Ovaj proces pomaže u otkrivanju pogrešaka i poboljšava ukupnu kvalitetu softvera.
Testiranje: testiranje je ključni dio procesa razvoja softvera. Uključuje sustavno testiranje softvera kako bi se osiguralo da radi kako je predviđeno i da nema grešaka. Testiranje se može obaviti ručno ili putem automatiziranih alata za testiranje.
Kontrola verzija: Kontrola verzija najbolja je praksa za upravljanje promjenama baze softverskog koda. Uključuje korištenje sustava kontrole verzija za praćenje promjena u kodu tijekom vremena. To programerima omogućuje zajednički rad na kodu i jednostavno vraćanje promjena ako je potrebno.
Dokumentacija: Dokumentacija je najbolja praksa za osiguravanje da se softver može održavati i da je razumljiv. Uključuje izradu dokumentacije koja opisuje kako softver radi, kako ga koristiti i kako ga modificirati. Ova dokumentacija može uključivati korisničke priručnike, vodiče za razvojne programere i API dokumentaciju.

Slijedeći ove najbolje prakse i metodologije, možete osigurati da vaš softverski projekt bude uspješan i da zadovoljava potrebe vaših korisnika. Važno je upamtiti da je razvoj softvera ponavljajući proces i da ćete možda trebati unositi promjene i prilagodbe u hodu. Ako ostanete fleksibilni i otvoreni za povratne informacije, možete osigurati da se vaš softver stalno poboljšava i zadovoljava potrebe vaših korisnika.


Što je Softver?

Na osnovnoj razini, softver je skup uputa koje računalu govore što treba učiniti. Izrađen je korištenjem programskih jezika koji programerima omogućuju pisanje ovih uputa na način koji računalo može razumjeti. Za izradu softvera, razvojni tim obično prolazi kroz nekoliko faza.

Prva faza je obično planiranje, gdje tim identificira što softver treba raditi i koje značajke treba imati. To može uključivati prikupljanje povratnih informacija od korisnika ili dionika i stvaranje dizajna ili prototipa. Nakon što je faza planiranja dovršena, tim prelazi na kodiranje. Tijekom ove faze programeri pišu upute koje će postati softver. Za izradu koda koriste programske jezike kao što su Java, Python ili C++. Ovaj kod govori računalu što i kako treba učiniti. Nakon što je kod napisan, softver prolazi kroz fazu testiranja. Tijekom testiranja tim provjerava bugove, pogreške i druge probleme koji mogu utjecati na funkcionalnost softvera. Nakon završetka faze testiranja, tim može izdati softver. Kada korisnik komunicira sa softverom, on u biti koristi sučelje za interakciju s kodom. Softver uzima unos od korisnika, obrađuje ga u skladu s uputama danim u kodu i proizvodi izlaz koji korisnik može vidjeti ili s kojim može komunicirati. Softver se može izraditi za širok raspon namjena, od programa za obradu teksta do složenih videoigara. Tehnologija koja se koristi za izradu softvera nastavlja se razvijati, s novim programskim jezicima i alatima koji se stalno razvijaju.

Zaključno, softver je skup uputa koje računalu govore što treba učiniti. Kreirao ga je tim programera koji koriste programske jezike za pisanje koda. Nakon dovršetka, softver prolazi kroz testiranje prije nego što se objavi. Kada korisnik komunicira sa softverom, on u biti koristi sučelje za interakciju s kodom. Softver se može izraditi za širok raspon namjena, a tehnologija koja se koristi za njegovu izradu nastavlja se razvijati.


Primjeri i Vrste Softvera

Aplikacijski softver. Najčešća vrsta softvera, aplikacijski softver je paket računalnog softvera koji obavlja određenu funkciju za korisnika, ili u nekim slučajevima, za drugu aplikaciju. Aplikacija može biti samostalna ili može biti skupina programa koji pokreću aplikaciju za korisnika. Primjeri modernih aplikacija uključuju uredske pakete, grafički softver, baze podataka i programe za upravljanje bazama podataka, web preglednike, programe za obradu teksta, alate za razvoj softvera, uređivače slika i komunikacijske platforme.

Softver sustava. Ovi softverski programi dizajnirani su za pokretanje računalnih aplikacijskih programa i hardvera. Softver sustava koordinira aktivnosti i funkcije hardvera i softvera. Osim toga, kontrolira rad računalnog hardvera i osigurava okruženje ili platformu za rad svih ostalih vrsta softvera. OS je najbolji primjer sistemskog softvera; upravlja svim ostalim računalnim programima. Drugi primjeri sistemskog softvera uključuju firmware, prevoditelje računalnih jezika i pomoćne programe sustava.

Softver upravljačkog programa. Poznat i kao upravljački programi uređaja, ovaj se softver često smatra vrstom sistemskog softvera. Upravljački programi uređaja kontroliraju uređaje i periferne uređaje spojene na računalo, omogućujući im izvršavanje njihovih specifičnih zadataka. Svaki uređaj koji je povezan s računalom treba barem jedan upravljački program za rad. Primjeri uključuju softver koji dolazi s bilo kojim nestandardnim hardverom, uključujući posebne kontrolere za igre, kao i softver koji omogućuje standardni hardver, kao što su USB uređaji za pohranu, tipkovnice, slušalice i pisači.

Middleware. Termin middleware opisuje softver koji posreduje između aplikacijskog i sistemskog softvera ili između dvije različite vrste aplikacijskog softvera. Na primjer, posrednički softver omogućuje Microsoft Windowsu da komunicira s Excelom i Wordom. Također se koristi za slanje zahtjeva za daljinski rad iz aplikacije na računalu koje ima jednu vrstu OS-a aplikaciji na računalu s različitim OS-om. Također omogućuje rad novijih aplikacija s naslijeđenima.

Softver za programiranje. Računalni programeri koriste softver za programiranje za pisanje koda. Softver za programiranje i alati za programiranje omogućuju razvojnim programerima da razvijaju, pišu, testiraju i otklanjaju pogreške drugih softverskih programa. Primjeri softvera za programiranje uključuju asemblere, prevoditelje, programe za ispravljanje pogrešaka i tumače.




Sistemski Softver nasuprot Aplikacijskom Softveru

Aplikacijski softver:Aplikacijski softver sastoji se od mnogih programa koji obavljaju specifične funkcije za krajnje korisnike, kao što je pisanje izvješća i navigacija web stranicama. Aplikacije također mogu obavljati zadatke za druge aplikacije. Aplikacije na računalu ne mogu se pokrenuti same; za rad im je potreban OS računala, zajedno s drugim pratećim sistemskim softverskim programima. Ove desktop aplikacije instalirane su na korisnikovo računalo i koriste memoriju računala za izvršavanje zadataka. Zauzimaju prostor na tvrdom disku računala i ne trebaju internetsku vezu za rad. Međutim, aplikacije za stolna računala moraju se pridržavati zahtjeva hardverskih uređaja na kojima rade. Web aplikacije, s druge strane, zahtijevaju samo pristup internetu da bi radile; ne oslanjaju se na hardver i sistemski softver za rad. Posljedično, korisnici mogu pokretati web aplikacije s uređaja koji imaju web preglednik. Budući da se komponente odgovorne za funkcionalnost aplikacije nalaze na poslužitelju, korisnici mogu pokrenuti aplikaciju iz Windows, Mac, Linux ili bilo kojeg drugog OS-a.

Softver sustava: softver sustava nalazi se između hardvera računala i aplikacijskog softvera. Korisnici ne stupaju u izravnu interakciju sa softverom sustava jer on radi u pozadini, upravljajući osnovnim funkcijama računala. Ovaj softver koordinira hardver i softver sustava tako da korisnici mogu pokrenuti aplikacijski softver visoke razine za izvođenje određenih radnji. Sistemski softver se pokreće kada se računalni sustav podigne i nastavlja raditi sve dok je sustav uključen.




Dizajn i Izvedba

Životni ciklus razvoja softvera je okvir koji voditelji projekta koriste za opisivanje faza i zadataka povezanih s dizajniranjem softvera. Prvi koraci u životnom ciklusu dizajna su planiranje napora, a zatim analiza potreba pojedinaca koji će koristiti softver i stvaranje detaljnih zahtjeva. Nakon početne analize zahtjeva, faza dizajna ima za cilj odrediti kako ispuniti te zahtjeve korisnika. Sljedeći korak je implementacija, gdje se dovršava rad na razvoju, a zatim se događa testiranje softvera. Faza održavanja uključuje sve zadatke potrebne za održavanje sustava u radu. Dizajn softvera uključuje opis strukture softvera koji će se implementirati, modele podataka, sučelja između komponenti sustava i potencijalno algoritme koje će softverski inženjer koristiti. Proces dizajna softvera transformira korisničke zahtjeve u oblik koji računalni programeri mogu koristiti za kodiranje i implementaciju softvera. Softverski inženjeri razvijaju dizajn softvera iterativno, dodajući detalje i ispravljajući dizajn dok ga razvijaju.



Različite vrste dizajna softvera uključuju sljedeće:

Arhitektonski dizajn. Ovo je temeljni dizajn, koji identificira cjelokupnu strukturu sustava, njegove glavne komponente i njihove međusobne odnose pomoću alata za arhitektonski dizajn.

Dizajn visoke razine. Ovo je drugi sloj dizajna koji se fokusira na to kako se sustav, zajedno sa svim njegovim komponentama, može implementirati u obliku modula koje podržava softverski skup. Dizajn visoke razine opisuje odnose između protoka podataka i različitih modula i funkcija sustava.

Detaljni dizajn. Ovaj treći sloj dizajna fokusira se na sve detalje implementacije potrebne za navedenu arhitekturu.




Kako održati kvalitetu softvera

Kvaliteta softvera mjeri ispunjava li softver svoje funkcionalne i nefunkcionalne zahtjeve.
Funkcionalni zahtjevi određuju što softver treba raditi. Oni uključuju tehničke detalje, manipulaciju i obradu podataka, izračune ili bilo koje druge specifične funkcije koje određuju što aplikacija želi postići.
Nefunkcionalni zahtjevi -- također poznati kao atributi kvalitete -- određuju kako sustav treba raditi. Nefunkcionalni zahtjevi uključuju prenosivost, oporavak od katastrofe, sigurnost, privatnost i upotrebljivost.
Testiranje softvera otkriva i rješava tehničke probleme u izvornom kodu softvera i procjenjuje ukupnu upotrebljivost, izvedbu, sigurnost i kompatibilnost proizvoda kako bi se osiguralo da ispunjava svoje zahtjeve.
Dimenzije kvalitete softvera uključuju sljedeće karakteristike:

Pristupačnost. Stupanj do kojeg raznolika skupina ljudi, uključujući pojedince kojima su potrebne prilagodljive tehnologije kao što su prepoznavanje glasa i povećala zaslona, može udobno koristiti softver.
Kompatibilnost. Prikladnost softvera za korištenje u različitim okruženjima, kao što su različiti operativni sustavi, uređaji i preglednici.
Učinkovitost. Sposobnost softvera da dobro radi bez gubitka energije, resursa, truda, vremena ili novca.
Funkcionalnost. Sposobnost softvera da izvršava svoje specificirane funkcije.
Mogućnost ugradnje. Sposobnost softvera da se instalira u određenom okruženju.
Lokalizacija. Razni jezici, vremenske zone i druge takve značajke na kojima softver može funkcionirati.
Pogodnost održavanja. Koliko se jednostavno softver može modificirati za dodavanje i poboljšanje značajki, ispravljanje grešaka itd.
Performanse. Koliko brzo softver radi pod određenim opterećenjem.
Prenosivost. Mogućnost jednostavnog prijenosa softvera s jednog mjesta na drugo.
Pouzdanost Sposobnost softvera da izvrši traženu funkciju pod određenim uvjetima u određenom vremenskom razdoblju bez ikakvih pogrešaka.
Skalabilnost. Mjera sposobnosti softvera da poveća ili smanji performanse kao odgovor na promjene u zahtjevima obrade.
Sigurnost. Sposobnost softvera da zaštiti od neovlaštenog pristupa, narušavanja privatnosti, krađe, gubitka podataka, zlonamjernog softvera itd.
Provjerljivost. Kako je jednostavno testirati softver.
Upotrebljivost. Kako je jednostavno koristiti softver.

Kako bi održali kvalitetu softvera nakon što se implementira, programeri ga moraju stalno prilagođavati kako bi zadovoljio nove zahtjeve kupaca i rješavao probleme koje korisnici prepoznaju. To uključuje poboljšanje funkcionalnosti, ispravljanje pogrešaka i prilagodbu softverskog koda kako bi se spriječili problemi. Koliko dugo će proizvod trajati na tržištu ovisi o sposobnosti programera da prate ove zahtjeve održavanja.
Kada je riječ o održavanju, postoje četiri vrste promjena koje programeri mogu napraviti, uključujući:

Ispravka. Korisnici često prepoznaju i prijavljuju pogreške koje programeri moraju popraviti, uključujući pogreške kodiranja i druge probleme koji sprječavaju softver da ispuni svoje zahtjeve.
Prilagodljivo. Razvojni programeri moraju redovito mijenjati svoj softver kako bi osigurali da je kompatibilan s promjenjivim hardverskim i softverskim okruženjima, primjerice kada izađe nova verzija OS-a.
Savršeno. To su promjene koje poboljšavaju funkcionalnost sustava, poput poboljšanja korisničkog sučelja ili prilagođavanja softverskog koda za poboljšanje performansi.
Preventivno. Te se promjene rade kako bi se spriječio kvar softvera i uključuju zadatke poput restrukturiranja i optimiziranja koda.


Licenciranje Softvera i Patenti



Softverska licenca pravno je obvezujući dokument koji ograničava korištenje i distribuciju softvera.

Softverske licence obično daju korisnicima pravo na jednu ili više kopija softvera bez kršenja autorskih prava. Licenca ocrtava odgovornosti strana koje ulaze u ugovor i može postaviti ograničenja na način na koji se softver može koristiti.

Odredbe i uvjeti licenciranja softvera općenito uključuju poštenu upotrebu softvera, ograničenja odgovornosti, jamstva, odricanja od odgovornosti i zaštitu ako softver ili njegova uporaba krše prava intelektualnog vlasništva drugih.

Licence su obično za vlasnički softver, koji ostaje u vlasništvu organizacije, grupe ili pojedinca koji ga je stvorio; ili za besplatni softver, gdje korisnici mogu pokretati, proučavati, mijenjati i distribuirati softver. Otvoreni kod je vrsta softvera gdje se softver razvija u suradnji, a izvorni kod je besplatno dostupan. Uz softverske licence otvorenog koda, korisnici mogu pokretati, kopirati, dijeliti i mijenjati softver slično besplatnom softveru.

Tijekom posljednja dva desetljeća dobavljači softvera prešli su s jednokratne prodaje softverskih licenci na model pretplate na softver kao uslugu. Dobavljači softvera hostiraju softver u oblaku i čine ga dostupnim kupcima koji plaćaju pretplatu i pristupaju softveru putem interneta.

Iako autorsko pravo može spriječiti druge da kopiraju programerov kod, autorsko pravo ih ne može spriječiti da samostalno razvijaju isti softver bez kopiranja. Patent, s druge strane, omogućuje programeru da spriječi drugu osobu u korištenju funkcionalnih aspekata softvera koje programer tvrdi u patentu, čak i ako je ta druga osoba samostalno razvila softver.

Općenito, što je softver tehničkiji, to je vjerojatnije da se može patentirati. Na primjer, softverskom proizvodu može se dodijeliti patent ako stvara novu vrstu strukture baze podataka ili poboljšava ukupnu izvedbu i funkciju računala.



Povijest Softvera

Pojam softver nije se koristio sve do kasnih 1950-ih. Tijekom tog vremena, iako su se stvarale različite vrste softvera za programiranje, oni obično nisu bili komercijalno dostupni. Posljedično, korisnici -- uglavnom znanstvenici i velika poduzeća -- često su morali pisati vlastiti softver. Slijedi kratak vremenski pregled povijesti softvera:


21. lipnja 1948. Tom Kilburn, računalni znanstvenik, piše prvi dio softvera na svijetu za računalo Manchester Baby na Sveučilištu Manchester u Engleskoj.
Rane 1950-e. General Motors stvara prvi OS za IBM 701 elektronički stroj za obradu podataka. Zove se General Motors operativni sustav ili GM OS.
1958. Statističar John Tukey skovao je riječ softver u članku o računalnom programiranju.
Kasne 1960-ih. Diskete se uvode i koriste 1980-ih i 1990-ih za distribuciju softvera.
stu. 3, 1971. AT&T izdaje prvo izdanje Unix OS-a.
1977. Apple izdaje Apple II i potrošački softver uzima maha.
1979. VisiCorp izdaje VisiCalc za Apple II, prvi softver za proračunske tablice za osobna računala.
1981. Microsoft izdaje MS-DOS, OS na kojem su radila mnoga rana IBM računala. IBM počinje prodavati softver, a komercijalni softver postaje dostupan prosječnom potrošaču.
1980-e. Tvrdi diskovi postaju standard na osobnim računalima, a proizvođači počinju stavljati softver u računala.
1983. Pokret za slobodni softver pokrenut je GNU (GNU nije Unix) Linux projektom Richarda Stallmana za stvaranje OS-a sličnog Unixu s izvornim kodom koji se može slobodno kopirati, mijenjati i distribuirati .
1984. Izdan je Mac OS za pokretanje Appleove linije Macintosh.
Sredina 1980-ih. Objavljene su ključne softverske aplikacije, uključujući AutoDesk AutoCAD, Microsoft Word i Microsoft Excel.
1985. Objavljen je Microsoft Windows 1.0.
1989. CD-ROM-ovi postaju standard i sadrže puno više podataka od disketa. Veliki softverski programi mogu se distribuirati brzo, jednostavno i relativno jeftino.
1991. Objavljen je Linux kernel, osnova za Linux OS otvorenog koda.
1997. DVD-ovi su predstavljeni i mogu držati više podataka od CD-a, što omogućuje stavljanje paketa programa, kao što je Microsoft Office Suite, na jedan disk.
1999. Salesforce.com koristi računalstvo u oblaku za pionirsku isporuku softvera putem interneta.
2000. Pojam softver kao usluga (SaaS) dolazi u modu.
2007. IPhone je lansiran i mobilne aplikacije su se počele primjenjivati.
2010. do danas. DVD-ovi postaju zastarjeli jer korisnici kupuju i preuzimaju softver s interneta i oblaka. Dobavljači prelaze na modele temeljene na pretplati i SaaS je postao uobičajen.