Debugging
27/12/2011
Softjourn Inc.




 Debugging

       Anatoliy Okhotnikov
          Softjourn Inc.
Debugging
Про що буде йти мова
 Чому це важливо?
 Життєвий цикл. Наука відладки. Помилки
 Приклад відладки. Процес
 Розуміння помилок. Поведінка. Серйозність.
  Пріорітет. Додаткові атрибути
 Ізоляція. Аналіз. Рішення
 Тестування. Неоптимальний процес
 Попередження
 Питання та обговорення
Чому це важливо?
 Бенджамін Франклін: “У цьому житті немає
  нічого визначеного крім смерті та податків”
 ...а тепер і помилок у програмному
  забезпеченні
 50% бюджетів на обробку даних витрачають
  на виправлення програмних помилок
 20% коштів виділених на супровід також
  витрачають на виправлення дефектів
  внесених при розробці
 Проблема “срібної кулі”
Простий життевий цикл

      Аналіз

   Специфікації

     Дизайн

      Кодінг




                  Відладка
   Тестування

    Установка

    Підтримка
Наука відладки
   Відладка це мистецтво, поки що не
    наука
     Немає прописаного процесу
     Інтуїтивна
     Майстерність вдосконалюються
      досвідом
     Не можна впевнено спрогнозувати!

   Це спроба привести відладку
    ближче до науки
Aka “Адмірал”
Помилки (Bugs)
   Що таке помилка (bug)?
       Дефект що змушує систему
        поводитись не ояікуваним чином
 Чому помилка називається bug?
 Відладка (debugging)
       Процес приведення системи до
        поводження очікуваним чином
   Процес відладки:
       З чого почати?
Приклад відладки
                           Чекаємо
   Інтернет               5 секунд?                 Сервер
                                                   Звітності
                           Сервер              (20 потоків 2 сек)
                        балансування
                        навантаження
                                                    Сервер
     Сервер                                        Звітності
    Звітності                                  (20 потоків 2 сек)
(20 потоків 2 сек)
                                     Сервер
                Сервер              Звітності
               Звітності        (20 потоків 2 сек)
           (20 потоків 2 сек)
Приклад відладки
 Розгляд алгоритму балансування
 Розгляд влгоритму “захисту”
 Виявлення закономірності
  поведінки
 Журнал мережі/запитів
 Замір часу виконання 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’ів при розробці фіч
     Звірка фічі зі списком помилок що часто
      виникають
     Тестування нових фіч, сусідніх фіч
      (регресії) перед оголошенням розробки
      завершеною
   Ви збережете більше часу та енергії!
Посилання
• 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
Питання та обговорення
“Анатолій Охотніков”
<aokhotnikov@softjourn.com>




   Copyright © 2000-2011 Softjourn, Inc. All rights reserved

Debug (ukr)

  • 1.
  • 2.
    Softjourn Inc. Debugging Anatoliy Okhotnikov Softjourn Inc.
  • 3.
  • 4.
    Про що будейти мова  Чому це важливо?  Життєвий цикл. Наука відладки. Помилки  Приклад відладки. Процес  Розуміння помилок. Поведінка. Серйозність. Пріорітет. Додаткові атрибути  Ізоляція. Аналіз. Рішення  Тестування. Неоптимальний процес  Попередження  Питання та обговорення
  • 5.
    Чому це важливо? Бенджамін Франклін: “У цьому житті немає нічого визначеного крім смерті та податків”  ...а тепер і помилок у програмному забезпеченні  50% бюджетів на обробку даних витрачають на виправлення програмних помилок  20% коштів виділених на супровід також витрачають на виправлення дефектів внесених при розробці  Проблема “срібної кулі”
  • 6.
    Простий життевий цикл Аналіз Специфікації Дизайн Кодінг Відладка Тестування Установка Підтримка
  • 7.
    Наука відладки  Відладка це мистецтво, поки що не наука  Немає прописаного процесу  Інтуїтивна  Майстерність вдосконалюються досвідом  Не можна впевнено спрогнозувати!  Це спроба привести відладку ближче до науки
  • 8.
  • 9.
    Помилки (Bugs)  Що таке помилка (bug)?  Дефект що змушує систему поводитись не ояікуваним чином  Чому помилка називається bug?  Відладка (debugging)  Процес приведення системи до поводження очікуваним чином  Процес відладки:  З чого почати?
  • 10.
    Приклад відладки Чекаємо Інтернет 5 секунд? Сервер Звітності Сервер (20 потоків 2 сек) балансування навантаження Сервер Сервер Звітності Звітності (20 потоків 2 сек) (20 потоків 2 сек) Сервер Сервер Звітності Звітності (20 потоків 2 сек) (20 потоків 2 сек)
  • 11.
    Приклад відладки  Розглядалгоритму балансування  Розгляд влгоритму “захисту”  Виявлення закономірності поведінки  Журнал мережі/запитів  Замір часу виконання SELECT...  Інструменти моніторингу
  • 12.
    Загальні часті помилкианалізу  Компонентне мислення  Орієнтування на вторинні ознаки  Ігнорування підказок  Незрозумілі повідомлення про помилку
  • 13.
  • 14.
    Історичні приклади  Ariane5: 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
  • 15.
    Процес відладки Розуміння Ізоляція Аналіз Рішення Тестування
  • 16.
    Розуміння помилок  Зрозуміти  Очікувана поведінка  Поточна поведінка  Атрибути помилки  Атрибути помилки  Поведінка  Серйозність  Пріорітет
  • 17.
  • 18.
    Розуміння: поведінка  Поведінка помилки  Часто називається ‘Тип’  Приклади  Падіння  Втрата даних  Відмова обслуговування  Невідповідність функціоналу  Косметична (Орфографія, вирівнювання, і т.д.)  Абсолютний атрибут
  • 19.
  • 20.
    Розуміння: серйозність  Серйозність  Ефект сприйняття користувачем  Відносний атрибут  Відноситься тільки до модуля  Може існувати пряма кореляція між поведінкою та серйозністю  Також корелює з пріорітетом
  • 21.
  • 22.
    Розуміння: пріорітет  Пріорітет  Атрибут управління проектом  Відносний атрибут  Відноситься тільки до модуля  Відноситься тільки до поточнох термінів (milestone)  Буде пряма кореляція між серйозністю та пріорітетом  Одна і та сама помилка може мати різний пріорітет в залежності від фази проекту
  • 23.
    Розуміння: додаткові атрибути Додаткові атрибути Здатність відтворити Впливає на відладку та QA Здатність розв'язати Впливає на відладку
  • 24.
  • 25.
    Що таке ізоляція? Процес зменьшення області помилки  Область помилки: простір у якому стається помилка  Підтверджена опорна точка - Affirmative Reference Point (ARP)  Опорна точка у якій ви впевнені!  Все працювало добре до вчорашнього вечора!  Не падає поки я ввожу значення < 1000  Припущення можуть будуватись на її основі  Помилка ізолюється на основі однієї або більше ARPів  Ітеративне перевизначення області помилки
  • 26.
    Ізоляція: обов'язки  Хто має цим займатись?  QA  Розробник/Відадник  Обов'язки QA  Зрозумілий опис помилки  Одна або більше ARPів  Цим вужча область помилки, тим краще!  Обов'язки розробника  Достатньо звузити область помилки
  • 27.
    Аналіз  Пошук  Синтаксичних помилок  Семантичних помилок  Перевірка списку помилок що часто зустрічаються  Зверніть увагу  Тут можуть бути тільки симптоми, проблема може бути деінде  Не робіть висновків занадто рано
  • 28.
  • 29.
    Рішення  Вірішити поточнупроблему  Передивитись код на предмет таких самих або схожих проблем у інших місцях та виправити їх  Перевірити інші проблеми у області помилки  Оновити список помилок що часто зустрічаються
  • 30.
  • 31.
    Тестування  Протестуйте виправлення Протестуйте функціонал який ви МОГЛИ зламати виправленням  Протестуйте функціонал який ви НЕ МОГЛИ зламати виправленням  Впевнеться що ця проблема не повернеться до вас знову  QA: Протестуйте усі можливі випадки виникнення цієї помилки
  • 32.
  • 33.
    Неоптимальний процес  Постріли зi стегна Розуміння Ізоляція Вирішення Тестування
  • 34.
  • 35.
    Неоптимальний процес  Постріли у темряві Розуміння Вирішення Тестування
  • 36.
  • 37.
    Попередження  Попередження кращелікування  Застосування процесу відладки у розробці  Звуження області функціоналу (фіч)  Використання ARP’ів при розробці фіч  Звірка фічі зі списком помилок що часто виникають  Тестування нових фіч, сусідніх фіч (регресії) перед оголошенням розробки завершеною  Ви збережете більше часу та енергії!
  • 38.
    Посилання • 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
  • 39.
    Питання та обговорення “АнатолійОхотніков” <aokhotnikov@softjourn.com> Copyright © 2000-2011 Softjourn, Inc. All rights reserved