debug (ukr)

39
Debugging 27/12/2011

Upload: anatoliy-okhotnikov

Post on 17-May-2015

327 views

Category:

Technology


5 download

DESCRIPTION

 Чому це важливо?  Життєвий цикл. Наука відладки. Помилки  Приклад відладки. Процес  Розуміння помилок. Поведінка. Серйозність. Пріорітет. Додаткові атрибути  Ізоляція. Аналіз. Рішення  Тестування. Неоптимальний процес  Попередження

TRANSCRIPT

Page 1: Debug (ukr)

Debugging27/12/2011

Page 2: Debug (ukr)

Softjourn Inc.

Debugging

Anatoliy Okhotnikov

Softjourn Inc.

Page 3: Debug (ukr)

Debugging

Page 4: Debug (ukr)

Про що буде йти мова Чому це важливо? Життєвий цикл. Наука відладки. Помилки Приклад відладки. Процес Розуміння помилок. Поведінка. Серйозність.

Пріорітет. Додаткові атрибути Ізоляція. Аналіз. Рішення Тестування. Неоптимальний процес Попередження Питання та обговорення

Page 5: Debug (ukr)

Чому це важливо? Бенджамін Франклін: “У цьому житті немає

нічого визначеного крім смерті та податків” ...а тепер і помилок у програмному

забезпеченні 50% бюджетів на обробку даних витрачають

на виправлення програмних помилок 20% коштів виділених на супровід також

витрачають на виправлення дефектів внесених при розробці

Проблема “срібної кулі”

Page 6: Debug (ukr)

Простий життевий цикл

Аналіз

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

Дизайн

Кодінг

Тестування

Установка

Підтримка

Відладка

Page 7: Debug (ukr)

Наука відладки

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

досвідом Не можна впевнено спрогнозувати!

Це спроба привести відладку ближче до науки

Page 8: Debug (ukr)

Aka “Адмірал”

Page 9: Debug (ukr)

Помилки (Bugs)

Що таке помилка (bug)? Дефект що змушує систему

поводитись не ояікуваним чином Чому помилка називається bug? Відладка (debugging)

Процес приведення системи до поводження очікуваним чином

Процес відладки: З чого почати?

Page 10: Debug (ukr)

Приклад відладки

Інтернет

Сервер балансування навантаження

Сервер Звітності

(20 потоків 2 сек)

Сервер Звітності

(20 потоків 2 сек)

Сервер Звітності

(20 потоків 2 сек)

Сервер Звітності

(20 потоків 2 сек)

Сервер Звітності

(20 потоків 2 сек)

Чекаємо 5 секунд?

Page 11: Debug (ukr)

Приклад відладки Розгляд алгоритму балансування Розгляд влгоритму “захисту” Виявлення закономірності

поведінки Журнал мережі/запитів Замір часу виконання SELECT... Інструменти моніторингу

Page 12: Debug (ukr)

Загальні часті помилки аналізу Компонентне мислення Орієнтування на вторинні ознаки Ігнорування підказок Незрозумілі повідомлення про

помилку

Page 13: Debug (ukr)

Ariane 5

Page 14: Debug (ukr)

Історичні приклади 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

Page 15: Debug (ukr)

Процес відладки

Розуміння

Ізоляція

Аналіз

Рішення

Тестування

Page 16: Debug (ukr)

Розуміння помилок

Зрозуміти Очікувана поведінка Поточна поведінка Атрибути помилки

Атрибути помилки Поведінка Серйозність Пріорітет

Page 17: Debug (ukr)

Поведінка (Type)

Page 18: Debug (ukr)

Розуміння: поведінка

Поведінка помилки Часто називається ‘Тип’ Приклади

Падіння Втрата даних Відмова обслуговування Невідповідність функціоналу Косметична (Орфографія, вирівнювання, і

т.д.) Абсолютний атрибут

Page 19: Debug (ukr)

Серйозність (Severity)

Page 20: Debug (ukr)

Розуміння: серйозність

Серйозність Ефект сприйняття користувачем Відносний атрибут

Відноситься тільки до модуля Може існувати пряма кореляція між

поведінкою та серйозністю Також корелює з пріорітетом

Page 21: Debug (ukr)

Пріорітет (Priority)

Page 22: Debug (ukr)

Розуміння: пріорітет

Пріорітет Атрибут управління проектом Відносний атрибут

Відноситься тільки до модуля Відноситься тільки до поточнох термінів

(milestone) Буде пряма кореляція між серйозністю

та пріорітетом Одна і та сама помилка може мати

різний пріорітет в залежності від фази проекту

Page 23: Debug (ukr)

Розуміння: додаткові атрибути

Додаткові атрибутиЗдатність відтворити

Впливає на відладку та QA

Здатність розв'язатиВпливає на відладку

Page 24: Debug (ukr)

Ізоляція

Page 25: Debug (ukr)

Що таке ізоляція? Процес зменьшення області помилки Область помилки: простір у якому стається

помилка Підтверджена опорна точка - Affirmative

Reference Point (ARP) Опорна точка у якій ви впевнені!

Все працювало добре до вчорашнього вечора! Не падає поки я ввожу значення < 1000

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

ARPів

Ітеративне перевизначення області помилки

Page 26: Debug (ukr)

Ізоляція: обов'язки

Хто має цим займатись? QA Розробник/Відадник

Обов'язки QA Зрозумілий опис помилки Одна або більше ARPів Цим вужча область помилки, тим

краще! Обов'язки розробника

Достатньо звузити область помилки

Page 27: Debug (ukr)

Аналіз

Пошук Синтаксичних помилок Семантичних помилок

Перевірка списку помилок що часто зустрічаються

Зверніть увагу Тут можуть бути тільки

симптоми, проблема може бути деінде

Не робіть висновків занадто рано

Page 28: Debug (ukr)

Рішення (Solution)

Page 29: Debug (ukr)

Рішення

Вірішити поточну проблему Передивитись код на предмет таких

самих або схожих проблем у інших місцях та виправити їх

Перевірити інші проблеми у області помилки

Оновити список помилок що часто зустрічаються

Page 30: Debug (ukr)

Тестування (Testing)

Page 31: Debug (ukr)

Тестування Протестуйте виправлення Протестуйте функціонал який ви

МОГЛИ зламати виправленням Протестуйте функціонал який ви НЕ

МОГЛИ зламати виправленням Впевнеться що ця проблема не

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

випадки виникнення цієї помилки

Page 32: Debug (ukr)

Hip Shooting?

Page 33: Debug (ukr)

Неоптимальний процес

Постріли зi стегна

Розуміння

Ізоляція

Вирішення

Тестування

Page 34: Debug (ukr)

Shooting in the dark?

Page 35: Debug (ukr)

Неоптимальний процес

Постріли у темряві

Розуміння

Вирішення

Тестування

Page 36: Debug (ukr)

Попередження (Prevention)

Page 37: Debug (ukr)

Попередження

Попередження краще лікування Застосування процесу відладки у

розробці Звуження області функціоналу (фіч) Використання ARP’ів при розробці фіч Звірка фічі зі списком помилок що часто

виникають Тестування нових фіч, сусідніх фіч

(регресії) перед оголошенням розробки завершеною

Ви збережете більше часу та енергії!

Page 38: Debug (ukr)

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

Page 39: Debug (ukr)

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

Питання та обговорення“Анатолій Охотніков”

<[email protected]>