U ovoj lekciji obrađivaćemo:

 

Uvod

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.

Konfiguracioni menadžment

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:

    1. Petar otvara dokument na svom računaru i radi na svom delu dokumenta.
    2. Ivana otvara dokument na svom računaru i radi svoj deo.
    3. Petar završava rad i snima ažurirani dokument na računaru.
    4. Ivana završava svoj rad i snima ažurirani dokument na računaru.

 

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.

Upravljanje softverskom konfiguracijom

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:

    • Upravljanje konkurentnošću
    • Verziranje
    • Sinhronizacija



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:

    1. Klijent 1 otvara bar.cpp.
    2. Klijent 2 otvara bar.cpp.
    3. Klijent 1 menja datoteku i snima je.
    4. Klijent 2  menja datoteku i snima je prekopirajući tako promene Klijenta 1



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.

Pojedini termini u SCM

    • Revizija: promene u datoteci ili skupu datoteka. Revizija je kao jedan snapshot u projektu koji se stalno menja.
    • Skladište: mesto gde SVN smešta kompletnu istoriju revizija projekta. Svaki projekat ima jedno skladište.
    • Radna kopija (eng.Working Copy): kopija u kojoj inženjer radi izmene na projektu. Može postojati mnogo radnih kopija datog projekta kod svakog pojedinog inženjera.
    • Check Out : Zahtev za radnom kopijom iz skladišta. Radna kopija pokazuje stanje projekta kada je zahtevan.
    • Commit : Slanje izmene iz radne kopije u centralno skladište. Takođe poznat kao check-in ili submit.
    • Update:  “Donosi” druge promene iz skladišta na radnu kopiju inženjera, ili označava “nevraćene” promene na radnoj kopiji. Ovo je slično sinhronizaciji. Dakle, ažuriranje / sinhronizacija ažurira pojedinačnu radnu kopiju sa kopijama iz skladišta.
    • Konflikt: Situacija kada dva inženjera pokušaju da izvrše izmene u istoj oblasti datoteke. SVN označava konflikt, a inženjeri ih rešavaju.
    • Log message: Komentar koji se dodaje prilikom rada na reviziji i koji opisuje urađene promene. Log daje pregled promena u projektu.


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

Dodaj komentar Sviđa mi se - (0) Ne sviđa mi se - (0)    

  • Uvod u upravljanje softverskom konfiguracijom 1
  • Uvod u upravljanje softverskom konfiguracijom 2
  • Uvod u upravljanje softverskom konfiguracijom 3