Agilni razvoj
- iterativni razvoj v pogostih inkrementih
- zajem zahtev, načrt, izvedba in testiranje so prepleteni - zmeraj se pričakuje spreminjanje zahtev
- tesno sodelovanje z naročnikom: specifikacija prednostnih nalog/zahtev in vrednotenje iteracij
- lastni pristop do dela brez predpisanih procesov
- aktivno odpravljanje zapletenosti sistema
- minimalna dokumentacija - fokus na hitro zagotovitev delujoče programske opreme
Prilagajanje navzgor: uporaba agilnih metod za razvoj večjih sistemov programske opreme, ki jih majhna skupina ne more razviti
Prilagajanje navzven: uvedba agilnih metod v veliko organizacijo z dolgoletnimi izkušnjami pri razvoju programske opreme
Agilne metode so zato tudi najprimernejše za razvoj nove programske opreme in ne za vzdrževanje programske opreme:
- pomanjkanje dokumentacije izdelka,
- vključenost naročnika v razvojnem procesu,
- ohranjanje kontinuitete razvojne skupine
Ekstremno programiranje (XP)
Tehnika agilnega razvoja:
- nove različice se lahko izdelajo večkrat na dan
- inkrementi se dostavijo strankam vsaka 2 tedna, izgradnja se sprejme le ob vseh uspešno opravljenih testih
Dobre prakse:
- inkrementalno načrtovanje: zahteve kot uporabniške zgodbe se razdelijo v razvojne naloge
- majhne izdaje: funkcionalnosti se dodajajo šele po razvitju MVP
- enostaven načrt: načrtovanje le trenutnih zahtev (nič več)
- razvoj z vnaprejšnjim testiranjem: avtomatizacija testov funkcionalnosti pred implementacijo
- preurejanje kode (refactoring): ohranjanje enostavnosti s stalnim preurejanjem izvorne kode
- programiranje v paru: delo razvijalcev v parih za medsebojno podporo
- skupinsko lastništvo: razvijalci delajo - prevzamejo odgovornost - na vseh področjih sistema
- stalna integracija: takoj po koncu dela na nalogi se to integrira v celotni sistem
- trajnostni tempo: nesprejemljivost nadurnega dela - manjša kakovost kode in produktivnosti
- stalna prisotnost stranke: stranka mora biti na voljo polni delovni čas
SCRUM
Agilna metoda, ki se osredotoča na upravljanje iterativnega razvoja programske opreme namesto na specifične prakse agilnega razvoja
3 faze:
- Začetna faza načrtovanja: določitev splošnih ciljev projekta in oblikovanje arhitekture sistema
- Vrsta ciklov sprinta: razvoj inkrementov sistema v okviru vsakega cikla
- Faza zaključka projekta: dopolnitev dokumentacije (npr. ogrodja sistemske pomoči, uporabniški priročniki, … ) in vrednotenje pridobljenih izkušenj na projektu
Pomembni termini:
- razvojna skupina: samoorganizirana skupina max 7 razvijalcev
- potencialno dostavljiv inkrement izdelka: izdelek v končnem stanju brez potrebnega dodatnega dela za njegovo vključitev v končni izdelek
- backlog izdelka: seznam opravil razvojne skupine
- lastnik izdelka: zahteve iz backloga prednostno razvrsti za razvoj
- Scrum: vsakodnevno srečanje celotne razvojne skupine - pregled napredka in načrtov
- Scrum master: vodi razvijalce in jih ščiti pred motilnimi zunanjimi vplivi (stranka)
- Sprint: razvojna iteracija, ki običajno traja od 2 do 4 tedne
- hitrost: ocena deleža možne implementacije zahtev v enem sprintu - ocenjevanje razvoja
Zajem zahtev

Vrste zahtev:
- uporabniška zahteva: namenjena stranki - izjave v naravnem jeziku / diagrami storitev in operativne omejitve
- sistemska zahteva: namenjena stranki in izvajalcu - strukturiran dokument z opisi funkcij sistema
Tipi zahtev:
- funkcionalne zahteve: podrobnosti zahtevanih storitev in načinov delovanja sistema
- nefunkcionalne zahteve: lastnosti sistema (npr. zanesljivost, odzivni čas, … ) in omejitve storitev (npr. časovne, razvojne, … )
- zahteve izdelka: določeno obnašanje izdelka
- organizacijske zahteve: določeni organizacijski pristopi
- zunanje zahteve: zunanji dejavniki
Zahtevane lastnosti izdelka razdelimo v kategorije
- MUST-have
- SHOULD-have
- COULD-have
- WON’T-have
Zahteve so lahko osnova za
- ponudbo - odprte za različne interpretacije
- pogodbo - natančno opredeljene
Pridobivanje zahtev
- Tehnično osebje s strankami pridobi informacije o problemski domeni, zahtevah in omejitvah sistema
- Razvrstitev in organizacija zahtev po prioriteti
Možne težave:
- stranka slabo opisuje želje
- nasprotujoče zahteve različnih strank
- spreminjanje zahtev tekom analize ali razvoja
Specifikacija zahtev
Čim bolj natančen in popoln opis zahtev:
- opredelitev entitete
- opis vhodov in rezultatov
- pogoji za delovanje
Vrednotenje zahtev
Dokazovanje, da zahteve določajo sistem, ki si ga stranka želi:
- Veljavnost (Ali sistem zagotavlja funkcije, ki kar najbolje podpirajo potrebe stranke?)
- Skladnost (Ali obstajajo med zahtevami kakšni konflikti?)
- Celovitost (Ali so vključene vse funkcije, ki jih zahteva stranka?)
- Realističnost (Ali se lahko zahteve izvedejo glede na razpoložljivi proračun in tehnologijo?)
- Preverljivost (Ali lahko zahteve realno preverimo?)
Upravljanje zahtev
Obvladovanje spreminjajočih se zahtev med analizo in razvojem
- Identifikacija zahtev: enolična identifikacija zahtev
- Proces upravljanja sprememb: ocenjujevanje vpliva in stroškov sprememb