CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование,...

14
Quality-Oriented Programming Quality-Oriented Programming или или программирование, ориентированное программирование, ориентированное на качество на качество Андрей Уразов – 2010 Андрей Уразов – 2010

description

 

Transcript of CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование,...

Page 1: CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ориентированное на качество)

Quality-Oriented ProgrammingQuality-Oriented Programmingилиили

программирование, ориентированноепрограммирование, ориентированноена качествона качество

Андрей Уразов – 2010Андрей Уразов – 2010

Page 2: CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ориентированное на качество)

Ход доклада

Проблемы разработки ПО Какое решение предлагает ПОК (QOP) Автоматизированные практики обнаружения

ошибок и их возможности Построение процесса разработки в

соответствии концепцией ПОК (QOP) Какие ошибки можно предотвратить -

некоторые примеры автоматизированного обнаружения

Итоги

Page 3: CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ориентированное на качество)

Проблемы разработки ПО

Позднее выявление ошибок Длительное и непредсказуемое время отладки Отсутствие уверенности в безопасности

изменения при работе с большими проектами Срывы сроков разработки Увеличение бюджета

Page 4: CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ориентированное на качество)

Программирование, ориентированное на качество

НЕПРЕРЫВНОЕ обеспечение качества приложения от начала проекта

АВТОМАТИЗИРОВАННЫЙ контроль качества внутри команды разработки

Page 5: CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ориентированное на качество)

Методы обнаружения ошибок

Статический анализ Динамический анализ Проверка модульных и функциональных тестов Обзоры кода

Page 6: CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ориентированное на качество)

Статический анализ

Обеспечение ясности и понятности кода, общего стиля написания кода

Обнаружение общих ошибок Обнаружение ошибок в применении различных

библиотек Автоматизированное применение экспертных

знаний о программировании

Page 7: CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ориентированное на качество)

Построение процесса разработки

Архитектор определяет набор требований качества к проекту, политику обзоров кода

Каждую ночь проходит автоматизированное тестирование

Каждое утро каждый разработчик получает набор задач, связанный с последними внесенными изменениями. В частности, обнаруженные ошибки, требующие исправления.

Если в ходе обзоров кода обнаруживаются часто встречающиеся ошибки, набор формализованных требований расширяется, а такие ошибки находятся далее автоматизированным способом

Page 8: CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ориентированное на качество)

Примеры: обнаружение NPE

Parasoft Jtest находит ошибку в коде Apache-Ant-1.7.0beta1 (ClassNotFound-Exception не обрабатывается должным образом и приводит к NPE)

Page 9: CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ориентированное на качество)

Примеры: избавляемся от утечек

Parasoft Jtest находит утечку в коде Ant-1.7.0beta1(утечка происходит, когда dis.read() бросает исключение)

Page 10: CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ориентированное на качество)

Примеры: оптимизируем код

Parasoft Jtest находит неоптимальный код в FindBugs v1.0.0

Page 11: CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ориентированное на качество)

Примеры: обнаружение внедрения в SQL-запрос

Parasoft Jtest находит уязвимость для внедрения в SQL-запрос в коде WebGoat

Page 12: CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ориентированное на качество)

Примеры: обнаружение XSS-уязвимостей

Parasoft Jtest находит XSS-уязвимость в коде Parabank

Page 13: CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ориентированное на качество)

Почему хорошо использовать ПОК?

Поддерживается высокое качество кода по мере его написания

Уменьшается время, необходимое на отладку Множество типов ошибок обнаруживается

автоматически, программисты же решают творческие задачи

Снижается влияние человеческого фактора на качество разрабатываемого ПО

Покупатель получает более качественный продукт

Разработка становится более предсказуемой и легче поддается правильной оценке

Сокращается бюджет, требуемый на разработку

Page 14: CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ориентированное на качество)

Благодарность

Спасибо за внимание :-)