Иди на текст

Софтвер као производ и појам квалитета

У свакодневном говору често се мешају појмови "програм", "апликација", "софтвер", "софтверски производ"... Међутим, из угла софтверског инжењерства, постоји значајна разлика.

Шта чини софтвер ПРОИЗВОДОМ?

Софтверски производ је комплетан пакет који се испоручује кориснику, а који поред самог извршног кода садржи и документацију, конфигурационе податке, лиценцу и канал за подршку (а понекад и изворни код).

За разлику од "једноставних" програма које си до сада писао у школи или за сопствене потребе, софтверски производ мора бити:

  • Поуздан: да ради предвидиво.
  • Документован: да корисник и други програмери знају како се користи и одржава.
  • Дизајниран за корисника: а не само за онога ко га је писао.

Врсте софтверских производа

Према намени и циљној групи, софтверски производи деле се у две главне групе:

  • Општи (генерички) производи: Развијају се за отворено тржиште и намењени су широком кругу корисника. Произвођач сам дефинише шта ће софтвер радити (нпр. процесор текста Microsoft Word, рачунарска игра League of Legends).
  • Наменски (прилагођени) производи: Развијају се за конкретног клијента према његовим специфичним захтевима. Клијент одређује функционалности (нпр. информациони систем за одређено предузеће).

Појам квалитета софтвера

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

Како се дефинише квалитет софтвера?

Квалитет софтвера је степен до којег софтвер испуњава утврђене захтеве, као и скривена (имплицитна) очекивања корисника.

Према међународним стандардима (као што је ISO/IEC 25010), квалитет софтвера се посматра кроз неколико кључних карактеристика:

  1. Функционална погодност (Functional Suitability): Да ли софтвер ради све оно што је предвиђено да ради и да ли то ради исправно?
  2. Поузданост (Reliability): Колико је софтвер стабилан? Колико често долази до грешака или пада система?
  3. Употребљивост (Usability/Interaction Capability): Колико је интерфејс интуитиван и лак за коришћење? Може ли корисник без потешкоћа да обави задатак?
  4. Перформансна ефикасност (Performance Efficiency): Колико брзо софтвер ради и колико ресурса троши?
  5. Одрживост (Maintainability): Колико је лако пронаћи и исправити грешку у коду или додати нову функцију у будућности?
  6. Флексибилност/преносивост (Flexibility/Portability): Колико лако се софтвер може прилагодити или пребацити на други оперативни систем, уређај или окружење?
  7. Компатибилност (Compatibility): Да ли софтвер може да ради заједно са другим системима и да размењује податке са њима без проблема?
  8. Безбедност (Security): Колико добро штити податке и спречава неовлашћени приступ?
  9. Безбедност по људе и окружење (Safety): Колико софтвер спречава или смањује ризик од штете по људе, имовину или животну средину?

Зашто је квалитет важан?

У софтверској индустрији, цена исправљања грешке експоненцијално расте кроз време. Ако се грешка уочи тек након што је производ пуштен у рад, њено исправљање може бити и до 100 пута скупље него да је уочена у фази планирања или писања кода (правило 1-10-100: грешка ухваћена у фази захтева кошта 1, у фази тестирања 10, а у продукцији 100 пута или више).

Лош квалитет софтвера може довести до:

  • Губитка новца и времена.
  • Губитка поверења корисника.
  • У критичним системима (саобраћај, безбедност, медицина) до великих материјалних губитака па чак и до губитка људских живота.

У свету развоја софтвера познат је и појам техничког дуга (Technical Debt) - када се свесно развија "брзо и прљаво" решење које касније кошта много више.

Трговина квалитетом

Квалитетне карактеристике често стоје у сукобу! На пример:

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

Добар инжењер не максимизује све, него прави свесне компромисе према контексту.

Задатак

Изабери једну мобилну апликацију коју често користиш.

  1. Оцени њену употребљивост на скали од 1 до 5.
  2. Оцени исту апликацију по још 3 карактеристике (нпр. поузданост, безбедност, одрживост – ако можеш да процениш).
  3. Предложи једну конкретну промену која би највише подигла њен квалитет.

Упореди две апликације исте категорије (нпр. две апликације за еТрговину) и објасни која има бољи укупни квалитет и зашто.