U ovoj lekciji obrađivaćemo:
Prilikom izgradnje softvera neminovno se dešavaju promene. Pošto se dešavaju moraju da se kontrolišu na efikasan način. Upravljanje softverskom konfiguracijom (eng. Software Configuration Management - SCM) je aktivnost praćenja i kontrolisanja promena u softveru. To je skup aktivnosti koje su dizajnirane radi kontrole promena putem identifikovanja proizvoda rada koji će se verovatno promeniti, ustanovljavanjem relacija među njima, definisanjem mehanizama za upravljanje različitim verzijama ovih proizvoda rada, kontrolisanje promena koje su nametnute, vođenje dnevnika i izveštavanje o promenama koje su napravljene.
Recimo da su Petar i Ivana pisci stručnih literatura i oboje rade na promenama u tehničkom priručniku. Tokom sastanka, njihov menadžer dodeljuje im po deo postojećeg dokumenta koji treba ažurirati.
Tehnički priručnik se nalazi u računaru, kome Petar i Ivana mogu pristupiti. Bez ikakvog alata za upravljanje ili procesa na tom mestu, broj problema može narasti. Jedan od mogućih scenarija je da računari gde se dokumenta nalaze budu podešeni tako da Petar i Ivana ne mogu zajedno raditi na priručniku u isto vreme tj. ne mogu pristupiti istovremeno tom dokumentu na svojim računarima. To će znatno usporiti njihov rad.
Više loših situacija nastaje kada računar dopušta otvaranje dokumenta od strane oba autora (Petar i Ivana) u isto vreme. Može se desiti sledeće:
Ovaj primer pokazuje kako nastaje problem ako nema kontrole na svakoj kopiji tehničkog priručnika. Naime, kad Ivana snimi svoje promene, ona briše promene koje napravio Petar, jer ponovnim snimanjem istog dokumenta računar pamti poslednje izmene.
To je tačno primer situacije koju sistem za upravljanje konfiguracijom (eng. Configuration Management - CM) može kontrolisati. Sa CM sistemom, oba autora, Petar i Ivana "overavaju" svoje kopije tehničkih priručnika i rade na njima. Kada Petar snimi njegove promene, sistem zna da i Ivana ima svoju kopiju na kojoj vrši promene. Kad Ivana snimi svoju kopiju, sistem analizira promene koje su Petar i Ivana napravili i kreira novu verziju priručnika koja spaja sve promene zajedno.
CM sistemi imaju niz mogućnosti pored upravljanja istovremenih promena. Mnogi sistemi kreiraju arhivu svih verzija dokumenta, od prvog trenutka kada je stvoren. U slučaju tehničkih priručnika, ovo može biti vrlo korisno kada korisnik ima staru verziju priručnika i može postaviti neka osnovna pitanja autorima priručnika. CM sistem omogućava da autor pristupiti staroj verziji i pogleda šta korisnika interesuje.
CM sistemi su posebno korisni pri kontroli izmene softvera. Takvi sistemi se nazivaju sistemi za upravljanje softverskim konfiguracijama (eng. Software Configuration Management - SCM). Ako se razmatra veliki broj pojedinačnih datoteka izvornog koda u velikoj softverskoj organizaciji i postoji veliki broj inženjera koji izvršavaju izmene istih, jasno je da je SCM sistem neophodan.
SCM sistemi se temelje na jednostavnoj ideji: konačne kopije datoteka su smeštene u centralno skladište. Korisnici proveravaju kopije datoteka iz skladišta, rade na tim kopijama, a kada završe ponovo ih snimaju. SCM sistemi upravljaju i prate izmene koje vrše korisnici.
Svi SCM sistemi obezbeđuju sledeće bitne osobine:
Pogledajmo detaljnije svaku od tih osobina.
Upravljanje konkurentnošću
Konkurentnost se odnosi na istovremeno uređivanje datoteka od strane više ljudi. S obzirom na veliko skladište, zapravo je cilj da veći broj ljudi ima pristup dokumentima, što opet može dovesti do određenih problema.
Razmotrimo jednostavan primer. Pretpostavimo da smo dopustili inženjerima da izmene istu datoteku istovremeno u centralnom skladištu izvornog koda. Klijent 1 i Klijent 2 trebaju da naprave promene u datoteci u isto vreme:
Očigledno, ne želimo da se to dogodi. Čak, iako se kontoliše situacija tako što dva inženjera rade na dvema kopijama umesto da rade direktno na glavnoj datoteci (kao što je prikazano na slici), opet se nekako te promene moraju ažurirati. Većina SCM sistema rešava ovaj problem dopuštajući većem broju inženjera da urade check-out datoteke (ili sync na slici) i ukoliko je potrebno izvrše promene. SCM sistem zatim pokreće algoritam za spajanje tih promena kada se uradi check-in datoteke (ili submit na slici) i vraća ih u skladište (Slika 1).
Ovi algoritmi mogu biti jednostavni (pita se inženjer za rešavanje izmene na konfliktima) ili složeniji (utvrditi kako spojiti promene i pitati inženjera samo ako se sistem stvarno zaglavi).
Slika 1. Ilustracija konkurentnosti (izvor: Google Code)
Verziranje
Verziranje se odnosi na praćenje datoteka i omogućava ponovno stvaranje prethodne verzije datoteke. To se radi kreiranjem arhive kopije svake datoteke u skladištu, ili snimanjem svake promene datoteke. U svakom trenutku možemo koristiti arhivu ili promeniti podatke za izradu prethodnih verzija. Verzirani sistemi takođe mogu kreirati log izveštaje ko je napravio promene, kada su urađene i šta je promenjeno.
Sinhronizacija
Sa nekim SCM sistemima, pojedinačni fajlovi se uzimaju i vraćaju (check-in, check-out) iz skladišta. Bolji sistemi omogućuju chek-in više fajlova odjednom. Inženjeri proveravaju sopstvene datoteke, završavaju ih i rade na njima ako je potrebno. Oni su tada napravili njihove izmene i ažurirali svoje kopije (check-in) da bi ostali u toku sa promenama koje su napravili drugi inženjeri. Ovaj proces se naziva sinhronizacija.
Subversion
Jedan od primera je Subversion (SVN), open-source sistem za kontrolu verzija. Ima sve osobine koje su predhodno opisane.
SVN primenjuje jednostavne metodologije kada dođe do konflikta. Konflikt je kada dva ili više inženjera naprave različite izmene u istoj oblasti osnovnog koda, i onda pošalju njihove izmene. SVN samo obaveštava inženjere da je nastao konflikt, a inženjeri to trebaju da reše.
U sledećoj tabeli su prikazane i ostale Software Configuration Management alatke koje se najčešće koriste:
Naziv |
Proizvođač |
AccuRev |
AccuRev |
AllFusion CA-Pan/LCM Configuration Manager |
Computer Associates |
BitKeeper |
BitMover |
Bugzilla |
Mozilla Corporation |
Changelogic |
Webmedia |
ClearCase |
IBM Rational Software |
codebeamer |
Intland |
Configuration Management Kit |
CM Planning Group |
Fossil |
D. Richard Hipp |
Mercurial |
Matt Mackall |
MKS Source |
MKS |
PVCS Professional |
Serena Software |
Perforce |
Perforce Software |
PureCM |
PureCM.com |
Visible System's Razor |
Visible Software |
Sablime |
Lucent Technologies |
SharpForge |
XP Software Services |
StarTeam |
Borland |
Surround SCM |
Seapine |
Synergy/CM |
Telelogic |
Trac |
Edgewall Software |
Vault |
Sourcegear |
Visual Enabler |
Soft Lab |
Visual Source Safe |
Microsoft |
Visual Studio Team System |
Microsoft |
Subversion |
Free Open Source Software |
Tabela1.izvor: WikiPedia