Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lekcii_OPI_1sem.doc
Скачиваний:
137
Добавлен:
23.02.2016
Размер:
1.53 Mб
Скачать

ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ

    1. Технологія програмування в історичному аспекті

Щоб розібратись в сучасних технологіях програмування і визначити основні тенденції їх розвитку, доцільно розглядати ці технології в історичному контексті, виділяючи основні етапи розвитку програмування як науки.

Перший етап – стихійне програмування. Цей етап охоплює період від моменту появи перших обчислювальних машин до середини 60-их років ХХ ст. В цей період практично були відсутні сформульовані технології і програмування фактично було мистецтвом. Перші програми мали просту структуру. Вони складалися власне із програми на машинній мові та даних що нею оброблялися (рис 1.1). Складність програм в машинних кодах обмежувалась здатністю програміста одночасно відслідковувати послідовність виконуваних операцій та місцезнаходження даних при програмуванні.

Рис. 1.1. Структура перших програм

Поява асемблерів дозволило замість двійкових чи 16-их кодів використовувати символьні імена даних і мнемоніки кодів операцій. В результаті програми стали більш “читабельні”.

Створення мов програмування високого рівня, таких як FORTRAN і ALGOL, суттєво спростило програмування обчислень, знизивши рівень деталізації операцій. Це, в свою чергу, дозволило збільшити складність програм.

Революційною була поява в мовах засобів, що дозволяють оперувати підпрограмами. (Ідея написання підпрограм з’явилася значно раніше, але відсутність засобів підтримки в перших мовних засобах суттєво знижувала ефективність їх використання). Підпрограми можна було зберігати і використовувати в інших програмах. В результаті були створені величезні бібліотеки розрахункових та службових програм, які по мірі необхідності викликались з програми що розробляється.

Типова програма того часу складалася із основної програми, області глобальних даних і набору підпрограм (в основному бібліотечних), які виконували обробку всіх даних або частини їх (рис. 1.2).

Рис. 1.2. Архітектура програми з глобальною областю даних

Слабим місцем такої архітектури було те, що при збільшенні кількості підпрограм виростала ймовірність спотворення частини глобальних даних якоюсь підпрограмою. Наприклад, підпрограма пошуку коренів рівняння на заданому відрізку методом поділу відрізка пополам змінює величину інтервалу. Якщо при виході з підпрограми не передбачити відновлення початкового інтервалу, то в глобальній області виявиться неправильне значення інтервалу. Щоб скоротити число таких помилок в підпрограмах , було запропоновано розміщувати локальні дані (рис. 1.3).

Рис. 1.3. Архітектура програми, яка використовує підпрограми з локальними даними

Складність програмного забезпечення з використанням підпрограм з локальними даними обмежувалась здатністю програміста відслідковувати процеси обробки даних, але вже на новому рівні. Однак, поява засобів підтримки підпрограм дозволило виконувати розробку програмного забезпечення декільком програмістам паралельно.

На початку 60-их років ХХ ст. розпочалась “криза програмування”. Вона виражалася в тому, що фірми, які взялися за розробку складного програмного забезпечення, такого як операційні системи, зривали всі строки завершення проектів. Проект застарівав раніше, ніж був готовий до впровадження, збільшувалась його вартість, і в результаті багато проектів так і не були завершені.

Об’єктивно все це було викликано недосконалістю технології програмування. Насамперед стихійно використовувалась розробка “знизу–вверх” – підхід, при якому спочатку проектували і реалізовували порівняно прості підпрограми, з яких потім пробували скласти складну програму. При відсутності чітких моделей описання підпрограм і методів їх проектування створення кожної підпрограми перетворювалось в непросту задачу, інтерфейси підпрограм були складними, і при зборці програмного продукту виявлялась велика кількість помилок узгоджуваності. Виправлення таких помилок, як правило, вимагало серйозної зміни вже розроблених підпрограм, що ще більше ускладнювало ситуацію, так як при цьому часто вносили нові помилки, які також потрібно було виправляти. Таким чмном процес тестування і відладки програм займав більше 80 % часу розробки, якщо, звичайно, взагалі закінчувався. Найважливішим було питання розробки технології створення складних програмних продуктів, яка знижує ймовірність помилок проектування.

Аналіз причин виникнення більшості помилок дозволив сформулювати новий підхід до програмування, який був названий “структурним”.

Другий етап – структурний підхід до програмування (60 – 70 роки ХХ ст.). Структурний підхід до програмування представляє собою сукупність технологічних прийомів, що охоплюють виконання всіх етапів розробки програмного забезпечення. В основі структурного підходу лежить декомпозиція (розбиття на частини) складних систем з ціллю наступної реалізації у вигляді окремих невеликих (ло 40–50 операторів) підпрограм. З появою інших принципів декомпозиції (об’єктного, логічного і т.д.) даний спосіб отримав назву процедурної декомпозиції.

На відміну від раніше використовуваного процедурного підходу до декомпозиції, структурний підхід вимагав представлення задачі у вигляді ієрархії підзадач простої структури. Проектування таким чином відбувалось “зверху–вниз” і мало на увазі реалізацію загальної ідеї, забезпечуючи проробку інтерфейсів підпрограм. Одночасно вводились обмеження на конструкції алгоритмів, рекомендувались формальні моделі їх описання, а також спеціальний метод проектування алгоритмів – метод покрокової деталізації.

Підтримка принципів структурного програмування була закладена в основу так званих процедурних мов програмування. Як правило вони включали основні “структурні” оператори передачі керування, підтримували вкладання підпрограм, локалізацію і обмеження області “видимості” даних. Серед найбільш відомих мов цієї групи варто назвати PL/1, ALGOL-68, Pascal, C.

Одночасно зі структурним програмуванням з’явилась велика кількість мов, що базуються на інших концепціях, але більшість із них не витримали конкуренції. Деякі мови були просто забуті, ідеї інших були в майбутньому використані в наступних версіях мов які розвиваються.

Подальше збільшення складності і розмірів програмного забезпечення вимагало розвитку структурування даних. В наслідок цього в мовах з’являється можливість визначення користувацьких типів даних. Одночасно збільшилось бажання розмежувати доступ до глобальних даних програми, щоб зменшити кількість помилок, що виникають при роботі з глобальними даними. В результаті появилась і почала розвиватись технологія модульного програмування.

Модульне програмування пропонує виділення груп підпрограм, що використовують одні і ті ж глобальні дані в окремі модулі (бібліотеки підпрограм), наприклад модуль графічних ресурсів, модуль підпрограм виводу на принтер (рис. 1.4). Зв’язки між модулями при використанні даної технології виконуються через спеціальний інтерфейс, в той час як доступ до реалізації модуля (до тіл підпрограм і деяким “внутрішнім” змінним) заборонений. Цю технологію підтримують сучасні версії мов Pascal і C(C++), мови Ада і Modula.

Модулі з локальними даними і підпрограмами

Рис. 1.4. Архітектура програми яка складається з модулів

Використання модульного програмування суттєво спростило розробку програмного забезпечення декількома програмістами. Тепер кожен із них міг розробляти свої модулі незалежно, забезпечуючи взаємодію модулів через спеціально домовлені міжмодульні інтерфейси. Крім того, модулі в майбутньому без змін можна використовувати в інших розробках, що підвищило продуктивність праці програміста.

Практика показала, що структурний підхід разом із модульним програмуванням дозволяє отримувати достатньо надійні програми, розмір котрих не перевищує 100000 операторів. Вузьким місцем модульного програмування є те, що помилка в інтерфейсі при виклиці підпрограми виявляється тільки при виконанні програми (із-за роздільної компіляції модулів знайти помилки раніше неможливо). При збільшенні розміру програми звичайно виростає складність модульних інтерфейсів, і з певного моменту передбачити взаємодію окремих частин програми стає практично неможливо. Для розробки програмного забезпечення великого об’єму було запропоновано використовувати об’єктний підхід.

Третій етап – об’єктний підхід до програмування (з середини 80-х до кінця 90-х років ХХ ст.). Об’єктно-орієнтоване програмування визначається як технологія створення складного програмного забезпечення, основана на представленні програми у вигляді сукупності об’єктів, кожен із яких є екземпляром визначеного типу (класу), а класи утворюють ієрархію з унаслідуванням властивостей. Взаємодія програмних об’єктів в такій системі відбувається шляхом передачі повідомлень (рис. 1.5).

Рис. 1.5. Архітектура програми при об’єктно-орієнтованому підході

Об’єктна структура програми вперше була використана у мові імітаційного моделювання складних систем Simula, яка виникла ще в 60-х роках ХХ ст. Такий спосіб представлення програми отримав розвиток у спеціалізованій мові моделювання Smalltalk (70-ті роки ХХ ст.), а потім був використаний в нових версіях універсальних мов програмування, таких як Pascal, C++, Modula, Java.

Основною перевагою об’єктно-орієнтованого програмування порівняно з модульним програмуванням є “більш натуральна” декомпозиція програмного забезпечення, яка суттєво полегшує розробку. Це призводить до більш повної локалізації даних та інтегрування їх з програмами обробки, що дозволяє вести практично незалежну розробку окремих частин (об’єктів) програми. Крім того, об’єктний підхід пропонує нові способи організації програм, основані на механізмах наслідування, поліформізма, композиції, наповнення. Ці механізми дозволяють конструювати складні об’єкти з порівняно простих. В результаті чуттєво збільшується показник повторного використання кодів і з’являється можливість створення бібліотек класів для різних застосувань.

Бурний розвиток технологій програмування, в основі яких лежить об’єктний підхід, дозволив розв’язати багато проблем. Так, були створені середовища, які підтримують візуальне програмування, наприклад Delphi, C++ Builder, Visual C++ і т.д. При використанні візуального середовища у програміста з’являється можливість проектувати деяку частину, наприклад інтерфейси майбутнього продукту, з використанням візуальних засобів додавання і налаштування спеціальних бібліотечних компонентів. Результатом візуального проектування є заготовка майбутньої програми, в яку вже внесені відповідні коди.

Використання об’єктного підходу має багато переваг, однак його конкретна реалізація в об’єктно-орієнтованих мовах програмування, таких як Pascal і C++, має суттєві недоліки:

1) фактично відсутні стандарти компоновки двійкових результатів компіляції об’єктів в єдине ціле, навіть в межах однієї мови програмування. Компоновка об’єктів отриманих різними компіляторами C++, у кращому випадку проблематична, що призводить до необхідності розробки програмного забезпечення з використанням засобів і можливостей однієї мови програмування високого рівня і одного компілятора, а отже, вимагає наявності вихідних кодів бібліотек класів, що використовуються;

2) зміна реалізації одного з програмних об’єктів, як мінімум, пов’язане з перекомпіляцією відповідного модуля і пере компоновкою всього програмного забезпечення, яке використовує даний об’єкт.

Таким чином, при використанні цих мов програмування зберігається залежність модулів програмного забезпечення від адресів експортуючих полів та методів, а також структур і форматів даних. Ця залежність об’єктивна, так як модулі повинні взаємодіяти між собою, звертаючись до ресурсів один одного. Зв’язки модулів неможливо розірвати, але можна попробувати стандартизувати їх взаємодію, на цьому і оснований компонентний підхід до програмування.

Четвертий етап – компонентний підхід і CASE-технології (з середини 90-х років ХХ ст. до нашого часу). Компонентний підхід пропонує побудову програмного забезпечення з окремих компонентів фізично окремо існуючих частин програмного забезпечення, які взаємодіють між собою через стандартизовані двійкові інтерфейси. На відміну від звичайних об’єктів об’єкти-компоненти можна збирати в динамічні бібліотеки або файли які виконуються, розповсюджувати в двійковому коді (без початкових текстів) і використовувати в будь-якій мові програмування, що підтримує відповідну технологію. На сьогоднішній день ринок об’єктів став реальністю, так, в Інтернеті існують вузли, які представляють велику кількість компонентів, реклами компонентів в журналах. Це дозволяє програмістам створювати продукти, які хоча б частково складаються з повторно використаних частин, тобто використати технологію, яка добре зарекомендувала себе в області проектування апаратури.

Компонентний підхід лежить в основі технологій, розроблених на базі COM (Component Object Model – компонентна модель об’єктів), і технології створення розподілених додатків CORBA (Common Object Request Broker Architecture – загальна архітектура з посередником обробки запитів об’єктів). Ці технології використовують схожі принципи і розрізняються лише особливостями їх реалізації.

Технологія COM фірми Microsoft є розвитком технології OLE (Object Linking and Embedding – зв’язування та внедрение об’єктів), яка використовувалась в ранніх версіях Windows для створення складових документів. Технологія COM визначає загальну парадигму взаємодії програм довільних типів: бібліотек, додатків, операційної системи, тобто дозволяє одній частині програмного забезпечення використовувати функції (служби), що надаються іншою, незалежно від того чи функціонують ці частини в межах одного процесу, в різних процесах на одному комп’ютері чи на різних комп’ютерах (рис. 1.6). Модифікація COM, забезпечує передачу викликів між комп’ютерами, називається DCOM (Distributed COM – розподілена COM).

Рис. 1.6. Взаємодія програмних компонентів різних типів

По технології COM додаток надає свої служби, використовуючи спеціальні об’єкти – об’єкти COM, які є екземплярами класів COM. Об’єкт COM так як і звичайний об’єкт має поля і методи, але на відміну від звичайних об’єктів кожний об’єкт COM може реалізовувати декілька інтерфейсів, що забезпечують доступ до його полів і функцій. Це досягається за рахунок організації окремої таблиці адресів методів для кожного інтерфейсу (по типу таблиць віртуальних методів). При цьому інтерфейс звичайно об’єднує декілька однотипних функцій. Крім того, класи COM підтримують унаслідування інтерфейсів, але не підтримують наслідування реалізації, тобто не наслідують код методів, хоча при необхідності об’єкт дочірнього класу може викликати метод батьківського.

Кожен інтерфейс має своє ім’я, яке починається з літери “I”, і глобальний унікальний ідентифікатор IDD (Interface IDentifier). Будь-який об’єкт COM обов’язково реалізує інтерфейс IUnknown (на схемах цей інтерфейс завжди розміщують зверху). Використання цього інтерфейсу дозволяє отримати доступ до інших інтерфейсів об’єкта.

Об’єкт завжди функціонує у складі сервера – динамічної бібліотеки або виконуваного файлу, які забезпечують функціонування об’єкта. Розрізняють три типи серверів:

1) внутрішній сервер; реалізується динамічними бібліотеками, які підключаються до додатка-кліента і працюють в спільному адресному просторі, найбільш ефективний сервер, крім того він не вимагає спеціальних ресурсів;

2) локальний сервер; створюється окремим процесом (модулем, ехе), який працює на одному комп’ютері з клієнтом;

3) віддалений сервер; створюється процесом, який працює на іншому комп’ютері.

Наприклад, Microsoft Word є локальним сервером. Він включає багато об’єктів, які можуть використовуватись іншими додатками.

Для звернення до служб клієнт повинен отримати вказівник на відповідний інтерфейс. Перед першим зверненням до об’єкта клієнт посилає запит до бібліотеки COM, що містить інформацію про всі зареєстровані в системі класи COM об’єктів, і передає їй ім’я класу, ідентифікатор інтерфейсу і тип сервера. Бібліотека запускає необхідний сервер, створює необхідні об’єкти і повертає вказівники на об’єкти та інтерфейси. Отримавши вказівники, клієнт може викликати необхідні функції об’єкта.

Взаємодія клієнта і сервера забезпечується базовими механізмами COM або DCOM, тому клієнту неважливе місцезнаходження об’єкта. При використанні локальних і віддалених серверів в адресному просторі клієнта створюється proxy-об’єкт замісник об’єкта COM, а в адресному просторі сервера COM – заглушка, відповідна клієнту. Отримавши завдання від клієнта, замісник упаковує його параметри і, використовуючи служби операційної системи, передає виклик заглушці. Заглушка розпаковує завдання і передає його об’єкту COM. Результат повертається клієнту у зворотному порядку.

На базі технології COM та її розподіленої версії DCOM були розроблені компонентні технології, які розв’язують різні задачі розробки програмного забезпечення.

OLE-automation або просто Automation (автоматизація) – технологія створення додатків, які програмуються, та забезпечує програмуючий доступ до внутрішніх служб цих додатків. Вводить поняття диспінтерфейсу (dispinterface) – спеціального інтерфейсу, який полегшує виклик функцій об’єкта. Цю технологію підтримує, наприклад Microsoft Excel, надаючи іншим додаткам свої служби.

ActiveX – технологія, побудована на базі OLE-automation, призначена для створення програмного забезпечення, як зосередженого на одному комп’ютері, так і розподіленого в мережі. Передбачає використання візуального програмування для створення компонентів – елементів управління ActiveX. Отримані таким чином елементи управління можна встановлювати на комп’ютер дистанційно з віддаленого сервера, причому код залежить від операційної системи що використовується. Це дозволяє використовувати елементи управління ActiveX в клієнтських частинах додатків Інтернету.

Основними перевагами технології ActiveX, які забезпечують їй широке використання, є:

1) швидке написання програмного коду, оскільки всі дії, пов’язані з організацією взаємодії сервера та клієнта, беруться на програмне забезпечення COM, програмування мережевих додатків стає схожим на програмування для окремого комп’ютера;

2) відкритість та мобільність – специфікації технології недавно були передані в Open Group як основа відкритого стандарту;

3) можливість написання додатків з використанням знайомих засобів розробки, наприклад Visual Basic, Visual C++, Borland Delphi, Borland C++ та будь-яких засобів розробки на Java;

4) велика кількість уже існуючих безкоштовних програмних елементів ActiveX (до того ж практично будь-який програмний компонент OLE сумісний з технологіями ActiveX і може використовуватись без модифікацій в мережевих додатках);

5) стандартність – технологія ActiveX основана на стандартах Інтернет (TCP/IP, HTML, Java), з одного боку, і стандартах введених в свій час Microsoft і необхідних для збереження сумісності (COM, OLE).

MTS (Microsoft Transaction Server – сервер управління трансакціями) – технологія, що забезпечує безпеку і стабільну роботу розподілених додатків при великих об’ємах даних які передаються.

MIDAS (Multitier Distributed Application Server – сервер багатоланкових розподілених додатків) – технологія, яка організовує доступ до даних різних комп’ютерів з врахуванням балансування навантаження мережі.

Всі вказані технології реалізують компонентний підхід, закладений в COM. Так, з точки зору COM елемент управління ActiveX – “чорний ящик”, який володіє властивостями, методами та подіями, який можна використовувати як будівельний блок при створенні додатків.

Технологія CORBA, розроблена групою компаній OMC (Object Management Group – група впровадження об’єктної технології програмування), реалізують підхід, аналогічний COM, на базі об’єктів та інтерфейсів CORBA. Програмне ядро CORBA реалізовано для всіх апаратних і програмних платформ, і тому цю технологію можливо використовувати для створення розподіленого програмного забезпечення в гетерогенному (різнорідному) обчислювальному середовищі. Організація взаємодії між об’єктами клієнта і сервера в CORBA здійснюється за допомогою спеціального посередника названого VisiBroker, та іншого спеціалізованого програмного забезпечення.

Особливістю сучасного етапу розвитку технології програмування, крім зміни підходу, є створення та супроводження програмного забезпечення, які були названі CASE-технології (Computer-Aided Software/System Engineering – розробка програмного забезпечення програмних систем з використанням комп’ютерної підтримки). Без засобів автоматизації розробка достатньо складного програмного забезпечення на сучасний момент стає тяжко реалізованою задачею: пам’ять людини вже не в стані фіксувати всі деталі, які необхідно враховувати при розробці програмного забезпечення. На сьогодні існують CASE-технології, які підтримують як структурний, так і об’єктний (у тому числі і компонентний) підходи до програмування.

Поява нового підходу не означає, що все програмне забезпечення буде створюватись з програмних компонентів, але аналіз існуючих проблем розробки складного програмного забезпечення показує, що він буде використовуватись досить широко.

    1. Основні поняття і означення

Технологія програмування – сукупність методів і засобів, які застосовуються у процесі розробки програмного забезпечення.

Програма (program, routine) – впорядкована послідовність команд (інструкцій) комп’ютера для розв’язання задачі.

Програмне забезпечення (software) – сукупність програм обробки даних та необхідних для їх експлуатації документів.

Задача (problem, task) – проблема, яку необхідно розв’язати.

Додаток (application) – програмна реалізація розв’язку задачі на комп’ютері.

Термін «задача» в програмуванні означає одиницю роботи обчислювальної системи, яка вимагає обчислювальних ресурсів (процесорного часу, пам’яті).

Процес створення програм можна представити як послідовність наступних дій:

  1. постановка задачі;

  2. алгоритмізація розв’язку задачі;

  3. програмування.

Постановка задачі (problem definition) – це точне формулювання розв’язку задачі на комп’ютері з описом вхідної та вихідної інформації.

Алгоритм – система чітко сформульованих правил, яка визначає процес перетворення допустимих початкових даних (вхідної інформації) у бажаний результат (вихідну інформацію) за скінчену кількість кроків.

Програмування (programming) – теоретична і практична діяльність, пов’язана зі створенням програм.

По відношенню до ПЗ користувачі ПК діляться на наступні групи:

  1. системні програмісти. Займаються розробкою, експлуатацією і супроводженням системного програмного забезпечення;

  2. прикладні програмісти. Виконують розробку і відладку програм для розв’язання різних прикладних задач;

  3. кінцеві користувачі. Мають елементарні навики роботи з комп’ютером і прикладними програмами, які використовують;

  4. адміністратори мережі. Відповідають за роботу обчислювальних мереж;

  5. адміністратори баз даних. Забезпечують організаційну підтримку баз даних.

Супроводження програми – підтримка працездатності програми, перехід на її нові версії, внесення змін, виправлення помилок і т.д.

Основні характеристики програм:

  1. алгоритмічна складність;

  2. склад функцій оброки інформації;

  3. об’єм файлів, які використовуються програмою;

  4. вимоги до операційної системи (ОС) і до технічних засобів обробки, у тому числі об’єм дискової пам’яті, розмір оперативної пам’яті для запуску програми, тип процесора, версія ОС, наявність обчислювальної мережі і т.д.

Показники якості програми:

  1. мобільність – незалежність від технічного комплексу системи обробки даних, ОС, мережених можливостей, специфіки предметної області задачі і т.д.;

  2. надійність – стійкість, точність виконання передбачених функцій обробки, можливість діагностики помилок, які виникають в роботі програми;

  3. ефективність, як з точки зору вимог користувача, так і з використання обчислювальних ресурсів;

  4. врахування людського фактора – дружній інтерфейс, контекстно-залежна підказка, хороша документація;

  5. модифікованість – здатність до внесення змін, наприклад, розширення функцій обробки, перехід на іншу базу обробки і т.п.;

  6. комунікативність – максимально можлива інтеграція з іншими програмами, забезпечення обміном даних між програмами.

Всі програми по характеру використання і категоріям користувачів можна розділити на два класи – утилітарні програми і програмні продукти.

Утилітарні програми («програми для себе») призначені для задоволення потреб їх розробників. Частіше всього такі програми виконують роль додатків для відладки, які є програмами для розв’язування задач, не призначених для широкого розповсюдження.

Програмні продукти – використовуються для задовольняння потреб користувачів, широкого розповсюдження і продажі.

В наш час існують інші варіанти легального розповсюдження програмних продуктів, які з’явились з використанням глобальних комунікацій:

  • freeware – безкоштовні програми, вільно розповсюджуються, підтримуються самим користувачем, який може вносити в них необхідні зміни;

  • shareware некомерційні (умовно-безкоштовні) програми, які можуть використовуватись, як правило, безкоштовно.

Ряд виробників використовують ОЕМ-програми (Original Equipment Manufacturer), тобто вбудовані програми, які встановлюються на комп’ютер або постачаються разом з комп’ютерами.

Програмний продукт повинен бути відповідним чином підготовлений до експлуатації, мати необхідну технічну документацію, надавати сервіс і гарантію надійної роботи програми, мати товарний знак виробника, а також наявність коду державної реєстрації.

    1. Класифікація програмного забезпечення

Можна виділити три класи ПЗ:

  1. системне;

  2. пакети прикладних програм (прикладне ПЗ);

  3. інструментарій технології програмування (інструментальні засоби для розробки ПЗ).

Системне ПЗ направлене:

  • на створення операційного середовища функціонування інших програм;

  • забезпечення надійної та ефективної роботи самого комп’ютера і обчислювальної мережі;

  • проведення діагностики і профілактики апаратури комп’ютера і обчислювальних мереж;

  • виконання допоміжних технологічних процесів (копіювання, архівація, відновлення файлів програм і БД і т.п.).

Системне ПЗ (System Software) – сукупність програм і програмних комплексів для забезпечення роботи комп’ютера і обчислювальних мереж.

Прикладне ПЗ служить програмним інструментарієм розв’язання функціональних задач і є самим багато чисельним класом ПЗ. У даний клас входять програмні продукти, які виконують обробку інформації різних предметних областей. Таким чином, прикладне ПЗ – комплекс взаємопов’язаних програм для розв’язання задач визначеного класу предметної області.

Інструментарій технології програмування забезпечує процес розробки програм і включає спеціалізоване ПЗ, яке є інструментальним засобом розробки. ПЗ цього класу підтримують всі технологічні етапи процесу проектування, програмування, відладки і тестування програм. Користувачами цього ПЗ є системні і прикладні програмісти.

      1. Системне програмне забезпечення

У складі системного ПЗ можна виділити дві складові:

  1. базове ПЗ;

  2. сервісне ПЗ.

Базове ПЗ – мінімальний набір програмних засобів для забезпечення роботи комп’ютера.

Сервісне ПЗ – програми і програмні комплекси, які розширюють можливості базового ПЗ і організують більш зручне середовище роботи користувача.

В базове ПЗ входять:

  1. операційна система;

  2. операційні оболонки (текстові, графічні);

  3. мережева операційна система.

Комп’ютер виконує дії у відповідності з алгоритмом програми створеної на одній із мов програмування. При роботі користувача на комп’ютері часто виникає необхідність виконувати операції з прикладною програмою в цілому, організувати роботу зовнішніх пристроїв, перевірити роботу різних блоків, копіювати інформацію і т.д. Ці операції використовуються для роботи з довільною програмою. Тому доцільно із всіх операцій виділити типові і реалізувати їх з допомогою спеціалізованих програм, які слід прийняти в якості стандартних засобів, які поставляються разом з апаратною частиною. Програми які організують роботу пристроїв і не пов’язані зі специфікою задачі, увійшли у склад комплексу програм, названого операційною системою.

Операційна система – сукупність програмних засобів, які забезпечують управління апаратної частини комп’ютера і прикладних програм, а також їх взаємодію між собою і користувачем.

Операційна система утворює автономне середовище, не пов’язану з жодною з мов програмування. Будь-яка прикладна програма зв’язана з ОС і може експлуатуватись тільки на комп’ютерах, де є аналогічне системне середовище. Програма створена в середовищі однієї ОС не функціонує в середовищі іншої ОС, якщо в ній не забезпечена можливість конвертації (перетворення) програм.

Для роботи з ОС необхідно оволодіти мовою цього середовища – сукупність команд, структура яких визначається синтаксисом цієї мови.

ОС виконує наступні функції:

  • управління роботою кожного блоку ПЗ та їх взаємодією;

  • управління виконанням програм;

  • організація збереження інформації у зовнішній пам’яті;

  • взаємодія користувача з комп’ютером (підтримка інтерфейсу користувача).

Зазвичай ОС зберігається на жорсткому диску, а при його відсутності виділяється спеціальний системний диск. При включенні комп’ютера ОС автоматично завантажується з диска в оперативну пам’ять і займає в ній певну частину. ОС створюється не для окремої моделі комп’ютера, а для серії комп’ютерів, в структуру якої закладена і розвивається в наступних моделях окрема концепція.

Операційні системи для ПК діляться:

  • на одно- та багатозадачні (в залежності від числа паралельного виконання прикладних процесів);

  • одно- і багатокористувацькі (в залежності від числа користувачів, одночасно працюючих з ОС);

  • непереносимі і переносимі на інші типи комп’ютерів;

  • немережеві і мережеві, забезпечують роботу ЕОМ у мережі.

Операційні системи, як правило, порівнюють за наступними критеріями:

  • управління пам’яттю (максимальний об’єм адресного простору, технічні показники використання пам’яті);

  • функціональні можливості допоміжних програм (утиліт) у складі ОС;

  • наявність компресії магнітних дисків;

  • можливість архівації файлів;

  • підтримка багатозадачного режиму роботи;

  • наявність якісної документації;

  • умовами та складністю процесу інсталяції.

Найбільш розповсюдженими ОС для ПК в наш час є:

  • Windows (Microsoft);

  • UNIX;

  • OS/2 (IBM).

ОС OS/2 розроблена IBM для ПК на основі системної прикладної архітектури, яка раніше використовувалась на великих ЕОМ. Це багатозадачна, багатокористувацька ОС, забезпечує як текстовий так і графічний інтерфейс користувача. OS/2 забезпечує:

  • підтримку графічного інтерфейсу користувача;

  • одночасну обробку декількох додатків;

  • багатопотокову обробку декількох задач одного додатку;

  • 32-розрядну обробку даних;

  • стиснення даних при запису на магнітний диск;

  • захист пам’яті.

Важливими особливостями OS/2 є високоефективна файлова система HPFS (High Performance File System), яка має переваги для серверів БД (на відміну від MS DOS підтримуються довгі імена файлів), а також підтримка мультипроцесорної обробки – до 16 процесорів типу Intel і Power PC. OS/2 Warp має вбудований доступ до Internet, систему розпізнавання мови VoiceType, інтегровану версію Lotus Notes Mail для передачі електронної пошти. В OS/2 можуть виконуватись прикладні програми Windows 3.х, але не можуть виконуватись додатки, які працюють в середовищі Windows NT.

ОС UNIX, створена корпорацією Bell Laboratory, реалізує принцип відкритих систем і широкі можливості по об’єднанню у складі однієї обчислювальної системи різнорідних технічних і програмних засобів. UNIX володіє наступними властивостями:

  • переносимість прикладних програм з одного комп’ютера на інший;

  • підтримка розподіленої обробки даних в мережі ЕОМ;

  • сумісність з процесорами RISC.

ОС UNIX розповсюджена для суперкомп’ютерів, робочих станцій і професійних ПК, має велике число версій, які розроблені різними виробниками ПЗ.

Мережева ОС – це комплекс програм, який забезпечує обробку, передачу і збереження даних в мережі. Мережева ОС надає користувачам різні види мережених служб (управління файлами, електронна пошта, процеси управління мережею і т.д.), підтримують роботу в абонентських системах. Мережеві ОС використовують архітектуру «клієнт-сервер» або однорангову архітектуру. Найбільш поширеними є Windows 95, LAN Server, NetWare.

Windows NT є багатозадачною, призначеною для архітектури «клієнт-сервер» і використання різних протоколів транспортного рівня мереженої ОС (IPX/SPX, TCP/IP, Net Bios), має 32-розрядну архітектуру і забезпечує наступні функції локальної мережі:

  • можливість кожної абонентської системи в мережі бути сервером або клієнтом;

  • сумісну роботу групи користувачів;

  • адресацію оперативної та зовнішньої пам’яті великого розміру;

  • багатозадачність і багатопотоковість обробки даних;

  • підтримку мультипроцесорної обробки та ін.

Характеристики деяких ОС.

ОС

Об’єм ОЗУ, Мбайт

Пам’ять на МД, Гбайт

Багато-процесорна обробка

Засоби взаємодії прикладних програм

OS/2 Warp 4.0

12-24

100-300

Немає

Java, Open DOC

MS Windows 2000

64

1024

Є

Open JL, PM API, WIN 32

MS Windows XP

128

1024

Є

OLE, Open JL, WIN 32

Операційні оболонки – спеціальні програми, призначені для полегшення роботи користувача з командами ОС. Операційні оболонки мають текстовий та графічний варіанти інтерфейсу. Найбільш популярні такі оболонки MS DOS, як Norton Commander, DOS Navigator, Volkov Commander та інші. Ці програми суттєво спрощують складність роботи користувача.

Серед графічних оболонок MS DOS можна виділити Windows 3.1, Windows 3.11 for Work Group, які розширюють набір основних (диспетчер файлів, графічний редактор, текстовий редактор і т.д.) і сервісних функцій, які забезпечують створення для користувача систем обробки інформації у складі однорангових локальних мереж.

Розширенням базового ПЗ комп’ютера є набір програм, які можна класифікувати по функціональному признаку наступним чином:

  • програми діагностики працездатності комп’ютера;

  • антивірусні програми, забезпечують захист комп’ютера, відшукання та відновлення заражених файлів;

  • програми обслуговування дисків, забезпечують перевірку якості поверхні магнітного диску, контроль збереження файлової системи на логічному і фізичному рівнях, стиснення дисків, резервне копіювання даних на зовнішні носії та ін.;

  • програми архівації даних, які забезпечують процес стиснення інформації з метою зменшення об’єму пам’яті для її збереження;

  • програми обслуговування мережі.

Ці програми часто називають утилітами.

Утиліти – програми, які служать для виконання допоміжних операцій обробки даних або обслуговування комп’ютерів.

      1. Інструментарій технології програмування

Інструментарій технології програмування – це програмні продукти, призначені для підтримки технології програмування.

Середовища для створення додатків – сукупність мов і систем програмування, інструментальні середовища користувача, а також різні програмні компоненти для налагодження і підтримки створюваних програм.

Мова програмування – це формалізована мова для описання алгоритму розв’язування задач на комп’ютері.

Мови програмування можна умовно розділити на наступні класи:

  • машинні мови – це мови, які сприймаються апаратною частиною комп’ютера (машинні коди);

  • машинно-орієнтовані мови, відображають структуру конкретного типу комп’ютера (асемблер);

  • процедурно-орієнтовані мови – це мови, в яких є можливість описання програми як сукупність процедур, або підпрограм (С, Pascal та ін.);

  • проблемно-орієнтовані мови, призначені для розв’язання задач деякого класу.

Іншою класифікацією мов є поділ на мови, орієнтовані на реалізацію основ структурного програмування, основаного на модульній структурі програмного продукту і типових управляючих структурах алгоритмів обробки даних різних програмних модулів, і об’єктно-орієнтовані мови, які підтримують поняття об’єктів, їх властивостей і методів обробки.

Системи програмування включають:

  • компілятор (транслятор);

  • інтегроване середовище розробки програм (не завжди);

  • налагоджувач;

  • засоби оптимізації коду програми;

  • набір бібліотек;

  • редактор зв’язків;

  • сервісні засоби (утиліти) (для роботи з бібліотеками, текстовими і двійковими файлами);

  • довідкові системи;

  • система підтримки і управління продуктами програмного комплексу.

Компілятор транслює всю програму без її виконання. Транслятори (інтерпретатори) виконують поопераційну обробку і виконання програми.

Відгадчики (debugger) – спеціальні програми, призначені для трасування і аналізу виконання інших програм. Трасування – це забезпечення виконання в операторному варіанті.

Інструментальне середовище користувача – це спеціальні засоби, вбудовані в пакети прикладних програм, такі як:

  • бібліотека функцій, процедур, об’єктів і методів обробки;

  • макрокоманди;

  • клавішні макроси;

  • мовні макроси;

  • конструктори екранних форм та об’єктів;

  • генератори додатків;

  • мови запитів високого рівня;

  • конструктори меню та ін.

Інтегровані середовища розробки програм об’єднують набір засобів для їх комплексного застосування на технологічних етапах створення програми.

Засоби для створення інформаційних систем (ІС) і технологій підтримують повний цикл проектування складної інформаційної системи чи технології від дослідження об’єкта автоматизації до оформлення проектної та іншої документації на інформаційну систему чи технологію. Вони дозволяють вести колективну роботу над проектом за рахунок можливості роботи в локальній мережі, експорт-імпорт довільних фрагментів проекту, організація управління проектом.

Однією з сучасних засобів розробки ІС є CASE-технологія (CASE – Computer-Aided System Engineering) – програмний комплекс, автоматизує весь технологічний процес аналізу, проектування, розробки і супроводження складних програмних систем.

Засоби CASE-технологій діляться:

  • на вбудовані в систему реалізації – всі рішення по проектуванню і реалізації прив’язки до вибраної СУБД;

  • незалежні від системи реалізації – всі рішення по проектуванню орієнтовані на уніфікацію (визначення) початкових етапів життєвого циклу програми і засобів їх документування, забезпечують велику гнучкість у виборі засобів реалізації.

Основна перевага CASE-технології – це підтримка колективної роботи над проектом за рахунок можливості роботи в локальній мережі розробників, експорту (імпорту) довільних частин проекту, організованого управління проектами.

В деяких CASE-системах підтримується кодогенерація програм – створення каркасу програм і створення повного продукту.

Приклади програмного продукту для створення додатку: Visual C++; Visual Basic і т.д.

      1. Пакети прикладних програм

Класифікація пакетів прикладних програм (ППП)

Рис. 1.8. класифікація пакетів прикладних програм

Проблемно-орієнтовані ППП. Для деяких предметних областей можлива типізація функцій керування, структури даних та алгоритмів обробки. Це викликало велику кількість розробок ППП однакового функціонального призначення:

  • ППП автоматизованого бухгалтерського обліку;

  • ППП фінансової діяльності;

  • ППП управління персоналом;

  • ППП управління виробництвом;

  • банківські інформаційні системи і т.п.

Основні тенденції розвитку:

  • створення програмних комплексів у вигляді автоматизованих робочих місць (АРМ) управлінського персоналу;

  • створення інтегрованих систем управління предметної області на базі обчислювальних мереж, які об’єднують АРМ;

  • організація даних великих інформаційних систем у вигляді розподіленої БД у мережі ЕОМ;

  • наявність простих мовних засобів кінцевого користувача та ін.

ППП автоматизованого проектування призначені для підтримки роботи конструкторів і технологів, пов’язаних з розробкою креслень, схем, графічним моделюванням і конструюванням. Особливими рисами цього класу ППП є великі вимоги до апаратного забезпечення, наявність бібліотек вбудованих функцій, об’єктів, інтерфейсів з графічними системами та БД (AutoCAD).

До ППП загального призначення належать:

  1. Системи управління базами даних (СУБД), забезпечують організацію та зберігання локальних БД на автономних комп’ютерах або центральне зберігання БД на файл-сервері і мережений доступ до них. Сучасні СУБД (наприклад, MS Access) містять елементи CASE-технології процесу проектування, а саме:

  • візуалізована схема БД;

  • реалізована автоматизована підтримка цілісності БД при різних видах обробки (включення, видалення, модифікація);

  • надаються так звані майстри, які забезпечують підтримку процесу проектування;

  • створені шаблони (прототипи) структур БД, звітів, форм і т.д.

  • Сервери БД – це ПЗ, яке призначене для створення і використання при роботі в мережі інтегрованих БД в архітектурі «клієнт-сервер». Багатокористувацькі СУБД в мереженому варіанті обробки інформації зберігають дані на файл-сервері, спеціально виділеному комп’ютері, але сама обробка ведеться на робочих станціях. Сервери БД більшу частину обробки даних (зберігання, пошук, передача даних клієнту) виконують самостійно, одночасно забезпечують даними велику кількість користувачів мережі. Спільним для різних видів серверів БД є використання реляційної мови програмування SQL (Structured Query Language) для реалізації запитів до даних. Проблеми: забезпечення цілісності даних, тиражування даних по вузлах мережі і синхронне оновлення.

  • Генератори звітів (сервери звітів), забезпечують реалізацію запитів і формування звітів у друкованому чи екранному вигляді в умовах мережі з архітектурою «клієнт-сервер». Сервер звітів підключається до сервера БД.

  • Текстові процесори, призначені для роботи з текстовими документами. Розвитком даного напряму є видавницькі системи (Microsoft Word).

  • Табличні процесори, є зручним середовищем для обчислень кінцевим користувачем, мають засоби ділової графіки, засоби спеціалізованої обробки (Microsoft Excel).

  • Засоби створення презентаційної графіки – спеціальні програми, призначені для створення слайдів та їх проектування, підготовки слайд-фільмів (Microsoft PowerPoint).

  • Інтегровані пакети набір декількох програмних продуктів, які доповнюють один одного функціонально, підтримують одну технологію, реалізовані на одній операційній та обчислювальній платформі (Microsoft Office). Компоненти інтегрованих пакетів можуть працювати ізольовано один від одного, мають спільний інтерфейс, завдяки чому їх легше освоювати.

    Методо-оріентовані ППП. Цей клас охоплює програмні продукти, які забезпечують незалежно від предметної області і функції інформаційних систем математичні, статичні та інші способи розв’язування задач. Найбільш поширені методи математичного програмування, розв’язування диференціальних рівнянь, імітаційного моделювання, дослідження операцій (Storm, SYSTAT, SAS та ін.).

    Офісні ППП. Програми, які забезпечують орієнтаційне управління діяльністю офіса:

    • органайзери (планувальники) – ПЗ для планування робочого часу, складання протоколу зустрічей, розкладів, ведення записів та телефонної книжки. У склад входять: калькулятор, записна книжка, годинник, календар і т.д.

    • програми перекладачі, засоби перевірки орфографії, розпізнавання тексту {Lingvo};

    • комунікаційні пакети, призначені для організації взаємодії користувачів з віддаленими абонентами чи інформаційними ресурсами мережі;

    • браузери, засоби створення Web-сторінок;

    • засоби електронної пошти.

    Настільні видавницькі системи. Цей клас ПЗ включає програми (PageMaker, CorelDraw, PhotoShop for Windows і т.д.), які забезпечують інформаційну технологію комп’ютерної видавницької діяльності:

    • форматування та редагування тестів;

    • автоматичну розбивку тексту на сторінки;

    • комп’ютерну верстку друкованої сторінки;

    • монтування графіки;

    • підготовка ілюстрацій і т.п.

    Програмні засоби мультимедіа. Основне призначення цих програмних засобів – створення та використання аудіо- та відеоінформації для розширення інформаційного простору користувача (бібліотеки звукових та відео записів).

    Системи штучного інтелекту:

    • програми оболонки для створення експертних систем шляхом наповнення баз знань і правил логічного виводу;

    • готові експертні системи для прийняття рішень в рамках визначених предметних областях;

    • системи аналізу і розпізнавання мови, тексту і т.п.

    Приклади систем штучного інтелекту: FIDE, MYSIN, Guru та ін.

    Контрольні запитання

    1. Основні характеристики програм.

    2. Класифікація програмного забезпечення.

    3. Означення та основні характеристики системного програмного забезпечення.

    4. Означення та основні характеристики прикладного програмного забезпечення.

    5. Дайте означення та охарактеризуйте інструментарій технології програмування.

    2. Технологія розробки програмних продуктів

    2.1 Особливості створення програмного продукту

    2.1.1. Принципи роботи з вимогами до програмного забезпечення. Проблематика проектування.

    Згідно статистичних досліджень групи Стендіша (Standish Group), в США щорічно витрачається більше 250 млрд. доларів на розробку додатків інформаційних технологій в рамках приблизно 175000 проектів. Причому 31 % проектів буде зупинено до завершення. Затрати на 52,7 % проектів складуть 189 % від початкової оцінки вартості. Американські компанії та управлінські організації потратять 81 млрд. доларів на програмні проекти, які так і не будуть завершені. Ці ж організації заплатять додатково 59 млрд. доларів за програмні проекти, які завершаться, але значно перевищать заплановано відведений на них час.

    Першим кроком на шляху розв’язання будь-якої проблеми є усвідомлення основних причин її виникнення. У звіті групи Стендіша вказано три ключових фактори, які найбільш часто зустрічаються і створюють проблеми при проектуванні програмного забезпечення:

    • нестача початкової інформації від клієнта – 13 % всіх проектів;

    • неповні вимоги і специфікації – 12 % проектів;

    • зміна вимог і специфікацій – 12 % всіх проектів.

    Звичайно проект може потерпіти невдачу через нереалістично складеного графіку чи неправильно розподіленого часу (4 % проектів), нераціональний підбір персоналу і виділення ресурсів (6 %), невідповідність технологічних навиків (7 %), а також по іншим причинам. Якщо вважати, що наведені цифри представляють реальний стан в галузі, то по крайній мірі, невдачі третьої частини проектів пояснюються причинами, безпосередньо пов’язаними зі збором і документуванням вимог, а також з управлінням ними.

    Не дивлячись на те що більшість проектів дійсно перевищують відведений час і бюджет, виявилось, що біля 9 % проектів крупних компаній були завершені вчасно і в межах бюджету; аналогічного успіху вдалось досягнути у 16 % проектів малих компаній. Виникає очевидне запитання: «Які основні фактори успіху в цих проектах?» Згідно проведеного дослідження трьома найбільш важливими факторами були:

    • підключення до розробки користувача – 16 % всіх успішних проектів;

    • підтримка зі сторони виконавчого керівництва – 14 % всіх успішних проектів;

    • чітка постановка вимог – 12 % всіх успішних проектів.

    Дві інші основні проблеми, які згадуються майже в половині звітів, виявились:

    • специфікації вимог;

    • управління вимогами клієнта.

    2.1.2. Оцінка вартості помилок

    Недавно ряд компаній провели дослідження оцінки вартості помилок, що виникають на різних етапах створення програм. Кожна фірма діяла незалежно, але результати були приблизно однакові: якщо вартість зусиль, необхідних для знаходження і виправлення помилок на стадії написання коду, прийняти за одиницю, то вартість знаходження і виправлення помилок на стадії розробки вимог буде в 5–10 разів менша, а вартість знаходження і виправлення помилок на стадії супроводження – в 20 разів більша.

    0,1–0,2 Час розробки вимог

    0,5 Проектування

    1 Кодування

    2 Тестування компонент

    5 Впровадження

    20 Підтримка і обслуговування

    Звідки береться така висока вартість помилок? До моменту знаходження помилки у вимогах група розробників вже могла потратити час та зусилля на створення проекту по цим помилковим вимогам. У результаті проект, ймовірно, прийдеться відкинути чи переглянути.

    Істинна природа помилки може бути замаскована; при проведенні тестування і перевірок на даній стадії всі думають, що мають справу з помилками проектування, і значний час і зусилля можуть бути потрачені даремно.

    В залежності від того, де і коли при роботі над проектом розробки програмного додатку був знайдений дефект, ціна його може відрізнятися в 50-100 разів. Причина цього в тому, що для його виправлення прийдеться затратити ресурси на деякі (або всі) нижче перераховані дії.

    1. Повторна специфікація.

    2. Повторне проектування.

    3. Повторне кодування.

    4. Повторне тестування.

    5. Заміна замовлення – сповістити клієнтам та операторам про необхідність замінити дефектну версію виправленою.

    6. Внесення виправлень – виявити і ліквідувати всі неточності, викликані неправильним функціонуванням помилково специфікованої системи, що може вимагати виплати певних сум обуреним клієнтам, повторного виконання певних обчислювальних задач на ЕОМ і т.п.

    7. Списання тієї частини роботи (коду, частин проекту і т.п.), яка виконувалась, але виявилась непотрібною, коли виявилось, що все це створювалось на основі невірних вимог.

    8. Відкликання дефектних версій вбудованого програмного забезпечення і відповідної документації. Якщо прийняти до уваги, що програмне забезпечення вбудовується в різні вироби – від годинників і мікрохвильових пічок до автомобілів, – така заміна може зачепити як самі вироби, так і вбудоване в них програмне забезпечення.

    9. Виплати по гарантійним зобов’язанням.

    10. Відповідальність за виріб, якщо клієнт через суд вимагає відшкодування збитків, завданого неякісним програмним продуктом.

    11. Затрати на обслуговування – представник компанії повинен відвідати клієнта, щоб встановити нову версію програмного забезпечення.

    12. Створення документації.

  • Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]