Professional Documents
Culture Documents
UVOD
• Prema Golemanu (1995. g.), model emocionalne inteligencije sastoji se od nekoliko bitnih
komponenti:
• Tim je grupa pojedinaca koji međusobno sarađuju u koordiniranom okruženju kako bi postigli
zajednički cilj.
• Primarni zadatak lidera je da u sklopu projekta održava afmosferu pogodnu za timski rad.
• Svaki član mora podrediti neke svoje lične ciljeve zajedničkim ciljevima tima. Najbolja opcija je
kada su ciljevi pojedinca ujedno i ciljevi tima.
• Kazne i ukori su za tim (ili dijelove tima), a ne za pojedince.
• Spajanje pojedinaca u kohezivan (povezan) tim rijetko se desi spontano.
• Faktori koji doprinose kreiranju efikasnog i efektivnog tima za softver inženjering
o Odgovarajući broj ljudi
o Korektna mješavina vještina
o Dobri alati
o Odgovarajući trening
o Uzajamno poštovanje
o Poštovanje menadžera i lidera
o Želja da se bude član tima
o Dijeljeno vlasništvno nad produktom – Energoinvest, FDS
o Dobri komunikacijski kanali
o Dobro radno okruženje
o Zajedničko druženje
• Ulazak u tim mora odobriti vođa tima i često svi članovi tima koji će raditi sa novim članovima.
• Individualci su problem za tim – treba ih ukloniti ili im naći zadatke koje mogu samostalno raditi.
Zasluge koje se pripisuju timu nisu u tom slučaju njihove zasluge.
• Za disfunkcionalne grupe su karakteristični pojedinci koje ne žele da pomognu drugima
(vremenski pritisak, prekovremeni rad, takmičenje između pojedinaca koji ne nagrađuje
saradnju).
• Karakteristike kompaktnog tima
o Rijetke izmjene članova tima
o Jak osjećaj povezanosti s timom osjećaj elitizma
o Zajedničko vlasništvo nad produktom
o Uzajamno pomaganje
o Očigledno uživanje u radu i u društvu ostalih članova tima
• Stvari koje sprječavaju nastanak kompaktnog tima
o Defenzivan menadžment
o Nepromišljena birokratija
o Fizičko izdvajanje članova tima
o Fragmentacija vremena – rad na različitim zadacima
o Nerealni rokovi
o Nedostatak vremena za kreiranje kvalitetnog produkta
o Kontrola grupa unutar tima
o Previše prekovremenih sati
• Povjerenje i respekt su ključni za dobar tim – oboje se stiče.
• Nezadovoljavaljuće performanse nekon člana tima moraju se ozbiljno tretirati (trening,
mentorstvo, bolji alati, klasifikacija odgovornosti, preraspodjela obaveza ili prebacivanje na drugi
projekat).
• Pojam, „in the flow“ – trenutak kada se pažnja pojedinca u potpunosti usmjeri na ono što radi i
zahtijeva 15 do 20 minuta od početka rada. Tada je pojedinac najproduktivniji ako nema
nikakvih ometanja.
• Projektni menadžer i lider tima moraju voditi računa da developeri ne nadopunjuju softver i ne
poboljšavaju njegov kvalitet više nego što je potrebno.
• Prekovremeni rad nije moguće izbjeći kod razvoja softvera, ali se treba svesti na 10% sedmično
(4 sata prekovremeno u sedmici ili dva dodatna radna dana u mjesecu). Duži prekovremeni rad
ne bi trebao trajati duže od 1-2 sedmice nakon čega slijedi adekvatna kompenzacija.
• Bornout ili sagorijevanje
o Predstavlja ličnu krizu koja počinje sa neprimijetnim simptomima, a može završiti sa
potpunom nesposobnošću za rad.
o Nema jedinstvene definicije niti je jednostavan za prepoznati jer ima ismptome koji se
ne mogu protumačiti na više načina. To je razlog što se često otkriva kada je već u
poodmakloj fazi. Mnogi psihijatri bornout smatraju modernom dijagnozom.
o Rezultat je emotivne i fizičke iscrpljenosti, preopterećenja, nezadovoljstva potignutim,
konstantnog stresa, pritiska, ...
o Početni simptomi su glavobolja, nesanica, neraspoloženje, razdražljivost, ... (90%
bornout osoba ima simptome depresije).
• Održavanje morala se postiže najvećim dijelom kroz obezbjeđivanje okruženja i uslova u kojima
su pojedinci motivisani da dobrovoljno, pouzdano, rado i disciplinovano izvršavaju svoje zadatke
• Motivacija se također može postići i prijetnjom i izazivanjem straha (od kazne, poniženja,
gubitka posla). Ovaj pristup nije dobar za funkcionisanje tima.
• Psihološki elementi koji čine da osoba bude zadovoljna na poslu
o Osjećaj da je posao koji radi bitan
o Stalni osjećaj da je nešto postigla
o Priznanje za doprinos
o Korišenje različitih vještina
o Izvršavanje dobro definisanih zadataka
o Prilike za lični i profesionalni napredak
o Određeni nivo autonomije (inženjeri)
o Ugodna socijalna interakcija (oni koji rade u marketingu)
• Potrebno je shvatiti koji motivacijski faktor je bitan za koga ukoliko se želi postići pozitivno radno
okruženje
NE MOGU NASPRAM NE ŽELIM
• Efikasan lider mora razumijeti osobnost, vještine i motivaciju svakog podinog člana tima i
reagovati na situacije koje se mogu javiti na odgovarajući način.
OSOBINE LIČNOSTI
• Osobina ličnosti je karakterističan načina na koji osoba percipira, osjeća, vjeruje ili djeluje.
• Prvi uvodi razliku između introvertrnosti i ekstrovertnosti koje se odnose na način na koji
pojedinac percipira svoje okruženje
o Introvertne osobe: preferiraju unutrašnji svijet misli i osjećanja; za njih je čitanje knjige,
slaganje slagalice ili slušanje muzike način da uživaju u slobodnom vremenu
o Ekstrovertne osobe: preferiraju vanjski svijet stvari, ljudi i akcija; oni uživaju u
društvenim dešavanjima
• Sa svojim okruženjem se nosimo na četri načina: osjetilima, razmišljanjem, intuicijom i
osjećanjem.
• Većina osoba je introvertna ili ekstrovertna i koristi dominantno jedan od četiri načina da se nosi
sa svojim okruženjem. Drugi način koriste manje dominantno, a preostala dva gotovo nikako.
Način nošenja sa svijetom Osobine
Osjetila Koriste 5 čula i reaguju na informacije dobijene
na taj način
Razmišljanje Prikuplja informacije na logički način i prije nego
krene u akciju. Odluku donosi na racionalnoj
osnovi umjesto da reaguje na podražaje. Manje
su spontani od onih koji koriste dominantno
osjetila
Intuicija Percepcija svijeta izvan svjetnih procesa.
Podsvjestan način integriranja velike količine
informacija.
Osjećanja Procesiranje informacija bazirano na emotivnoj
reakciji.
• 1940-tih Katharine Briggs i njena kćerka Isabel Briggs Myers razvile su Myers-Briggs Type
Indicator (MBTI) baziran na Jungovim osobinama ličnosti.
• Ovo je trenutno najkorišteniji test za procjenu stilova ličnosti. Rezultati su vezani za četiri skale:
ekstrovert-introvert, osjetila-intuicija, razmišljanje-osjećanje i prosuđivanje-percipiranje.
• Četvrta skala govori koji Jungov stil dominira, a koji je drugi po dominaciji. Prosuđivanje govori
da su osobe metodične i sklone redu, Percipiranje znači da su osobe više fleksibilne i spontane.
• Postoje 16 stilova ličnosti. Većina ljudi podpada pod jedan stil, dok su neki mješavina 2-3 stila.
• 1960-tih Larry Wilson Predstavlja svoj model socijalnih stilova (stilova komunikacije – bio bi bolji
naziv)
• Dimenzije socijalnih stilova su korisne za osobe koje prelaze u menadžere, menadžere koji žele
poboljšati radne odnose, zaposlene koji žele uspostaviti efektivne odnose unutar tima,..., sve
ljude u organizacijama koji žele bolje da razumije druge i da prilagode svoje ponašanje kako bi
imali efektivnije interacije.
Curtis, Krasner i Iscoe predstavljaju peto-nivoiski model ponašanja kod razvoja softvera 1988. godine.
• Ovaj model ilustrira probleme komunikacije i koordinacije na nivou pojedinca, tima, projekta,
kompanije i poslovne sredine
• Model naglašava psilohošle, socijalne i organizacione procese na svakom nivuou. Cilj modela je
vidjeti kako ti procesi utiču na produktivnost i na kvalitet softvera.
• Nivoi
o Pojedinac: kognitivni i motivacijski proces
▪ Kognitivni stilovi temelje se na tipičnom načinu intelektualnog funkcionisanja za
pojedinca, koji se očituje u njegovom zasebnom opažanju svijeta, zazim učenju i
posebno rasuđivanju.
▪ Modivacija može biti ekstranzična (želja za vanjskim nagradama) i intrizična
(obavljanje posla šzo je zanimljiv i doživljava se kao nagrada po sebi – zahtijeva
nivo izazova koji odgovara trenutnim vještinama pojedinca).
o Tim: kogitivni i motivacijski procesi djeluju zajedno sa sovijalnim procesima tima.
Otvaraju se pitanja komunikacije i koordinacije
o Organizacija: na projekte koje realizira kompanije utiče korpativna politika i kultura
o Poslovna sredina: interakcija sa drugim elementima matične organizacije, klijentove
organizacije, dobavljačima..
• Od veličine projekta zavisi nivo uticaja svakod od nivoa. Na male projekte viši nivoi utiču malo ili
nikako.
• Analiziraju se 3 problema:
o tanko širenje aplikacijskog domena znanja
▪ izuzetni dizajneri imaju nevjerovatan uticaj jer mogu ugraditi svoje aplikativno
znanje
▪ na nivou tima ulaže se dodatni trud da se koordinira razumijevanje aplikativnog
domena i modela sistema
▪ na nivou projekta treba osigurati da razvojni timovi dijele isti model sistema
▪ na nivou kompanije troši se vrijeme i novac za učenje nove oblasti aplikacije i
uključivanje novog člana tima u projekat )6-12 mjeseci)
▪ na nivou poslovne sredine razumijevanje aplikativnog domena i arhitekture
sistema koče ograničenja između pojedinih kompanija
o fluktuirani i konfliktni zahtjevi
▪ na nivou poslovne sredine javljaju se fluktuacije i konflikti kod zahtjeva (mijenja
ih korisnik ili se mijenja tehnologija i konkurentski produkt)
▪ na nivou kompanije problemi sa zahtjevima se javljaju radi unutrašnjih faktora
(korporativna politika, marketing, menadžment)
▪ na nivou projekta dizajnerski tim često pregovara s ciljem reduciranja konflikta i
limitacije zahtjeva (napraviti ono što je moguće s novcem i vremenom i
tehnološkim ograničenjima
▪ na nivou tima teško je primijeniti postignute dogovore
▪ pojedinci programeri često kreiraju skrivene izvore fluktuacije zahtjeva kada
dodaju poboljšanja koja nisu tražena
o komunikacijski i koordinacijski pad
▪ pojedinac i pored dokumentacije i dalje mora dosta da komunicira
▪ timovi dosta vremena provode definišući uslove, koordinirajući razgovore i
kreirajući komunikacijske kanale za protok informacija
▪ na nivou projekta potrebno je uključiti pojedince iz timova da komuniciraju
međusobno i stvore komunikacijsku mrežu
▪ na nivou kompanije organizacijeke granice sprješavaju razumijevanje zahtjeva
▪ na nivou poslovne sredini sve grupe su presudne za upravljanje projektom i
imaju svoje zahtjeve
HIPOKRAT-GALENOVA KLASIFIKACIJA
UVOD
o Planiranje projekta — izlaz ne možemo dobiti kroz jednu monolitnu aktivnost: podijeli
pa vladaj
o Dekompozicija radnih paketa u manje zadatke (identifikacija aktivnosti i njihovih
međuzavisnosti)
o Planiranje je iterativni proces — rad na produktu povećava razumijevanje
o Izvodivost projekta — osnovni, željeni i opcionalni zahtjevi
WORK BREAKDOWN STRUKTURA (WBS)
1. Koristiti Arhitecture Decomposition View (ADY) kao bazu (specificira hierarhiju“dio je/ is-part-
of“; elementi su imenice)
2. Struktuirati ADV i WBS da bi se olakšala dodjela zadataka
3. Razviti i koristiti procesno-orjentisanu WBS
4. Ukomponovati radne aktivnosti tokom razvoja i modifikacije modula produkta u WBS (imenični
izrazi iz ADV prelaze u odgovarajuće glagolske izraze)
5. Podijeliti projekat na maksimalno 7-8 funkcionalnih oblasti na najvišem nivou WBS (uključuje sve
što treba uraditi na projektu)
6. Svaki od elemenata ne granati na više od 7 podelemenata
7. Dubina WBS ide do 6-7 nivoa
8. Koristiti decimalni brojni sistem radi sistematične identifikacije radnih aktivnosti i zadataka
9. Alocirati priroritetne zahtjeve za razvojne aktivnosti i zadatke u WBS
10. Dizajnirati WBS top-down, bottom-up i middle out
11. Koristiti radne pakete za specifikaciju projektnih zadataka (3)
12. Analizirati radne zadatke za željene osobine projekta — dobijaju se informacije o budžetu (4)
13. Izvesti vremenski plan na osnovu radnih paketa (mrežni dijagram) (1)
14. Odrediti potrebne resurse na osnovu radnih paketa i vremenskog plana (2)
15. Revidirati i elaborirati WBS periodično i kada nastupi neki događaj
INICIJALNI VREMENSKI PLAN I MREŽNI DIJAGRAM
Zadatak/učesnik A B C D
Dizajn kontrole (b) i (c) (b)
Dizajn baze podataka (b) (b) (a)
Dizajn korisničkog interfejsa (c) (b) i (c)
Konfiguracijski menadžment (c) (b)
• Za donošenje efektivnih odluka tokom faze izvršavanja projekta, menedžer treba precizne
informacije o njegovom stanju koje je teško dobiti:
o sistem je kompleksan— teško je procijeniti uticaj pojedinih komponenti
o developeri ne prijavljuju vođi tima probleme koje misle da mogu riješiti unutar tima
o ne prijavljuje se manja kašnjenja, ali ona mogu dovesti do značajnih poremećaja u
kasnijim fazama
• Alati za prikupljanje informacija o trenutnom stanju projekta
o sastanci — ključno je da tima ima povjerenje u menadžera
o oštre ključne tačke — završeno kodiranje I PROVJEREN KVALITET KODA (testiranje,
demonstracija, dokumentacija 1 integracija), ne zahtijeva saradnju developera
o pregled projekta — prezentacije svih timova
o inspekcija koda — formalne peer review je efektivna metoda za otkrivaje defekata u
ranoj fazi
o demonstracija prototipa — evaluacija tehnologije i funkcionalnosti, ali zanemaruje
rubne slučajeve i ne govori o robusnosti implementacije (mjeri progres ali nije oštra
mjera za procjenu koliko je posla urađeno)
• Cilj estimacije je da se odredi skup parametara koji daju visok nivo pouzdanosti da će biti
moguće isporučiti prihvatljiv projekat unutar granica postavljenih kroz zahtjeve
• Parametri i zahtjevi koje treba razmotriti (dati kao zahtjevi ili procijenjeni)
o svojstva produkta
o atributi kvaliteta
o napor
o drugi resursi
o vremenski plan
o budžet
o tehnologija
• Estimacijske vrijednosti često značajno odstupaju od stvarnih
o nejasni i promjenljivi zahtjevi
o inicijalna estimacija nije unaprijeđena novim znanjem stečenim kroz bolje razumijevanje
problema
o neadekvatne metode ili alati
o veća kompleksnost finalnog projekta od očekivane
o pogrešna ili pristrasna procjena stručnjaka
o broj raspoloživih developera i njihove vještine nisu razmatrane prilikom estimacije
o eksterni faktori
FUNDAMENTALNI PRINCIPI ESTIMACIJE
• Faktori prilagođavanja su atributi koji uzrokuju da se naizgled slični projekti razlikuju po naporu,
vremenskom planu, resursima, troškovima, ... i uključuju:
o relativnu kompleksnost produkta
o vještine i sposobnosti developera
o specifičnost i nestalnost zahtjeva
o pretjerani zahtjevi poput vremenskog pritiska
• Primjer: Novi projekat je kompleksniji od ranije rađenih projekata za 20%. Raniji projekti su
trebali 10 mjeseci i u prosjeku 10 softver developera (10 full-time ekvivalent FTE). Koliko treba
developera ako se novi projekat treba završiti za 9 mjeseci?
za ranije projekte: FTE=(10*10) inžinjer-mjeseci / 10 mjeseci = 10
20% kompleksniji projekat — 10 mjeseci i 12 developera ili 12 mjeseci i 10 developera
FTE = 120 inžinjer-mjeseci / 9 mjeseci = 13,3
treba više od 13 developera (voditi računa o složenijoj komunikaciji i koordinaciji radi
većeg tima)
• Duplo više ljudi ne znači duplo brži završetak projekta. Projekt nije moguće skraćivati po želji, jer
treba voditi računa o raspoloživosti resursa i drugim preduslovima.
• (princip 2.) Sve estimacije se baziraju na skupu pretpostavki koje treba realizovati i skupu
zahtjeva koje treba zadovoljiti.
• (princip 3.) Projekt se treba ponovo estimirati i to periodično, kako se povećava razumijevanje
projekta, i aperiodično kada se promijene parametri.
• Preporuka — ponovnu estimaciju 1 planiranje treba raditi:
o mjesečno za projekte kraće od 12 mjeseci
o jednom u 4 mjeseca za duže projekte
o kod velikih promjena u zahtjevima, zakazivanja nove tehnologije, skraćivanja
vremenskog plana, redukcije budžeta, nedostatka ključnog osoblja
• Prihvatljivo rješenje kada nastane problem:
o promjena opsega zahtjeva
o produžetak vremenskog plana
o dodavanje resursa
o korištenje boljih resursa
• Neprihvatljiva rješenja
• prekovremeni rad, redukciranje verifikacije i validacije, reduciranje dokumentacije
• Projekat je uvijek veći i kompleksniji nego što se pretpostavi — novčana rezerva od 10% do 50%
kao i mogućnost promjene ugovora
• Stara izreka: “Softver možeš dobiti: brzo, jeftino, da bude dobar; odaberi bilo koja dva.“
• Balansiranje tri fundamentalna parametra estimacije — vremenskog plan, resursa i zahtjeva
• Isporučiti prihvatljiv produkt na vrijeme i u okviru raspoloživog budžeta
o svi osnovni zahtjevi i neki željeni zahtjevi ispunjeni
• Bar jedan od tri parametra treba da bude fleksibilan. Postavka svih parametara na fiksne
vrijednosti (ili prestroga ograničenja) je gotovo siguran način da projekat propadne.
• Većina metoda za estimaciju baziranih na produktu faktora koristi neke mjere veličine produkta
kao primarni faktor za estimaciju
o veličina ima jaču uzročnu vezu sa projektnim atributima napor i vremenski plan u
odnosu na druge atribute
o može se objektivnije mjeriti nego ostali atributi
o podaci vezani za veličinu, napor, vremenski plan 1 drugi mogu se povuči iz baze kreirane
na osnovu prethodno završenih projekata
• Delivered source lines of code (DSLOC ) je mjera za veličinu. Nedostaci: teško procijeniti na
početku projekta, kvalitet vs kvantitet, lični kod vs gotov kod
• Function points (FP) je prva alternativa DSLOC. Računa se brojanjem različitih vrsta ulaza, izlaza,
internih fajlova, upita i interfejsa u sistemu koji se estimira.
• DSLOC je neovisan o programskom jeziku dok FP nije.
UVOD
o Kontrola projekta se vrši primjenom korektivnih akcija ukoliko jedna ili više dimenzija napretka
odstupa od plana više od dozvoljenog, ili kada je odnos između projektnih atributa disbalansiran.
• Kašnjenje od 2 dana kod dostizanja velikog cilja ne zahtijeva korekcione mjere, ali 2
sedmice mogu uzrokovati neprihvatljivo kašnjenje koje zahtijeva korekcione mjere.
• Prekoračenje memorije za neki softver od 2% nije alarmantno, ali 20% može biti ozbiljan
problem.
o Korektivne mjere zavise od prirode odstupanja od izvornog plana i mogu uključivati:
• Produžetak vremenskog plana
• Dodavanje resursa (veći broj ljudi ne mora značiti veći efekat)
• Korištenje superiornijih resursa
• Poboljšanje različitih elemenata u razvojnom procesu
• Poboljšanje tehnologije (opasnost od produžetka trajanja projekta)
• Smanjenje opsega produkta (prioriteti zahtjeva, iterativni razvojni proces)
o Planiranje, estimacija, mjerenje i kontrola softverskog projekta su institucionalizovani
menadžment rizika.
o Moguće je isporučiti prihvatljiv produkt bez planiranja, estimacije, mjerenja i kontrole, ali to je
malo vjerovatno.
o Dodatni troškovi se ulažu u povećanje vjerovatnoće uspjeha i treba ih balansirati s troškovima
koji nastaju ako se ne uspije isporučiti prihvatljivi produkt na vrijeme.
o Razlozi za mjerenje:
• Obezbijediti frekventne indikatore progresa (ili uočavanje nedostatka istih)
• Obezbijediti rano upozorenje na probleme
• Dozvoliti analizu trendova za projekat
• Dozvoliti estimaciju finalnih troškova i završnog roka projekta
• Izgradnja repozitorija podataka.
o Učestalost mjerenja zavisi od metode razvoja softvera (agilna, inkrementalna, vodopad), od toga
šta se mjeri, od načina rada timova (učestalost sastanaka na kojim se podnosi izvještaj), od grupa
koje se sastaju (vođe timova s timom, menadžeri s korisnicima).
o Učestalo mjerenje omogućava ranu identifikaciju problema kao i predviđanje trendova kada su u
pitanju atributi projekta (defekti, trošak, vremenski plan).
• Npr. projekat kasni dvije sedmice, a završeno je pola projekta.
o Estimacija je projekcija iz prošlosti na budućnost koja je prilagođena na adekvatan način kako bi
uzela u obzir razlike između prošlosti i budućnosti.
o Estimacija bazirana na lokalnim podacima je pouzdanija od one bazirane na rules of thumb ili
industrijskom prosjeku.
• Cilj je kreiranje repozitorija podataka kako bi se estimacije budućih projekata mogle
bazirati na njemu.
• Analiza skupljenih podataka može otkriti učestale probleme koje treba razriješiti.
MJERE I MJERENJA
o Mjera je simbol dodijeljen nekim atributima pojava iz realnog svijeta (korištenje cjelobrojnih ili
realnih brojeva za mjerenje temperature).
o Mjerenje je proces mapiranja nekog atributa pojave iz realnog svijeta na skup simbola za koji su
specificirane dobro definisane operacije (mapiranje temperature putem Celziuseve, Farenhajtove
ili Kelvinove mjerne skale).
o Postoji 5 najčešće korištenih mjernih skala:
• Nominalna: frekvencije pojave između mjernih kategorija
dodjeljuje stavke kategoriji (broj ljudi za analizu, dizajn)
• Redna: redoslijed unutar kategorija s proizvoljnim intervalima između mjera
(nisko, srednje, visoko) – (1, 2, 3) ili (0, 4, 6), nema objektivnog nultog elementa
Interval: ravnomjerni intervali između mjera i proizvoljni nulti element
temperatura izražena u Celziusima, Farenhajti – 0 stepeni celzijusa nije duplo toplije od
30 stepeni
• Omjer: ravnomjerni intervali između mjera i proizvoljni nulti element
broj linija koda – 100 linija je dva puta više od 50 linija koda; temperatura izražena u
Kelvinima – 0K znači odsustvo temperature jer se atomi prestaju kretati; 200K je duplo
više od 100K jer se gleda kinetička energija atoma
• Absolutna: slična omjeru ali s jedinstvenim mjerama
npr. zabrana da se FP trasformišu u LOC u suprotnom se radi o omjer mjernoj skali
o Pravila mapiranja pojave na korištenu mjeru moraju biti dobro definisana i ravnomjerno
primjenjena unutar organizacije
• Kako se broje linije koda?
• Kako se broje defekti, ketegoriziraju li se?
o Zloupotreba mjernih skala
• Ocjenjivanje profesora (redna skala koja se koristi kao skala omjera)
o Direktne mjere (direktno primjenjivanje pravila mjerenja na pojavu) i indirektne mjere
(kombinacije direktnih mjera koristeći odgovarajuće operacije za tu mjernu skalu).
• FP, LOC?
o Direktne mjere:
• Veličina softvera (line of code)
• Broj zaposlenika po kategorijama (programeri, testeri)
o Indirektne mjere:
• Veličina (function points)
• Produktivnost (broj linija koda razvijeno tokom inžinjer-mjeseca)
• testiranje od strane developera treba validirati osobine i kvalitet atributa svakog modula:
iterativna metoda- prijašnja verzija softvera je jezgra za testiranje modula u razvoju, agilna
metoda - testovi se pišu prije koda. Testiranje se ne smije preskočiti nakon integracije modula!
• Mjera kompleksnosti softverskog koda - kompleksan softver je teško razumjeti,
dokumentovati, testirati, modifikovati i ponovo upotrijebiti. Najčešće korištene mjere su:
o ciklomatska kompleksnost - COCOMO complexiti cost driver (0.73 <= CPLX <= 1.47)
povezivanje i kohezija (od slabe do jake) - slaba povezanost i jaka kohezija je poželjna
kod softvera
• Ciklomatska kompleksnost - mjera iz teorije grafova koja u ovom slucaju predstavlja broj
linearno nezavisnih puteva kroz kod.
• C=E-N+2 = 13-10+2=5
• E - strelice (bez rubnih)
• N - čvorovi (crni čvorovi sadrže dijelove koda koji uključuju druge module)
• C > 10 (ili 12) - prekompleksni moduli (rule of thumb).
• Koristi se često prije i nakon modifikacije softvera da se spriječi rast kompleksnosti.
• Neki softverski sistemi su odbačeni jer su kroz niz modifikacija postali previše kompleksni.
• Matrica defekata je također jedan od načina da se mjeri uspješnost pojedinih faza projekta
• Oper.- defekti otkriveni od korisnika u prvih 6 mjeseci koristenja softvera.
• Broj defekata otkriven tokom faze vezane za zahtjeve je 50, tokom dizajna je 25 itd. Svega 50%
defekata je otkriveno u prvoj fazi. U fazi dizajna također 50% od preostalih defekata - poboljšati
• Korisnik otkriva 5% defekata tokom prvih 6 mjeseci rada na softveru (20/386).
• Kriterij prihvatanja implementiranog koda je svega 53% (pronađeno je svega 80 od 150
implementacijskih defekata tokom implementacijskih aktivnosti. 7% implementacijskih defekata
se provuče kroz razvojni proces (10 od 150)
• Moglo bi se pokazati da od 60 defekata u fazi dizajna, njih 40 su posljedica 25 defekata koji nisu
otkriveni u fazi za zahtjeve, a preostalih 20 su kreirani tokom faze dizajna.
• Ove evidencije omogućavaju identifikaciu oblasti koje treba popraviti.
• Ukoliko se pronađe 70% defekata kod zahtjeva u svakoj od 5 razvojnih faza, tada korisniku
preostaje da nađe svega 1-(1-0.36 )*100=0.073% ovih defekata u prvih 6 mjeseci korištenja
softvera. 0.24% dizajnerskih defekata i 0.81% implementacijskih defekata se u ovom slučaju
provuku do krajnjeg korisnika.
• Ne očekuje se 100% pronalazak defekata do kontrolne tačke ali je nekih 70%-80% razuman
zahtjev za kvalitetni razvoj softvera.
• Ova analiza je bazirana na Waterfall razvojnom procesu. Kod iterativnog razvojnog procesa
očekuju se bolji rezultati.
• Većina problema na koje se nailazi u razvoju softvera nastaje jer je premalo vremena i
napora uloženo u zahtjeve i dizajn - ovim fazama se treba ozbiljno posvetiti
• Nije moguće detaljno pratiti sve zahtjeve vec treba da se odrede oni koji su esencijalni i da
im se posveti najvise pažnje.
• Šta se mjeri zavisi od cilja koji se želi postići, tj. Koji se atributi trebaju pratiti da bi se
moglo procijeniti je li cilj dostignut ili ne (npr. smanjiti broj defekata tokom razvoja
softvera)
Taksomanija napora:
• Originalni rad
• Dorada
o Evolucijska
o Može se izbjeći
▪ Retrospektivna
▪ korektivna
o Tabela ispod i matrica defekata se koriste za kreiranje matrice dorade. Uzeto je u primjeru da
trebaju
• 4 inžinjer-sata za popravku defekta u dijelu za zahtjeve tokom faze za zahtjeve
• 6 inžinjer-sata za popravku dizajnerskog defekta u fazi dizajna
• 10 inžinjer-sata za popravku implementacijskog defekta u fazi implementacije,
verifikacijskog defekta u fazi verifikacije i validacijskog defekta u fazi validacije
PRAĆENJE NAPORA, VREMENA I TROŠKOVA; ESTIMACIJA BUDUĆIH STATUSA
o Binarno praćenje – osnovna tehnika za tačno praćenje statusa projekta (binary deliverables –
Tom Demarco).
• Task (radni paket originalnog rada, promjena zahtjeva ili prijava defekta) smatra se 0%
završenom dok s njim povezan produkt ne zadovolji kriterij prihvatanja, tj. dok nije
100% završen.
• Binarno praćenje pomaže da se izbjegne 95% sindrom završetka softverskog projekta
(napredak praćenje koristeći „nagađanje vremena“ često rezultuje projektima koji su
prijavljeni kao 95% završeni dugi vremenski period).
▪ Bolje imati 100% završeno 90% od ukupnog posla i znati da je to istina, nego misliti
da je završeno 90% od ukupnog posla i nadati se da je to istina.
• Korektivne akcije se poduzimaju najkasnije dva mjeseca od početka projekta.
• Naredna slika prikazuje binarno praćenje radnih paketa preko WBS. Za detaljnije
praćenje treba poboljšati dekompoziciju WBS (razbiti na manje taskove).
o Samo se listovi proglašavaju 0% ili 100% završeni dok se ostali dijelovi stabla računaju na
osnovu njih pod pretpostavkom da svaki task zahtijeva jednak napor.
o Ne ulaziti u prevelike detalje da taskovi postanu manji od 1 inžinjer-sedmice s aspekta kontrole i
mjerenja (programeri mogu raditi s više detalja samostalno praveći vlastite detaljnije WBS).
Najveći napor treba biti 1 inžinjer-mjesec.
o Izvještavanje o zarađenoj vrijednosti (earned value reporting ili EV) – dobija se na osnovu
binarnog praćenja paketa originalnog rada, promjene zahtjeva evolucione dorade i prijave
defekata dorade koja se mogla izbjeći (retrospektivne i korektivne).
o EV pristup za prijavu završetka paketa (slično je za izmjenu zahtjeva i prijavu defekata):
• Koristeći rolling-wave pristup specificirati planirane troškove i trajanja svakog taska u
paketu koji će biti završen u narednom mjesecu
• Kada je završen task dodijeliti mu planirane troškove (napor+ostali troškovi) kao njegovu
„zarađenu vrijednost EV“ (EV je planirani trošak koji se „dobija unazad“ kada se task
završi)
• Za sve taskove završene do roka uporediti sumu EV (planirani trošak za sve taskove) sa
sumom stvarnih troškova (pokazatelj prekoračenja budžeta)
• Za sve taskove završene u roku uporediti broj taskova koji je trebao biti završen s brojem
završenih (pokazatelj je li vremenski plan ugrožen)
o Terminologija zarađene vrijednosti
• BCWP (Budget Cost of Work Performed) – Kumulativni iznos budžeta za sve taskove
završene do roka (zarađena vrijednost EV)
• ACWP (Actual Cost of Work Performed) – Stvarni troškovi svih završenih taskova
• BCWS (Budget Cost of Work Scheduled) – Planirani troškovi svih taskova pokrenutih da
budu završeni do roka
• BAC (Budget Actual Cost) – Planirani troškovi čitavog projekta
• SCD (Scheduled Completion Date) – Planirani datum završetka projekta
• EAC (Estimated Actual Cost) – Estimirani stvarni troškovi projekta na osnovu
dosadašnjeg progresa
• ECD (Estimated Completion Date) – Estimirani datum završetka na osnovu dosadašnjeg
progresa
• CV (Cost Variance) – CV = ACWP – BCWP
• SV (Schedule Variance) – SV = BCWS – BCWP
• CPI (Cost Performance Index) – CPI = ACWP / BCWP (CPI = BCWP/ACWP)
• SPI (Schedule Performance Index) – SPI = BCWS / BCWP (SPI = BCWP/BCWS)
• CVC (Cost Variance at Completion) – CVC = EAC – BAC
• SVC (Schedule Variance at Completion) – SVC = ECD – SCD
pri čemu je EAC = BAC *CPI i ECD = SCD * SPI (EAC=BAC/CPI i ECD=SCD/SPI)
o Primjer EV praćenja: Završena su prva 3 mjeseca projekta koji traje 12 mjeseci. Planirani
budžet je 500 000 EUR. Po projektnom planu treba potrošiti 40 000 EUR u prva tri mjeseca
projekta, kumulativni trošak je 50 000 EUR, a stvarni 60 000 EUR. Šta se može reći o statusu
ovog projekta nakon 3 mjeseca?
SCD = 12 mjeseci
Projekat je iznad predviđenog budžeta ali se izvršava brže nego što je predviđeno.
Estimirani stvarni troškovi u ovom trenutku su 600 000 EUR umjesto 500 000 EUR
planiranog budžeta.
šk.god.2020/2021
Organizacija softverskog projekta,
Software Configuration Management (SCM) je proces
sistematičnog upravljanja promjenama, organizovanja promjena i
kontrole promjena u dokumentima, kôdu i drugim proizvodima rada
tokom životnog ciklusa razvoja softvera, s ciljem da se maksimizira
produktivnost i minimiziraju greške.
Neki od razloga zašto organizacija treba SCM su:
Više ljudi radi na softveru koji se stalno mijenja. Važna je sljedivost.
Može se desiti da postoji više verzija, grana i autora softvera, da oni rade
možda geografski distribuirano i konkurentno.
Mogu se desiti promjene specifikacije zahtjeva, promjene budžeta
projekta, promjene politika, promjene rasporeda projekta i sl. i svemu
tome se treba prilagoditi.
Softver se izvršava na različitim platformama.
SCM omogućava koordinaciju među zainteresiranim stranama. 2
SCM je koristan u kontroli troškova mijenjanja softverskog sistema.
UPRAVLJANJE PROMJENAMA SOFTVERA
Promjene Promjene
zahtjeva politika i pravila
šk.god.2020/2021
Organizacija softverskog projekta,
Promjene u Promjene u
timovima rasporedu ili
(organizaciji) budžetu
Svaka promjena stavki
konfiguracije softvera
utiče na
utiče na finalni proizvod,
zbog čega je važno iste
kontrolisati.
3
Kôd Planovi Razni Testovi Podaci
dokumenti
UPRAVLJANJE PROMJENAMA SOFTVERA
Softverski sistemi se stalno mijenjaju i tokom razvoja i tokom
upotrebe, zbog:
otkrivenih nedostataka,
zahtjeva za promjenama,
šk.god.2020/2021
Organizacija softverskog projekta,
novog okruženja – platforme na kojoj treba raditi,
uvođenja novih funkcionalnosti zbog kompetitivnih prednosti,
i td.
Upravljanje konfiguracijom softvera (software
configuration management – SCM) je vezano za procese, politike,
i alate za upravljanje promjenama softverskog sistema.
Zbog dinamike razvoja softvera se često dešava da se promjene
vrše na nekoliko verzija istovremeno i rad na pogrešnoj
verziji ili gubitak izvornog koda verzije može imati velike
negativne posljedice.
Upotreba sistema za upravljanje konfiguracijom osigurava da
učesnici imaju informaciju o sistemu koji se trenutno razvija da
bi na taj način izbjegli opasnost da se međusobno
preklapaju/ometaju u radu. 4
Period razvoja
i testiranja
KONFIGURACIJOM
(dnevni build)
PRE-ALFA
šk.god.2020/2021
Organizacija softverskog projekta,
Izgradnja Upravljanje Kandidat za release
(izdanje)
sistema promjenama GAMA/DELTA/...
(build)
Spreman za
isporuku - RTM
Release to
Release-i Manufacturing
Verzije Verzije
(izdanja) /Marketing
komponenti sistema
sistema Komercijalno
dostupan - GA
General Avaliability
U upotrebi –
Upravljanje Upravljanje finalna verzija
GOLD 5
verzijama release-ima
Period izdanja
AKTIVNOSTI UPRAVLJANJA
KONFIGURACIJOM
Upravljanje promjenama (change management) je vezano za praćenje
zahtjeva za promjenama softvera od strane klijenta (naručioca) i
inžinjera razvoja. Ovdje se određuju cijena i uticaj (posljedica
promjene), te donosi odluka da li će se izvršiti promjena i kada.
šk.god.2020/2021
Organizacija softverskog projekta,
Upravljanje verzijama (version management) je vezano za praćenje
više verzija komponenti sistema te osiguravanje da se promjene koje
različiti inžinjeri razvoja vrše ne preklapaju.
Izgradnja sistema (system building) je proces spajanja komponenti
sistema (compiling and linking) i kreiranja izvršne verzije sistema
(executable).
Upravljanje izdanjima (release management) je pripremanje softvera
za isporuku krajnjim korisnicima, i praćenje verzija koje su isporučene
krajnjim korisnicima.
Standard IEEE 828-2012 (http://ieeexplore.ieee.org/document/6170935/)
je standard koji određuje minimalne potrebe za upravljanje
konfiguracijom. Ovaj standard se fokusira na procese upravljanja
konfiguracijom i dokumente koji nastaju u tim procesima.
Standard ANSI/EIA-649-B (MIL–HDBK–61B; http://www.product-
lifecycle-management.com/download/mil-hdbk-61b%20(draft).pdf)
definiše terminologiju i proces CM. 6
AKTIVNOSTI UPRAVLJANJA
KONFIGURACIJOM
Ključne funkcije su:
Planiranje i upravljanje životnim ciklusom SCM –
izrada formalnog dokumenta i plana kojim se vodi SCM.
Uključuje stavke kao što su: osoblje, odgovornosti, resursi,
šk.god.2020/2021
Organizacija softverskog projekta,
trening, definicije, procedure, alate, revizije, kontrole, ...
Identifikacija konfiguracije – uspostava i održavanje
osnovnih postavki kojima se definiše arhitektura sistema i
njegovih podsistema, komponenti i td. To je osnova za
identifikaciju, dokumentaciju i praćenje promjena kroz
dizajn, razvoj, testiranje i isporuku.
Kontrola konfiguracije – uključuje evaluaciju
odobravanje/neodobravanje svih prijedloga i zahtjeva za
promjenama. Pokriva proces kontrole izmjena dizajna,
hardvera, firmvera, softvera i dokumentacije.
Evidencija statusa konfiguracije – uljučuje procese
evidentiranja i izvještavanja vezanog za stavke konfiguracije
(hardver, softver, ...) i sva odstupanja od identificirane
konfiguracije. To olakšava pronalaženje uzroka u slučaju 7
problema.
AKTIVNOSTI UPRAVLJANJA
KONFIGURACIJOM
Verifikacija i audit konfiguracije – nezavisna revizija
hardvera i softvera koja ima za cilj da provjeri usklađenost
konfiguracije sa postavljenim zahtjevima, standardima i
šk.god.2020/2021
Organizacija softverskog projekta,
identificiranom konfiguracijom.
Upravljanje podacima – treba da uspostavi vezu između
SCM i upravljanja podacima (DM) jer su danas skoro svi
podaci digitalnog oblika i SCM mora uzeti u obzir i DM,
odnosno praćenje podataka (dokumenata) kroz njihov životni
vijek.
8
AKTIVNOSTI UPRAVLJANJA KONFIGURACIJOM
šk.god.2020/2021
Organizacija softverskog projekta,
9
http://www.product-lifecycle-management.com/download/mil-hdbk-61b%20(draft).pdf
UPRAVLJANJE PROMJENAMA SOFTVERA
SCM uloge
• Glavni odgovorni • Odgovoran je za održavanje
za identifikaciju konfiguracije kôda
stavki konfiguracije • Mijenja kôd tokom
šk.god.2020/2021
Organizacija softverskog projekta,
• Brine da tim slijedi standardnih razvojnih
SCM proces. aktivnosti ili na zahtjev za
• Odobrava ili odbija promjenu.
zahtjeve za • Provjerava promjene i
• Nadzire
izmjenama rješava eventualne konflikte.
napredak razvoj i
detektuje
probleme u SCM
procesu.
• Brine se da se
poštuju i slijede • Treba razumjeti
procedure i osnove SCM proces-a
politike vezane za kako bi znao ima li
kreiranje, zadnju verziju
mijenjanje i softvera.
testiranje.
• ...
10
OSNOVNI TERMINI
UPRAVLJANJA KONFIGURACIJOM
Stavka konfiguracije (software configuration item – SCI) je svaki
element softvera (dizajn, kod, testni podaci, dokument, i sl.) koji je
stavljen pod kontrolu konfiguracije. Stavka konfiguracije mora imati
jedinstveno ime (identifikaciju).
šk.god.2020/2021
Organizacija softverskog projekta,
Kontrola konfiguracije (configuration control) je proces koji
osigurava evidentiranje verzija sistema i komponenti, i sačuvavanje
svih verzija komponenti tokom postojanja sistema.
Verzija (version) je instanca stavke konfiguracije koja se po nečemu
razlikuje od ostalih instanci te iste stavke konfiguracije. Verzija uvijek
ima jedinstveni identifikator – najčešće naziv stavke konfiguracije +
broj verzije.
Odobrena konfiguracija sistema (baseline) je skup verzija
komponenti koje čine sistem kao cjelinu. Treba da je uvijek moguće
ponovo formirati odobrenu konfiguraciju sistema od komponenti koje je
sačinjavaju. Zbog toga se vrši kontrola odobrenih konfiguracija sistema.
Sekvenca odobrenih verzija koda (codeline) je skup verzija jedne
softverske komponente i ostalih stavki konfiguracije o kojima ovisi. Ovo
je važno kontrolisati zbog praćenja uticaja promjena.
Sekvenca odobrenih konfiguracija sistema (mainline) – skup
(sekvenca) svih odobrenih konfiguracija sistema (baseline) koje 11
predstavljaju različite verzije sistema.
OSNOVNI TERMINI
UPRAVLJANJA KONFIGURACIJOM
Izdanje/isporuka (release) je verzija sistema koja je
isporučena klijentu.
Radni prostor (workspace) je zaštićeni radni prostor u kome
šk.god.2020/2021
Organizacija softverskog projekta,
je moguće raditi promjene softvera bez opasnosti da će to
uticati na rad ostalih koji koriste ili modifikuju taj softver.
Grana koda (branching) predstavlja kreiranje odobrene
konfiguracije koda iz postojeće. Nova odobrena konfiguracija
koda i postojeća se nakon toga razvijaju nezavisno jedna o
drugoj.
Spajanje (merging) je spajanje različitih odobrenih
konfiguracija koda (codelines) radi kreiranja nove verzije
komponente softvera.
Izgradnja sistema (system building) je formiranje izvršne
verzije (executable) kompajliranjem i linkovanjem
odgovorajućih verzija komponenti i biblioteka koje čine 12
sistem.
PROCES UPRAVLJANJA PROMJENAMA
Zahtjevi za promjenama su uobičajeni događaji u životu
jednog softverskog proizvoda.
Da bi se uspješno odgovorilo na ovakve događaje potrebno je
šk.god.2020/2021
Organizacija softverskog projekta,
imati definisan proces upravljanja promjenama i skup alata
koji olakšavaju izvršenje tog procesa.
Cilj upravljanja promjenama je osigurati najbolji proces
evolucije softvera (najprioritetnije promjene, najpovoljniji
omjer trošak/korist).
13
PRIMJER MODELA
PROCESA UPRAVLJANJA PROMJENAMA
Učešće Podrška korisniku
klijenta u
odlučivanju! PROVJERA
Klijent zahtjeva za
promjenom
Podnošenja
zahtjeva za Nevalidan Validan
promjenom
šk.god.2020/2021
Organizacija softverskog projekta,
Razvoj proizvoda ZATVARANJE REGISTROVANJE
zahtjeva za zahtjeva za
(Odbor za kontrolu ZAHTJEVI ZA promjenom promjenom
promjena) PROMJENAMA
ANALIZA
IZBOR zahtjeva uticaja i cijene
za promjenama
koji se realizuju
MODIFIKACIJA Neuspješno
softvera
TESTIRANJE
ZATVARANJE
softvera 14
zahtjeva za
ZATVARANJE
promjenama koji
zahtjeva za
se ne realizuju Uspješno
promjenom
PRIMJER IZVRŠENJA
PROCESA UPRAVLJANJA PROMJENAMA
ZAHTJEV KORISNIKA
šk.god.2020/2021
Organizacija softverskog projekta,
Prioritet: Visok Željeni datum isporuke: 01.12.2012
Naziv: Automatsko kreiranje storno naloga
Opis: Potrebno je napraviti funkcionalnost automatskog kreiranja storno
naloga na osnovu postojećeg naloga.
Potrebno prihvaćanje: Da Broj zahtjeva iz vanjskog sistema: 56/12
Kriteriji prihvaćanja: -
Prilozi: 15
šk.god.2020/2021
Organizacija softverskog projekta,
postojeće), određuje se da li je naplativo ili nije i dodjeljuje se nekom od
Rješavatelja – osoba određenih za izvršenje zahtjeva. Pri tome se mogu
unijeti i dodatna polja koja mogu pomoći rješavanje zahtjeva.
Rješavatelj će sam ili uz pomoć saradnika izvršiti analizu zahtjeva (kako ga
realizovati, koje su posljedice i koja je procjena potrebnog rada). Na osnovu
toga će popuniti polja kao npr:
Rezultati analize: Zahtjev se može realizovati. Pri tome treba imati u vidu da su
procedure vezane za temeljnicu smještene u paketu procedura TEM. Dodavanje ove
funkcionalnosti ne remeti rad ostalih funkcionalnosti. Voditi računa da se prava za
storniranje dodijele posebnoj roli jer ova funkcionalnost iziskuje nadzor izvršenja.
Bilježiti u log svako izvršenje
Opis rješenja: Na formi TEMELJNICA bi se dodalo dugme Storno naloga. Klikom na to
dugme bi se pozivala procedura TEM.STORNO_NALOGA i proslijedio parametar
Broj_naloga_za_storno. Kreirala bi se tabela STORNO_NALOZI_LOG u kojoj bi se
bilježili podaci o tome koji korisnik, za koji nalog i kada je pokrenuo kreiranje storno
naloga. Kreirala bi se rola STORNO_NAL ... 16
Procjena potrebnog vremena: 16:00 (inžinjer sati)
Planirani datum isporuke: 21.10.2012
PRIMJER IZVRŠENJA
PROCESA UPRAVLJANJA PROMJENAMA
Na osnovu kreiranog opisa i procjene Klijent vrši analizu da li prihvatiti ili
odbiti zahtjev (cost/benefit).
Ako klijent prihvati zahtjev onda se njegov status mijenja u PRIHVAĆEN,
a ako ne prihvati onda se status može promijeniti u OTKAZAN ili se može
šk.god.2020/2021
Organizacija softverskog projekta,
vršiti dopuna zahtjeva i druge izmjene.
Kada Rješavatelj dobije obavijest (mail notifikaciju) da je zahtjev prihvaćen
tada ulazi u realizaciju istog. Pri tome u prilogu zahtjeva (kao zabilješku,
ili dokument prilog i sl.) bilježi sve što je potrebno za uspješnu realizaciju
zahtjeva, uključujući i korespondenciju s Klijentom. Prilikom realizacije
zahtjeva Rješavatelj troši vrijeme, o čemu vodi zabilješku uz zahtjev.
Obično se unosi utrošeno vrijeme, interno (planirano) utrošeno
vrijeme, razlog (šta je rađeno), kategorija posla i sl.
Nakon što Rješavatelj završi izmjenu softvera i uspješno je testira,
priprema isporuku korisniku (koje komponente i koje verzije se
postavljaju i na koji način) te istu postavlja kod korisnika ili predaje
korisniku da je sam postavi (zavisi od Ugovora).
Prilikom pripreme isporuke se u poljima koja opisuju izvršenje zahtjeva
bilježi npr: koje komponente se isporučuju, kako se instaliraju i sl.
17
Prilikom isporuke se bilježi datum i vrijeme isporuke ta ostale bitne stvari.
PRIMJER IZVRŠENJA
PROCESA UPRAVLJANJA PROMJENAMA
Nakon isporuke se neko vrijeme čeka da povratnu informaciju od strane
korisnika – rok za validaciju i primjedbe od strane korisnika.
Ukoliko nema primjedbi od strane korisnika ili korisnik potvrdi uspješnu
validaciju onda se zahtjev ZATVARA. Pri tome se bilježi datum
šk.god.2020/2021
Organizacija softverskog projekta,
zatvaranja. Zatvaranjem zahtjeva se daje signal da se isti može fakturisati
Klijentu, odnosno naplatiti od njega. Faktura glasi na uslugu
modifikacije softvera po zahtjevu #broj, količina je broj procijenjenih
sati a cijena sata je određena posebnim Ugovorom.
šk.god.2020/2021
Organizacija softverskog projekta,
riješena.
Dešava se prijava nedostatka softvera zbog nedovoljnog poznavanja
upotrebe softvera, odnosno pogrešnog razumijevanja raspoloživih
funkcionalnosti.
Ponekad postoje funkcionalnosti koje nisu dokumentovane pa ih korisnik
vidi kao nedostatak softvera. It's not a bug; it's an undocumented
feature!
Ponekad je izmjena kritična i može dovesti do zaustavljanja rada
sistema. Zbog toga se takve isporuke puštaju u produkciju s velikim
oprezom (procijeniti rizik po poslovanje) i naravno planski – sačuvati
prethodno stanje, uraditi to u vrijeme poslovne nekativnosti Klijenta
(vikend npr.) da bi se u slučaju neuspjeha moglo vratiti staro stanje, i sl.
19
Prilikom promjena voditi računa i o ciklusima (iteracijama) izgradnje
softvera.
PROCES UPRAVLJANJA PROMJENAMA
Ukoliko se radi o upravljanju promjenama na softveru koji
je generalne namjene (npr. CAD softver) onda uključenost
Klijenta nema uticaja na donošenje odluka, nego se odluke
donose na bazi marketinških analiza, preporuka inžinjera u
šk.god.2020/2021
Organizacija softverskog projekta,
timu i sl.
U ovakvim slučajevima se proces može znatno pojednostaviti da
se ne gubi puno vremena na administriranje zahtjeva.
šk.god.2020/2021
Organizacija softverskog projekta,
vraćanje na prethodnu verziju ako iz nekog razloga promjene nisu
prihvaćene.
Sinhronizaciju, koja omogućava da korisnik ima sinhroniziranu
lokalnu kopiju kako bi lokalno imao uključene i promjene koje
prave drugi korisnici.
Popularni alati su:
Git – besplatni i open-source alat za kontrolu verzija.
Team Foundation Server – grupa alata i tehnologija koje
omogućavaju koordinaciju i kolaboraciju tima u izgradnji proizvoda.
Ansible – je alat otvorenog kôda koji pored upravljanja
konfiguracijom nudi i mogućnosti vezane za automatizaciju
isporuke i drugih zadataka. 21
... Desktop Central, CFEngine, Puppet, Spinnaker, ...
UPRAVLJANJE VERZIJAMA
Upravljanje verzijama (version management –VM) je proces praćenja
različitih verzija softverskih komponenti ili konfiguracijskih stavki, te
sistema u kojima su te komponente ugrađene.
Osim toga se osigurava i da se izmjene koje se vrše paralelno
šk.god.2020/2021
Organizacija softverskog projekta,
međusobno ne preklapaju.
U osnovi se na upravljanje verzijama može gledati kao na upravljanje
sekvencom odobrenih verzija kôda (codeline) i odobrenim konfiguracijama
sistema (baseline).
Baseline se može specificirati kroz konfiguraciju sistema. Npr. navede se
tačna verzija kôda – X.1.2 ili samo identifikator komponente (X). Ako se
navede samo identifikator komponente onda se misli na zadnju validnu
verziju.
Za upravljanje verzijama se koriste alati kao npr. CVS (open-source) ili
Subversion (open-source) ili Serena PVCS Version Manager (komercijalni).
Alati za upravljanje verzijama osiguravaju sljedeće funkcionalnosti:
identifikaciju verzija i release-a, upravljanje pohranjivanjem, vođenje 22
istorije promjena, istovremeno mijenjanje komponente, podrška projektima
koji dijele komponente, ...
UPRAVLJANJE VERZIJAMA
Codeline (A) Baseline – V1
šk.god.2020/2021
Organizacija softverskog projekta,
L1 L2 Ex1
Codeline (B)
L1 L2 Ex1 Ex2
23
UPRAVLJANJE VERZIJAMA
Datum kreiranja
Sekvenca verzija
šk.god.2020/2021
Organizacija softverskog projekta,
Verzija Verzija Verzija Verzija
1.0 1.1 1.2 1.3
Tekuća
(zadnja)
verzija
V1.3
D1 D2 D3 izvorni kôd
Struktura pohranjivanja
check_out B
šk.god.2020/2021
Organizacija softverskog projekta,
C
B B 1.1 B 1.2
EMIR
C C 1.1 C 1.2 C 1.3
Workspace (U2)
check_in
P P 1.1 P 1.2 X
check_out Y
Q Q 1.1 C
Primjer: Dvije osobe istovremeno mijenjaju komponentu C. Prva
osoba koja uzme komponentu C će uraditi check_out. Kada druga
X X 1.1 X 1.2 osoba zatraži tu komponentu sistem će je upozoriti da je već uzeta
komponenta. Ako korisnik ipak želi tu komponentu može je dobiti ali
će izmjene na njoj predstavljati odvojenu granu u odnosu na 25verziju
koju će vratiti prva osoba. Nakon što se uradi check_in, obje verzije
Y Y 1.1 komponente C će postojati u odvojenim granama. Naravno, uvijek se
može sačekati da se komponenta oslobodi i da ne dođe do formiranja
grane – zavisi šta se želi.
UPRAVLJANJE VERZIJAMA
Moguće je npr. da su osobe iz prethodnog primjera formirale TAG (LABEL):
istovremeno dvije verzije (V2.1.1 i V2.2) i napravile novu
granu a da su radile na različitim dijelovima koda iste
Neke verzije koda
komponente (njihovi dijelovi koda se ne preklapaju). Nakon se mogu označiti iz
toga (odmah ili nakon još nekoliko verzija u odvojenim određenog razloga.
granama) se može izvršiti spajanje i ukinuti nepotrebna
grana. Codeline 2.1
šk.god.2020/2021
Organizacija softverskog projekta,
<branch>
V2.1.1 V2.1.2
Codeline 2
<branch>
šk.god.2020/2021
Organizacija softverskog projekta,
sa sistemom za upravljanje verzijama da bi mogao dobiti adekvatne
verzije komponenti koje ulaze u cjelinu.
Izgradnja sistema je kompleksan proces koji je podložan greškama jer u
njemu mogu učestvovati tri različite platforme:
RAZVOJNI CILJNI
SISTEM SISTEM
Izgradnja Testno Ciljna platforma je
Razvojni okruženje
Realno
okruženje
Izvršni okruženje u kome će
sistema (simulacija
zbog alati realnog
(teško ga je sistem se sistem izvršavati i
simulirati) može se razlikovati
testiranja i okruženja)
sl. Privatni radni Ciljna od razvojnog. Ciljna
platforma može biti
prostor VMS i Build platforma
ugrađeni sistem ili
sistem ograničenih
mogućnosti.
check_out SISTEM ZA (co) SERVER ZA
(co) UPRAVLJANJE IZGRADNJU
Server za izgradnju
VERZIJAMA SISTEMA konačne verzije sistema.
27
check_in
Usko sarađuje sa VMS i
može se oslanjati na
vanjske komponente.
Agilne metode traže čestu izgradnju
sistema pa se primjenjuje
IZGRADNJA SISTEMA (BUILD) kontinuirana integracija sistema kao
što je prikazana na slici. Nije uvijek
primjenjivo (veliki sistemi razlika
između testne i ciljne platforme i sl.)
SISTEM ZA
Privatni radni
UPRAVLJANJE
prostor
VERZIJAMA Testovi
neuspješni
šk.god.2020/2021
Organizacija softverskog projekta,
Izgradnja i Izgradnja i
Check_out Pravljenje
testiranje testiranje
MAINLINE promjena
sistema sistema
Testovi
Check_in u uspješni
Build server
Testovi Smjestiti
promjene u
28
uspješni
VM
UPRAVLJANJE RELEASE-IMA
Release je verzija koja se isporučuje klijentu.
Softver za masovnu upotrebu obično ima dvije vrste release-a:
Major (veliki) release – uključuje značajne nove funkcionalnosti; očekuje se naplata
istog.
šk.god.2020/2021
Organizacija softverskog projekta,
Minor (mali) release – uključuje popravljene nedostatke softvera; obično se isporučuje
besplatno.
Kada se proizvede release mora se dobro dokumentovati tako da se može
kreirati ponovo u budućnosti. Važno je zabilježiti komponente koje ulaze u
release, ali je važno zabilježiti i okruženje na kome je rađena izgradnja
istog (build).
Važno je planiranje kada će i kog obima biti pušten novi release.
Ako to zahtjeva određene promjene kod klijenta onda može naići na
negativan odziv.
Postoji niz faktora koji se razmatraju kada se donosi odluka kada pustiti
novi release. Neki od najvažnijih su: tehnički kvalitet sistema, promjene na
platformi, 5-to Lehman-ovo pravilo (release sa puno novih funkcionalnosti
će vjerovatno morati biti propraćen sa release-om za popravljanje 29
nedostataka), konkurencija, očekivanja tržišta, dogovor sa klijentom, ...
LEHMAN-OVA PRAVILA VEZANA ZA
PROMJENE SISTEMA (EVOLUCIJU SISTEMA)
1. Kontinuirano prilagođavanje (continuing change). Program koji se
koristi u realnom okruženju se mora prilagođavati istom, ili će njegov stepen
prilagođenosti okruženju progresivno opadati.
2. Rast kompleksnosti (increasing complexity). Evolucijom struktura
programa postaje sve kompleksnija. Dodatni resursi se moraju odvojiti da bi se
šk.god.2020/2021
Organizacija softverskog projekta,
očuvala jednostavnost.
3. Evolucija velikih programa (large program evolution). Evolucija
programa je samo-regulativan proces. Atributi sistema (veličina, vrijeme
između release-a, broj prijavljenih nedostataka i td.) su približno nepromjenjivi
za svaki release.
4. Organizacijska stabilnost (organizational stability). Tokom života
programa stepen njegovog razvoja je približno konstantan i nezavisan od
resursa namijenjenih razvoju tog sistema.
5. Očuvanje poznavanja programa (conservation of familiarity). Tokom
života programa, inkrementalna promjena u svakom release-u je približno
konstantna.
6. Kontinuirani rast (continuing growth). Da bi se očuvalo zadovoljstvo
korisnika količina funkcionalnosti mora rasti.
7. Opadanje kvaliteta (declining quality). Kvalitet sistema će opadati ako se
ne prilagaođava promjenama okruženja.
8. Sistem povratne sprege (feedback system). Proces evolucije uključuje 30
mnoge različite povratne sprege koje se mogu posmatrati kao jedan sistem koji
služi značajnom unaprjeđenju proizvoda (softvera).
UPRAVLJANJE RELEASE-IMA
Release pored izvršnog programa može uključivati:
konfiguracione fajlove
podatke potrebne za funkcionisanje sistema
instalacijski program
šk.god.2020/2021
Organizacija softverskog projekta,
dokumentaciju (elektronsku i papirnu)
pakovanje i reklamu
Važno je naglasiti na koje prethodne release se može primijeniti novi
release. Npr. ako neko ima rel.1 i nije instalirao rel.2 a želi instalirati
rel.3, da li je to moguće. Poželjno je da je moguće, ali nije pravilo da to
jeste tako.
Klijenti ne shvataju uvijek važnosti primjene određenog release-a, a
moguće je da taj release otklanja neke važne nedostatke koji su vezani
za sigurnost i sl.
31