Распрацоўка праграмнага забеспячэння — гэта працэс стварэння праграмнага забеспячэння, які уключае ў сябе не толькі праграмаванне, але і пастаноўку задачы, аналіз патрабаванняў, праектаванне, тэставанне і выпуск. Гэты працэс з’яўляецца часткай інжынерыі праграмнага забеспячэння, якая таксама ўключае ў сябе кіраванне арганізацыяй, кіраванне праектамі і іншыя аспекты.[1]
Распрацоўка праграмнага забеспячэння патрабуе шэрагу навыкаў, сярод якіх — праграмаванне, тэставанне, стварэнне дакументацыі, графічны дызайн, падтрымка карыстальнікаў і маркетынг.
У распрацоўцы праграмнага забеспячэння выкарыстоўваецца шэраг інструментаў, такіх як кампілятар, рэдактар зыходнага кода, сістэма кіравання версіямі і тэкставы працэсар.
Дэталі працэсу распрацоўкі кожнай асобнай праграмы могуць значна адрознівацца. Працэс можа быць як абмежаваны фармальным стандартам, так і можа быць адаптаваны ў адпаведнасці з патрабаваннямі каманды і кліента.
У залежнасці ад тыпу праекта і патрабаванняў да яго выкарыстоўваюцца розныя мадэлі і метадалогіі распрацоўкі.
У прасцейшай сітуацыі, калі невялікая праграма ствараецца адным праграмістам, можа выкарыстоўвацца мадэль «code and fix» («пішы код і выпраўляй»), у якой праграміст сам ставіць мэту, стварае код, правярае яго і выпускае праграму. Гэтая мадэль можа выкарыстоўвацца для прататыпаў, але не падыходзіць для складаных праграм.
У каскаднай мадэлі усе этапы распрацоўкі — ацэнка мэтазгоднасці, аналіз, праектаванне, праграмаванне, тэставанне і выпуск — выконваюцца паслядоўна адзін за адным. Гэты падыход можа прыводзіць да затрымак і не дазваляе адаптаваць праграму на пазнейшых этапах.
Так званыя гнуткія метадалогіі былі распрацаваныя для павышэння эфектыўнасці распрацоўкі. Многія з іх выкарыстоўваюць ітэрацыйны падыход, у якім кожная ітэрацыя ўключае ўсе этапы распрацоўкі і звычайна займае некалькі тыдняў.
Некаторыя кампаніі сумяшчаюць аперацыі абслугоўвання праграм з іх распрацоўкай, што прывяло да стварэння мадэлі DevOps.
Ідэі праграмных прадуктаў звычайна спачатку ацэньваюцца маркетынгавымі спецыялістамі на прадмет эканамічнай мэтазгоднасці, адпаведнасці існуючым каналам распаўсюджвання, магчымага ўплыву на існуючыя прадукты і адпаведнасці маркетынгавым мэтам кампаніі. У аналізе мэтазгоднасці праекта ацэньваецца прыбытковасць інвестыцый, кошт яго распрацоўкі і тэрміны рэалізацыі. На падставе гэтага аналізу кампанія можа прыняць рашэнне аб інвеставанні ў далейшае развіццё праекта.[2]
Этап аналізу пачынаецца з збору патрабаванняў да праграмнага забеспячэння.[3] Вынікам з’яўляецца падрабязная спецыфікацыя прадукту, з якой могуць працаваць распрацоўшчыкі. Акрамя тэкставага апісання патрабаванняў спецыфікацыя можа уключаць дыяграмы, псеўдакод і слоўнікі тэрміналогіі.[4]
Аналітыкі часта падзяляюць праект на больш дробныя кампаненты, якія можна выкарыстоўваць паўторна.
Этап праектавання прадугледжвае выбар сродкаў і форм рэалізацыі пэўнага функцыянала ад глабальных, такіх як мова праграмавання і сістэма кіравання базамі даных, да больш простых, такіх як структура модуляў. Падчас праектавання шукаюцца заканамернасці ў функцыянальнасці праграмнага забеспячэння, каб стварыць асобныя модулі, па якіх будзе разнесена логіка праграмы. У гэтым працэсе дапамагаюць ужо існуючыя патэрны і прынцыпы праектавання, такія як DRY, SOLID, GRASP і іншыя.
Стварэнне кода з’яўляецца асноўным этапам у распрацоўцы праграмнага забеспячэння. З ім звязаныя пэўныя стандарты і практыкі індустрыі, накіраваныя на атрыманне эфектыўнага і зразумелага кода, які было б лёгка падтрымліваць. Сярод такіх практык — агляд кода калегамі (англ.: peer code review), распрацоўка праз тэставанне (англ.: test-driven development, TDD) і рэфактарынг кода (англ.: code refactoring).
Тэставанне — гэта працэс забеспячэння таго, каб код выконваўся правільна і без памылак. Тэставанне можа быць як аўтаматызаваным, так і ручным. У залежнасці ад выбранай мадэлі распрацоўкі тэставанне праграмы можа ажыццяўляцца як самімі распрацоўшчыкамі, так і асобнымі спецыялістамі па забеспячэнні якасці (англ.: quality assurance specialist).
На этапе выпуску праграмнае забеспячэнне дастаўляецца да канчатковага карыстальніка. Падчас выпуску і далейшага суправаджэння праекта важна мець сэрвісы тэхнічнай падтрымкі кліентаў для атрымання зваротнай сувязі аб прадукце і своечасовага выпраўлення дэфектаў.