看病人送什么花
Цикл розробки програмного забезпечення |
---|
![]() |
Д?яльн?сть ? кроки |
Допом?жн? дисципл?ни |
Практики |
?нструменти |
Стандарти та галуз? знань |
Ця стаття м?стить правописн?, лексичн?, граматичн?, стил?стичн? або ?нш? мовн? помилки, як? треба виправити. (вересень 2022) |
Програ?мне забезпе?чення, програ?мн? за?соби (ПЗ, англ. software) — сукупн?сть програм системи оброблення ?нформац?? та програмних документ?в, необх?дних для забезпечення роботи ц??? системи[1]. Це наб?р команд, як? регулюють роботу комп'ютера,[2][3] на в?дм?ну в?д апаратного забезпечення, яке викону? ц? команди.
На найнижчому р?вн? програмування виконуваний код склада?ться з ?нструкц?й машинно? мови, як? п?дтримуються окремим процесором — як правило, центральним (CPU) або граф?чним (GPU). Машинна мова склада?ться з груп дв?йкових значень, що означають ?нструкц?? процесора, як? зм?нюють та контролюють стан комп'ютера. Наприклад, ?нструкц?я може зм?нити значення, що збер?га?ться в певному м?сц? збер?гання на комп'ютер? — ефект, який користувач не може спостер?гати безпосередньо. ?нструкц?я також може викликати одну з багатьох операц?й введення або виведення, наприклад, в?дображення тексту на екран? комп'ютера; спричиня? зм?ни стану, як? мають бути видим? для користувача. Процесор викону? ?нструкц?? в тому порядку, в якому вони надан?, якщо йому не вказано ?перейти? до ?ншо? ?нструкц?? або в?н не перерива?ться операц?йною системою. Станом на 2015 р?к б?льш?сть персональних комп'ютер?в, смартфон?в ? сервер?в мають процесори з к?лькома виконавчими блоками або к?лькома процесорами, як? виконують обчислення паралельно.
Б?льш?сть програмного забезпечення написано мовами програмування високого р?вня. ?х легше зрозум?ти програм?стам, оск?льки вони ближч? до природних мов, н?ж до машинних. Мови високого р?вня перекладаються на машинну мову за допомогою комп?лятора або ?нтерпретатора або ?х комб?нац??. Програмне забезпечення також може бути написане мовою асемблера низького р?вня, яка повн?стю в?дпов?да? ?нструкц?ям машинно? мови комп'ютера ? переклада?ться на машинну мову за допомогою асемблера.
Розр?зняють:
- системне програмне забезпечення (зокрема, операц?йн? системи, транслятори, редактори, граф?чний ?нтерфейс користувача);
- прикладне програмне забезпечення, яке використовують для виконання конкретних завдань. Наприклад, статистичне програмне забезпечення;
- ?нструментальне програмне забезпечення (комп'ютерн? програми, призначен? для про?ктування, розробки, адм?н?стрування ? супроводження системного та прикладного програмного забезпечення)[4].
Виконання програмного забезпечення комп'ютером поляга? у ман?пулюванн? ?нформац??ю та керуванн? апаратними компонентами комп'ютера. Наприклад, типовим для персональних комп'ютер?в ? в?дтворення ?нформац?? на екран? та отримання ?? з клав?атури.
Програмне забезпечення (software) та апаратне забезпечення (hardware) — це два комплементарн? компоненти комп'ютера, причому межа м?ж ними неч?тка: деяк? фрагменти програмного забезпечення на практиц? реал?зуються суто апаратурою м?кросхем комп'ютера, а програмне забезпечення, сво?ю чергою, здатне виконувати (емулювати) функц?? електронно? апаратури. По сут?, призначення програмного забезпечення поляга? в керуванн? як самим комп'ютером, так ? ?ншими програмами та ман?пулюванн? ?нформац??ю.
Комплекс програм, як? забезпечують управл?ння компонентами комп'ютерно? системи, такими як процесор, оперативна пам'ять, пристро? введення-виведення, мережеве обладнання, виступаючи як ?м?жшаровий ?нтерфейс?, з одного боку якого — апаратура, а з ?ншого — додатки користувача. На в?дм?ну в?д прикладного програмного забезпечення, системне не вир?шу? конкретн? практичн? завдання, а лише забезпечу? роботу ?нших програм, надаючи ?м серв?сн? функц??, абстрагуючи детал? апаратно? та м?кропрограмно? реал?зац?? обчислювально? системи, керу? апаратними ресурсами обчислювально? системи. В?днесення того чи ?ншого програмного забезпечення до системного ? умовним, ? залежить в?д угод, як? використан? у конкретному контекст?. Як правило, до системного програмного забезпечення в?дносяться операц?йн? системи, широкий клас сполучного програмного забезпечення.
Теоретичн? основи програмного забезпечення комп'ютер?в базуються на теор?? ск?нченних автомат?в, ? були закладен? британським математиком Аланом Тюрингом у 1936 роц?. В?н створив так звану машину Тюринга, математичну модель абстрактно? машини, здатно? виконувати посл?довност? рудиментарних операц?й, як? переводять машину з одного ф?ксованого стану в ?нший, вже заданий заздалег?дь. Головна ?дея полягала в математичному доведенн? факту, що будь-який попередньо сформульований стан системи може бути завжди досягнутий посл?довним виконанням ск?нченного набору елементарних команд (програми) з ф?ксованого алфав?ту команд.
Перше використання слова ?програмне забезпечення? для опису комп'ютерних програм приписують математику Джону Уайлдеру Тьюк? у 1958 роц?.[5] Перш? програмован? комп'ютери, як? з'явилися наприк?нц? 1940-х рок?в,[6] були запрограмован? машинною мовою. Машинну мову важко налагоджувати, ? вона не переноситься на р?зн? комп'ютери.[7] Спочатку апаратн? ресурси були дорожчими за людськ? ресурси.[8] У м?ру ускладнення програм продуктивн?сть програм?ст?в ставала вузьким м?сцем. Поява мов програмування високого р?вня в 1958 роц? дала змогу приховати детал? апаратного забезпечення та виразити в код? алгоритми, що лежать в його основ?.[9] [10] До ранн?х мов належать Fortran, Lisp ? COBOL.[10]
На в?дм?ну в?д апаратних складових комп'ютера (hardware), програмне забезпечення — це ?нформац?я[джерело?], яка збер?га?ться на матер?альних нос?ях (дискета, CD, DVD, Blu-ray, HDD, SSD, флеш-накопичувачах, тощо) у вигляд? файл?в та може передаватись через р?зн? канали зв'язку.

Розр?зняють системне, ?нструментальне та прикладне програмн? забезпечення.[джерело?]
- Операц?йн? системи — це ?пакет програмного забезпечення, який керу? ресурсами комп'ютера для користувач?в та ?хн?х програм?.[11] Типовим прикладом системного програмного забезпечення ? операц?йна система. ?сну? три основн? ц?л?, як? викону? операц?йна система:[12]
- Розпод?ля? ресурси м?ж р?зними програмами, вир?шуючи, коли вони отримають час центрального процесора (ЦП) або м?сце в пам'ят?.[12]
- Надання ?нтерфейсу, який абстрагу?ться в?д деталей доступу до деталей апаратного забезпечення (наприклад, ф?зично? пам'ят?), щоб полегшити роботу програм?ст?в. [12] [13]
- Пропону? сп?льн? серв?си, так? як ?нтерфейс для доступу до мережевих та дискових пристро?в. Це да? змогу запускати програму на р?зному обладнанн? без необх?дност? його переписування.[14]
- Прикладне програмне забезпечення працю? на операц?йн?й систем? й використову? ресурси комп'ютера для виконання т??? чи ?ншо? задач?.[15] ?сну? багато р?зних тип?в прикладного програмного забезпечення, оск?льки спектр завдань, як? можна виконувати на сучасних комп'ютерах, дуже великий.[16] Прикладн? програми складають б?льшу частину програмного забезпечення[17] ? для сво?? роботи потребують середовища, що нада?ться операц?йною системою, а часто й ?ншими програмами, для того, щоб функц?онувати.[18]
- ?нструментальне програмне забезпечення — засоби для автоматизац?? процесу розробки нових програм ? ?х супроводу за допомогою мови програмування.
Програмне забезпечення також можна класиф?кувати за способом його розгортання. Традиц?йн? програми купуються з безстроковою л?ценз??ю на певну верс?ю програмного забезпечення, завантажуються та запускаються на обладнанн?, яке належить покупцев?.[19] Розвиток ?нтернету та хмарних обчислень уможливив нову модель, програмне забезпечення як послуга (SaaS),[20] у як?й провайдер розм?щу? програмне забезпечення (зазвичай побудоване на орендовано? ?нфраструктур? або платформах)[21] нада? використання програмного забезпечення кл??нтам, часто в обм?н на абонентську плату.[19] До 2023 року продукти SaaS, як? зазвичай постачаються через вебдодатки, стали основним методом, за допомогою якого компан?? надають додатки.[22]
Програмне забезпечення можна розд?лити на корисне ? шк?дливе. Корисне програмне забезпечення створю?ться для виконання завдань, що в?дпов?дають побажанням користувача комп'ютера. Основна мета шк?дливого програмного забезпечення — виконувати операц??, як? ? небажаними для користувача, часто ?з завдаванням приховано? чи явно? шкоди. Прикладом шк?дливого програмного забезпечення ? комп'ютерн? в?руси.
Розробка програмного забезпечення наприк?нц? 20 ст. — на початку 21 ст. вид?лилася в окрему важливу галузь економ?ки — ?ндустр?ю програмного забезпечення. Процес розробки комп'ютерних програм вимага? висококвал?ф?ковано? прац?, ? розвива?ться, загалом, пов?льн?ше, н?ж процес вдосконалення апаратно? бази комп'ютер?в. ?нженер?я програмного забезпечення в?дносно недавно стала окремою профес??ю.
Розробка програмного забезпечення м?стить у соб? багато стад?й: про?ктування, програмування, тестування, впровадження ? п?дтримку.
Про?ктування почина?ться ?з формулювання вимог до програмного забезпечення ? створення специф?кац?й — документ?в, у яких описан? функц??, що ?х повинна виконувати програма. На наступному етап? створю?ться загальний дизайн програми: розбиття ?? на окрем? блоки та визначення вза?мод?? м?ж ними. На етап? безпосереднього програмування створю?ться текстовий код програми одн??ю чи дек?лькома мовами програмування. П?сля комп?ляц?? коду, програмний продукт обов'язково проходить тестування, у процес? якого визнача?ться в?дпов?дн?сть продукту специф?кац?ям, знаходяться ? виправляються помилки.
Перед впровадженням програмний продукт потребу? документац?? — опису можливостей, пос?бник?в користувача, системи допомоги. П?сля впровадження програмного забезпечення, що для програмних продукт?в вимага? маркетингу, системи дистрибуц??, реклами тощо, програмне забезпечення потребу? п?дтримки. Необх?дн?сть у п?дтримц? виника? внасл?док швидкого розвитку комп'ютер?в, що зумовлю? необх?дн?сть вза?мод?? програмного продукту з ?ншими, нов?шими програмами й новою матер?альною базою. Часто п?дтримка нових можливостей забезпечу?ться випуском нових верс?й програмного продукту.
Частиною програмного забезпечення ? стандартн? протоколи, як? розробляються для узгодження програмних продукт?в в?д р?зних виробник?в. Це потр?бно для того, щоб, наприклад, електронний лист, над?сланий через електронну пошту з одного комп'ютера м?г бути прочитаний на ?ншому комп'ютер? зовс?м ?ншою програмою та, нав?ть, з ?ншою операц?йною системою.
Користувач отриму? програмне забезпечення разом ?з л?ценз??ю, яка нада? йому право використовувати програмний продукт за умови виконання положень л?цензування. Зазвичай, ц? умови обмежують можливост? користувача передавати програмний продукт ?ншим користувачам. Частина програмного забезпечення нада?ться з в?льною л?ценз??ю (в?льне програмне забезпечення). Так? л?ценз?? дозволяють розповсюджувати програмний продукт, а також модиф?кувати його.
Частина програмного забезпечення розповсюджу?ться як безплатне. ?сну? також умовно-безплатне (або ?шароварне?) програмне забезпечення. У цьому випадку зазвичай користувач безплатно отриму? демонстрац?йну верс?ю програмного продукту з дещо обмеженими можливостями на певний випробувальний пер?од, а п?сля його зак?нчення зобов'язаний або придбати продукт, або видалити його.
Патенти надають винах?днику ексклюзивну, обмежену в час? л?ценз?ю на новий продукт або процес.[23] ?де? про те, чого може досягти програмне забезпечення, не охороняються законом, а конкретн? реал?зац?? зам?сть цього п?дпадають п?д д?ю закону про авторське право. У деяких кра?нах вимога щодо впливу заявленого винаходу на св?т також може бути частиною вимог для визнання патенту на програмне забезпечення д?йсним.[24] Патенти на програмне забезпечення ?сторично викликають суперечки. До справи 1998 року State Street Bank & Trust Co. проти Signature Financial Group, Inc.[en] патенти на програмне забезпечення зазвичай не визнавали у Сполучених Штатах. У ц?й справ? Верховний суд вир?шив, що б?знес-процеси можуть бути запатентован?.[25] Заявки на патенти складн? та дорог?, а судов? процеси, пов'язан? з патентами, можуть п?двищувати варт?сть продукц??.[26] На в?дм?ну в?д авторських прав, патенти зазвичай д?ють т?льки в т?й юрисдикц??, де ?х було видано.[27]
Програмне забезпечення для п?дпри?мств под?ля?ться на класи:
- ERP (англ. Enterprise Resources Planning) — система планування ресурс?в п?дпри?мства;
- CRM (англ. Customer Relationship Management) — система управл?ння вза?мов?дносинами з кл??нтами;
- SCM (англ. Supply Chain Management) — система управл?ння лог?стичним ланцюгом;
- PLM (англ. Product Lifecycle Management) — система управл?ння житт?вим циклом продукту;
- SRM (англ. Supplier Relationship Management) — система управл?ння вза?мов?дносинами з постачальниками;
- BI (англ. Business Intelligence) — ?нтелектуальн? системи п?дтримки стратег?чного менеджменту.
За ступенем тиражованост? все програмне забезпечення под?ля?ться на три категор??:
- програмне забезпечення, що розробля?ться на замовлення;
- програмне забезпечення для великих корпорац?й ? орган?зац?й;
- програмне забезпечення для масового споживача.
За ступенем переносност? програми д?лять на:
- Платформозалежн?.
- Кросплатформов?.
За способом розповсюдження ? використання програми под?ляють на:
За призначенням програми д?лять на:
- системн?;
- прикладн?.
За видами програми д?лять на:
- компонент — програма, що розгляда?ться як ?дине ц?ле, що викону? зак?нчену функц?ю ? застосову?ться самост?йно або в склад? комплексу;
- комплекс — програма, що склада?ться з двох або б?льше компонент?в ? (або) комплекс?в, що виконують вза?мозв'язан? функц??, ? застосову?ться самост?йно або в склад? ?ншого комплексу.
Окр?м того, додатково ще вид?ляють
Будь-який програмний продукт ма? бути протестованим для виявлення дефект?в ? помилок, припущених на стад?? ?нженер?? ПЗ. Тестування програмного забезпечення — це перев?рка того, чи в?дпов?дають фактичн? результати оч?куваним. Процес передбача? запуск та виконання компонента програмного забезпечення або компонента системи для оц?нки одн??? або дек?лькох властивостей.
Вид?ляють три основних види: системне програмне забезпечення, пакети прикладних програм та ?нструментар?й технолог?? програмування.
Системне програмне забезпечення явля? собою сукупн?сть програм ? програмних комплекс?в, що забезпечують роботу комп'ютера ? комп'ютерних мереж. Системне програмне забезпечення направлено:
- на створення операц?йного середовища функц?онування ?нших програм;
- забезпечення над?йно? та ефективно? роботи самого комп'ютера та комп'ютерно? мереж?;
- проведення д?агностики та проф?лактики апаратури комп'ютера та комп'ютерно? мереж?;
- виконання допом?жних технолог?чних процес?в (коп?ювання, арх?вування, в?дновлення файл?в програм ? баз даних, тощо).
Цей клас програмних продукт?в т?сно пов'язаний з комп'ютером ? ? його нев?дд?льною частиною.
Пакети прикладних програм ? комплекс вза?мопов'язаних програм для вир?шення функц?ональних завдань певного класу в конкретн?й предметн?й област?. Прикладне програмне забезпечення, або додатки, належить до найширшого класу програмних продукт?в, призначених безпосередньо для користувача.
?нструментар?й технолог?? програмування представля? собою сукупн?сть програм ? програмних засоб?в, що забезпечують технолог?ю розробки, налагодження ? впровадження створюваних програмних продукт?в.
?В?льне програмне забезпечення? — це громадський рух, який розгляда? нев?льне програмне забезпечення як соц?альну проблему.[29] При цьому ?безкоштовне? тут не означа? ?в?льне? (?в?льне програмне забезпечення? не те саме, що ?безкоштовне програмне забезпечення?), а скор?ше означа? свободи для сусп?льства, як? пропону? такий л?цензований (також комерц?йний) продукт. На думку Фонду в?льного програмного забезпечення (FSF), заснованого Р?чардом Столменом у 1985 роц?, р?шення на користь або проти в?льного програмного забезпечення — це насамперед етичне та соц?альне р?шення.
На в?дм?ну в?д них, орган?зац?я Open Source Initiative (OSI), заснована в 1998 роц?, розгляда? програмне забезпечення з в?дкритим кодом як просту модель розроблення, у як?й питання про те, чи повинно програмне забезпечення бути в?дкритим, ? суто практичним, а не етичним питанням. Тому FSF звинувачу? OSI у в?двол?канн? в?д сутт?вих момент?в.[30] Ер?к С. Реймонд вв?в терм?н ?в?дкритий вих?дний код? на основ? припущення, що непопулярна тема ?свободи? може стримувати спонсор?в в?д таких про?кт?в.
Незважаючи на те, що зараз це два р?зн? рухи з р?зними поглядами та ц?лями, ?х об'?дну? сп?льна повага до в?дкритого коду, що призвело до численних про?кт?в, в яких вони працюють разом.
16 серпня 2024 року Каб?нет М?н?стр?в Укра?ни схвалив зм?ни до закону ?Про санкц???, як? визначають заборону використання юридичними особами на територ?? Укра?ни програмних продукт?в, як? походять з ?ноземних держав, щодо яких застосовано санкц??. Кр?м того, запроваджен? санкц?? стосуватимуться програмних продукт?в, як? створен? з використанням вих?дного або об'?ктного коду програмних продукт?в, ?х складових, на як? поширюються санкц??[31][32].
?нженер Каперс Джонс пише, що ?комп’ютери та програмне забезпечення вносять глибок? зм?ни в кожен аспект людського життя: осв?ту, роботу, в?йну, розваги, медицину, право та все ?нше?.[33] Вони стали повсюдним явищем у повсякденному житт? розвинених кра?н.[34] У багатьох випадках програмне забезпечення розширю? функц?ональн?сть ?снуючих технолог?й, таких як побутова техн?ка та л?фти.[35] Програмне забезпечення також породило абсолютно нов? технолог??, так? як ?нтернет, в?део?гри, моб?льн? телефони та GPS . [35] [36] Завдяки ?нтернету з'явилися нов? способи комун?кац??, зокрема електронна пошта, форуми, блоги, м?кроблоги, в?к? та соц?альн? мед?а.[37] Величезн? обсяги знань, що перевищують будь-яку паперову б?бл?отеку, тепер доступн? за допомогою швидкого пошуку в ?нтернет?.[36] Б?льш?сть творчих профес?онал?в перейшли на програмн? ?нструменти, так? як автоматизоване про?ктування, 3D-моделювання, цифрове редагування зображень ? комп’ютерна ан?мац?я.[38] Майже кожен складний пристр?й керу?ться за допомогою програмного забезпечення.[36]
- Пром?жне програмне забезпечення
- М?кропрограма
- В?льне програмне забезпечення
- Програмна документац?я
- Мова моделювання
- Мова програмування
- Користувацьке програмування
- Конф?гурац?я комп'ютера
- ↑ ДСТУ 2938-94 Основн? поняття. Терм?ни та визначення. (стандарт скасовано 1 кв?тня 2021 року — Про скасування нац?ональних стандарт?в)
- ↑ What is software development? | IBM. www.ibm.com (амер.). Процитовано 28 с?чня 2022.
- ↑ Johnson, Dave. What is software? A guide to all of the different types of programs and applications that tell computers what to do. Business Insider (амер.). Процитовано 28 с?чня 2022.
- ↑ УСЕ (Ун?версальний словник-енциклопед?я)
- ↑ Tracy, 2021, с. 2.
- ↑ Gabbrielli та Martini, 2023, с. 519.
- ↑ Gabbrielli та Martini, 2023, с. 520—521.
- ↑ Gabbrielli та Martini, 2023, с. 522.
- ↑ Gabbrielli та Martini, 2023, с. 521.
- ↑ а б Tracy, 2021, с. 1.
- ↑ Anderson та Dahlin, 2014, с. 6.
- ↑ а б в Anderson та Dahlin, 2014, с. 7.
- ↑ Tanenbaum та Bos, 2023, с. 5.
- ↑ Anderson та Dahlin, 2014, с. 7, 9, 13.
- ↑ Anderson та Dahlin, 2014, с. 6—7.
- ↑ Jones, 2014, с. 121.
- ↑ Tracy, 2021, с. 66.
- ↑ Tracy, 2021, с. 72.
- ↑ а б O'Regan, 2022, с. 386.
- ↑ Campbell-Kelly та Garcia-Swartz, 2015, с. 156—157.
- ↑ Rosati та Lynn, 2020, с. 23.
- ↑ Watt, 2023, с. 4.
- ↑ O'Regan, 2022, с. 395.
- ↑ Gerardo Con Díaz, ?The Text in the Machine: American Copyright Law and the Many Natures of Software, 1974—1978?, Technology and Culture 57 (October 2016), 753–79.
- ↑ Jones, 2014, с. 19.
- ↑ O'Regan, 2022, с. 398.
- ↑ O'Regan, 2022, с. 399.
- ↑ безкоштовн? програми не сл?д плутати з в?льними
- ↑ The Selected Essays of Richard Stallman (aktualisierte Fassung): ?Open Source ist ein Entwicklungsmodell. Freie Software ist eine soziale Bewegung. Für die Open-Source-Bewegung ist nicht-freie Software eine suboptimale L?sung. Für die Freie-Software-Bewegung ist nicht-freie Software ein soziales Problem und freie Software ist die L?sung.? ursprüngliche Fassung: ?Für die Freie-Software-Bewegung ist freie Software ein ethisches Gebot … nicht-freie Software ist ein gesellschaftliches Problem …?
- ↑ Warum Freie Software besser ist als Open Source. auf: gnu.org
- ↑ В Укра?н? заборонили використання софту, розробленого громадянами п?дсанкц?йних кра?н. 16.08.2024, 14:11
- ↑ В Укра?н? заборонили використання софту, розробленого громадянами п?дсанкц?йних кра?н. 16.08.2024, 16:00
- ↑ Jones, 2014, с. 32.
- ↑ Kitchin та Dodge, 2011, с. iv.
- ↑ а б Kitchin та Dodge, 2011, с. 5.
- ↑ а б в Jones, 2014, с. xxviii.
- ↑ Manovich, 2013, с. 329.
- ↑ Manovich, 2013, с. 333.
- Прикладне програмне забезпечення: Навч.-метод. пос?бник для самост. вивч. дисц. Молодцова О. П. — К.: КНЕУ, 2000. — 264 с. ISBN 966—574–098–9
- ?рина Бородк?на, Георг?й Бородк?н (2021). ?нженер?я програмного забезпечення. Навчальний пос?бник. Центр учбово? л?тератури. ISBN 9786110112321.
- Оц?нка якост? програмного забезпечення за показниками над?йност?
- Орган?зац?йно-техн?чн? основи оц?нки в?дпов?дност? програмного забезпечення
- Види програмного забезпечення
- Embracing AI: The Software Engineer's Guide
- Програмне забезпечення та його класиф?кац?я
- Перел?к програмного забезпечення рос?йського походження створений Opendatabot та Netpeak
- Класиф?кац?я програмного забезпечення на YouTube 13 вер. 2020 р., 5'40"
![]() |
Це незавершена стаття про програмне забезпечення. Ви можете допомогти про?кту, виправивши або дописавши ??. |
![]() |