Корректность программ В. В. Кулямин Институт системного программирования РАН.

Презентация:



Advertisements
Похожие презентации
Корректность программ Классические и современные подходы В. В. Кулямин Институт системного программирования РАН.
Advertisements

Технологии разработки программного обеспечения Исследования Института системного программирования РАН к.ф.-м.н В.В.Кулямин.
Тема 11 Медицинская помощь и лечение (схема 1). Тема 11 Медицинская помощь и лечение (схема 2)
Test 17 Вопрос 1. public class TKO { public static void main(String[] args) { String s = "-"; Integer x = 343; long L343 = 343L; if (x.equals(L343)) s.
Вариант Презентация "Осень золотая".
Дни недели Температура (С 0 ) 1. Сколько дней температура была выше 16 0 ? 2. Какого.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Методы автоматизации тестирования Лекция 2. Архитектура теста в UniTesK Генератор тестовой последовательности Оракул Медиатор на целевом языке Целевая.
Test21 Вопрос 1. public class Test { void a1(Object... i){ System.out.println("[Object... i]"); } void a1(Integer... i){ System.out.println("[Integer...
Test 4 Вопрос 1. public class TestOutput { public static void main(String[] args) throws IOException { PrintStream out = new PrintStream( new BufferedOutputStream(
Лекция 2 Раздел 2.1 Windows Phone Темы раздела 3.
Разработка метода оптимизации времени выполнения модульных тестов в системе SRP Головдинова Алина Эмировна 545 группа Руководитель: Изъюров А.Л. Рецензент:
Расширение технологии UniTESK средствами генерации структурных тестов Дмитрий Воробьев
Test 13 Вопрос 1. public class StringTest { public static void main(String[] arg){ test(new String[] { null });} static void test(Object[] o){System.out.print(1);}
Практическое программирование на Java к.ф.-м.н. Козлов Дмитрий Дмитриевич Кафедра АСВК, Лаборатория Вычислительных комплексов.

1 Океан финансов – океан возможностей! Финансовый университет – маяк в финансовом океане. Уберегает от мелей, указывает путь, спасает в бурю! Финансовый.
Система предотвращения отключений клиентов на основе статистического анализа использования инструментов удержания Выполнил: Медведев А.А. Руководитель:
Часть II. Формальное описание языков программирования ( Формальная спецификация формальных языков ) Приложение. Грамматика языка IMP в форме BNF.
Тренировочное тестирование-2008 Ответы к заданиям КИМ Часть I.
Транксрипт:

Корректность программ В. В. Кулямин Институт системного программирования РАН

Статистика ошибок Среднее количество ошибок на 1000 строк кода до тестирования 2 / 23

Причины ошибок Неправильное понимание задач Неправильное решение задач Неправильный перенос решений в код 3 / 23 ? !

Сложность программ Конференция NATO 1968 – software сложнее hardware Основная причина ошибок в ПО – его сложность 4 / 23

Сложность – большой размер 5 / 23

Сложность – сложность данных 6 / 23

Сложность задач и интерфейса 7 / 23

Сложность – запутанность int unknown_f(int x0, int x1) { if(x0 == 0) return x1; if(x1 == 0) return x0; if(x0>0 && x1 0) x1 = -x1; while(x1 != 0) { if(x1>x0 && x0>0 || x1

Борьба с ошибками Безошибочное программирование – Сильно ограничивается сложностью Автоматизация разработки – Повышает сложность возможных систем – Изменяет существенные источники ошибок Интеграция разработки и контроля качества – Нужны методы и инструменты контроля качества ПО Стандартизация – Нужны методы и инструменты проверки соответствия стандартам 9 / 23

Контроль качества ПО Экспертиза (review, inspection) Статический анализ Проверка правил корректности Поиск конкретных ошибок по шаблонам Динамический анализ Мониторинг Тестирование Формальная верификация Дедуктивный анализ Проверка моделей Гибридные методы 10 / 23

Статика и динамика Статический анализ Динамический анализ 11 / 23 ТребованияИсходный код Инструмент анализа Требования Работа системы Среда мониторинга Создание тестов Пользователи

Формальная верификация Дедуктивный анализ [R. Floyd 1967, C. A. R. Hoare 1969] Логика Хоара – {Pre} Program {Post} Правила вывода Проверка моделей [E. M. Clarke & E. A. Emerson 1980, J. P. Queille & J. Sifakis 1982] Анализ достижимых состояний 12 / 23

Зачем нужна формальность? 13 / 23

Гибридные методы Интегрируют элементы различных подходов Тестирование на основе моделей Расширенный статический анализ Формальный мониторинг Синтетическое структурное тестирование Вспомогательные техники Символическое исполнение Абстрактная интерпретация Вывод ограничений Разрешение ограничений Автоматическое уточнение моделей 14 / 23

Тестирование на основе моделей 15 / 23 Оракул Модель состояния Тестируемая система Модель поведения Генератор воздействий Метрика полноты 12% Критерий полноты 36%57%87%

Пример: описание и работа теста 16 / public class AccountTest { Account public int getBalance() { return = = "bound) public void testDeposit(int x) { = "sums") public void testWithdraw(int x) { account.withdraw(x); } public boolean bound() { return getBalance() < 500; } public int[] sums = new int[]{0, 1, 137, }; }

Синтетическое тестирование DART [P. Godefroid, G. Agha, K. Sen 2005] 17 / 23 Исполнение Программа Символическое исполнение Поиск новых путей Тесты

Пример работы DART 18 / 23 int unknown_f(int x0, int x1) { if(x0 == 0) return x1; if(x1 == 0) return x0; if(x0>0 && x1x0 && x0>0 || x1x0 && x0 >0 || x10 && x1 0) && !(x1>x0 && x0>0 || x1

Counterexample guided abstraction refinement [E. M. Clarke & O. Grumberg et al 2000, T. Ball & S. K. Rajamani 2000] do { ;... if(*) {... ; } } while (*); Авто-уточнение моделей 19 / 23 do { nPacketsOld = nPackets;... if(request) {... nPackets++; } } while (nPackets != nPacketsOld); do { b = true;... if(*) {... b = b?false:*; } } while (!b);

Работы отдела ТП Разработка тестов и тестирование Информационная система оператора связи Операционные системы реального времени Базовые библиотеки Linux (Linux Standard Base) Протоколы IPv6, Mobile IPv6, IPsec Отдельные модули компиляторов Intel Микропроцессоры архитектуры MIPS Создание технологий и инструментов Тестирование на основе моделей (UniTESK) Проверка соответствия стандарту LSB Верификация драйверов Linux 20 / 23

Разработки и исследования 21 / 23

Карьера в ИСП РАН 22 / 23 студент разработчик преподаватель старший разработчик руководитель группы архитектор исследователь аспирант

23 / 23 Спасибо за внимание! Вопросы?