# Ծրագրակազմի պահպանում

**Ծրագրակազմի պահպանումը** ծրագրակազմի ճարտարագիտության մեջ` օգտագործման դրվելուց հետո ծրագրային արտադրանքի փոփոխությունն է` անսարքությունները շտկելու, աշխատանքը բարելավելու և այլնի համար։ Այն համարվում է ծրագրակազմի ծրագրավորման կյանքի ցիկլի (SDLC) մաս։

Մի ընդհանուր ընկալում է, որ ծրագրակազմի պահպանումը պարզապես թերությունները շտկելու համար է, սակայն մի ուսումնասիրություն ցույց է տվել, որ պահպանման աշխատանքի շուրջ 80%-ը ճշտելու գործողությունների հետ կապ չունի։

## Պատմություն

Ծրագրակազմի պահպանման և համակարգերի էվոլյուցիայի մասին առաջին անգամ անդրադարձել է Մեյր Մ․ Լեհմանը 1969թ․։ Քսան տարվա ընթացքում նրա հետազոտությունը հանգեցրեց ծրագրակազմի էվոլյուցիայի Լեհմանի օրենքների ձևակերպմանը։ Նրա հետազոտության հիմնական արդյունքները եզրակացնում են, որ ծրագրակազմի պահպանումը իսկապես էվոլյուցիոն զարգացում է և պահպանման որոշումներն կատարվում են հասկանալով, թե ինչ է տեղի ունենում ծրագրակազմի հետ ժամանակի ընթացքում։ Լեհմանը ցույց տվեց, որ ծրագրակազմերը ժամանակի ընթացքում շարունակում են զարգանալ։

## Ծրագրակազմի պահպանման կարևորությունը

Ծրագրակազմի պահպանման հիմնական խնդիրները ինչպես կառավարչական, այնպես էլ տեխնիկական են։ Կառավարման հիմնական խնդիրներն են՝ հաճախորդների առաջնահերթությունների հետ համապատասխանեցում, անձնակազմի հավաքագրում, պահպանումը իրականացնող կազմակերպության ընտրություն, ծախսերի գնահատում։ Հիմնական տեխնիկական խնդիրներն են` ազդեցության վերլուծություն, փորձարկում, պահպանելիության չափում։ Ծրագրակազմի պահպանումը շատ լայն գործունեություն է, որը ներառում է սխալների ուղղում, կարողությունների բարելավում և օպտիմիզացում։ Քանի որ փոփոխությունն անխուսափելի է,մեխանիզմերը պետք է մշակվեն գնահատման, վերահսկման և փոփոխություններ կատարելու համար։ Այսպիսով, ծրագրակազմի վրա արված ցանկացած աշխատանք իր գործարկելուց հետո համարվում է պահպանման աշխատանք։ Նպատակը ծրագրակազմի արժեքի պահպանումն է ժամանակի ընթացքում։ Արժեքը կարող է բարելավվել `ընդլայնելով հաճախորդների բազան, կատարելագործելով հավելյալ պահանջներ, դառնալով ավելի դյուրին, ավելի արդյունավետ և օգտագործելով ավելի նոր տեխնոլոգիա։

## Ծրագրակազմի պահպանման կատեգորիաները

* **Ուղղիչ պահպանում`** սպառողներին ներկայացվելուց հետո ծրագրային արտադրանքի փոփոխությունը՝ հայտնաբերված խնդիրները լուծելու համար։ Հիմնականում այս կատեգորիայի հետ է ասոցացվում ծրագրակազմի պահպանումը։ Ուղղիչ պահպանումը կարող է ավտոմատացվել սխալների ավտոմատ շտկմամբ և հայտնաբերել սխալները նախքան օգտվողները։
* **Ադապտացվող պահպանում՝** սպառողներին ներկայացվելուց հետո ծրագրային արտադրանքի փոփոխությունը՝ օգտագործումը փոփոխվող միջավայրում ապահովելու համար։ Սա կարող է առաջ գալ սարքախմբի, ամպային պահեստի կամ օպերացիոն համակարգի փոփոխությունների արդյունքում։
* **Կատարելացնող պահպանում՝** սպառողներին ներկայացվելուց հետո ծրագրային արտադրանքի փոփոխությունը՝ աշխատանքը և պահպանումը բարելավելու և առկա պահանջների ու առանձնահատկությունների զարգացման համար։ Այն կարող է ավելացնել և հեռացնել հատկություններ, որպեսզի ավելի արդյունավետ և գործունակ դարձնել ծրագրակազմը։
* **Կանխարգելիչ պահպանում՝** սպառողներին ներկայացվելուց հետո ծրագրային արտադրանքի փոփոխությունը՝ թաքնված անսարքությունները հայտնաբերելու և շտկելու համար։ Այն օգնում է կատարել փոփոխություններ ծրագրակազմին, արպեսզի այն շարունակի աշխատել երկար ժամանակահտվածում և չվատթարանա, պահպանելով ծրագրակազմի կայուն և հասկանալի լինելը։

## Ծրագրակազմի պահպանման գործընթացը

1. Իրականացման գործընթացը պարունակում է ծրագրակազմի նախապատրաստման գործողություններ ինչպիսիք են պահպանման ծրագրի մշակումը, ձևավորումը և ընթացքում հայտնաբերված խնդիրների լուծումը։
2. Խնդիրների և փոփոխությունների վերլուծության գործընթացը, որն իրականացվում է այն բանից հետո, երբ ծրագիրը դարձել է պահպանման խմբի պատասխանատվությունը։ Ծրագրավորողը պետք է վերլուծի յուրաքանչյուր հայտ, հաստատի այն (վերարտադրելով իրավիճակը) և ստուգի դրա վավերությունը, ուսումնասիրի այն և առաջարկի լուծում, փաստաթղթավորի հայտը և լուծման առաջարկը և, վերջապես, ստանա բոլոր անհրաժեշտ թույլտվությունները փոփոխությունները կիրառելու համար։
3. Բուն փոփոխության իրականացումը դիտարկող գործընթացը։
4. Փոփոխության գործընթացի ընդունումը` հաստատելով փոփոխված աշխատանքը հայտը ներկայացրած անհատի հետ` համոզվելու համար, որ փոփոխությունը լուծում է տվել։
5. Տեղափոխման գործընթացը(օրինակ, պլատֆորմի տեղափոխում) բացառիկ է և ամենօրյա պահպանման խնդիրների մաս չէ։ Եթե ծրագրակազմը պետք է տեղափոխվի մեկ այլ հարթակ ՝ առանց գործառույթների որևէ փոփոխության, այս գործընթացը կօգտագործվի, և, ամենայն հավանականությամբ, պահպանման կազմակերպման թիմ է նշանակվելու այս առաջադրանքին։
6. Վերջին գործընթացը՝ ծրագրակազմի որևէ մասի ավարտը։

## Ծանոթագրություններ

## Աղբյուրներ

* Ծրագրակազմի պահպանման տեսակները
* Ծրագրակազմի պահպանման գործողությունները
* Ծրագրակազմի պահպանման և էվոլյուցիայի ակնարկ

## Գրականություն

* Կ․Հ․ Բեննետ, Վ․Տ․Ռաժլիչ՝ <<Software Maintenance and Evolution>>
* Ա․Ապրիլ, Ա․Աբրան՝ <<Software Maintenance Management Evaluation and Continuous Improvement>>
* Փ․Գրաբբ,Ա․Ա․Տականգ՝ <<Software Maintenance Concepts and Practice>>

## Արտաքին հղումներ

* Ծրագրակազմի պահպանման սահմանումները
* Լեհմանի օրենքները
* Ծրագրակազմի պահպանման խնդիրները