You are on page 1of 18

Elektroenergetski softverski inenjering

Uvod

Izvodjai nastave
Lista izvoaa nastave, kontakt informacije i termini za konsultacije:
http://www.esi.ftn.uns.ac.rs/index.php/predmeti/77-kvalitet

Cilj vebi
Sticanje osnovnih znanja o:

Kontroli revizija
Virtualizaciji
Pisanju testova
Principu automatizacije
Issue management
Statikoj analizi koda

Elektroenergetski softverski inenjering

Revision control

Kontrola revizije
Kontrola revizije (eng. Revision control (RC), Version control (VC)) je proces
upravljanja, praenja i kontrole izmena i verzija podataka (dokumenata,
fajlova, ...)
Svaka izmena se naziva revizijom (eng. revision) i identifikovana je nekim
ID-em
U softverskom inenjeringu, kontrola revizije se najee vri nad izvornim
kodom
Alati ili aplikacije pomou kojih se upravlja verzijama koda, i pomou kojih
se izmene u kodu prate i kontroliu su Sistemi za kontrolu revizija (eng.
Revision Control Systems, RCS)

Sistemi za kontrolu revizije


Sistem za kontrolu revizija je softverska implementacija RC-a koja
omoguava i automatizuje proces nadzora, identifikovanja, uvanja,
spajanja i primenjivanja izmena u fajlovima
Zato koristiti RC sisteme?
Anotacija belee se korisnici koji izvravaju izmene, svaka izmena ima svoj ID i
svaka izmena moe imati pratei komentar
Reverzibilnost mogunost jednostavnog vraanja na neko prethodno stanje,
tj. vraanje na prethodne verzije pre odreenih izmena
Konkurentnost mogunost viekorisnikog rada na istim fajlovima ili
mogunost da svaki korisnik radi na svojim kopijama fajlova

Terminologija RC sistema
Repository (repozitorijum/repo) lokacija ili folder gde se nalaze interni
metapodaci potrebni za rad sistema, sauvana istorija izmena fajlova, kao i
fajlovi izvornog koda (opciono)
Working copy lokalna radna kopija fajlova preuzeta sa nekog
repozitorijuma
Trunk glavno stablo/sekvenca sa revizijama fajlova
Branch odvojena i nezavisna sekvenca dobijena kreiranjem nove sekvence
ili dobijena nakon grananja postojee sekvence
Head poslednja revizija na repozitorijumu tj. vrh sekvence
Conflict situacija kada postoje dve razliite izmene koje su izvrene od
strane dva razliita korisnika u istom fajlu

Operacije RC sistema
Checkout kreiranje radne kopije na osnovu podataka preuzetih sa nekog
repozitorijuma
Commit smetanje izmena sa radne kopije na repozitorijum
Update uitavanje izmena sa repozitorijuma i primenjivanje istih na radnu
kopiju tj. poravnavanje radne kopije sa izmenama na repozitorijumu
Merge spajanje i primenjivanje dve razliite revizije koje se nalaze na dva
razliita branch-a

Podela RC sistema
RC sistemi mogu se podeliti u sledee dve grupe:
Centralizovane
Distribuirane

Centralizovani RC sistemi
Postoji jedan referentni centralni repozitorijum na nekom serveru gde se
uvaju svi potrebni fajlovi, zajedniki za sve korisnike sistema
Na centralnom repozitorijumu se uva istorija izmena svih fajlova
Koriste sledea dva mehanizma za sinhronizaciju izmena od strane vie
korisnika:
Zakljuavanje fajl koji se menja od strane jednog korisnika se zakljua,
spreavajui ostale korisnike da vre izmene, sve dok korisnik ne otkljua fajl
koji je zakljuao
Spajanje razliite izmene izvrene od strane vie korisnika se spajaju i
primenjuju automatski ako je mogue, ili runo ako su izmene u istom fajlu

Osobine centralizovanih RC sistema


Korisnici prosleuju svoje izmene drugim korisnicima preko centralnog
repozitorijuma
Potrebno je vriti sinhronizaciju izmena na repozitorijumu za viekorisniki
reim rada
Kada se nove izmene preuzmu sa centralnog repozitorijuma, one se odmah
primenjuju na radnu kopiju

Distribuirani RC sistemi
Svaki korisnik sistema, pored radne kopije, poseduje svoj lokalni
repozitorijum
Na lokalnom repozitorijumu su sauvane informacije i podaci kao to je
istorija izmena fajlova
Izmene sa repozitorijuma jednog korisnika mogu se slati na/preuzeti sa
repozitorijuma drugog korisnika
Po dogovoru, jedan repozitorijum se moe proglasiti referentnim za sve
korisnike sistema

Osobine distribuiranih RC sistema


Lokalni repozitorijum se nalazi na istoj maini gde je i radna kopija
Komunikacija izmeu radne kopije i lokalnog repozitorijuma se vri offline,
tj. ne mora se uspostaviti posebna veza sa repozitorijumom s obzirom da je
na lokalnoj maini
Kreiranje nove revizije na lokalnom repozitorijumu i njeno objavljivanje su
dve nezavisne operacije s obzirom da kreirana revizija postaje javna samo
ako je preuzeta sa ili poslata na drugi repozitorijum
Kada se izmene sa repozitorijuma jednog korisnika preuzmu i smeste na
repozitorijum drugog korisnika, ne moraju se automatski primeniti na radnu
kopiju drugog korisnika

Arhitektura
Centralizovani RC sistem
(CVS, SVN, ...)

Distribuirani RC sistem
(Hg, Git, ...)

Repozitorijum
Centralizovani RC sistem

Distribuirani RC sistem

Primenjivanje i spajanje Primer


Bob klonira
Alice-in repo

Bob izvri izmene e i f u svojoj radnoj


kopiji i commit-uje ih jedan posle drugog
na svoj repozitorijum. Repozitorijum
sadri dve nove revizije, e i f

Alice izvri izmenu g u svojoj radnoj kopiji


i commit-uje izmenu na svoj repozitorijum.
Repozitorijum sadri novu reviziju g

Bob pull-uje izmene sa Alice-inog


repozitorijuma da se sinhronizuju.
Bob-ova radna kopija se jo uvek
nije promenila, tj. izmene jo nisu
primenjene na fajlove

Primenjivanje i spajanje Primer (nastavak)


Zbog toga to je Bob commit-ovao
svoje izmene nakon clone-a, mora
da merge-uje svoje izmene sa Aliceinim izmenama

Bob commit-uje merge-ovane


izmene na svoj lokalni repozitorijum.
Sad su njegova radna kopija i
repozitorijum poravnati

Alice pull-uje izmene sa Bob-ovog


repo-a na svoj repo. Njena radna
kopija jo uvek nije poravnata sa
njenim repozitorijumom

Alice update-uje svoju lokalnu


kopiju, koja je sada poravnata sa
lokalnim repozitorijumom

Hvala na panji

You might also like