Смекни!
smekni.com

Програма складної структури з використанням меню (стр. 1 из 4)

http://uaref.tsx.org – переклад з російської

Perevirte pered vgyvannyam!!!-

КУРСОВА

“Програма складної структури з використанням меню"

ЗМІСТ

1. ВИДИ КОНТРОЛЮ ПРОГРАМ

2. ЦІЛІ, ПРИНЦИПИ І ЕТАПИ ТЕСТУВАННЯ

3. СТРУКТУРНЕ ТЕСТУВАННЯ

4. СПІЛЬНЕ ТЕСТУВАННЯ МОДУЛІВ

5. ФУНКЦІОНАЛЬНЕ ТЕСТУВАННЯ

6. ТЕСТУВАННЯ ПРОГРАМНОГО КОМПЛЕКУ ВЦІЛОМУ

7. ВІДЛАДКА ПРОГРАМ


ВИДИ КОНТРОЛЮ ПРОГРАМ

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

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

Візуальний контроль - це перевірка програм “ за столом “, без використання комп'ютера. На першому етапі візуального контролю здійснюється читання програми, причому особлива увага приділяється наступним її елементам:

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

умовам в операторах умовного вибору ( IF, CASE ) і циклу;

складним логічним виразам;

можливості незавершення ітераціонних циклів ( WHILE, REPEAT, LOOP ).

Другий етап візуального контролю - крізний контроль програми

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

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

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

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

- повідомлення про помилки, при виявленні яких компілятор намагається їх виправити і будує об'єктний код, але його коректність малоймовірна і подальша робота з ним швидше усього не можлива;

3

- повідомлення про серйозні помилки, при наявності яких побудований компілятором об'єктний код явно некоректний і його подальше використання неможливо;

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

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

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

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

- використання в програмі неініціалізувати змінних (тобто змінних, що не набули початкового значення);

- наявність в програмі описів елементів, змінних, процедур, міток, файлів, надалі що не використовуються в її тексті;

- наявність в тексті програми фрагментів, що ніколи не виконуються;

- наявність в тексті програми змінних, ні разу що не використовуються для читання після привласнюючи їм значень;

- наявність в тексті програми явно нескінченних циклів;

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

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

4

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

спрощено при застосуванні наступних принципів:

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

2) максимальне використання результатів компіляції програми і, зокрема, інформації, що включається в лістинг компілятора;

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

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

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

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

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

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

Надійність можна представити сукупністю наступних характеристик:

1) цілісність програмного засобу (здатність його до захисту від відмов);

2) живучість (здібність до вхідного контролю даних і їх перевірки в ході роботи);

3) завершеність (бездефектність готового програмного засобу, характеристика якості його тестування);

4) працездатність (здатність програмного засобу до відновлення своїх можливостей поле збоїв).

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

5

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

1) коректність як точна відповідність цілям розробки програми (які відображені в специфікації) при умові її завершення або часткова коректність;

2) завершення програми, тобто досягнення програмою в процесі її виконання своєї кінцевої точки.

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

1) доказ часткової коректності;

2) доказ часткової некоректність;

3) доказ завершення програми;

4) доказ незавершення програми;

5) доказ тотальної (повної ) коректності (тобто одночасне рішення першої і третьої задач);

6) доказ некоректність (рішення другої або четвертої задачі).

Методи доказу часткової коректності програм як правило спираються на аксіоматичний підхід до формалізації семантики мов програмування. У цей час відомі аксіоматичні семантики Паськаля, підмножини ПЛ/1 і деяких інших мов.

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

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

Найбільш відомим з методів доказу часткової коректності програм є метод індуктивних тверджень запропонований Флойдом і вдосконалений Хоаром. Метод складається з трьох етапів.

Перший етап - отримання анотованої програми. На цьому етапі для синтаксично правильної програми повинні бути задані твердження на мові логіки предикатів першого порядку:

6

вхідний предикат;

вихідний предикат;

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

Доказ неістинності умов коректності свідчить про неправильність програми, або її специфікації, або програми і специфікацій.

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