U razvoj bilo kojeg Microsoft-ovog projekta neposredno je uključeno više destina, često i stotina ljudi koji proizvode kod. Ako u tim uračunamo i dizajnere programa, autore dokumentacije, menadžere i beta testere, broj postaje toliki da se u organizaciji rada pojavljuje nekoliko ozbiljnih problema. Pre svih, to su održavanje kompleksne hijerarhije komponenti koje čine projekat, sinhronizacija rada na njima i kontrola razvoja. Kontrola je ključna, jer podrazumeva ne samo upravljanje budućim tokom razvoja, već i održavanje postojećih verzija i njihovo eventualno revidiranje u pravcu novih projekata.
I uz najbolju volju, teško je zamisliti disciplinovan i sinhronizovan tim koji bi uspeo da u nekom dužem periodu razvija kompleksne projekte, a da se u međusobnoj komunikaciji oslanja isključivo na dogovore članova oko toga kada će, ko i kako pristupati pojedinim komponentama projekta. Još je teže zamisliti tim koji u svakom trenutku može da isporuči bilo koju prethodnu verziju softvera. Za manje firme ovo možda i nije presudno, ali da je Microsoft imao takav pristup, teško bi paketi koje svakodnevno koristimo ikada ugledali svetlost dana. Zato je, uporedo sa razvojem komercijalnog softvera, u jednom trenutku započet razvoj softvera koji bi preuzeo na sebe deo problema o kojima je bilo reči na početku teksta. Softver je nazvan Microsoft Delta i vremenom je evoluirao u ono što čini temelj razvoja svakog Microsoft-ovog paketa: Visual SourceSafe.
Uvod u VSS
Koncept koji koristi Visual SourceSafe (VSS) nije nov i, uostalom, nije potekao od Microsoft-a. VSS je predstavnik tzv. Version Control sistema, softvera koji na sebe preuzima kontrolu i evidentiranje svih promena koje se odvijaju tokom razvoja. Svaka SourceSafe baza se sastoji iz jednog ili više projekta, koji mogu biti povezani na različite načine.
Microsoft-ova ideja je da SourceSafe projekat odražava organizaciju datoteka kakva postoji u, uslovno rečeno, konvencionalnom razvoju softvera. Projekat sa svojim poddirektorijumima na disku u SourceSafe-u postaje projekat sa svojim podprojektima. U VSS projekat se stavljaju sve datoteke potrebne za kreiranje paketa - pored datoteka sa izvornim kodom, treba uključiti resurse (bitmape, ikone, kursore) i biblioteke (.LIB, .DLL). Kada se kreira VSS projekat, dalji rad na datotekama zahteva razumevanje principa na kojima SourceSafe funkcioniše.
Osnovni SourceSafe mehanizam počiva na činjenici da u bilo kom trenutku razvoja projekta postoji samo jedna glavna kopija projekta, ona koja se nalazi u SourceSafe bazi. Članovi tima nikada ne rade direktno na datotekama u toj bazi; oni od SourceSafe-a zahtevaju (Check Out) i dobijaju radne kopije, na kojima vrše izmene, dok projekat u bazi ostaje netaknut. Kada se završi sa izmenama, radne kopije se vraćaju natrag u bazu, tako što se opet proslede (Check In) VSS-u, koji ažurira stanje. Jednostavno rečeno, SourceSafe postaje jedini posrednik između vas i vašeg projekta u svakodnevnom radu.
Sa stanovišta zauzeća prostora, bilo bi vrlo nepraktično kada bi se sve prethodne izmene neke datoteke u bazi čuvale u vidu njenih kompletnih kopija. Zato SourceSafe prilikom svakog vraćanja izmenjene kopije u bazu beleži samo izmene u odnosu na prethodnu verziju. Inverzno primenjujući na tekuću verziju sve ranije izmene, može da se stigne do bilo koje prethodne verzije. Svaka izmena izaziva uvećanje internog VSS brojača revizije, koji se vodi za svaku datoteku u svakom projektu. Međutim, broj revizije nije isto što i verzija projekta: za eksplicitno kreiranje verzije projekta, treba na trenutak "zamrznuti sliku", što se obično radi kada se u razvoju stigne do faze u kojoj se kompletirao i testirao određeni skup karakteristika. Tada se projektu dodeljuje labela, čime se olakšava njegovo kasnije rekonstruisanje. Ako se ukaže potreba, bilo koje ranije stanje projekta se dobija jednostavnim referisanjem na odgovarajuću labelu.
Uz SourceSafe, nije neophodno da se članovi tima dogovaraju oko prava pristupa nekoj datoteci: svako će dobiti svoju kopiju od SourceSafe-a, raditi na njoj i vratiti je istim putem natrag. Prilikom vraćanja u bazu mogu nastati dva scenarija. Po prvom, programeri su menjali međusobno nepreklapajuće delove datoteke; u takvoj situaciji VSS će se lako snaći, pa će na tekuću verziju najpre primeniti izmene koje je učinio prvi, a potom i one koje je izvršio drugi programer, naravno u redosledu kojim su vratili datoteku. U drugom, problematičnom scenariju su oba programera radila na istom segmentu datoteke. Tada će se izmene koje je prvi načinio zabeležiti u bazi, ali kada programer koji kasnije bude vraćao datoteku krene da to uradi, SourceSafe će primetiti konflikt i odbiti da datoteku primi, nudeći programeru da sam reši problem editovanjem problematičnog koda. Bez SourceSafe-a, verzija koju je izmenio prvi programer bila bi nepovratno izgubljena!
Postoji i mogućnost da se datoteka od VSS-a preuzme na ekskluzivno korišćenje - dok je ona kod vas, niko je ne može menjati. Koristeći ovakav pristup zaobilazi se onaj problematični scenario, ali se dosta gubi na fleksibilnosti u radu, što bi se sasvim sigurno primetilo kod velikih timova kakve ima Microsoft.
VSS u praksi
VSS može da se koristi na dva načina: u mrežnom okruženju i na lokalnom računaru. Instalacija za višekorisnički rad zahteva dvoprolaznu proceduru: najpre se aktivira Server Setup, kojim SourceSafe administrator instalira neophodne komponente na serveru, odakle će biti pristupačne svim članovima tima. Tom prilikom će se izvršiti i konverzija eventualne postojeće SourceSafe baze u novi format. U drugom prolazu svaki član tima izvodi instalaciju na računaru sa koga će se pristupati SourceSafe bazi (Client Setup). Klijent instalacija nije ono što vam je potrebno za rad na lokalnom računaru, jer neće kreirati ni bazu ni prateće datoteke.
Za varijantu rada u lokalu i za sva eventualna naknadna podešavanja, koristi se opcija Custom Setup, koja dozvoljava da sami izaberete komponente za instalaciju. Na ovaj način možete izabrati SourceSafe verziju za specifičnu platformu (Win 3.1/Win32), izvršiti integraciju u postojeću Visual Basic ili Visual C++ instalaciju, kreirati bazu ili instalirati alate za konverziju VCS podataka iz drugih formata (osim sopstvene Delte, podržan je samo još InterSOLV PVCS).
Za razliku od drugih Microsoft-ovih programerskih alata, SourceSafe nije naročito zahtevan po pitanju hardvera: u najskromnijoj varijanti radiće čak i na računaru na kome je instaliran samo DOS 3.3. SourceSafe postaje Visual SourceSafe na računaru sa nekim Windows operativnim sistemom (3.11/95/NT): na serveru će inicijalno zauzeti dvadesetak megabajta, a na klijent strani negde oko 10 MB. U slučaju Custom instalacije na lokalnom računaru, potrebno je barem 12 MB. Iako može da se koristi kao zaseban program, Visual SourceSafe svoju upotrebljivost ispoljava aktiviranjem kroz Microsoft Visual C++ 4.x okruženje. Nakon instalacije, MSVC postaje "svestan" prisustva SourceSafe-a, pa se datoteke iz postojećeg MSVC projekta jednim potezom ubacuju u VSS projekat i nadalje im se u potpunosti pristupa iz MSVC menija.
Za svakodnevni rad sa VSS bazom napravljen je, u skladu sa modernim trendovima, Visual SourceSafe Explorer. On predstavlja centralno mesto sa koga se upravlja svim projektima. Kroz VSS Explorer kreiraćete nove projekte, uvoditi ili brisati datoteke u postojećim projektima, preuzimati datoteku radi izmene i vraćati novu verziju, deliti datoteku između projekata, pretraživati i pregledati raniju verziju nekog modula koji vam je iznenada zatrebao... sve to jednostavno i pregledno, jednom rečju, vizuelno. Za svaki slučaj, uz VSS Explorer ide i prateća dokumentacija u sada već standardno prepoznatljivom obliku - Books Online. Dokumentacija je takva da ćete se snaći čak i ako ste potpuni početnik: detaljno je objašnjeno sve, od osnovnog koncepta Version Control sistema do upotrebe pratećih alata.
Novosti verzije 5
Verzija 5.0 donosi nekoliko noviteta u odnosu na prethodnu, prvu koja je nosila epitet Visual. Sa programerskog stanovišta bi moglo da se kaže - ništa novo i značajno. Sa stanovišta Web administratora, stvari stoje znatno bolje...
Verovatno najveću novost predstavlja podrška u održavanju Web strana: iole veća prezentacija svakako se sastoji iz kompleksne hijerarhije HTML strana razbacanih u mnoštvu poddirektorijuma. Česte izmene ovih dokumenata nose sa sobom veliki napor i još veću verovatnoću da neka referenca posle izmene neće biti validna. SourceSafe se pokazao kao idealan za snalaženje u u ovakvim situacijama: svi dokumenti koji čine prezentaciju prenose se u Web projekat, a nakon toga su odmah na raspolaganju sve pomenute pogodnosti koje VSS pruža, plus mogućnost da se izvrši automatska provera referenci između dokumenata i formira pregledna mapa njihovih zavisnosti. I sama mapa je HTML dokument, pa se na nju može referisati u dokumentima. Najzad, projekat se u bilo kom trenutku može automatski poslati na zadati lokalni ili Internet server.
Uz ovu verziju se pojavio i SS Archiver, rudimentarni alat za backup/restore VSS baze ili nekog projekta. Za tu svrhu su do sada korišćeni standardni arhiveri poput Zip-a ili Arj-a, pa i tada samo zato da se spakuje čitav data direktorijum u kome SourceSafe drži bazu - dakle bez dodatnih kontrola koje se odnose na integritet i logičku povezanost onoga što je arhivirano. Upravljanje ovim alatom je nešto manje vizuelno: na raspolaganju vam je stara dobra komandna linija.
U sitnije novosti spadaju mogućnost da se projekat ili podprojekat izuzme iz neke operacije koja se rekurzivno primenjuje, poboljšane opcije za poređenje master kopije i radne kopije neke datoteke (i projekta u celini), aktiviranje eksternog editora za izmenu datoteke u skladu sa njenom ekstenzijom i još ponešto.
Kad može Microsoft, mogu i ja
Na primeru samog Microsoft-a se pokazalo da je Version Control sistem poput Visual SourceSafe-a preduslov uspešnog razvoja kompleksnih projekata. Čak i ako ste Usamljeni Programer, još uvek ima razloga da koristite VSS: problem sinhronizacije rada u tom slučaju otpada, ali ostaje potreba za preglednim i pouzdanim vođenjem istorijata izmena i rekonstrukcijom bilo koje ranije faze razvoja projekta. Sasvim dovoljno da bez velikog oklevanja počnete da razmišljate na Safe način.
|