Lekcija 2 Flashcards
2.1 Šta je softverski proces? Koje su osnovne aktivnosti softverskog procesa?
-Softverski proces je skup povezanih aktivnosti koji vodi proizvodnji softverskog proizvoda.
Osnovne aktivnosti:
1. Specifikacija softvera
2. Projektovanje (dizajn) i razvoj (implementacija) softvera
3. Provera (validacija) softvera
4. Evolucija softvera
2.2 Navedite dve osnovne vrste softverskih procesa i ukratko ih opišite.
- Procesi vođeni planom - procesi kod kojih su sve aktivnosti unapred planirane i napredak u razvoju softvera se određuje stepenom ostvarivanja tog plana.
- Agilni procesi - procesi kod koji se planiranje radi postupno (inkrementalno) kako bi se procesi lakše prilagodili promenljivim zahtevima korisnika.
2.3 Šta je model softverskog procesa? Navedite tri opšta metoda softverskih procesa. Objasnite svaki od njih. Koje su međusobne razlike?
Model softverskog procesa je uprošćeno predstavljanje nekog softverskog procesa.
Modeli softverskih procesa:
1. Model vodopada - prikazuje osnovne aktivnosti procesa> specifikacija, razvoj, provera (validacija) i evolucija.
2. Inkrementalni razvoj - povezuje aktivnosti specifikacije, razvoja, i provere, kao niz serija verzija (inkremenata) softvera, pri čemu svaka verzija dodaje određenu funkcionalnost na prethodnu verziju.
3. Softversko inženjerstvo zasnovano na višestrukoj upotrebljivosti - ovaj pristup se oslanja na korišćenje komponenata softevera koje se mogu višestruko koristiti.
Razlike:
Za razliku od modela vodopada, kod inkrementalnog razvoja su niži troškovi realizacije zahteva korisnika, lakše je obezbediti mišljenje korisnika, brža isporuka i instalacija softvera kod korisnika, iako nema sve tražene funkcionalnosti.
U modelu vodopada, aktivnosti su organizovane redno (jedna posle druge), dok su pri inkrementalnom razvoju one izmešane.
2.4 Šta je inkrementalni razvoj softvera? Zašto se koristi? Šta je inkrement? Koje su prednosti inkrementalnog razvoja u odnosu na model vodopada? Kako se primenjuje inkrementalni razvoj softvera? Koji su problemi u primeni?
Kod inkrementalnog razvoja, prvo se razvije jedan početni deo (inkrement) koji se pokazuje korisniku, potom se dodaju novi inkrementi.
Koristi se za poslovne aplikacije, e-poslovanje i personalne sisteme.
Svaki inkrement, tj. nova verzija softvera, sadrži neke od potrebnih funkcija (tj. funkcionalnost) koje traži korisnik.
Prednosti:
1. Odražava način kako ljudi često rešavaju probleme.
2. Jeftiniji i lakši za rad kada se često traže promene u softveru tokom njegovog razvoja.
3. Brzo se dobija mišljenje korisnika
Problemi:
1. Proces nije vidljiv, što je problem menadžerima i korisnicima
2. Struktura sistema ima tendenciju urušavanja sa dodavanjem novih inkremenata
2.5 Zašto je inkrementalni razvoj najefektniji pristup u razvoju poslovnih softverskih sistema? Zašto je ovaj model manje pogodan za razvoj sistema u realnom vremenu?
Zašto je efektivan:
1. Omogućava da se proizvod poboljšava ponavljanjem nekih aktivnosti u procesu razvoja.
2. Obezbeđuje niže troškove razvoja, mišljenje korisnika i brži razvoj softvera.
Manje je pogodan za razvoj sistema u realnom vremenu:
1. Struktura sistema ima tendenciju urušavanja sa dodavanjem novih verzija. Bez ulaganja dodatnog novca i vremena da se sistem strukturno unapredi, regularne promene sistema vode ka njegovom postepenom urušavanju. Ubacivanje novih promena u sistemu, njegovo
održavanje vremenom postaje skupo i teško.
2.6 Predložite model opšteg softverskog procesa za razvoj sledećih sistema:
a. Rezervacija avionskih karata i hotela
b. Sistema za prodaju proizvoda preko veba
c. Upravljanje sistemom podzemne železnice u gradu
a) Model vodopada
b) Inkrementalni model
c) Hibridni - model vodopada i inkrementalni
2.7 Šta je softversko inženjerstvo za višestruku upotrebu? Šta su softverske komponente? Koje tipove komponenata imamo? Opišite proces razvoja softvera baziranog na ponovno upotrebljivim komponentama. Opišite ukratko svaku aktivnost?
Softversko inženjerstvo za višestruku upotrebu se oslanja na korišćenje komponenata softvera koje se mogu višestruko koristiti. Ovim procesom se integrišu postojeće softverske komponente u sistem, umesto da se razvijaju nove.
Softverske komponente su najčešće ranije razvijene ili kupljene kako bi se koristile kada bude potrebe za njima pri razvoju softvera. Te komponente su razvijene s namerom da se višestruko koriste.
Postoje 3 vrste komponenata:
1. Veb servisi koji se razvijaju u skladu sa standardima za
servise i koji se mogu aktivirati iz udaljene lokacije.
2. Kolekcije objekata koji su razvijeni kao paketi radi
kasnije integrisanja u sisteme , a u okviru komponentinih okvira, kao što su .NET i J2EE.
3. Samostalni softverski sistemi koji se konfigurišu za upotrebu u određenom okruženju.
Proces:
1. Analiza komponenti - u skladu sa datom specifikacijom zahteva, sprovedena je pretraga za neophodnim komponentama.
2. Modifikacija zahteva - analiziraju se zahtevi korišćenjem
informacija o komponentama koje su pronađene. Oni su zatim modifikovani da budu u skladu sa dostupnim komponentama.
3. Projektovanje sistema sa komponentama - projektuje se
strukturni okvir (framework) sistema ili se koristi postojeći okvir.
4. Razvoj i integracija - razvija se softver koji ne može biti kupljen i komponente i COTS sistemi se integrišu da stvore sistem.
2.8 . Koje su prednosti korišćenja razvoja softvera baziranog na upotrebi komponenata? Koji su nedostaci korišćenja?
Prednosti:
Ima jasnu prednost u količini softvera koji treba razviti, jer je ona znatno smanjena, što se odražava na niže troškova i kraće vreme razvoja.
Nedostaci:
Softverski sistem zbog upotrebe unapred definisanih
komponenti, neminovno ne zadovoljava sve potrebe i zahteve korisnika, takođe se gubi kontrola nad evolucijom softvera, sa upotrebom novih verzija komponenata, jer su one razvojene najčešće u drugim organizacijama.
2.9 Opišite glavne aktivnosti procesa razvoja softvera i dobijene rezultate ovih aktivnosti. Upotrebom dijagrama, pokažite relacije između izlaza iz ovih aktivnosti.
Četiri osnovne aktivnosti softverskih procesa su:
1. Specifikacija softvera - treba da ustanovi koji zahtevi i ograničenja sistema
2. Razvoj softvera - opis strukture softvera koji treba da bude razvijen, podataka koji su deo sistema, interfejsa između komponenti sistema, i ponekad korišćenih algoritama.
3. Validacija softvera - treba da pokaže da li sistem zadovoljava svoju specifikaciju i očekivanje korisnika sistema.
4. Evolucija softvera - stalni razvoj i prilagođavanje softvera (prema zahtevima klijenta).
specifikacija > razvoj > validacija > evolucija
2.10 Šta je specifikacija softvera? Opišite proces inženjeringa zahteva. Koje su četiri glavne faze procesa inženjeringa zahteva? Opišite svaku od ovih faza.
Specifikacija treba da ustanovi koji servisi su zahtevi i ograničenja sistema.
Inženjering zahteva je posebno kritična faza softverskog procesa zato što greške u ovoj fazi neizbežno vode kasnijim problemima u projektovanju i implementaciji sistema.
Četiri faze:
1. Studija izvodljivosti - na osnovu studije se donosi odluka da li je predloženi sistem troškovno-efektivan iz poslovne tačke gledišta i da li može biti razvijen poštujući postojeća ograničenja budžeta.
2. Izvođenje i analiza zahteva - proces izvođenja zahteva sistema preko posmatranja postojećih sistema, diskusije sa potencijalnim korisnicima, analize zahteva, itd.
3. Specifikacija zahteva - aktivnost prevođenja informacija
skupljenih tokom analize u dokument koji definiše skup zahteva.
4. Validacija zahteva - ova aktivnost proverava zahteve za
realizmom, konzistencijom i potpunošću
2.11 Čime se bavi aktivnost softverskog procesa koja se bavi projektovanjem i implementacijom softvera. Nacrtajte model procesa projektovanja i implementacije softvera. Objasnite aktivnosti navedene u modelu.
Brainscape ne podržava slike. Vidi LAMS-s lekciju 2.
2.12 Šta je validacija softvera? Nacrtajte dijagram procesa testiranja. Koje su tri osnovne faze testiranja? Opišite svaku od ovih faza
Validacija softvera (potvrdjivanje softvera) treba da pokaže da li sistem zadovoljava svoju specifikaciju i ocekivanje korisnika sistema.
1. Razvojno testiranje - Komponente sistema se posebno testiraju od strane onih koji su ih i razvili, u toku procesa njihovog razvoja. Svaka komponenta se posebno testira.
2. Sistemsko testiranje - Testiranje sistema se vrši da bi se našle greške usled neodgovarajuće interakcije između komponenata i problema sa njihovim interfejsima.
3. Test prihvatanja - : Ovo je krajnja faza procesa testiranja, pre njegovog prihvatanja za operativnu upotrebu. Sistem se testira korišćenjem podataka koje je obezbedio korisnik (kupac).
razvojno > sistemsko > prihvatanje
2.13 Kako se vrši testiranje u slučaju primene ekstremnog programiranja. Kako se vrši testiranje u slučaju planskog razvoja softvera? Nacrtajte faze testiranja u okviru modela procesa planskog razvoja softvera. Šta je alfa testiranje? Šta je beta testiranje?
Ekstremno programiranje: testovi se izvršavaju i razvijaju pre samog programa.
Pri primeni softverskih procesa koji su vođeni planom, testiranje se vrši u skladu sa planovima testiranja. Nezavisan tim testera priprema te planove na osnovu dokumentacije sa specifikacijom sistema i projektnim rešenjem.
Alfa testiranje vrš razvojni tim, sam, ili sa naručiocem softvera (kao test prihvatanja).
Beta testiranje se vrši kod grupe odabranih korisnika sistema, tj. u njihovom radnom okruženju.
Za sliku vidi LAMS lekciju 2.
2.14 Šta je evolucija softvera? Zašto dolazi do promena zahteva? Kako se mogu smanjiti troškovi evolucije softvera?
Evolucija softvera je stalni razvoj i prilagođavanje softvera (prema zahtevima klijenta).
Do promena zahteva dolazi uglavnom zbog klijenta.
Troškovi se mogu smanjiti boljim planiranjem softvera.
2.15 Zašto se koristi prototip softvera? Kada se koristi prototip? Nacrtajte model procesa razvoja prototipa. Objasnite faze razvoja prototipa datih u modelu procesa razvoja prototipa. Šta prototip treba da sadrži, a šta ne mora da sadrži? U kom obliku se predstavljaju prototipovi?
Prototip je početna verzija softverskog sistema koja se upotrebljava radi pokazivanja koncepata, probe projektnih opcija, i boljeg razumevanja problema i njegovih mogućih rešenja.
Prototipi se najčešće koriste da bi se proverili i verifikovali zahtevi ili da bi se testirala tehnologija koja će se koristiti pri razvoju softvera.
Koriste se u dva slučaja:
1. Utvrđivanje zahteva korisnika
2. Procenjivanje tehničkih i arhitektonskih rizika
Za sliku vidi LAMS lekciju 2.