Debugging 27/12/2011
May 17, 2015
Debugging27/12/2011
Softjourn Inc.
Debugging
Anatoliy Okhotnikov
Softjourn Inc.
Debugging
Про що буде йти мова Чому це важливо? Життєвий цикл. Наука відладки. Помилки Приклад відладки. Процес Розуміння помилок. Поведінка. Серйозність.
Пріорітет. Додаткові атрибути Ізоляція. Аналіз. Рішення Тестування. Неоптимальний процес Попередження Питання та обговорення
Чому це важливо? Бенджамін Франклін: “У цьому житті немає
нічого визначеного крім смерті та податків” ...а тепер і помилок у програмному
забезпеченні 50% бюджетів на обробку даних витрачають
на виправлення програмних помилок 20% коштів виділених на супровід також
витрачають на виправлення дефектів внесених при розробці
Проблема “срібної кулі”
Простий життевий цикл
Аналіз
Специфікації
Дизайн
Кодінг
Тестування
Установка
Підтримка
Відладка
Наука відладки
Відладка це мистецтво, поки що не наука Немає прописаного процесу Інтуїтивна Майстерність вдосконалюються
досвідом Не можна впевнено спрогнозувати!
Це спроба привести відладку ближче до науки
Aka “Адмірал”
Помилки (Bugs)
Що таке помилка (bug)? Дефект що змушує систему
поводитись не ояікуваним чином Чому помилка називається bug? Відладка (debugging)
Процес приведення системи до поводження очікуваним чином
Процес відладки: З чого почати?
Приклад відладки
Інтернет
Сервер балансування навантаження
Сервер Звітності
(20 потоків 2 сек)
Сервер Звітності
(20 потоків 2 сек)
Сервер Звітності
(20 потоків 2 сек)
Сервер Звітності
(20 потоків 2 сек)
Сервер Звітності
(20 потоків 2 сек)
Чекаємо 5 секунд?
Приклад відладки Розгляд алгоритму балансування Розгляд влгоритму “захисту” Виявлення закономірності
поведінки Журнал мережі/запитів Замір часу виконання SELECT... Інструменти моніторингу
Загальні часті помилки аналізу Компонентне мислення Орієнтування на вторинні ознаки Ігнорування підказок Незрозумілі повідомлення про
помилку
Ariane 5
Історичні приклади Ariane 5: 64bit => 16 bit ($7bn, 10y) Submarine & NATO virus Therac-25 (Therac-6, Therac-20)
DEC PDP-11 ... Mars Climate Orbiter, Mars Polar
Lander ($327,6m) – SM-FORCE f/s VS m/s
AT&T 1990 (enhancement) - 9h & 1998 (CISCO update) - 26h
Процес відладки
Розуміння
Ізоляція
Аналіз
Рішення
Тестування
Розуміння помилок
Зрозуміти Очікувана поведінка Поточна поведінка Атрибути помилки
Атрибути помилки Поведінка Серйозність Пріорітет
Поведінка (Type)
Розуміння: поведінка
Поведінка помилки Часто називається ‘Тип’ Приклади
Падіння Втрата даних Відмова обслуговування Невідповідність функціоналу Косметична (Орфографія, вирівнювання, і
т.д.) Абсолютний атрибут
Серйозність (Severity)
Розуміння: серйозність
Серйозність Ефект сприйняття користувачем Відносний атрибут
Відноситься тільки до модуля Може існувати пряма кореляція між
поведінкою та серйозністю Також корелює з пріорітетом
Пріорітет (Priority)
Розуміння: пріорітет
Пріорітет Атрибут управління проектом Відносний атрибут
Відноситься тільки до модуля Відноситься тільки до поточнох термінів
(milestone) Буде пряма кореляція між серйозністю
та пріорітетом Одна і та сама помилка може мати
різний пріорітет в залежності від фази проекту
Розуміння: додаткові атрибути
Додаткові атрибутиЗдатність відтворити
Впливає на відладку та QA
Здатність розв'язатиВпливає на відладку
Ізоляція
Що таке ізоляція? Процес зменьшення області помилки Область помилки: простір у якому стається
помилка Підтверджена опорна точка - Affirmative
Reference Point (ARP) Опорна точка у якій ви впевнені!
Все працювало добре до вчорашнього вечора! Не падає поки я ввожу значення < 1000
Припущення можуть будуватись на її основі Помилка ізолюється на основі однієї або більше
ARPів
Ітеративне перевизначення області помилки
Ізоляція: обов'язки
Хто має цим займатись? QA Розробник/Відадник
Обов'язки QA Зрозумілий опис помилки Одна або більше ARPів Цим вужча область помилки, тим
краще! Обов'язки розробника
Достатньо звузити область помилки
Аналіз
Пошук Синтаксичних помилок Семантичних помилок
Перевірка списку помилок що часто зустрічаються
Зверніть увагу Тут можуть бути тільки
симптоми, проблема може бути деінде
Не робіть висновків занадто рано
Рішення (Solution)
Рішення
Вірішити поточну проблему Передивитись код на предмет таких
самих або схожих проблем у інших місцях та виправити їх
Перевірити інші проблеми у області помилки
Оновити список помилок що часто зустрічаються
Тестування (Testing)
Тестування Протестуйте виправлення Протестуйте функціонал який ви
МОГЛИ зламати виправленням Протестуйте функціонал який ви НЕ
МОГЛИ зламати виправленням Впевнеться що ця проблема не
повернеться до вас знову QA: Протестуйте усі можливі
випадки виникнення цієї помилки
Hip Shooting?
Неоптимальний процес
Постріли зi стегна
Розуміння
Ізоляція
Вирішення
Тестування
Shooting in the dark?
Неоптимальний процес
Постріли у темряві
Розуміння
Вирішення
Тестування
Попередження (Prevention)
Попередження
Попередження краще лікування Застосування процесу відладки у
розробці Звуження області функціоналу (фіч) Використання ARP’ів при розробці фіч Звірка фічі зі списком помилок що часто
виникають Тестування нових фіч, сусідніх фіч
(регресії) перед оголошенням розробки завершеною
Ви збережете більше часу та енергії!
Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Посилання• http://www.slideshare.net/ksusanth/the-
science-of-debugging• http://books.google.com.ua/books/about/The_
Science_of_Debugging.html?id=9E9FAAAACAAJ
Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Питання та обговорення“Анатолій Охотніков”