Развој софтвера (познат и као развој апликација, дизајн софтвера, дизајнирање софтвера, развој софтверских апликација)[1] представља развој софтверског производа. Израз „развој софтвера“ може да се користи и за рачунарско програмирање, што представља процес писања и одржавања изворног кода, али у ширем смислу укључује све кораке у изради софтвера, почев од дизајна жељеног софтвера, па све до коначног производа. Развој софтвера стога може да укључи истраживање, нови развој, прототипове, измене, поновну употребу, одржавање, или било коју другу активност која доводи до софтверског производа.[2]

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

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

Преглед

уреди

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

  • Анализирање проблема
  • Истраживање тржишта
  • Прикупљање захтева за предложено пословно решење
  • Смишљање плана или дизајна за софтверски-базирано решење
  • Имплементација (програмирање) софтвера
  • Тестирање софтвера
  • Диплојмент
  • Одржавање и отклањање грешака

Зависно од приступа развоју софтвера, ови кораци се могу спровести у другачијем редоследу, а време које им се посвећује може да варира, као и опсежност документације везане за сваки од њих. Ови кораци се могу извршавати сукцесивно ("водопад“ приступ), или се могу понављати кроз неколико циклуса или итерација ("екстремнији“ приступ). У екстремнијем приступу се обично мање времена троши на планирање и документацију, док се више времена троши на програмирање и развој аутоматизованих тестова. Овај приступ такође подстиче тестирање током целог процеса развоја софтвера, као и непрекидно постојање радне верзије (верзије без багова) производа. У „водопад“ приступу, који је више структуриран, се настоји да се процени већина ризика, те да се направи детаљан план за софтвер пре него што почне имплементација (програмирање), и да се избегну значајније промене дизајна и поновно кодирање у каснијим корацима развоја софтвера.

Постоје значајне предности и мане различитих методологија, те је најбоље на основу типа проблема одабрати приступ за решавање проблема коришћењем софтвера. У случају доброг разумевања проблема, и могућности ефективног планирања унапред, најбољи приступ може бити онај заснован на „водопаду“. Са друге стране, ако је проблем јединствен (барем из угла тима који ради развој), и ако структуру софтверског решења није лако предвидети, „екстремни“ инкрементални приступ би можда највише одговарао.

Референце

уреди

Спољашње везе

уреди