FRI:UNI:Vodenje projektov:Posebnosti projektov za razvoj programske opreme

Iz E-študij, proste zakladnice študentskega znanja

Skoči na: navigacija, iskanje

<==Nazaj

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
  1. Problem realizacije
    • vse je skoraj idealno
    • osredotočimo se le na problem realizacije projekta
    • klasični razvojni cikel, direktni nadzor
  2. 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
  3. 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
  4. Problem iskanja
    • zahteve nejasne
    • projekt je razvojne narave
    • org. oblika: pripadnost skupini
    • vzajemno prilagajanje
    • razvojni model serije prototipov

Zrelostne stopnje razvojne skupine

  1. Začetna
    • deluje "ad hoc"
    • za napredovanje mora skupina: vzpostaviti projektni način vodenja, uvesti kontrolo kvalitete, vzpostavi sistem za upravljanje s konfiguracijami
  2. 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
  3. 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
  4. Vodljiva
    • za napredovanje mora: avtomatično zbirati podatke, uporabljati te podatke za analizo in spremembe razvojenga procesa
  5. 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

  1. 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)
  2. Srednji COCOMO
    • v enačbo vpeljuje še 15 korekcijskih faktorjev, ki vplivajo na produktivnost skupine
  3. 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:
    1. Transcendentna: notranja kvaliteta, težko definirati, poznavalci jo začutijo :D
    2. Uporabniška: uporabnost sistema, kako sistem rešuje potrebe uporabnika
    3. Na osnovi produkta: zadeva lastnosti prog. opreme
    4. Na osnovi specifikacije: kako se ujema s specifikacijo
    5. Vrednostna: stroški in dobički pri načrtovanju in vodenju projekta
  • McCallove skupine faktorjev kvalitete:
    1. Delovanje produkta: pravilnost, zanesljivost, učinkovitost, varnost, uporabnost
    2. Revizija produkta: možnost vzdrževanja, možnost testiranja, fleksibilnost
    3. Tranzicija produkta: prenosljivost, ponovna uporabljivost, združljivost

Standardizacija kvalitete

  • dve poti:
    1. preveriti kvaliteto gotovega izdelka
    2. 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, ...)
Osebna orodja
Imenski prostori
Različice
Dejanja
navigacija

Tiskanje/izvoz
orodja