Квалитет на софтвер

## Вовед
**Квалитетот на софтверот**, во софтверското инженерство , се однесува на два поврзани, но различни поими кои постојат секогаш кога се дефинира квалитет во бизнис контекст:

- *Квалитет на функционалностите на софтверот* се однесува на тоа колку софтверот одговара или е во согласност со даден дизајн, врз основа на функционалните барања или спецификацијата. Може и да се опише како дали кодот е подготвен да ја изврши својата цел или како е во споредба со останатите конкурентски производи.

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

Историски гледано, структурата, класификацијата и терминологијата на атрибутите и вредностите кои се применуваат кај управувањето со софтверски квалитет, произлегуваат од ISO 9126-3 и од ISO 25000:2005 модели за квалитет.
Врз основа на овие модели, одликите за квалитетот на структурата на софтверот јасно се дефинирани од страна на Конзорциумот за квалитет на софтверот кај информатичките технологии (англиски: Consortium for IT Software Quality CISQ),
која е независна организација основана од страна на Институтот за Софтверско Инженерство (англиски: Software Engineering Institute) 
и од Object Management Group (OMG).

Конзорциумот има дефинирано 5 значајни одлики кои се потребни за едно парче софтвер да има квалитет. Тоа се: *доверливост, ефикасност, сигурност, одржливост и големина*.

Мерењето на квалитетот на софтверот е со цел да се одреди поединечно до кој степен се секоја од овие 5 одлики. Со мерењето на квалитетот на софтверот на одликите и сумирање на тие мерења, се добива генерална проценка на системот.

## Цел за дефинирање на квалитетот на софтверот
Една изрека на Луис Пастер(англиски:Louis Pasteur) вели: ,,Науката е зрела онолку колку што се зрели нејзините мерни алатки‘‘. Софтверското инженерство го достигна она ниво на зрелост во кое што мерењето на квалитетот на софтверот не е само можност, него потреба поради две причини и тоа:
Управување со ризик - Софтверските падови може да бидат предизвикаат незгоди. Софтверските грешки може да бидат причина за човечки жртви. Грешка во програмирањето е Therac 25, машина за радиотерапија која била компјутерски контролирана, во која имало софтверски недостаток и како резултат на тоа дошло да загуба на човечки живот.

**Управување со трошоците** - Како и во другите инженерски области, барањата за квалитетен софтвер чинат помалку од неговото одржување, и предност е тоа што полесно може да се разбере и лесно промени доколку тоа го бара клиентот.

## Дефиниции
**Доверливост** – се мери нивото на ризик и веројатноста за пад на апликацијата. Исто така се мерат грешките кои се направени по модификацијата на софтверот, неговата ,,стабилност‘‘ како што е дефинирано од страна на Интернационалната Организација за Стандардизација (англиски: ISO).

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

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

**Безбедност** – Се мери колкава е можноста да се наруши безбедноста на системот поради лошото кодирање и лошата архитектура, односно колкава е веројатноста на системот да се одбрани од случајни или намерни напади.. Колку е поголема сигурноста на системот, помала можноста за напад. Ова својство е тешко да се измери.

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

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

Квалитетот на функционалностите на софтверот се дефинира како дали функциите коишто ги поседува системот се во согласност со барањата на клиентот кои се наведени во барањата.

## Наводи