Налагодження програм і програмних комплексів
Характерною особливістю сучасних АСУ є значне ускладнення використовуваного в них програмного забезпечення, яке являє собою великі комплекси взаємодіючих програм об'ємом до десятків і сотень тисяч команд. З ростом надійності обчислювальної техніки програмне забезпечення стає основним джерелом неправильного функціонування систем управління. У процесі його розробки допускається велика кількість помилок, вартість виявлення та усунення яких становить 40-50% загальних витрат на розробку і впровадження АСУ.
Технологія розробки та впровадження програмного забезпечення АСУ передбачає проведення наступних етапів: постановка завдань і вибір алгоритмів їх вирішення, розробка, системних і програмних специфікацій завдань, розробка комплексу програм, його налагодження, досвідчена і промислова експлуатація.
Помилки програмного забезпечення можуть бути класифіковані наступним чином: системні помилки, обумовлені неправильним розумінням змісту задачі і умов її реалізації в АСУ; алгоритмічні помилки, пов'язані з некоректною формулюванням і реалізацією алгоритмів програмним шляхом; програмні помилки (описки, помилки в логіці, кодуванні і т.д.); технологічні помилки в процесі підготовки документації на програму і переведення її на машинні носії.
Основним етапом формування розроблюваних комплексів програм, на якому виявляються, локалізуються і усуваються помилки проектування, є налагодження. Процес налагодження за рівнем складності та зв'язку з реальними даними ділиться на програмну і системну налагодження.
Програмна налагодження включає перевірку загальної логіки програми і правильності її запису (камеральна перевірка), підготовку до введення в ЕОМ г, трансляцію, індивідуальну (автономну) налагодження окремих частин програми. У процесі програмної налагодження виявляються та усуваються різні алгоритмічні, програмні та технологічні помилки.
Системна налагодження призначена для перевірки відповідності логічної схеми комплексу програм її функціональному призначенню з використанням спеціально підготовлених масивів і в умовах, що моделюють процес функціонування АСУ. У процесі системної налагодження усувається більшість складних алгоритмічних і системних помилок. Загальне число виявлених у процесі системної налагодження помилок визначається обмеженнями на тимчасові і вартісні ресурси та вихідною кількістю помилок в комплексі програм, що надходить на етап системної налагодження. При досягненні обраного рівня показників якості системної налагодження комплекс програм передається в дослідну експлуатацію для перевірки його функціонування з використанням реальних повнорозмірних масивів і в реальному масштабі часу.
Виявлення помилок в програмах на етапі експлуатації системи може призвести до суттєвих втрат часу і коштів на їх усунення, а в окремих випадках до втрати працездатності системи. Тому з метою підвищення якості комплексів програм, що надходять в експлуатацію, необхідно поліпшити планування і організацію налагодження, що дозволить в кінцевому рахунку підвищити ефективність функціонування АСУ за рахунок зниження витрат, пов'язаних з наявністю невиявлених помилок і отриманням недостовірних результатів; зменшення часу і витрат на усунення і виявлення помилок; зменшення ймовірності наявності помилок в програмах.
Якість комплексу програм, що надходить на етап налагодження, визначається в основному ефективністю методів проектування і програмування, які використовуються при його розробці. Використання модульно-ієрархічної побудови програм з застосуванням принципів структурного програмування дозволяє істотно знизити складність компонентів і їх взаємодії, спростити загальну координування компонентів, підвищити адаптивність і Модернізовані комплексу програм, мінімізувати шляху поширення помилок за рахунок мінімізації або обмеження числа зв'язків між модулями і, таким чином, підвищити якість створюваного програмного забезпечення.
Загальними завданнями налагодження є генерація-безлічі тестів, аналіз працездатності програм та їх комплексів, виявлення помилок різних типів, діагностика та локалізація помилок, усунення помилок, коригування алгоритмів, програм і відповідної документації. Відомі в даний час моделі та методи налагодження орієнтовані на формалізацію та автоматизацію окремих її операцій.
Розглянемо існуючі методи виявлення і локалізації помилок в комплексах програм. Найбільш розробленими методами виявлення помилок на етапі налагодження є: формальний доказ правильності програм; методи диверсійно програмування; методи тестування програм.
Формальне доказ правильності програм засноване на аналізі виконуваних програмою дій і складається в доказі того, що твердження на виході програми будуть задовольнятися при будь-якому дозволеному вході. Серед методів цього класу можна виділити аксіоматичне доказ правильності, доказ правільноеті з використанням анотацій, які являють собою твердження, пов'язані з кожним принциповим вузлом програми, доказ коректності програмних властивостей.
У загальному випадку доказ коректності складання програмних модулів - дуже складна процедура. Для доказу коректності програмного модуля об'ємом близько 100 інструкцій потрібно один людино-місяць роботи.
Основними обмеженнями широкого використання методів формального докази правильності є складність формалізації умов в програмах, відсутність розвинених мов тверджень для програм з різноманітними типами даних, наявність помилок у даних, велике число обмежень на семантику мов і роботу компілятора і тл. Крім того, доказ правильності може підтвердити правильність тільки дійсно вірних програм. Разом з тим після проведення формального доказу правильності не можна стверджувати, що програма завжди буде виконуватися вірно. Застосування методів формального доказу правильності програм в даний час обмежується невеликими і нескладними програмами.
Методи N-версионного програмування, що отримали розвиток в останнє час, є в певному сенсі аналогами методів резервування, застосовуваних у технічних системах. При використанні цих методів ресурси на проведення налагодження мінімальні. Створюється декілька версій програми кожна з яких допускає наявність деякого числа помилок. Правильність функціонування набору версій досягається за рахунок їх спільного використання. При цьому використовується одна з двох стратегій: резервна програма включається в роботу при виявленні помилки; вибирається вірне рішення паралельно працюючих програм. Узгодженим функціонуванням програм управляє програма-супервізор, а версії програм розробляються різними програмістами. Програмні специфікації при використанні даного методу повинні складатися таким чином, щоб в різних версіях програми використовувалися різні структури і прийоми програмування.
Однак в даний час не існує методики формування відповідних специфікацій та оцінки ефективності методу N-версионного програмування. Слід зазначити, що N-версійність програмування не застосовне в системах реального часу з жорстким обмеженням ресурсів, в задачах з великими обсягами вихідних даних, а також в тих завданнях, де важко визначити допустиму різницю результатів, одержуваних різними версіями програми.
Метод тестування програм є основним методом налагодження. Тестування забезпечує перевірку того, що постановка задачі правильно зрозуміла системника і програмістами, забезпечує конкретний доказ можливості отримання рішення, принаймні, частини завдання, концентрує увагу на невеликому числі найбільш складних процедур обробки даних і причини появи помилок. Тестування є процес оцінки ступеня готовності модулів програмного забезпечення до передачі в режим експлуатації, заснований на зборі та аналізі даних про характеристику поведінки програмного забезпечення за результатами його реалізації в певних умовах для заданих входів (тестів).
При налагоджен...