# Распрацоўка праграмнага забеспячэння

**Распрацоўка праграмнага забеспячэння** — гэта працэс стварэння праграмнага забеспячэння, які уключае ў сябе не толькі праграмаванне, але і пастаноўку задачы, аналіз патрабаванняў, праектаванне, тэставанне і выпуск. Гэты працэс з’яўляецца часткай інжынерыі праграмнага забеспячэння, якая таксама ўключае ў сябе кіраванне арганізацыяй, кіраванне праектамі і іншыя аспекты.

Распрацоўка праграмнага забеспячэння патрабуе шэрагу навыкаў, сярод якіх — праграмаванне, тэставанне, стварэнне дакументацыі, графічны дызайн, падтрымка карыстальнікаў і маркетынг.

У распрацоўцы праграмнага забеспячэння выкарыстоўваецца шэраг інструментаў, такіх як кампілятар, рэдактар зыходнага кода, сістэма кіравання версіямі, сістэма кіравання праектам (англ.: project management system), сістэма адсочвання праблем (англ.: issue-tracking system) і тэкставы працэсар.

Дэталі працэсу распрацоўкі кожнай асобнай праграмы могуць значна адрознівацца. Працэс можа быць як абмежаваны фармальным стандартам, так і можа быць адаптаваны ў адпаведнасці з патрабаваннямі каманды і кліента.

## Мадэлі распрацоўкі

У залежнасці ад тыпу праекта і патрабаванняў да яго выкарыстоўваюцца розныя мадэлі і метадалогіі распрацоўкі.

У прасцейшай сітуацыі, калі невялікая праграма ствараецца адным праграмістам, можа выкарыстоўвацца мадэль «code and fix» («пішы код і выпраўляй»), у якой праграміст сам ставіць мэту, стварае код, правярае яго і выпускае праграму. Гэтая мадэль можа выкарыстоўвацца для прататыпаў, але не падыходзіць для складаных праграм.

У каскаднай мадэлі усе этапы распрацоўкі — ацэнка мэтазгоднасці, аналіз, праектаванне, праграмаванне, тэставанне і выпуск — выконваюцца паслядоўна адзін за адным. Гэты падыход можа прыводзіць да затрымак і не дазваляе адаптаваць праграму на пазнейшых этапах.

Так званыя гнуткія метадалогіі былі распрацаваныя для павышэння эфектыўнасці распрацоўкі. Многія з іх выкарыстоўваюць ітэрацыйны падыход, у якім кожная ітэрацыя ўключае ўсе этапы распрацоўкі і звычайна займае некалькі тыдняў.

Некаторыя кампаніі сумяшчаюць аперацыі абслугоўвання праграм з іх распрацоўкай, што прывяло да стварэння мадэлі DevOps.

## Этапы

### Ацэнка мэтазгоднасці

Ідэі праграмных прадуктаў звычайна спачатку ацэньваюцца маркетынгавымі спецыялістамі на прадмет эканамічнай мэтазгоднасці, адпаведнасці існуючым каналам распаўсюджвання, магчымага ўплыву на існуючыя прадукты і адпаведнасці маркетынгавым мэтам кампаніі. У аналізе мэтазгоднасці праекта ацэньваецца прыбытковасць інвестыцый, кошт яго распрацоўкі і тэрміны рэалізацыі. На падставе гэтага аналізу кампанія можа прыняць рашэнне аб інвеставанні ў далейшае развіццё праекта.

### Аналіз

Этап аналізу пачынаецца з збору патрабаванняў да праграмнага забеспячэння. Вынікам з’яўляецца падрабязная спецыфікацыя прадукту, з якой могуць працаваць распрацоўшчыкі. Акрамя тэкставага апісання патрабаванняў спецыфікацыя можа уключаць дыяграмы, псеўдакод і слоўнікі тэрміналогіі.

Аналітыкі часта падзяляюць праект на больш дробныя кампаненты, якія можна выкарыстоўваць паўторна.

### Праектаванне

Этап праектавання прадугледжвае выбар сродкаў і форм рэалізацыі пэўнага функцыянала ад глабальных, такіх як мова праграмавання і сістэма кіравання базамі даных, да больш простых, такіх як структура модуляў. Падчас праектавання шукаюцца заканамернасці ў функцыянальнасці праграмнага забеспячэння, каб стварыць асобныя модулі, па якіх будзе разнесена логіка праграмы. У гэтым працэсе дапамагаюць ужо існуючыя патэрны і прынцыпы праектавання, такія як DRY, SOLID, GRASP і іншыя.

### Праграмаванне

Стварэнне кода з’яўляецца асноўным этапам у распрацоўцы праграмнага забеспячэння. З ім звязаныя пэўныя стандарты і практыкі індустрыі, накіраваныя на атрыманне эфектыўнага і зразумелага кода, які было б лёгка падтрымліваць. Сярод такіх практык — агляд кода калегамі (англ.: peer code review), распрацоўка праз тэставанне (англ.: test-driven development, TDD) і рэфактарынг кода (англ.: code refactoring).

### Тэставанне

Тэставанне — гэта працэс забеспячэння таго, каб код выконваўся правільна і без памылак. Тэставанне можа быць як аўтаматызаваным, так і ручным. У залежнасці ад выбранай мадэлі распрацоўкі тэставанне праграмы можа ажыццяўляцца як самімі распрацоўшчыкамі, так і асобнымі спецыялістамі па забеспячэнні якасці (англ.: quality assurance specialist).

### Выпуск

На этапе выпуску (англ.: release) праграмнае забеспячэнне дастаўляецца да канчатковага карыстальніка. Падчас выпуску і далейшага суправаджэння праекта важна мець сэрвісы тэхнічнай падтрымкі кліентаў для атрымання зваротнай сувязі аб прадукце і своечасовага выпраўлення дэфектаў.

## Гл. таксама

* Мінімальна жыццяздольны прадукт
* Вэб-распрацоўка

## Крыніцы

## Літаратура

* Dooley, John F. (2017). *Software Development, Design and Coding: With Patterns, Debugging, Unit Testing, and Refactoring*(англ.). Apress. ISBN 978-1-4842-3153-1.
* Langer, Arthur M. (2016). *Guide to Software Development: Designing and Managing the Life Cycle*(англ.). Springer. ISBN 978-1-4471-6799-0.