Lekcija 14 Flashcards
14.1 Šta je to agilni metod razvoja? Zašto je došlo da razvoja agilnih metoda razvoja softvera? Koja su svojstva agilnih metoda? Šta je to specifično kod agilnih
metoda razvoja softvera? Zašto je brzi razvoj i isporuka novih sistema često važnije za poslovanje nego detaljna funkcionalnost ovih sistema?
Predstavlja razvoj softvera u više inkremenata (delova).
Razvili su se zato što je bilo potrebno što pre napraviti funkcionalan server i zato što su korisnici menjali svoje zahteve u toku razvoja.
Njegova svojstva su:
1. Proces pripreme specifikacije, projektovanja I implementacije su izmešani
2. Sistem se razvija u vidu serije verzija
3. Korisnički interfejs sistema se razvijaju pripremom interaktivnih sistema
Zato što je bitnije brzo dobiti funkcionalan program sa greškama nego dugo čekati na kompletan program.
14.2 Šta je karakteristično za agilne metode razvoja softvera? Z akoje vrednosne stavove sa zalaže tyv. Agilni manifest? Koji su principi agilnih metoda? Šta je to Sprint ciklus?
Agilne metode ne koriste dokumentaciju, one se oslanjaju na “Agilni manifest”.
Stavovi za koje se zalaže su:
1. Pojedinci i interakcije u odnosu na procese i alate
2. Softver u radu u odnosu na odgovarajuću dokumentacija
3. Saradnja sa kupcem umesto pregovori oko ugovora
4. Reakcija na promene umesto realizacije plana
Principi agilnih metoda su:
1. Aktivna uloga kupca (kupci trebaju da budu uključeni u proces razvoja)
2. Inkrementalna isporuka (šalje se u delovima)
3. Ljudi a ne proces (ljudi razvijvaju softver unapred definisanih procesa)
4. Zagrli promene (promene moraju da se dešavaju)
5. Održi jednostavnost
Sprint ciklus je jedan ciklus u kome se razvija jedan inkrement sistema.
14.3 Kada se primenjuju agilne metode? Koje su poteškoće u primeni agilnih metoda? Kako se mogu primeniti agilne metode u održavanju i koje su prisutne teškoće?
Primenjuju se za razvoj proizvoda za kompaniju sa projektom male ili srednje veličine; i za razvoj sistema za kupca koji će aktivno učestovati u razvoju.
Poteškoće za agilne metode su:
1. Kupci koji nemaju dovoljno vremena da posvete razvoju softvera.
2. Članovi tima nemaju kapacitet da mogu intenzivno da rade
3. Teško uvođenje prioriteta promena softvera.
4. Održavanje sistema jednostavnim
5. Teško prebacivanje radnika na agilni razvoj
Za agilne metode treba dobro ispisati kod, tako da on bude čitljiv, tako da nema potrebe za dokumentacijom.
Teškoće koje se javalju su:
1. Uključivanje korisnika u rad I popravke sistema.
2. Promena razvojnog tima (upoznavanje novih članova sa softverom)
14.4 Objasnite kako principi na kojima se zasnivaju agilni metodi ubrzavaju razvoj softvera?
Kupac je uključen u razvoj softvera od samog početka i odmah daje svoje mišljenje i prepravke. Pored toga, jako brzo mu se dostavlja prvi inkrement, nakon čega slede ostali sa izmenama, što je brže nego da kupac čeka ceo softver koji će kasnije morati dodatno da se menja.
14.5 Kada nećete preporučiti primenu agilnog metoda razvoja softverskog sistema i zašto?
Zbog nedostatka dokumentacije, i načina razvoja, veliki sistemi imaju tendenciju urušavanja. Kupci ponekad nemaju vremena da učestvuju u razvoju.
14.6 Šta je ekstremno programiranje? Nacrtajte i objasnite ciklus ekstremnog programiranja.
To je agilni metod koji zahteve izražava u vidu scenarija, a programeri rade u parovima I prave testove za svaki zadatak pre nego što ispišu kod.
*postoji bolji odgovor na vikipediji
14.7 Koji principa agilnog programiranja se primenjuju pri ekstremnom programiranju?
- Dodavanje malih ali čestih verzija sistema
- Korisnik sisema je uključen u razvoj
- Ljudi, a ne procesi
- Održavanju jednostavnosti
14.8 Navedite i objasnite principe ekstremnog programiranja. Otkud naziv „ekstremno“ programiranje? Šta je tu „ekstremno“?
- Inkrementalno planiranje - zahtevi se upisuju a kartu sa pričom tako da se priča uključuje u novu verziju sistema.
- Male verzije - prvo se razvija minimalno koristan skup funkcionalnosti koji obezbeđuje poslovnu vrednost.
- Jednostavno projektno rešenje - traži se projektno rešenje koje zadovoljava zahteve i ništa više
- Razvoj oslonjen na testiranja - koristi se za automatizovani sistem za testiranje jedinica i pisanje testova za novi deo pre nego što se primeni
- Restrukturisanje - kontinualno rekonstruisanje koda kada dođe do promena
- Programiranje u paru - dvoje inženjera rade u paru i proveravaju rad jedno drugome
- Pripadnost kolektivu - svako može da menja bilo šta, ne postoje stručnjaci za samo jedan deo
- Stalna integracija - čim se završi jedan zadatak on se integriše i testira se ceo sistem
- Održivost - ne podržava masivni prekovremeni rad zbog kvaliteta koda
- Uključenost korisnika - predstavnik korisnika je sve vreme uključen u rad sa timom
14.9 Šta su i čemu služe karte sa pričama? Objasnite njihovu primenu.
One su glavni ulaz u ekstremno programiranje. Svaka karta se deli na zadatke i onda tim proceni potrebno vreme i resurse za njegovo izvršavanje. Oni se potom predstavljaju kupcu I onda zajedno određuju koja je kartica prioritetnija.
14.10 Šta je problem inkrementalnog programiranja? Kako se on otklanja u slučaju primene ekstremnog programiranja?
Glavni problem je da dovodi do degradacije strukture softvera, pa se buduće promene teže dodaju. Ekstremno programiranje rešava ovaj problem stalnim rekonstruisanjem softvera.
14.11 Kako se vrši testiranje softvera u uslovima primene ekstremnog programiranja pri razvoju softvera? Kada i kako se definiše test? Dajte primer testa za neki zadatak u razvoju softvera.
- Prvo se pripremaju testovi
- Razvijaju se inkrementalni testovi na osnovu scenarija
- Korisnik učestvuje u validaciji testova
- Koristi se sitem za automatsko testiranje
14.12 Zašto se vrši automatizacija testova kod ekstremnog programiranja? Kako tetsovi prate novu funkcionalnost koju donosi svaka nova verzija softvera? Koji se problemi ovde mogu da jave?
Automatizacija se vrši da bi se testiranje ubrzalo. Prate tako što se testiraju i novija i starija verzija, i prate se razlike u rezultatu.
Problemi koji se javljaju su:
1. Nedovoljno testCase-ova
2. Testovi koji se teško pišu inkramentalno
14.13 Šta je to programiranje u parovima? Koju povoljnost ta praksa donosi? Kakva je produktivnost takvog rada? Navedite četiri razloga za ubrzavanje produktivnosti
programera kada rade u paru za oko 50% u odnosu kada sva programera rade individualno.
To je programiranje 2 programera na jednoj radnoj stranici.
Ova praksa donosi:
1. Kolektivnu odgovornost
2. Relalizuje se neformalna recenzija procesa razvoja (pošto liniju koda gleda najmanje jedan par)
3. Pomaže rad na usavršavanju koda
14.14 Kako se može primeniti agilne metode razvoja softvera i u slučaju razvoja velikih softverskih sistema? Koje su specifičnosti razvoja velikih sistema? Koje su
perspektive primene agilnih metoda kod razvoja velikih sistema? Koje su poteškoće u primeni kod velikih sistema?
Mogu se primeniti uz male modifikacija metoda:
1. Mora se pisati dokumentacija
2. Mora se uspostaviti mehanizam komunikacije razvojnog tima
3. Stalna integracija je nemoguća kada se moraju integrisati više sistema koji zajedno čine sistem
Perspektive su:
1. Scalling up (upotreba agilnih metoda za razvoj velikih sistema koje ne mogu razviajti mali timovi)
2. Scalling out (bavi se tome kako se agilne metode mogu koristiti u velikoj organizaciji)
14.15 Obično se navodi da je jedan od problema uključivanje korisnika u razvojni tim je što mogu da izgube kontakt sa potrebama svojih kolega, korisnika sistema.
Preporučite tri načina za izbegavanje ovog problema i diskutujte prednosti i nedostatke svakog od pristupa.
??