олютно правильні програми. Мабуть, побудувати практичну технологію створення довільних абсолютно правильних програм неможливо. Але для деяких класів програм такі дослідження ведуться. Проте, найближчим часом не можна очікувати реальних синтезаторів і верифікаторів для скільки практичного застосування. p>
Технології налагодження програм Одна з аксіом програмування свідчить: Будь-яка нетривіальна програма містить хоча б одну помилку. Практика показує справедливість цієї аксіоми. Як би добре не була підготовлена програма, які б методи не застосовувалися при побудові програми, слід виходити з "презумпції винності".
Для виявлення і усунення помилок виділяється цілий етап - налагодження програм. Більшість фахівців вважають, що налагодження (разом з тестуванням) займає 50% часу розробки програм.
Мета налагодження - змінити програму таким чином, щоб вона була в змозі вирішити заплановану завдання.
У процесі налагодження можна виділити наступні етапи: тестування, аналіз, внесення змін. Ці етапи повторюються багато разів до тих пір, поки не буде прийнято рішення про припинення налагодження та передачі програми в експлуатацію.
Мета тестування - продемонструвати, що помилка у програмі є, так що, якщо результат прогону якого тесту співпадає з передбачуваним результатом, вважається, що мета тестування не досягнута. При тестувань може виконуватися не вся програма, а тільки її частина - від однієї заданої точки програми до іншої. Суттєвим для тестування є побудова тестових наборів, тобто тих значень, які є кодами для тестування.
Саме тестування поділяють на три фази: складання (Генерація) тестових наборів, виконання програми на цих наборах, оцінка результатів виконання програми. Для простих випадків всі три фази виконуються "вручну", без машини. Але серйозне тестування має, звичайно, включати в себе роботу на машині. До жаль, в загальному випадку повну систему тестових наборів побудувати автоматично неможливо.
Хоча мета тестування - Констатація наявності помилки, тим не менш, мета виконання кожного окремого тестового завдання - отримати коректний результат. Для цього, якщо результат виявився некоректним, а це визначається аналізом результату - наступним етапом налагодження, то виконуються які-небудь зміни, спрямовані на усунення виявленої некоректності.
Уявімо налагодження програми у вигляді контуру управління, в якому об'єктом управління є налагоджувати програму Р. Метою такої системи є підвищення рівня безпомилковості програми. p> На схемі, представленої на рис. 4.12, суб'єкт управління являє собою налагоджувальні засоби, включають крім програм ще й людини, що виконує багато неформалізовані дії. br/>В
Рис. 4.12. Схема налагодження
Т-це завдання на тестування, включає, природно, і тестовий набір. Блок М визначає коректність виконання тестового завдання, блок А визначає причину некоректності, бло...