Kurs softversko inženjerstvo

Da bismo vam što približnije opisali softversko inženjerstvo definisaćemo ga kao razvoj, upravljanje i održavanje softvera po sistematičnom i jasno određenom planu. Jednostavno, softverski inženjering se bavi svim aspektima proizvodnje softvera zbog čega je direktno povezano i oslanja se na discipline kao što su računarske nauke, računarsko inženjerstvo, menadžment, projektni menadžment, upravljanje kvalitetom, softverske ergonomije i sistemsko inženjerstvo.

Softversko inženjerstvo postalo je jedna od najvažnijih oblasti jer utiče na gotovo sve aspekte naših života. Zahvaljujući brojnim softverima danas nam je omogućeno da brže i efikasnije radimo, komuniciramo, kupujemo, informišemo se i još mnogo toga. Bez softverskih rešenja danas je nemoguće zamisliti razvoj većine industrijskih grana, medicine, obrazovanja i gotovo svih važnijih oblasti za napredak celokupnog društva.

Softversko inženjerstvo fokusirano je na upotrebu računara kao osnovnog sredstva koje se koristi za rešavanje raznih problema. Funkcije računara u pomenutoj oblasti upotrebljavaju se kao delovi generalnog rešenja, odnosno kao alati u projektovanju softvera.

Proizvodnja kvalitetnog softvera je dugotrajan i veoma važan proces koji na kraju treba da ponudi proizvod koji će doprineti lakšem i uspešnijem životu. Upravo iz ovog razloga na tržištima širom sveta softverski inženjeri se nalaze među najtraženijim IT stručnjacima, a istraživanja pokazuju da će potreba za njihovim veštinama u narednom periodu biti sve veća.

Opis i ciljevi kursa softversko inženjerstvo

Kurs softverskog inženjerstva namenjen je svima koji žele da učestvuju u razvoju softvera. U ovoj oblasti šansa za izgradnju uspešne karijere pruža se programerima, menadžerima, finansijerima, dizajnerima, marketing saradnicima, kao i svim korisnicima samog softvera.

Ovaj kurs nudi vam mogućnost da se upoznate sa načinom specifikacije softverskih zahteva, dizajnom i arhitekturom softvera, modelima i upravljanjem razvoja softvera, kao i pogledima na kvalitet softverskog proizvoda.

Na kursu softversko inženjerstvo steći ćete veštine i znanja uz pomoć kojih ćete biti spremni da proizvodite softverska rešenja koja ispunjavaju najviše standarde kvaliteta. Tokom predavanja iskusni stručnjaci pružiće vam kompletnu sliku o ceokupnom sistemu izrade softvera i omogućiti vam da na praktičnim primerima naučite da kreirate što produktivnija i efikasnija rešenja.

Softversko inženjerstvo je jedna od relativno mladih disciplina koja se konstantno menja usled pojave novih programskih jezika. Sve to uticalo je da se program kursa uvek iznova prilagođava najnovijim trendovima koji prate softverski inženjering. Pohađanjem kursa softversko inženjerstvo naučićete šta je osnovna uloga ove oblasti, šta čini softversku konstrukciju i kako se ispunjavaju kriterijumi kvaliteta softvera.

Pored toga saznaćete i zašto pisanje programskog koda ne čini softverskog inženjera, kao što ni rad na građevini ne čini građevinskog inženjera. Vrhunski predavači objasniće vam kako se vrši analiza, utvrđivanje i validacija softverskih zahteva, kao i šta predstavlja termin karakteristike procesa.

Znanja koja usvojite tokom predavanja osposobiće vas za rad u jednoj od 10 oblasti koje obuhvata softversko inženjerstvo:

  • Softverski zahtevi (Software Requirements)
  • Softverski dizajn (Software Design)
  • Konstrukcija softvera (Software Construction)
  • Testiranje softvera (Software Testing)
  • Održavanje softvera (Software Maintenance)
  • Upravljanje softverskim konfiguracijama (Software Configuration Management)
  • Upravljanje softverskim inženjerstvom (Software Engineering Management)
  • Procesi softverskog inženjerstva (Software Engineering Process)
  • Alati i metode softverskog inženjerstva (Software Engineering Tools and Methods)
  • Kvalitet softvera (Software Quality)

Proizvodnja kvalitetnog softvera predstavlja istovremeno i umetnost i nauku kojom ćete biti spremni da se bavite nakon usvojenih veština tokom kursa softversko inženjerstvo.

Kurs softversko inženjerstvo će vam odgovoriti na pitanja:

1. Šta je posao softverskog inženjera?

Posao koji softverski inženjer obavlja u najvećoj meri definiše planiranje i upravljenje razvojem softverskog proizvoda, primenom principa softverskog inženjerstva. Ovi principi definišu kako će se pristupiti prikupljanju zahteva od strane naručioca softverskog proizvoda, određuju arhitekturu i dizajn koji će se primenjivati, preciziraju korake u fazi razvoja i obavezno postavljaju kriterijume za kvalitetan i održiv proizvod na kraju.

Uslovi koji su potrebni jednom softverskom inženjeru su isključivo vezani za dostupnost računara. Zato se posao uglavnom obavlja u kancelarijskom okruženju, s tim što se često javlja i potreba za putovanjem i poslom na terenu, u zavisnosti od lokacije klijenta koji je naručioc proizvoda.

2. Zbog čega su važni softverski zahtevi?

Prikupljanje i analiza softverskih zahteva je veoma bitna faza u softverskom razvoju. Ovo je ujedno i prva faza na osnovu koje se donose dalje odluke o dizajnu, arhitekturi, planiranju itd. Zahtevi definišu potrebe naručioca softvera, definišu uslove za rešavanje problema, određuju poslovna pravila koja se moraju primeniti u softveru, preciziraju standarde interne organizacije kao i zakonske norme iz kojih softver ne bi smeo da izlazi.

Što kvalitetniji softverski zahtevi postoje to će biti i kvalitetniji menadžment razvoja. Zahtevi između ostalog i omogućavaju klijentu uvid u ono što traži u svom softveru na osnovu čega klijent može da planira i svoje troškove jer dobija okvirni predlog rešenja i troškova.

3. Kakav je agilni razvoj softvera?

Agilnost je reč koja označava brzinu, hitrost i lakoću. Razvojem računarskih tehnologija ove osobine su vremenom postale veoma potrebne u razvoju softvera jer naručio softvera najčešće ne može ili ne sme puno da čeka na njegov proizvod. Kako posao ne bi trpeo zbog previše izgubljenog vremena uveden je agilni razvoj softvera kao pristup kojim se dolazi do bržeg rešenja.

Agilni razvoj definiše principe pod kojima se zahtevi i rešenja razvijaju kroz samo-organizovane, međusobno funkcionalne timove. Ključ agilnog razvoja je kontinuiran odnos klijenta i softverskih timova, gde je klijent i njegova želja u predonosti u odnosu na dokumentaciju, precizne specifikacije itd. Manifest agilnog razvoja softvera je preciziran kroz sledeća 4 upredna pravila:

  • Saradnja i pojedinac imaju prednosti u odnosu na procese i alate
  • Funkcionalan softver ima prednost u odnosu na obilnu dokumentaciju
  • Saradnja sa klijentom ima prednost u odnosu na poštovanje ugovora
  • Reagovanje na promene ima prednost u odnosu na praćenje plana

Kurs softversko inženjerstvo

4. Šta je Scrum?

Scrum je okvir za upravljenje razvojem softverskog proizvoda koji je baziran na agilnom razvoj. Definišu ga iterativni periodi koji se konstantno nadograđuju i koji imaju učestale interakcije sa naručiocima softvera. Precizno naglašeni koraci u svakoj iteraciji gde je saradnja sa naručiocem ključna, omogućavaju razvojnim timovima brži uvid u potrebe korisnika što u mnogome olakšava samu realizaciju. Klijent može da se predomisli u smislu šta mu treba i šta želi, a to ne može da se planira. Zato su scrum i sam aginlni razvoj prvenstvo stavili akcenat na “želje” korisnika, a ne na obilnu dokumentaciju.

Iteracije u kojima se realizuju dogovoreni zahtevi se nazivaju Sprint. Sprint je period od dve nedelje ili mesec dana u kom se razvijaju dogovorene funkcionalnosti i nakon tog perioda klijent dobija te funkcionalnosti i može da ih koristi. To je dobro jer u ranijim fazama razvoja klijent može da krene da koristi sistem i uviđa dodatne potrebe ili nedostatke.

5. Šta je UML?

Unified Modeling Language (UML) je vizuelni jezik za modeliranje koji se koristi za specificiranje, vizuelizaciju, konstrukciju i dokumentovanje softverskih sistema. Omogućava donošenje odluka i razumevanje sistemima koji se mogu konstruisati. Koristi se za analizu, dizajn, pretragu, konfigurisanje, održavanje i kontrolu informacija o takvim sistemima. UML obuhvata informacije o statičkoj strukturi i dinamičkom ponašanju sistema. Sistem se modelira kao kolekcija diskretnih objekata koji su u interakciji.

Model je uprošćavanje realnosti koja omogućava kompletan opis sistema iz određene perspektive. Modeli se prave da bismo bolje razumeli sistem. Modeliramo kompleksne sisteme zato što ne možemo da shvatimo takve sisteme u celini. Modeli nam pomažu da vizualizujemo sistem kakav jeste ili kakvog ga želimo, dozvoljavaju nam da specificiramo strukturu ili ponašanje sistema, omogućavaju nam šablone u konstrukciji sistema i dokumentuju odluke koju smo napravili.

6. Šta je QA?

Quality assurance (QA) je način za sprečavanje grešaka ili defekata u razvijenom softveru kako bi se izbeglo isporučivanje klijentu proizvoda sa problemom. Ovo znači da softversko inženjerstvo direktno utiče na kontrolu kvaliteta softverskog proizvoda. Kvalitet softvera se posebno razmatra tokom kompletnog procesa softverskog inženjerstva i vezan je sa svim oblastima razvoja softvera.

Kvalitet softvera definiše meru koliko je dobro softver dizajniran (Quality of Design) i koliko je dobar softver u skladu sa tim dizajnom (Quality of Conformance). Menadžment kvaliteta softvera (SQM) primenjuje se na sve segmente softverskih procesa, proizvode i resurse. Pored toga SQM definiše same procese, njihove zahteve, vlasnike, merenje i izlaze i kanale Feedback-a.

7.Koliko je bitno testiranje softvera?

Posebna pažnja danas se posvećuje aktivnosti otkrivanja grešaka. Ovo je bitna razlika u odnosu na shvatanje da je važno potvrditi da program ili sistem radi. Ogromni gubici kompanija koje razvijaju softver su upravo zbog velikog broja defekata u isporučenom softveru. Prvenstveni zadatak test inženjera je otkrivanje problema u softveru sa ciljem da se oni otklone pre predaje softverskog proizvoda kupcu.

Troškovi otklanjanja uočenih grešaka, umesto sprečavanja njihovog nastanka, su veliki i prouzrokuju veliki gubitak u poslovanju kao i nezadovoljstvo kupaca zbog grešaka u softveru. Pre nego što se čeka završetak faze implementacije komponente softvera, potrebno je izvršititi testiranje komponente u cilju otkrivanja i otklanjanja grešaka u njima. Potrebno je preventivno delovati na nastanak grešaka iz rane faze razvoja softvera kako bi se izbegla kašnjenja i smanjili troškovi njihovog otklanjanja. Upravo to je cilj sprovođenja aktivnosti prevencije nastanka grešaka.

Plan i program predavanja

1. Pojam i uloga softverskog inženjerstva

  • Uvod u softversko inženjerstvo
  • Uloga softverskog inženjerstva
  • Značaj pouzdanosti softvera

2. Specifikacija softverskih zahteva

  • Softverski zahtevi (Software Requirements)
  • Utvrđivanje i analiza softverskih zahteva
  • Specifikacija i validacija softverskih zahteva
  • Proces i karakteristike procesa

3. Dizajn i arhitektura softvera

  • Softverski dizajn (Software Design)
  • Strategije, notacija i analiza softverskog dizajna
  • Priroda i karakteristike dizajna
  • Softverski arhitekturalni stilovi
  • Međusobna spregnutost i kohezivnost softverskih komponenti

4. Softverska konstrukcija

  • Konstrukcija softvera (Software Construction)
  • Upravljanje softverskom konstrukcijom
  • Modeli procesa izrade softvera
  • Ostali modeli procesa izrade softvera
  • Savremena metodologija razvoja softvera

5. Upravljanje softverskom konfiguracijom

  • Software configuration management
  • Planiranje i upravljanje SCM procesom
  • Software Engineering Management
  • Učesnici na projektu

6. Kvalitet softvera

  • Kvalitet Softvera (Software Quality)
  • Pogledi i kvalitet proizvoda i procesa
  • Inženjering kvaliteta softvera

Polaznici na kursu softversko inženjerstvo

3 načina da dobijete odlično plaćen posao

Spremili smo dokument koji otkriva tri pouzdana načina za dolazak na dobro plaćenu poziciju za stručan rad sa računarima. Preuzmite izveštaj ovde.

Da li ima mesta? Zimski upisni rok je u toku!

Da saznate sve o upisu, kliknite ovde.