Վերահսկման կառավարում

Վերահսկման կառավարումը (նաև հայտնի է որպես թողարկման կառավարում, աղբյուրի կառավարում կամ (աղբյուրի) կոդի կառավարում ((source) code management- SCM)) փաստաթղթերում, ծրագրերում և որպես համակարգչային ֆայլեր պահպանված այլ տեղեկություններում կատարվող փոփոխությունների կառավարումն է։ Դա առավել հաճախ օգտագործվում է ծրագրերի զարգացման մեջ, որտեղ մարդկանց թիմը կարող է միևնույն ֆայլերը փոփոխել։ Փոփոխությունները սովորաբար նշվում են թվային համարով կամ տառային կոդով, որ կոչվում է «վերահսկման համար», «վերահսկման մակարդակ», կամ պարզապես «վերահսկում» և այլն։ Օրինակ՝ ֆայլերի սկզբնական մի հավաքածուն էլ ինքնին “վերահսկում 1” է։ Երբ կատարվում է առաջին փոփոխությունը, արդեն ֆայլերի երկրորդ հավաքածուն դառնում է «վերահսկում 2», և այդպես շարունակ։ Յուրաքանչյուր վերահսկումն ասոցիացվում է ժամանակային կնիքի ու այն անձի հետ, որ կատարում է այդ փոփոխությունը։ Վերահսկումները կարող են համեմատվել, վերադարձվել, և, ֆայլերի որոշ տիպերի դեպքում՝ միաձուլվել։
Թողարկման կառավարման համակարգերը (Version control systems- VCS) ամենից հաճախ հենց ինքնաբավ/անկախ ծրագրերն են, բայց վերահսկման կառավարումը նաև ներմուծված է լինում ծրագրերի զանազան տեսակների մեջ, օրինակ՝ ուորդ փրոցեսըրս (word processors) տեսակի, ինչպիսք են Մայքրոսոֆթ Ուորդ (Microsoft Word), Օփըն Օֆիս Օրգ Րայթըր (OpenOffice.org Writer), ԿեյՕֆիս (KOffice), Փեյջիս (Pages), կամ Գուգըլ Դոքս Սփրեդշիթս (Google Docs Spreadsheets ), ինչպես օրինակ՝ Օփըն Օֆիս Օրգ Քալք (OpenOffice.org Calc), Գուգըլ Սփրեդշիթս (Google Spreadsheets), Մայքրոսոֆթ Էքսել (Microsoft Excel)) և զանազան բովանդակա-կառավարման համակարգերում։ Ինտեգրացված վերահսկման կառավարումը վիքի ծրագրային փաթեթների որոշիչ հատկանիշ է, օրինակ՝ Մեդիա Վիքի (Media Wiki), ԴոկուՎիքի (DocuWiki), ԹՎիքի (TWiki) և այլ ծրագրերում։ Վիքիներում վերահսկման կառավարումը թույլ է տալիս էջը ետ բերել նախկին վիճակին, ինչը չափազանց կարևոր է՝ խմբագիրներին թույլ տալու համար միմյանց խմբագրումներին հետևել, սխալներն ուղղել և պահպանել հասարակայնորեն բաց վիքիները վանդալիզմից և սփամից։
Վերահսկման կառավարման համար նախատեսված ծրագրային գործիքները արագորեն ճանաչում են ստանում որպես բազմա-հեղինակ ծրագրերի կազմակերպման համար անհրաժեշտ գործիքներ։


== Հակիրճ ներկայացում ==
Ինժեներական վերահսկման կառավարման զարգացումը սկսվեց նախնական օրինակներին կամ բլուլայն-երին (bluelines) հետևելու ֆորմալացված պրոսեցներից։ Այս կառավարման համար հատուկ էր կառուցվածքի ցանկացած ավելի վաղ վիճակին վերադառնալու կարողությունը, այն դեպքերում, երբ կառուցվածքի զարգացման հարցում արդեն ինժեներական լճացման պահն էր հասունացել։
Այդպես էլ համակարգչային ծրագրերի ինժեներիայում՝ վերահսկման կառավարումը ցանկացած այն գործունեությունն է, որը հետևում և կառավարում է աղբյուր կոդի մեջ կատարված ցանկացած փոփոխությունները։ Ծրագիր գրողները երբեմն օգտագործում են վերահսկման կառավարման ծրագրեր՝ փաստաթղթային և կոնֆիգուրացիոն ֆայլերի, ինչպես նաև աղբյուր կոդի հետ աշխատելիս։
Նաև՝ թողարկման կառավարումը լայնորեն տարածված է բիզնեսի և օրենքների դաշտում։ Փաստորեն, «կոնտրակտային կարմիր գիծ»-ը և «օրենսդրական սև գիծը» վերահսկման կառավարման ամենից վաղ ձևերից են, և մինչև օրս դեռ օգտագործվում են բարդության տարբեր աստիճաններով։ Մի ողջ արդյունաբերություն է առաջացել՝ բիզնեսի և այլ օգտագործողների փաստաթղթերի վերահսկման կառավարման կարիքներին ծառայելու համար, և այս շրջաններում օգտագործվող վերահսկման կառավարման տեխնոլոգիայի որոշ տեսակներն աննկատ են, հզոր և նորարարական։ Ամենից բարդ տեխնիկաները սկում են օգտագործվել Քադ (CAD) ֆայլերի (տես՝ արտադրանքի տեղեկությունների ղեկավարում) փոփոխությունների էլեկտրոնային հետևման համար, որով դուրս է մղվում վերահսկման կառավարման դասական, այն է՝ ձեռքով կատարվող էլեկտրոնային պրոցեսները։
Հենց որ ծրագիրն արդեն նախագծվում, զարգացվում ու դրվում է կիրառության մեջ, չափազանց հաճախ է պատահում, որ միևնույն ծրագրի բազմաթիվ թողարկումներ կիրառվեն տարբեր կայքերում, և որպեսզի տվյալ ծրագրի հեղինակներն միաժամանակ աշխատեն դրանց թարմացման ու արդիականացման վրա։ Վիրուսներն (bugs) ու ծրագրերի հետ կապված այլ խնդիրները հաճախ առկա են միայն որոշ թողարկումներում (քանի որ որոշ խնդիրներ շտկվում, և նորերն են ի հայտ գալիս, ծրագրի զարգացմանը զուգընթաց)։ Այդ պատճառով, վիրուսներին գտնելու ու դրանցից ձերբազատվելու նկատառումով, չափազանց կարևոր է կարողանալ ծրագրի զանազան տարբերակներ աշխատեցնել՝ տեսնելու համար, թե կոնկրետ որի (որոնց) մեջ է խնդիրն առաջացել։ Հնարավոր է անհրաժեշտ լինի նաև միևնույն ծրագրի երկու մրցակից տարբերակներ ստեղծել (օրինակ՝ որոնցից մեկում արդեն վերացված են վիրուսները, սակայն չկան որևէ նոր հատկանիշներ, իսկ մյուսում արդեն զետեղված են որոշ նոր հատկանիշներ)։
Պարզագույն մակարդակում ծրագրեր ստեղծողները կարող էին ուղղակի միևնույն ծրագրի տարբեր թողարկումների բազմաթիվ կրկնօրինակներ հավաքել, ու դրանք հերթով համարակալել։ Այս պարզ մոտեցումն օգտագործվել է բազմաթիվ խոշոր ծրագրային նախաձեռնություններում։ Չնայած այս մոթոդը կարող է աշխատել, այն այնքան էլ արդյունավետ չէ, քանի որ անհրաժեշտ է դառնում գլուխ դնել գրեթե նույնանման մեծաթիվ կրկնօրինակների հետ։ Սա ծրագրի հեղինակներից մեծ ինքնակազմակերպում է պահանջում և հաճախ կարող է սխալների բերել։ Արդյունքում ստեղծվեցին վերահսկման կառավարման պրոցեսն ամբողջությամբ կամ մասնակիորեն ավտոմատացնելու կոչված համակարգեր։
Ավելին, ծրագրաստեղծման և այլ միջավայրերում, ներառյալ օրենսդրական և բիզնես պրակտիկան, արագորեն աճում է այն տենդենցը, որ մի եզակի փաստաթուղթը կամ մի կոդի պատառիկը խմբագրվում է այնպիսի թիմի կողմից, որի անդամներն աշխարհագրորեն ցրված լինեն և/կամ ունենան տարբեր, նույնիսկ հակառակ հետաքրքրություններ։ Վերահսկողության կառավարման բարդ տարբերակը, որը հետևում ու ստուգում է փաստաթղթերի և կոդերի հանդեպ սեփականության իրավունքը, կարող է անասելիորեն օգտակար և անհրաժեշտ լինել նման իրավիճակներում։
Վերահսկման կառավարման կիրառման մեկ այլ տարբերակ է կոնֆիգուրացիոն ֆայլերի հետ կատարված փոփոխություններին հետևելը, ֆայլեր, ինչպիսիք սովորաբար պավում են in/etc կամ /usr/local/etc ձևերով, Յունիքս (Unix) համակարգերում։ Սա սիստեմային ադմինիստրատորներին մեկ այլ հնարավորություն է ընձեռում ավելի հեշտությամբ հետևել կոնֆիգուրացիոն ֆայլերի հետ կատարվող փոփոխություններին, ինչպես նաև ետ կանչել փոփոխությունները նախկին վիճակներին, եթե դա անհրաժեշտ լինի։