ЗМІСТ:
Програма – це дані, які призначені для керування конкретними компонентами системи обробки інформації з метою реалізації визначеного алгоритму.
У першу чергу потрібно звернути особливу увагу, що програма являє собою дані. Відомо, що один з основних принципів фон Неймана полягає в тому, що як програми, так і дані зберігаються у тій же самій пам'яті. Тобто програма, яка зберігається у пам'яті, являє собою деякі коди, які можуть розглядатися як дані. Можливо, з точки зору програміста, програма є активним компонентом, бо вона виконує деякі дії. Але для процесора команди програми являють собою дані, які він читає та інтерпретує.
В основу роботи комп'ютерів покладено програмний принцип керування, який полягає в тому, що комп'ютер виконує дії за заздалегідь заданою програмою. Цей принцип забезпечує універсальність використання комп'ютера: у певний момент часу розв'язується задача відповідно до вибраної програми. Після її завершення у пам'ять завантажується інша програма і т.д. Програма – це запис алгоритму розв'язання задачі у вигляді послідовності команд або операторів мовою, яку розуміє комп'ютер. Кінцевою метою любої комп'ютерної програми є керування апаратними засобами.
Для нормального розв'язку задач на комп'ютері потрібно, щоб програма була налагоджена, не потребувала доробок і мала відповідну документацію. Тому стосовно роботи на комп'ютері часто використовують термін програмне забезпечення (software), під яким розуміють сукупність програм, процедур і правил, а також документації, що стосуються функціонування систем обробки даних.
Програмне та апаратне забезпечення у комп'ютері працюють у нерозривному зв'язку та взаємодії. Склад програмного забезпечення обчислювальної системи називається програмною конфігурацією. Конфігурація програмного забезпечення - сукупність налаштувань програми, що задається користувачем. Між програмами існує взаємозв'язок, тобто багато програм працюють, базуючись на програмах нижчого рівня. Міжпрограмний інтерфейс – це розподіл програмного забезпечення на декілька пов'язаних між собою рівнів. Рівні програмного забезпечення являють собою піраміду, де кожен вищій рівень базується на програмному забезпеченні попередніх рівнів.
Програмне забезпечення прийнято за призначенням поділяти на системне, прикладне та інструментальне, а за способом поширення і використання – на комерційне, відкрите і вільне.
Рис. 1 Класифікація програмного забезпечення
Системне програмне забезпечення призначено для обслуговування власних потреб комп'ютера – забезпечення його працездатності і виконання його внутрішніх функцій, а також для створення передумов для виконання прикладного програмного забезпечення. Типовим прикладом системного програмного забезпечення є операційна система.
Прикладне програмне забезпечення, призначено для розв'язання задач користувача. Наприклад: редактори тексту, електронні таблиці, бази даних і т.д.
Програмне забезпечення можна розділити на корисне і шкідливе. Корисне програмне забезпечення створюється для виконання завдань, що відповідають побажанням користувача комп'ютера. Основна мета шкідливого програмного забезпечення – виконувати операції, які є небажаними для користувача, часто із завдаванням прихованої чи явної шкоди. Прикладом шкідливого програмного забезпечення є комп'ютерні віруси.
Частиною програмного забезпечення є стандартні протоколи, які розробляються для узгодження програмних продуктів від різних виробників. Це потрібно для того, щоб, наприклад, електронний лист, надісланий через електронну пошту з одного комп'ютера міг бути прочитаний на іншому комп'ютері зовсім іншою програмою та, навіть, з іншою операційною системою.
Цей рівень є найнижчим рівнем програмного забезпечення. Відповідає за взаємодію з базовими апаратними засобами. Базове програмне зберігається у спеціальних мікросхемах постійного запам'ятовуючого пристрою (ПЗП), утворюючи базову систему введення-виведення BIOS. Програми та дані записуються у ПЗП на етапі виробництва і не можуть бути змінені в процесі експлуатації.
BIOS є інтерфейсом між програмним забезпеченням і апаратними засобами, який дозволяє взаємодіяти один з одним. Базова система вводу-виводу складається з BIOS материнської плати, BIOS на усіх картах в системі, а також їх драйверів.
У минулому можливості налаштування BIOS для користувачів були мінімальні. Доступ був відкритий тільки до небагатьох базових функцій, яких вистачало для роботи системи. Зараз виробники материнських плат відкрили доступ до інших функцій BIOS, що дало додаткові можливості при налаштуванні і оптимізації комп'ютера.
Коли включається комп'ютер, BIOS ініціює тест POST (діагностику при включенні живлення), який визначає працездатність основних компонентів.
Після завершення тесту можна перейти в програму конфігурації системи, що дозволяє налаштовувати параметри функціонування комп’ютера. BIOS управляє усіма параметрами комп'ютера, починаючи від робочої швидкості процесора і закінчуючи режимом передачі даних для жорсткого диска.
Після невеликої паузи BIOS запускає програму завантаження, яка виконує пошук завантажувального сектора на усіх доступних дисках. Завантажувальний сектор – це розділ диска з кодуванням, яке ініціює завантаження операційної системи. При активації завантажувального сектора починається завантаження операційної системи. Операційна система приступає до завантаження своїх основних файлів.
У більшості випадків тут робота BIOS закінчується, оскільки операційні системи використовують свої драйвери, які мають вищу функціональність і продуктивність в порівнянні з базовими драйверами BIOS. Драйвери BIOS можуть здатися дуже повільними і примітивними, але вони гарантовано працюватимуть з будь-якими пристроями. Саме тому вони як і раніше вбудовані в будь-який комп'ютер.
Системний рівень є перехідним. Програми цього рівня забезпечують взаємодію інших програм комп'ютера з програмами базового рівня і безпосередньо з апаратним забезпеченням. Від програм цього рівня залежать експлуатаційні показники всієї обчислювальної системи. При підключені до комп'ютера нового обладнання, на системному рівні повинна бути встановлена програма, що забезпечує для решти програм взаємозв'язок із цим пристроєм. Конкретні програми, призначені для взаємодії з конкретними пристроями, називають драйверами.
Драйвер – це програма, за допомогою якої операційна система отримує доступ до апаратного забезпечення певного пристрою. Для роботи будь-якого пристрою (як зовнішнього, так і внутрішнього) необхідний драйвер. Зазвичай в операційну систему вбудовують драйвери для ключового апаратного забезпечення, без яких система не зможе працювати. Для спеціалізованих пристроїв (таких, як графічна плата або принтер) потрібне додаткова встановлення драйвера пристрою, які поставляються виробником в комплекті з пристроєм.
Інший клас програм системного рівня відповідає за взаємодію з користувачем. Завдяки йому є можливість вводити дані у обчислювальну систему, керувати її роботою й отримувати результат у зручній формі. Це засоби забезпечення користувацького інтерфейсу, від них залежить зручність та продуктивність роботи з комп'ютером.
Сукупність програмного забезпечення системного рівня утворює ядро операційної системи комп'ютера. Наявність ядра операційної системи – є першою умовою для можливості практичної роботи користувача з обчислювальною системою. Ядро операційної системи виконує такі функції:
керування пам'яттю,
процесами введення-виведення,
файловою системою,
організація взаємодії та диспетчеризація процесів,
облік використання ресурсів,
виконання команд і т.д.
Програми цього рівня взаємодіють як із програмами базового рівня, так і з програмами системного рівня. Призначення службових програм (утиліт) полягає в автоматизації робіт по перевірці та налаштуванню комп'ютерної системи, а також для покращення функцій системних програм. Деякі службові програми (наприклад, для обслуговування) відразу додають до складу операційної системи, доповнюючи її ядро, але більшість є зовнішніми програмами і розширюють функції операційної системи. Тобто, у розробці службових програм відслідковуються два напрямки: інтеграція з операційною системою та автономне функціонування.
Утиліта – програма, що розширює стандартні можливості устаткування та операційної системи, виконує вузький круг специфічних завдань. Утиліта надає доступ до можливостей (параметрів, налаштувань), недоступних без їх використання, або роблять процес зміни певних параметрів простішим (автоматизують його). Розрізняють наступні види утиліт: дискові утиліти (дефрагментація, очистка, перевірка, розмітка, резервне копіювання, стиснення дисків), менеджери процесів, утиліти роботи з реєстром, моніторингу та тестування устаткування.
Класифікація службових програмних засобів:
1. Диспетчери файлів (файлові менеджери). За їх допомогою виконується більшість операцій по обслуговуванню файлової структури копіювання, переміщення, перейменування файлів, створення каталогів (папок), знищення об'єктів, пошук файлів та навігація у файловій структурі. Базові програмні засоби містяться у складі програм системного рівня і встановлюються разом з операційною системою
2. Засоби стиснення даних (архіватори). Призначені для створення архівів. Архівні файли мають підвищену щільність запису інформації і відповідно, ефективніше використовуються носії інформації.
3. Засоби діагностики. Призначені для автоматизації процесів діагностування програмного та апаратного забезпечення. Їх використовують для виправлення помилок і для оптимізації роботи комп'ютерної системи.
4. Програми інсталяції (встановлення). Призначені для контролю за додаванням у поточну програмну конфігурацію нового програмного забезпечення. Вони слідкують за станом і зміною оточуючого програмного середовища, відслідковують та протоколюють утворення нових зв'язків, загублені під час знищення певних програм. Прості засоби управління встановленням та знищенням програм містяться у складі операційної системи, але можуть використовуватись і додаткові службові програми.
5. Засоби комунікації. Дозволяють встановлювати з'єднання з віддаленими комп'ютерами, передають повідомлення електронної пошти, пересилають факсимільні повідомлення тощо.
6. Засоби перегляду та відтворення. Використовуються для відтворення готових файлів. Наприклад, звук або відео.
7. Засоби комп'ютерної безпеки. До них відносяться засоби пасивного та активного захисту даних від пошкодження, несанкціонованого доступу, перегляду та зміни даних. Засоби пасивного захисту - це службові програми, призначені для резервного копіювання. Засоби активного захисту застосовують антивірусне програмне забезпечення. Для захисту даних від несанкціонованого доступу використовують засоби криптографії.
Програмне забезпечення цього рівня являє собою комплекс прикладних програм, за допомогою яких виконуються конкретні завдання (від виробничих до творчих, розважальних та навчальних). Між прикладним та системним програмним забезпеченням існує тісний взаємозв'язок. Універсальність обчислювальної системи, доступність прикладних програм і широта функціональних можливостей комп'ютера залежать від типу операційної системи, системних засобів, що містяться у її ядрі й взаємодії комплексу людина-програма-обладнання.
Класифікація прикладного програмного забезпечення:
1. Текстові редактори. Основними функціями є введення та редагування текстових даних. Для операцій вводу, виводу та збереження даних текстові редактори використовують системне програмне забезпечення.
2. Текстові процесори. Дозволяють форматувати текст. Основними засобами текстових процесорів є засоби забезпечення взаємодії тексту, графіки, таблиць та інших об'єктів, що складають готовий документ, а також засоби автоматизації процесів редагування та форматування. Сучасний стиль роботи з документами має два підходи: робота з паперовими документами та робота з електронними документами. Прийоми та методи форматування таких документів різняться між собою, але текстові процесори спроможні ефективно опрацьовувати обидва види документів.
3. Графічні редактори. Широкий клас програм, що призначені для створення та обробки графічних зображень. Розрізняють три категорії:
растрові редактори;
векторні редактори;
3-D редактори (тривимірна графіка).
У растрових редакторах графічний об'єкт представлений у вигляді комбінації точок (растрів), що мають свою яскравість та колір. Такий підхід ефективний, коли графічне зображення має багато кольорів і інформація про колір елементів набагато важливіша за інформацію про їх форму. Це характерно для фотографічних та поліграфічних зображень. Застосовують для обробки зображень, створення фотоефектів і художніх композицій.
Векторні редактори відрізняються способом представлення даних про зображення. Об'єктом є не точка, а лінія. Кожна лінія розглядається, як математична крива ІІІ порядку і представлена формулою. Таке представлення компактніше за растрове, дані займають менше місця, побудова об'єкта супроводжується підрахунком параметрів кривої у координати екранного зображення, і відповідно, потребує більш продуктивних обчислювальних систем. Широко застосовуються у рекламі, оформленні обкладинок поліграфічних видань.
Редактори тривимірної графіки. Використовують для створення об'ємних композицій. Мають дві особливості: дозволяють керувати властивостями поверхні в залежності від властивостей освітлення, а також дозволяють створювати об'ємну анімацію.
4. Системи управління базами даних (СУБД). Базою даних називають великі масиви даних організовані у табличні структури. У зв'язку з поширенням мережевих технологій, від сучасних СУБД вимагається можливість роботи з віддаленими й розподіленими ресурсами, що знаходяться на серверах Інтернету.
5. Електронні таблиці. Надають комплексні засоби для збереження різних типів даних та їх обробки. Основний акцент зміщений на перетворення даних, наданий широкий спектр методів для роботи з числовими даними. Основна особливість електронних таблиць полягає у автоматичній зміні вмісту всіх комірок при зміні відношень, заданих математичними або логічними формулами. Широке застосування знаходять у бухгалтерському обліку, аналізі фінансових та торгівельних ринків, засобах обробки результатів експериментів, тобто у автоматизації регулярно повторюваних обчислень великих об'ємів числових даних.
6. Системи автоматизованого проектування (CAD-системи). Призначені для автоматизації проектно-конструкторських робіт. Застосовуються у машинобудуванні, приладобудуванні, архітектурі. Окрім графічних робіт дозволяють проводити прості розрахунки та вибір готових конструктивних елементів з існуючої бази даних. Особливість CAD-систем полягає у автоматичному забезпеченні на всіх етапах проектування технічних умов, норм та правил. САПР є необхідним компонентом для гнучких виробничих систем (ГВС) та автоматизованих систем управління технологічними процесами (АСУ ТП).
7. Настільні видавничі системи. Автоматизують процес верстання поліграфічних видань. Займає проміжний стан між текстовими процесами та САПР. Видавничі системи відрізняються розширеними засобами управління взаємодії тексту з параметрами сторінки і графічними об'єктами, але мають слабші можливості по автоматизації вводу та редагування тексту. Їх доцільно застосовувати до документів, що попередньо оброблені у текстових процесорах та графічних редакторах.
8. Редактори HTML (Web-редактори). Особливий клас редакторів, що об'єднують у собі можливості текстових та графічних редакторів. Призначені для створення і редагування Web-сторінок Інтернету. Програми цього класу можна також використовувати при підготовці електронних документів та мультимедійних видань.
9. Браузери (засоби перегляду Web-документів). Програмні засоби призначені для перегляду електронних документів, створених у форматі HTML. Відтворюють окрім тексту та графіки, також музику, людську мову, радіопередачі, відеоконференції і дозволяють працювати з електронною поштою.
10. Системи автоматизованого перекладу. Розрізняють електронні словники та програми перекладу мови. Електронні словники – це засоби для перекладу окремих слів у документі.
11. Інтегровані системи діловодства. Засоби для автоматизації робочого місця керівника. Зокрема, це функції створення, редагування і форматування документів, централізація функцій електронної пошти, факсимільного та телефонного зв'язку, диспетчеризація та моніторинг документообігу підприємства, координація дій підрозділів, оптимізація адміністративно-господарської діяльності й поставка оперативної та довідкової інформації.
12. Бухгалтерські системи. Містять у собі функції текстових, табличних редакторів та СУБД. Призначені для автоматизації підготовки початкових бухгалтерських документів та їх обліку, регулярних звітів і т.д.
13. Фінансові аналітичні системи. Використовують у банківських та біржових структурах. Дозволяють контролювати та прогнозувати ситуацію на фінансових, торгівельних та ринків сировини, виконувати аналіз поточних подій, готувати звіти.
14. Експертні системи. Призначені для аналізу даних, що містяться у базах знань і видачі результатів по запиту користувача. Такі системи використовуються, коли для прийняття рішення потрібні широкі спеціальні знання. Використовуються у медицині, фармакології, хімії, юриспруденції. З використанням експертних систем пов'язана область науки, що зветься інженерією знань. Інженери знань - це фахівці, які є проміжною ланкою між розробниками експертних систем (програмістами) та провідними фахівцями у конкретних областях науки й техніки (експертами).
15. Геоінформаційні системи (ГІС). Призначені для автоматизації картографічних та геодезичних робіт на основі інформації, отриманої топографічним або аерографічними методами.
16. Системи відеомонтажу. Призначені для цифрової обробки відеоматеріалів, монтажу, створення відеоефектів, виправлення дефектів, додавання звуку, титрів та субтитрів. Окремі категорії представляють навчальні, довідкові та розважальні системи й програми. Характерною особливістю є підвищені вимоги до мультимедійної складової.
17. Інструментальні мови та системи програмування. Ці засоби служать для розробки нових програм. Комп'ютер може виконувати програми у машинному коді. Кожна команда при цьому має вигляд послідовності нулів й одиниць. Писати програми машинною мовою дуже незручно, а їх надійність низка. Тому програми розробляють мовою, зрозумілою людині (інструментальна мова або алгоритмічна мова програмування), після чого спеціальною програмою, яка називається транслятором, текст програми перекладається (транслюється) на машинний код.
Транслятори бувають двох типів:
інтерпретатори;
компілятори.
Інтерпретатор читає один оператор програми, аналізує його і відразу виконує, після чого переходить до обробки наступного оператора. Компілятор спочатку читає, аналізує та перекладає на машинний код усю програму і тільки після завершення всієї трансляції ця програма виконується.
Інструментальні мови поділяються на мови низького рівня (близькі до машинної мови) та мови високого рівня (близькі до мови людини). До мов низького рівня належать асемблери, а високого – Pascal, Basic, C/C++, мови баз даних і т.д. Систему програмування, крім транслятора, складають текстовий редактор, компонувальник, бібліотека стандартних програм, налагоджувач, візуальні засоби автоматизації програмування. Прикладами таких систем є Delphi, Visual Basic, Visual C++, Visual FoxPro та ін.
Суттєвим є той факт, що програмне забезпечення – це програми, які призначені для багаторазового використання та застосування різними користувачами. У зв'язку з цим слід звернути увагу на низку необхідних властивостей програмного забезпечення.
1) Необхідність документування.
За визначенням програми стають програмним забезпеченням тільки за наявності документації. Кінцевий користувач не може працювати, не маючи документації. Документація робить можливим тиражування та продаж програмного забезпечення без участі його розробника. Помилкою є ситуація, коли програмний виріб функціонує не відповідно до свого опису, отже, помилка в документації також є помилкою у програмному виробі.
2) Ефективність.
Програмне забезпечення, розраховане на багаторазове використання пишеться та налагоджується один раз, а виконується багаторазово.
3) Надійність.
Забезпечення надійності передбачає:
тестування програми при всіх допустимих специфікаціях вхідних даних;
захист від невірних дій користувача;
захист від зламування – користувачі повинні мати можливість взаємодії з програмним забезпеченням тільки через легальні інтерфейси.
Помилки у системі можливі через збої апаратури, помилки програмного забезпечення, неправильні дії користувача. Перші - неминучі, другі - ймовірні, треті - гарантовані.
Поява помилок будь-якого рівня не повинна призводити до краху системи. Помилки мають виявлятися та виправлятися, а якщо їх неможливо виправити – перетворюватися у коректні відмови.
Системні структури даних повинні зберігатися безумовно. Збереження цілісності даних користувача бажане.
4) Можливість супроводу.
Мета супроводу – адаптація програмного забезпечення до конкретних умов застосування, видалення помилок, модифікація.
У всіх випадках потрібне ретельне структурування програмного забезпечення, а носієм інформації про структуру має бути програмна документація.
Адаптація у багатьох випадках може бути передовірена користувачеві – при ретельній обробці та описі сценаріїв інсталяції та налагодження.
Виправлення помилок потребує наявності розвинутої сервісної служби, що збирає інформацію про помилки та формує пакети, які виправляють їх.
Модифікація передбачає зміну специфікацій на програмне забезпечення. При цьому, як правило, мають підтримуватися і старі специфікації. Еволюційний розвиток програмного забезпечення економить витрати користувачів.
Розробка програмного забезпечення наприкінці 20 ст. – на початку 21 ст. виділилася в окрему важливу галузь економіки – індустрію програмного забезпечення. Процес розробки комп'ютерних програм вимагає висококваліфікованої праці, і розвивається повільніше, ніж процес вдосконалення апаратної бази комп'ютерів. Інженерія програмного забезпечення відносно недавно стала окремою професією.
Розробка програмного забезпечення включає в себе багато стадій:
проектування,
програмування,
тестування,
впровадження,
підтримку.
Проектування починається із формулювання вимог до програмного забезпечення і створення специфікацій – документів, у яких описані функції, які повинна виконувати програма. На наступному етапі створюється загальний дизайн програми: розбиття її на окремі блоки і описання взаємодії між ними. На етапі програмування створюється текстовий код програми на одній чи декількох мовах програмування. Після компіляції коду, програмний продукт обов'язково проходить тестування, у процесі якого визначається відповідність продукту специфікаціям, знаходяться і виправляються помилки.
Перед впровадженням програмний продукт потребує документації – опису можливостей, посібників користувача, системи допомоги. Після впровадження програмного забезпечення, воно потребує підтримки. Необхідність у підтримці виникає внаслідок швидкого розвитку комп'ютерів, що зумовлює необхідність взаємодії програмного продукту з іншими, новішими програмами і новою матеріальною базою. Часто підтримка нових можливостей забезпечується випуском нових версій програмного продукту.
Питання для перевірки:
1. Що прийнято розуміти під терміном «software»?
2. На які рівні поділяється програмне забезпечення?
3. Сукупність програм якого рівня утворюють ядро операційної системи?
4. Які функції виконує ядро операційної системи?
5. Для чого призначені програми базового рівня?
6. Які класи програм службового рівня ви знаєте?
7. За допомогою програм якого класу можна здійснювати введення, редагування та оформлення текстових даних?
8. Які ви знаєте категорії графічних редакторів?
9. В яких випадках доцільно використовувати системи автоматизованого перекладу?
10. Що таке інтерпретатор та компілятор? Яка між ними різниця?
11. Охарактеризуйте властивості програмного забезпечення.
12. Охарактеризуйте системні програми.
13. Охарактеризуйте системи програмування.
14. Охарактеризуйте завантажувальний модуль.
15. Охарактеризуйте трансляції та транслятора.
16. Охарактеризуйте етапи створення програм.
17. Опишіть етапи життєвого циклу програмного забезпечення.
18. Перерахуйте програмні засоби, які входять до прикладного застосування.
19. Перерахуйте програмні засоби, які відносять до інструментальних.
Баглай Р.Є. Обчислювальна техніка та програмування [фондові лекції] / Баглай Р.Є. (електронний підручник у форматі pdf).
Маценко В.Г. Обчислювальна техніка та програмування [навчальний посібник] / Маценко В.Г. – Чернівці:ЧНУ, 2010. – 112 с. (електронний варіант, формат djv)
Співаковський О.В. Інформаційні технології в юридичній діяльності: базовий курс: [навчальний посібник]. / О.В.Співаковський, М.І. Шерман, В.М. Стратонов, В.В. Лапінський – Херсон: ХДУ, 2012. – 220 с.