Програмне забезпечення
сукупність програм системи обробки інформації і програмних документів, необхідних для експлуатації цих програм З Вікіпедії, вільної енциклопедії
Програ́мне забезпе́чення, програ́мні за́соби (ПЗ, англ. software) — сукупність програм системи оброблення інформації та програмних документів, необхідних для забезпечення роботи цієї системи[1]. Це набір команд, які регулюють роботу комп'ютера,[2][3] на відміну від апаратного забезпечення, яке виконує ці команди.
Ця стаття містить правописні, лексичні, граматичні, стилістичні або інші мовні помилки, які треба виправити. (вересень 2022) |
На найнижчому рівні програмування виконуваний код складається з інструкцій машинної мови, які підтримуються окремим процесором — як правило, центральним (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]
Див. також
Примітки
Література
Посилання
Wikiwand - on
Seamless Wikipedia browsing. On steroids.