Баг!!!

Матеріал з wiki
Перейти до: навігація, пошук
Onpage keywords chain search with * wildcard. Example: sear* my nam* will find Searh my names and search my Name


Баг

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

Вживання

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


Етимологія

За легендою, 9 вересня 1945 року вчені Гарвардського університету, що тестували обчислювальну машину Mark II Aiken Relay Calculator, знайшли метелика, що застряг між контактами електромеханічного реле й Грейс Хоппер вперше вжила цей термін. Знайдена комаха була вклеєна до технічного щоденника, з супроводжувальним надписом: «First actual case of bug being found» (англ. «перший випадок у практиці, коли було знайдено комаху»). Цей цікавий факт став передумовою для вживання слова «баг» у значенні «помилка».

Насправді, це сталось 9 вересня 1947, а не 1945, року. Слово «bug» у сучасному значенні використовувалось ще задовго до того, протягом Другої світової війни словом «bugs» позначались проблеми з радарною технікою.


Класифікація

Залежно від етапу розробки ПЗ, на якому виявляється помилка, виділяють:

синтаксичні помилки (розпізнаються як такі транслятором і роблять компіляцію неможливою) - наприклад відсутність або невідповідність відкриває і закриває дужок;

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

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

За важливістю:

Showstoppers (без виправлення яких подальша розробка неможлива або безглузда); серйозні; незначні; За часом появи:

Постійно, при кожному запуску; Іноді ( «плаваючий» тип); Тільки на машині у клієнта (залежить від локальних налаштувань у клієнта); За місцем і напрямку:

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

Також помилка може проявлятися у вигляді уразливості, що робить вірогідним несанкціонований доступ до системи або DoS-атаку.


Література

C++

Александр Степанов, Пол Мак-Джонс. Начала программирования = Elements of Programming. — М.: Вильямс, 2011. — С. 272. — ISBN 978-5-8459-1708-9.

Посилання

БАГ

Програмна помилка

Developed by Інститут Програмних Систем