# Одржување на програмска опрема

**Одржувањето на програмска опрема** — поим во програмското инженерство кој ја претставува секоја активност која се прави на програмскиот производ откако ќе биде испорачан на клиентот. Таа активност може да биде изменување на производот поради некои недостатоци, промена поради подобрување на перформансите, променување по барање на корисниците и друго.
Одржувањето на програмската опрема и еволуцијата на системите беше истражувано од страна на Мер Леман (англиски: Meir M. Lehman) којшто ги напишал Леменовите закони за еволуција на програмската опрема.[] Во неговото истражување тој заклучил дека одржувањето е вистински еволуциски развој.
Исто така тој покажал дека системите постојано еволуираат и како што еволуираат стануваат се покомплексни сè додека не им се направи рефакторирање.

## Значење на одржувањето на програмската опрема

Во една студија на Лентц и Свансон (англиски: Lientz and Swanson) е покажано дека најмногу пари се има потрошено во фазата на одржувањето на програмската опрема. Активностите за одржување на програмите се поделени на четири класификации и тоа:

* **Активности за прилагодување** – се оние активности со кои програмската опрема се прилагодува на нова околина (промена на оперативен систем, промена на хардвер).
* **Активности за совршено одржување** – сите промени кои се прават по барање на клиентите, дали било тоа за измена или додавање на ново функциско барање.
* **Активности за исправка** – справување со недостатоците, нивно отстранување откако се пронајдени.
* **Активности за превенција** – активности кои ја зголемуваат одржливоста на програмската опрема и превентивно делуваат за појавување на понатамошни проблеми.

Според нивната студија околу 75 проценти од сите активности се од првите два типа, активности за прилагодување и совршено одржување, додека 21 проценти се од активностите за исправка. И другите студии кои излегле подоцна сите биле слични. Сите студии покажуваат дека крајните корисници имаат значаен придонес во собирањето на анализи и нови барања. Токму тоа е главна причина за проблемите кои настануваат при одржувањето и еволуцијата на програмската опрема. Одржувањето е доста значајна поддисциплина на програмското инженерство, не само поради тоа што се троши голем дел од буџетот, туку и поради фактот што клиентите би загубиле значајни приходи доколку програмската опрема не биде одржувана брзо и правилно.

## Планирање на одржување на програмската опрема

Значаен дел од одржувањето на програмската опрема е нејзиното планирање, кое треба да биде подготвено уште во развојот на програмот. Во него треба да се нагласи како корисниците ќе ги пријавуваат грешките на програмската опрема и како ќе бараат да се направат промени. Треба да се испланира и колкав дел од буџетот ќе бидат одвоени за таквите активности.

Таквите барања за промени и грешки, од страна на корисниците, повторно ќе бидат доставени до тимот задолжен за развој. Одржувањето на програмската опрема е долг процес и може да трае со години, па дури и со децении, и токму поради тоа потребно е да се направи делотворен план во кои ќе бидат дефинирани целите на одржувањето, ќе биде дефинирано како ќе се одвива испораката, трошоците, кој ќе биде задолжен за одржување и друго.

## Процеси кај одржувањето на програмската опрема

Постојат шест процеси кај одржувањето на програмската опрема и тоа:

1. **Процес на примена** – процес во кој се прави подготовката на програмската опрема и планирање на активностите за следните фази, како што се правење на план за одржување и негов концепт, подготовки за справување со проблемите кои се откриени во развојот и следење на управувањето со конфигурацијата на производот.
2. **Процес на проблеми и анализа** – започнува веднаш откако програмската опрема е спремнА за одржување. Инженерите задолжени за одржување, прават анализа на секое барање, кажуваат дали може да биде исполнето, бараат решение како би можело да биде исполнето, го документираат и барањето и решението и бараат авторизација за да можат да ја видоизменуваат програмската опрема и прилагодат на новите барања.
3. **Процес на разгледување на видоизмената** – се разгледува како ќе биде спроведена видоизмената, дали е возможно да се направи тоа.
4. **Процес на одобрување на видоизмената** – се гледа дали е изменето како што треба заедно со клиентот којшто ја го поставил барањето.
5. **Процес на преселба** (пример селидба кон нова подлога) е поразличен процес и не се извршува постојано. Се применува кога програмската опрема треба да биде пренесена на друга подлога, без притоа да биде променета неговата функционалност. Доколку ова треба да се направи, тогаш тоа ќе биде спроведено од страна на тимот од инженери задолжени за одржување.
6. **Процес на пензионирање** – се ,,пензионира‘‘ некој дел од програмската опрема, некоја нејзина функционалност.

## Наводи