CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование,...
description
Transcript of CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование,...
Quality-Oriented ProgrammingQuality-Oriented Programmingилиили
программирование, ориентированноепрограммирование, ориентированноена качествона качество
Андрей Уразов – 2010Андрей Уразов – 2010
Ход доклада
Проблемы разработки ПО Какое решение предлагает ПОК (QOP) Автоматизированные практики обнаружения
ошибок и их возможности Построение процесса разработки в
соответствии концепцией ПОК (QOP) Какие ошибки можно предотвратить -
некоторые примеры автоматизированного обнаружения
Итоги
Проблемы разработки ПО
Позднее выявление ошибок Длительное и непредсказуемое время отладки Отсутствие уверенности в безопасности
изменения при работе с большими проектами Срывы сроков разработки Увеличение бюджета
Программирование, ориентированное на качество
НЕПРЕРЫВНОЕ обеспечение качества приложения от начала проекта
АВТОМАТИЗИРОВАННЫЙ контроль качества внутри команды разработки
Методы обнаружения ошибок
Статический анализ Динамический анализ Проверка модульных и функциональных тестов Обзоры кода
Статический анализ
Обеспечение ясности и понятности кода, общего стиля написания кода
Обнаружение общих ошибок Обнаружение ошибок в применении различных
библиотек Автоматизированное применение экспертных
знаний о программировании
Построение процесса разработки
Архитектор определяет набор требований качества к проекту, политику обзоров кода
Каждую ночь проходит автоматизированное тестирование
Каждое утро каждый разработчик получает набор задач, связанный с последними внесенными изменениями. В частности, обнаруженные ошибки, требующие исправления.
Если в ходе обзоров кода обнаруживаются часто встречающиеся ошибки, набор формализованных требований расширяется, а такие ошибки находятся далее автоматизированным способом
Примеры: обнаружение NPE
Parasoft Jtest находит ошибку в коде Apache-Ant-1.7.0beta1 (ClassNotFound-Exception не обрабатывается должным образом и приводит к NPE)
Примеры: избавляемся от утечек
Parasoft Jtest находит утечку в коде Ant-1.7.0beta1(утечка происходит, когда dis.read() бросает исключение)
Примеры: оптимизируем код
Parasoft Jtest находит неоптимальный код в FindBugs v1.0.0
Примеры: обнаружение внедрения в SQL-запрос
Parasoft Jtest находит уязвимость для внедрения в SQL-запрос в коде WebGoat
Примеры: обнаружение XSS-уязвимостей
Parasoft Jtest находит XSS-уязвимость в коде Parabank
Почему хорошо использовать ПОК?
Поддерживается высокое качество кода по мере его написания
Уменьшается время, необходимое на отладку Множество типов ошибок обнаруживается
автоматически, программисты же решают творческие задачи
Снижается влияние человеческого фактора на качество разрабатываемого ПО
Покупатель получает более качественный продукт
Разработка становится более предсказуемой и легче поддается правильной оценке
Сокращается бюджет, требуемый на разработку
Благодарность
Спасибо за внимание :-)