debug (ukr)

Post on 17-May-2015

328 Views

Category:

Technology

5 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

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

<aokhotnikov@softjourn.com>

top related