Lekcija 2 Flashcards

1
Q

2.1 Šta je softverski proces? Koje su osnovne aktivnosti softverskog procesa?

A

-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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

2.2 Navedite dve osnovne vrste softverskih procesa i ukratko ih opišite.

A
  1. Procesi vođeni planom - procesi kod kojih su sve aktivnosti unapred planirane i napredak u razvoju softvera se određuje stepenom ostvarivanja tog plana.
  2. Agilni procesi - procesi kod koji se planiranje radi postupno (inkrementalno) kako bi se procesi lakše prilagodili promenljivim zahtevima korisnika.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

2.3 Šta je model softverskog procesa? Navedite tri opšta metoda softverskih procesa. Objasnite svaki od njih. Koje su međusobne razlike?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

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?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

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?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

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

a) Model vodopada
b) Inkrementalni model
c) Hibridni - model vodopada i inkrementalni

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

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?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

2.8 . Koje su prednosti korišćenja razvoja softvera baziranog na upotrebi komponenata? Koji su nedostaci korišćenja?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

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.

A

Č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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

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.

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

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.

A

Brainscape ne podržava slike. Vidi LAMS-s lekciju 2.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

2.12 Šta je validacija softvera? Nacrtajte dijagram procesa testiranja. Koje su tri osnovne faze testiranja? Opišite svaku od ovih faza

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

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?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

2.14 Šta je evolucija softvera? Zašto dolazi do promena zahteva? Kako se mogu smanjiti troškovi evolucije softvera?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

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?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

2.16 Šta je inkrementalna isporuka softvera? Nacrtajte model inkrementalnog razvoja softvera. Koji su nedostaci inkrementalnog razvoja softvera? Kada inkrementalni pristup nije dobro rešenje?

A

Inkrementalna isporuka softvera je pristup u razvoju softvera koja omogućava da se kupcima softvera isporučuju razvijeni delovi sistema (inkrementi), koji se onda instaliraju i puštaju u operativnu upotrebu.

Prednosti:
Kupac ranije dobija softver za prioritetne funkcije i dozvoljava lako definisanje novih zahteva.

Nedostaci:
Otežan je iterativni razvoj kada se razvija novi sistem,. Srž
iterativnog razvoja je u paralelizmu definisanja specifikacije i razvoja softvera.

Kod nekih velikih softverskih sistema, inkrementalni pristup razvoju nije i najbolji pristup.

15
Q

2.17 Šta je spiralni model razvoja softvera? Nacrtajte model spiralnog modela razvoja? Opišite sve sekcije u spirali tazvoja. Koji su rizici primene spiralnog modela razvoja softvera?

A

Proces je predstavljen kao spirala pre nego sekvenca aktivnosti sa povratnom spregom. Svaka petlja u spiralnom modelu predstavlja fazu procesa.

Sekcije spiralnog modela:
1. Definisanje ciljeva - definisani su specifični ciljevi za ovu fazu projekta. Identifikovana su ograničenja procesa i proizvoda i skiciran je detaljni plan upravljanja. Identifikovani su rizici.
2. Određivanje i redukcija rizika - za svaki od identifikovanih
projekata rizika, izvedena je detaljna analiza. Da bi redukovali rizik uvedeni su koraci.
3. Razvoj i validacija - nakon proračuna rizika, izabran je razvojni model za sistem.
4. Planiranje – Projekat je razmotren i doneta je odluka da li
nastaviti sa narednom petljom spirale.

Rizik je nešto što može da krene pogrešno, npr. ako je intencija da koristimo nove programske jezike, rizik je da su postojeći kompajleri nepouzdani ili da ne proizvode dovoljno efikasan objektni kod.

16
Q

2.18 Objasni zašto je spiralni model prilagodljiv model koji može da podrži neophodne promene i zašto toleriše aktivnosti promena? Objasnite zašto se u praksi često koristi?

A

Spiralni model podržava korišćenje i inkrementalnog i sekvencijalnog modela razvoja, kao i upotrebu modela sa prototipovima.

On omogućuje inkrementalnu isporuku softvera i što u sebi uključuje i tehnike korišćenja prototipova.

U praksi se često koristi zato što omogućuje inkrementalnu isporuku softvera i što uključuje i tehnike korišćenja prototipova, kako bi se smanjili rizici pri razvoju softvera.

17
Q

2.19 Šta je RUP? Koje perspektive prikaza softverskog procesa podržava. Koje su četiri osnovne faze razvoja softvera po RUP-u? Objasnite svaku od ovih faza.
Opišite radne tokove RUP-a. Za koje slučajeve je RUP pogodan, a za koje nije? Koja je razlika između faza i radnih tokova RUP-a?

A

RUP model se bavi analizom rizika i podržava razvoj koji primenjuje slučajeve korišćenja. Posebnu pažnju posvećuje arhitekturi softvera i ona je u centru njegove pažnje.

Faze:
1. Početak - postavljanje poslovnog scenarija (slučaja) sistema, tj. određivanje šta sistem treba da radi
2. Razrađivanje - razvoj razumevanja domena problema,
postavljanje arhitektonskog okvira sistema, razvoj plana projekta i utvrđivanje ključnih rizika projekta
3. Konstrukcija - projektovanje sistema, programiranje i testiranje
4. Tranzicija - prenos sistema iz razvojnog okruženja u korisničko okruženje, i stavlja ga u rad u stvarnom okruženju

RUP nije pogodan za sve sisteme, kao što su na primer, ugrađeni sistemi.

Razlika između faza i radnih tokova: faze su dinamičke i imaju svoje ciljeve, dok su radni tokovi statički i predstavljaju tehničke aktivnosti koje nisu povezane sa pojedinačnom fazom, već se mogu upotrebiti za vreme celog razvoja radi ostvarivanja ciljeva svake faze.