Lekcija 13 Flashcards
13.1 Šta je evolucija softvera? Kako izgleda spiralni model razvoja i evolucije softvera? Ko održava softver razvijen po narudžbini?
To je stalna promena promena softvera nakon njegovog razvoja I isporuke korisniku.
Spiralni model predstavlja dijagram moji pokazuje da se
evaluacija vrši konstantno I to redoslednom:
1. Specifikacija
2. Implementacija
3. Validacija
4. Rad
13.2 Koja je razlika između evolucije softvera i njegovog servisiranja? Šta pokreće proces evolucije softvera? Koji su razlozi za to? Objasnite ciklični karakter evolucije softvera. Kada se prihvataju predložene promene? Kada se publikuje
(objavljuje) novo izdanje softvera? Koje su specifičnosti evolucije softvera kod primene agilnih metoda razvoja softvera?
Za vreme evolucije vrše se veće promene, dok se u fazi servisiranja vrše sitnije, ali neophodne promene. Glavni pokretač za proces evolucije softvera jesu predlozi za promenu sistema.
Ciklični prikaz evolucije softvera sadrži:
1. Proces utvrđivanja promena (odluka da neke promene moraju da se dese)
2. Predlozi promena (odlučivanje koje su to promene)
3. Proces evolucije softvera (dodavanje tih promena)
4. Novi sistem
Predložene promene se prihvataju ako su troškovi I efekat promena
prihvatljivi.
13.3 Nacrtajte proces evolucije softvera i objasnite njegove faze/aktivnosti. Zašto u njemu ima iteracija? Šta bi moglo da se menja, u idealnom slučaju, u softveru, za vreme njegove implementacije? Zbog čega se softver menja i posle početka njegove primene? Koje mogu biti negativne posledice menjanja softvera u toku njegove primene? Koja su dve vrste problema mogu javiti kada različiti timovi razvijaju softver i vrše njegovu evoluciju?
«slika»
zahtevi za promenama > analiza uticaja > planiranje izdanja < > implementacija promena >izdavanje softvera (strelica se vraća do zahteva)
od planiranja idu tri strelice ka “ispravka greške”, “prilagođavanje platforme”, “poboljšanje sistema”
U njemu postoji iteracija zato što se konsatno traže promene koje bi unapredile taj softver. Za vreme njegove inplamentacije se trebaju promeniti specifikacije sistema, projektnih rešenja I implamentacije softvera. Softver se menja i posle njegove primene ukoliko se javljaju greške koje moraju da se reše. Problemi koji se mogu javiti su ako jedan tim primenjuje agilni a drugi planski pristup i obrnuto
13.4 Navedite pet zakonitosti evolucije softvera. Ukratko ih objasnite
- Okruženje se menja, pa se menja I sistem I obrnuto
- Kako se sitem menja, tako se njegova struktura pogoršava
- Veliki sistemi imaju svoju dinamiku koja ograničava broj promena
- Veliki projekti rade u stanju “zasićenja” pa su im timovi neproduktivniji
- Dodavanjem novih funkcija unosi nove greške
13.5 Šta je održavanje softvera? Koji tipovi održavanja softvera postoje? Kakvi su troškovi održavanja u odnosu na troškove razvoja softvera i šta izaziva najveće
troškove održavanja? Zašto su troškovi održavanja ugrađenih sistema i četiri puta veći nego troškovi razvoja softvera? Kako se troškovi održavanja mogu smanjivati? Koji softver brže stari: razvijen agilnim metodama ili planski razvijen softver? Zašto?
Održavanje softvera je proces menjanja sistema posle njegove isporuke.
Postoje 3 tipa održavanja softvera:
1. Popravka greški
2. Prilagođavanje okruženju
3. Dodavanje funkcionalnosti
Najviše troškova na zadovoljavanju novih zahteva tog gotovog softvera.
Troškovi održavanja ugrađenih sistema su i četiri puta veći zato što oni rade u realnom vremenu.
Troškovi održavanj se mogu smanjiti tako što će se razviti metode razvoja softvera još u fazi projektovanja.
Brže stari softver razvijen agilnom metodom, zato što traži konstantno updajtovanje.
13.6 Zašto je skuplja nova funkcionalnost u održavanja nego u razvoju? Koji su razlozi za to? Kako se mogu predviđati troškovi održavanja? Kako oceniti složenost odnosa između sistema i okruženja? Koje su preporuke za smanjivanje troškova održavanja?
Stablinost tima (održavanje verovatno radi novi tim koji ne razume sistem tako dobro)
Loša praksa razvoja (razvojni tim uglavnom odbija da vodi održavanje)
Veštine zaposlenih (pisani u starim jezicima)
Starost programa I njegova struktura
Postoje 3 faktora za predviđanje proces održavanja:
1. Predviđanje održavanja
2. Predviđanje promena sistema
3. Predviđanje troškova održavanja
Trebaju se uzeti u obzir :
1. Broj I složenost sistemskih interfejsa
2. Broj nasledno nestabilnih sistemskih zahteva
3. Poslovni procesi u kojima se sitem koristi
Da bi se smanjili troškovi održavanja, najbolje je složene komponente zameniti jednostavnijim rešenjima.
13.7 Reinženjering softvera: Zašto softver stari? Šta je reinženjering softvera? Koja je korist od primene reinženjeringa softvera? Nacrtajte dijagram procesa
reinženjeringa starog Objasnite svaku aktivnost tog procesa. softvera. Da li u praksi moramo uvek da sprovedemo sve navedene aktivnosti? Zašto?
Softver stari zato što se iz godine u godinu prave jači I brži softveri.
Reinženjering softvera je promena strukture arhitekture sistema I ponovno pisanje koda primenom novih programskih jezika.
Korisno je zato što poboljšava performanse starog softvera.
Trebalo bi, ali u praksi uglavnom ne možemo (pr. ako je program funkcionalno pisan, ne može se prevesti u objektno-orjentisan program).
13.8 Šta je restrukturiranje softvera? Koja je razlika restrukturiranja i reinženjeringa? Koja je specifičnost primene restrukturiranja kod agilnih metoda razvoja softvera? Kada treba primeniti restrukturiranje koda? Šta je i kada se primenjuje restrukturiranje projektnog rešenja?
Rekostruisanje je poboljšanje strukture programa I njegovo pojednostavljivanje.
Razlika je što se reinženjering se vrši posle nekog vremena, dok je rekonstruisanje stalni proces razvoja.
Restruktuiranje koda treba primeniti ako softver ima:
1. Dupliranje koda
2. Dugačke metode (zamenjuju se sa više manjih)
3. Cirklulacija podataka (kada se ista grupa podataka javlja često)
4. Spekulativna uopštenost (kod koji je dodat, ali se ne koristi)
13.9 Šta raditi sa starim softverom? Koje su varijante? Kada koju primeniti? Kako postaviti strategiju evolucije softvera u vašoj firmi? Kakvu klasterizaciju možete primeniti kod starih softverskih sistema? Šta raditi sa svakim od karakterističnih
klastera?
Postoje 4 solucije:
1. Potpuno uništiti sistem (ako je beskoristan)
2. Ostaviti ga I nastaviti njegovo održavanje (ako ne mora još da se menja)
3. Uraditi reinženjering sistema (ako nije previše opao kvalitet)
4. Zameniti neke delove sistema novim sistemom (ako je moguće promeniti)
Postoje 4 klastera starih sistema:
1. Niski kvalitet, niska poslovna vrednost (uništi)
2. Niski kvalitet, visoka poslovna vrednost (zameniti)
3. Visoki kvalitet, niska poslovna vrednost (koristiti)
4. Visoki kvalitet, visoka poslovna vrednost (zadržati)
13.10 Kako utvrditi poslovnu vrednost nekog softverskog sistema? Koje faktore uzimate u obzir? Objasnite svaki od faktora
Poslovnu vrednost sistema možete dobiti ako date odgovore na ova pitanja:
1. Upotreba sistema: Ako se sistemi samo povremeno koriste, ili ih koristi mali broj ljudi, onda oni imaju nisku poslovnu vrednost. Međutim, ako je i povremeno korišćenje vrlo važno za organizaciju, onda se takav sistem ne odbacuje.
2. Poslovni procesi koje sistem podržava: Svaki sistem podržava jedan ili više poslovnih procesa. Ako je sistem nefleksibilan, i ovi procesi ne mogu da se menjaju. Sistem koji ne može da podrži takve promene onda treba
izbaciti iz upotrebe.
3. Pouzdanost sistema: Pored tehničke, postoji i poslovna pouzdanost. Ako sistem nije pouzdan nisku poslovnu vrednost.
4. Rezultati sistema: Treba utvrditi važnost rezultata koje proizvodi sistem na uspešno funkcionisanje poslovanja. Ako posao zavisi od ovih rezultata, onda sistem ima visoku
poslovnu vrednost.
13.11 Treba da donesete odluku da li da zamenite stari softver sa novim. Jadan od parametara odlučivanja je i ocena okruženja u kome softver sada radi. Koje
faktore koristite za ocenu okruženja? Koja tipična pitanja postavljate za svaki od faktora?
Faktor - Pitanja
1. Stabilnost proizvođača - Da li proizvođač još postoji? Da li je finansijski stabilan?
2. Brzina otkaza - Da li hardver ima visoku učestanost prijavljenih otkaza? Da li softver za podršku pada?
3. Starost - Koliko su stari hardver i softver? Stariji hardver je manje upotrebljiv
4. Performanse - Da li su performanse odgovarajuće? Da li problemi sa performansama utičnu na korisnike sistema?
5. Zahtevi za podrškom - Koja je lokalna podrška potrebna za hardver i softver?
6. Troškovi održavanja - Koliki su troškovi održavanja hardvera i licenci softvera za podrku? Stariji hardver ima veće troškove održavanja
7. Interoperabilnost - Da li postoje problemi sprezanja sistema sa drugim sistemima?
13.12 Koji su vam podaci potrebni da bi dali ocenu dosadašnjeg softverskog sistema. Ukratko objasnite zašto vam je potreban svaki od navedenih podataka. Koji su
ostali uticajni faktori koji dovode do promene softverskog sistema ili do zadržavanja starog softvera.
- Broj zahteva za promenu sistema (promene pogoršavaju strukturu sistema)
- Broj korisničkih interfejsa
- Količina podataka koje sistem koristi (što više podataka, to je veča verovatnoća zanekoisistenost podataka - kopiranje)
Ostali uticajni faktori su organizacioni i politički faktori.