FRI:UNI:Vodenje projektov:Posebnosti projektov za razvoj programske opreme
Iz E-študij, proste zakladnice študentskega znanja
Vsebina |
Posebnosti projektov za razvoj programske opreme
- zelo raznoliki projekti
- uporabljamo predvsem metode, temelječe na izkušnjah
- učinke akcij je težko predvideti
Vrste projektov za razvoj programske opreme
- več kategorij glede na:
- stabilnost projekta (1)
- stabilnost razvojnega procesa (2)
- stabilnost zmogljivosti (3)
- niso vse kombinacije realne
- štiri osnovne vrste projektov:
- Problem realizacije: visoka 1, visoka 2, visoka 3
- Problem razvrstitve: visoka 1, visoka 2, nizka 3
- Problem načrtovanja: visoka 1, nizka 2, nizka 3
- Problem iskanja: nizka 1, nizka 2, nizka 3
- Problem realizacije
- vse je skoraj idealno
- osredotočimo se le na problem realizacije projekta
- klasični razvojni cikel, direktni nadzor
- Problem razvrstitve
- nimamo dovolj zmogljivosti
- problem je kako razvijalce razporediti na delovne aktivnosti
- standardizaicja razvojenga procesa nam omogoča izmenljivost ljudi med nalogami
- klasični razvojni model
- Problem načrtovanja
- problem kako uresničiti zahteve
- standardizacija delovnih rezultatov
- postopni razvoj
- za lažje vodenje potrebujemo nekaj več zmogljivosti in možnost prekoračitve časa in stroškov
- Problem iskanja
- zahteve nejasne
- projekt je razvojne narave
- org. oblika: pripadnost skupini
- vzajemno prilagajanje
- razvojni model serije prototipov
Zrelostne stopnje razvojne skupine
- Začetna
- deluje "ad hoc"
- za napredovanje mora skupina: vzpostaviti projektni način vodenja, uvesti kontrolo kvalitete, vzpostavi sistem za upravljanje s konfiguracijami
- Ponovljiva
- za napredovanje mora skupina: ustanoviti skupino za iskanje izboljšav razv. procesa, vzpostaviti razvojno arhitekturo, uvesti metode orodja in strandarde za načrtovanje kodiranje in testiranje
- Določljiva
- za napredovanje mora: relizirati merjenje in shranjevanje podatkov o poteku razvoja, imeti ambiciozen načrt za zagotavljanje kvalitete prog. opreme s pomočjo kvantitativnih meritev
- Vodljiva
- za napredovanje mora: avtomatično zbirati podatke, uporabljati te podatke za analizo in spremembe razvojenga procesa
- Optimizirajoča
- stabilna osnova za izboljšanje razvojnega procesa
- v središču pozornosti je izboljšanje razvojnega procesa (ne produkta, kot je to na nižjih nivojih)
Ocenjevanje stroškov
- najprej moramo poznati zahteve in cilje
- razvoj prog. opreme je pretežno inetelktualno delo, ki ga je težko meriti
- ocenjevanje otežuje še relativna mladost panoge
- grobe ocene
- večja kompleksnost - večja nezanesljivost ocen
- zavedati se moramo kakšna natančnost ocene je sploh možna
Merila za ocenjevanje
- merilo človek-mesec je v teh okoliščinah lahko zelo varljivo
- razlike med programerji so lahko izredno velike
- lahko se zgodi, da večje število prgramerjev ne pomeni hitrejše izbedbe projekta (preveč časa za komunikacijo, programerjem v večjih skupinah storilnost pada)
- tudi druga metoda LOC-Lines Of Code je lahko varljiva
- nekoliko bolj zanesljivo je ocenjevanje s pomočjo operacij in operandov, ki nastopajo v kodi
- LOC se lahko enostavno pretvarja v človek-mesec in obratno
- tretja vrsta meril so t.i. funkcijske točke: ocenjujemo določene notranje strukture ali zunanje parametre
- so subjektivna merila, saj nimajo fizičnega ekvivalenta
Metode za ocenjevanje
- dosti razvojnih skupin dela napako, ko sistematično ne ocenjuje potrebnega časa (bodisi se jim ne zdi potrebno, bodisi imajo to za izgubo časa)
- Dekompozicijske metode
- celotno delo razdelimo na manjše dele
- te manjše dele je lažje sistematično oceniti število vrstic ali funkcijskih točk
- nato s pomočjo meril produktivnosti (lastnih empiričnih ali prevzetih) ocenimo potrebni čas in zmogljivosti
- uporabimo jih, ko že poznamo notranjo strukturo prog. opreme
- Empirične metode
- uporabljajo izkustvene formule na osnovi dokončanih projektov
- uteži v formulah izbiramo iz tabel
- lahko uporabimo že bolj zgodaj v razvoju (na osnovi zahtev in omejitev)
- Metoda Delphi
- od več ocenjevalcev izberemo ocene (ki jih podajo na osnovi ene od zgornjih skupin metod)
- ocene razdelimo nazaj med ocenjevalce (anonimno)
- lahko modificirajo sojo oceno
- v nekaj iteracijah ocena konvergira v dober približek
- druga metoda zahteva, da vsak ocenjevalec poda optimistično, pesimistično in realistično oceno - pričakovani čas izračunamo tako kot pri metodi PERT
Linearni modeli
- Splošna oblika:
- Nelsonov model (enačba in tabela faktorjev v knjigi, stran 108)
- ni korektno, da v eni enačbi seštevamo realna, cela in boolova števila
- kljub koeficientom, ki so podani na dve decimalki, ocena še zdaleč ni tako točna
Nelinearni modeli
- Splošna oblika: E = (a + bKLOCc)f(x1,...,xn)
- Osnovna oblika: E = (a + bKLOCc)
- izpeljemo iz regresijske analize iz podatkov preteklih projektov
- s korekcijskim faktorjem f(...) uravnavamo rezultat (recimo glede na izkušenost ekipe)
- konstante a, b in c izračunamo na podlagi preteklih projektov
- vsak model je prirejen za tisti tip projektov, kateri so mu služili za osnovo
- c določa, če se delo veča ali manjša, ko se obseg veča
- večina ind. izdelkov se ceni z večanjem obsega proizvodnje; programska koda se z večjim obsegom vse bolj komplicira, kar podraži zadevo
Model COCOMO
- Osnovni COCOMO
- E = bKLOCc
- organske projekte razvija relativno majhna in izkušena skupina v znanem okolju (b=2.4, c=1.05)
- vgrajeni projekti so tisti, kjer je za programsko opremo veliko omejitev (b=3.6, c=1.2)
- polpovezani projekti so vmesna stopnja (b=3.0, c=1.12)
- Srednji COCOMO
- v enačbo vpeljuje še 15 korekcijskih faktorjev, ki vplivajo na produktivnost skupine
- Podrobni COCOMO
- Podoben srednjemu, le da uporablja več različnih tabel korekcijskih faktorjev
Metode s funkcijskimi točkami
- uporablja diagram pretoka podatkov
- na najosnovnejšem nivoju diagrama podatkov so prikazane funkcije v uporabniškem vmesniku
- vsaka funkcija ustreza neki transformaciji v diagramu pretoka podatkov
- velikost transformacije je odvisna od velikosti vhodnih podatkov (TC)
- E = axFP'b (ostale enačbe, knjiga str. 112)
Upravljanje s konfiguracijami
- upravljanje z vsemi elemeti, ki rastejo preko celega projekta (koda, dokumentacija, zahetve, rezultati testiranja)
- zelo pomembno!
- ti elementi se med razvojem projekta spreminjajo in dodajajo
- v vsakem trenutku moramo imeti uradno verzijo - vsi njeni elementi morajo biti formalo sprejeti in dogovorjeni
- izvorna koda
- objektna koda
- zahteve
- načrti
- načrt testiranja in testni primeri
- rezultati
- za shranjevanje uradne verzije uporabljamo posebne baze, ki skrbijo tudi za pravilen dostop in spreminjanje elementov
- vsak morebiten poseg v uradno verzijo je treba prej skrbno preučiti in stestirati
Kvaliteta programske opreme
- vse več govora o tem
- kvaliteta se izplača
- preprečevanje škode, celo izgube življenj
- pojavljajo se razni standardi (ISO9000)
Kaj je kvaliteta
- težko definirati in izmeriti
- notranji in zunanji vidiki kvalitete
- Pet definicij kvalitete:
- Transcendentna: notranja kvaliteta, težko definirati, poznavalci jo začutijo :D
- Uporabniška: uporabnost sistema, kako sistem rešuje potrebe uporabnika
- Na osnovi produkta: zadeva lastnosti prog. opreme
- Na osnovi specifikacije: kako se ujema s specifikacijo
- Vrednostna: stroški in dobički pri načrtovanju in vodenju projekta
- McCallove skupine faktorjev kvalitete:
- Delovanje produkta: pravilnost, zanesljivost, učinkovitost, varnost, uporabnost
- Revizija produkta: možnost vzdrževanja, možnost testiranja, fleksibilnost
- Tranzicija produkta: prenosljivost, ponovna uporabljivost, združljivost
Standardizacija kvalitete
- dve poti:
- preveriti kvaliteto gotovega izdelka
- organizirati tak razvojni proces, da bo izdelek zagotovo dosegel določeno raven kvalitete
- vse bolj se uveljavlja drugi način
- ISO9001, IEEE - vsi tej standardi poizkušajo zagotavljati kvaliteto na drug način
Orodja za razvoj programske opreme
- najprej prevajalniki, urejevalniki in razhroščevalniki
- danes se razvijajo orodja CASE, ki omogočajo pomoč pri celotnem razvojnem procesu nove prog. opreme
- najprej so omogočala predvsem administrativno delo, danes pa vse več (specifikacija, dokazovanje pravilnosti, ...)