SlideShare a Scribd company logo
Quality-Oriented Programming
                 или
программирование, ориентированное
             на качество

      Андрей Уразов – 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
Почему хорошо использовать ПОК?


    Поддерживается высокое качество кода по
     мере его написания
    Уменьшается время, необходимое на отладку
    Множество типов ошибок обнаруживается
     автоматически, программисты же решают
     творческие задачи
    Снижается влияние человеческого фактора на
     качество разрабатываемого ПО
    Покупатель получает более качественный
     продукт
    Разработка становится более предсказуемой и
     легче поддается правильной оценке
    Сокращается бюджет, требуемый на разработку
Благодарность




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

More Related Content

PPT
сергей андреев
PPTX
Профилактика дефектов
PDF
Sqa8 urazov
PPTX
Sqadays 8-barancev
PPTX
Тестирование как панацея для жизни и развития проекта
PPTX
Использование комбинаторного тестирования для мобильных приложений
PDF
Project under control
PPTX
Как мы добавляли UX-исследования в мобильные приложения Aviasales и что из эт...
сергей андреев
Профилактика дефектов
Sqa8 urazov
Sqadays 8-barancev
Тестирование как панацея для жизни и развития проекта
Использование комбинаторного тестирования для мобильных приложений
Project under control
Как мы добавляли UX-исследования в мобильные приложения Aviasales и что из эт...

What's hot (20)

PPTX
Невыносимая переносимость кроссплатформенных приложений на примере десктопных...
PDF
Мастер Тест План / Тестовая Стратегия: Что это? Зачем? Как его создать?-От А ...
PPTX
Code review как средство обеспечения качества программного обеспечения
PDF
Андрей Уразов - Методы раннего обнаружения ошибок
PPTX
Как тестируют в гугле - обзор книги
PPTX
Improvement of PHP code quality (by Alexander Makhomet) - Web Back-End Tech H...
PDF
Эвристические методы защиты приложений
PDF
Непрерывный анализ качества кода с помощью SonarQube
PDF
План тестирования
PPTX
Crucible или почему для Code Review нужна не только голова, но и инструмент
PDF
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
PPTX
Ui testing how intel does this
PPTX
Юнит тестирование
PPTX
Скандалы, расследования, тестирование
PPTX
ковалев нестандатное нт
PPT
Java one presentation
PDF
Уязвимое Android-приложение: N проверенных способов наступить на грабли
PPTX
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
PPTX
Eva Sokolyanskaya, QA Stand Up: Episode 4
PPT
Testing in Scrum - Yuriy Malyi
Невыносимая переносимость кроссплатформенных приложений на примере десктопных...
Мастер Тест План / Тестовая Стратегия: Что это? Зачем? Как его создать?-От А ...
Code review как средство обеспечения качества программного обеспечения
Андрей Уразов - Методы раннего обнаружения ошибок
Как тестируют в гугле - обзор книги
Improvement of PHP code quality (by Alexander Makhomet) - Web Back-End Tech H...
Эвристические методы защиты приложений
Непрерывный анализ качества кода с помощью SonarQube
План тестирования
Crucible или почему для Code Review нужна не только голова, но и инструмент
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
Ui testing how intel does this
Юнит тестирование
Скандалы, расследования, тестирование
ковалев нестандатное нт
Java one presentation
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Eva Sokolyanskaya, QA Stand Up: Episode 4
Testing in Scrum - Yuriy Malyi
Ad

Viewers also liked (20)

PPTX
CodeFest 2011. Крестьянинов М. — Обзор аспектно-ориентированного программиров...
PDF
Сверхоптимизация кода на Python
PDF
CodeFest 2013. Бурмако Е. — Макросы в Скале
PDF
CodeFest 2013. Агафонкин В. — Высокопроизводительные визуализации данных в бр...
PDF
CodeFest 2014. Симаков М. — Инфографика, как это работает
PPSX
CodeFest 2011. Сидоров А. — Почему некоторые программисты любят изобретать «в...
PPT
CodeFest 2011. Токарев О — Конструирование кода: «Думай верно!» (или 5 Правил...
PDF
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
PPTX
Keynote: Challenges, Pains and Points of Software Development Today
PDF
CodeFest 2012. Рыжиков С. — Архитектура и запуск облачного сервиса в Amazon A...
PDF
CodeFest 2013. Русанов П. — Есть ли жизнь в оффлайне? Кеш, транзакционный лог...
PDF
CodeFest 2010. Иноземцев И. — Fantom. Cross-VM Language
PDF
CodeFest 2013. Днепровский П. — Морковка: спереди или сзади? Игровые механики...
PPTX
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
PDF
CodeFest 2010. Горбатовский С. — Заказные проекты: как не собрать все грабли
PPT
CodeFest 2010. Погребняк А. — Проблемы оценки труда программистов
PPT
CodeFest 2011. Ширшаков Д. — Как подружить ежа с ужом или другой взгляд на DWH
PPT
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
PDF
CodeFest 2013. Гилев Е. — Создание пользовательского интерфейса без программи...
PPTX
CodeFest 2011. Юферев Р. — Пора задуматься о Manageability
CodeFest 2011. Крестьянинов М. — Обзор аспектно-ориентированного программиров...
Сверхоптимизация кода на Python
CodeFest 2013. Бурмако Е. — Макросы в Скале
CodeFest 2013. Агафонкин В. — Высокопроизводительные визуализации данных в бр...
CodeFest 2014. Симаков М. — Инфографика, как это работает
CodeFest 2011. Сидоров А. — Почему некоторые программисты любят изобретать «в...
CodeFest 2011. Токарев О — Конструирование кода: «Думай верно!» (или 5 Правил...
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
Keynote: Challenges, Pains and Points of Software Development Today
CodeFest 2012. Рыжиков С. — Архитектура и запуск облачного сервиса в Amazon A...
CodeFest 2013. Русанов П. — Есть ли жизнь в оффлайне? Кеш, транзакционный лог...
CodeFest 2010. Иноземцев И. — Fantom. Cross-VM Language
CodeFest 2013. Днепровский П. — Морковка: спереди или сзади? Игровые механики...
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2010. Горбатовский С. — Заказные проекты: как не собрать все грабли
CodeFest 2010. Погребняк А. — Проблемы оценки труда программистов
CodeFest 2011. Ширшаков Д. — Как подружить ежа с ужом или другой взгляд на DWH
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
CodeFest 2013. Гилев Е. — Создание пользовательского интерфейса без программи...
CodeFest 2011. Юферев Р. — Пора задуматься о Manageability
Ad

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

PDF
Разработка качественного ПО
PDF
Применение современных статических анализаторов
PPTX
SAST, борьба с потенциальными уязвимостями
PPTX
Static testing
PPTX
IntroductionPrinciples
PPTX
лекция типовые ошибки
PPTX
Нужно ли статическому анализу машинное обучение?
PPT
Vladimir Itsykson. CSEDays
PDF
PPTX
Оценка трудоёмкости и сроков разработки ПО
PDF
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
PPTX
Основы и применение статического анализа кода при разработке лекция 1
PDF
Тестирование весна 2014 лекция 1
PDF
2.1 Тестирование: основные определения
PDF
ук 03.007.02 2011
PDF
Обработка ошибок — общие соображения и грязные подробности
PDF
Проблемы тестирования 64-битных приложений
PDF
Работа с унаследованным кодом. Есть ли жизнь после коммита.
PPTX
Статический анализ кода: борьба с удорожанием ошибок
PPTX
Разработка качественного ПО
Применение современных статических анализаторов
SAST, борьба с потенциальными уязвимостями
Static testing
IntroductionPrinciples
лекция типовые ошибки
Нужно ли статическому анализу машинное обучение?
Vladimir Itsykson. CSEDays
Оценка трудоёмкости и сроков разработки ПО
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
Основы и применение статического анализа кода при разработке лекция 1
Тестирование весна 2014 лекция 1
2.1 Тестирование: основные определения
ук 03.007.02 2011
Обработка ошибок — общие соображения и грязные подробности
Проблемы тестирования 64-битных приложений
Работа с унаследованным кодом. Есть ли жизнь после коммита.
Статический анализ кода: борьба с удорожанием ошибок

More from CodeFest (20)

PDF
Alexander Graebe
PDF
Никита Прокопов
PPTX
Денис Баталов
PDF
Елена Гальцина
PDF
Александр Калашников
PDF
Ирина Иванова
PDF
Marko Berković
PDF
Денис Кортунов
PDF
Александр Зимин
PDF
Сергей Крапивенский
PDF
Сергей Игнатов
PDF
Николай Крапивный
PDF
Alexander Graebe
PDF
Вадим Смирнов
PDF
Константин Осипов
PDF
Raffaele Rialdi
PDF
Максим Пугачев
PDF
Rene Groeschke
PDF
Иван Бондаренко
PDF
Mete Atamel
Alexander Graebe
Никита Прокопов
Денис Баталов
Елена Гальцина
Александр Калашников
Ирина Иванова
Marko Berković
Денис Кортунов
Александр Зимин
Сергей Крапивенский
Сергей Игнатов
Николай Крапивный
Alexander Graebe
Вадим Смирнов
Константин Осипов
Raffaele Rialdi
Максим Пугачев
Rene Groeschke
Иван Бондаренко
Mete Atamel

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

  • 1. Quality-Oriented Programming или программирование, ориентированное на качество Андрей Уразов – 2010
  • 2. Ход доклада  Проблемы разработки ПО  Какое решение предлагает ПОК (QOP)  Автоматизированные практики обнаружения ошибок и их возможности  Построение процесса разработки в соответствии концепцией ПОК (QOP)  Какие ошибки можно предотвратить - некоторые примеры автоматизированного обнаружения  Итоги
  • 3. Проблемы разработки ПО  Позднее выявление ошибок  Длительное и непредсказуемое время отладки  Отсутствие уверенности в безопасности изменения при работе с большими проектами  Срывы сроков разработки  Увеличение бюджета
  • 4. Программирование, ориентированное на качество  НЕПРЕРЫВНОЕ обеспечение качества приложения от начала проекта  АВТОМАТИЗИРОВАННЫЙ контроль качества внутри команды разработки
  • 5. Методы обнаружения ошибок  Статический анализ  Динамический анализ  Проверка модульных и функциональных тестов  Обзоры кода
  • 6. Статический анализ  Обеспечение ясности и понятности кода, общего стиля написания кода  Обнаружение общих ошибок  Обнаружение ошибок в применении различных библиотек  Автоматизированное применение экспертных знаний о программировании
  • 7. Построение процесса разработки  Архитектор определяет набор требований качества к проекту, политику обзоров кода  Каждую ночь проходит автоматизированное тестирование  Каждое утро каждый разработчик получает набор задач, связанный с последними внесенными изменениями. В частности, обнаруженные ошибки, требующие исправления.  Если в ходе обзоров кода обнаруживаются часто встречающиеся ошибки, набор формализованных требований расширяется, а такие ошибки находятся далее автоматизированным способом
  • 8. Примеры: обнаружение NPE Parasoft Jtest находит ошибку в коде Apache- Ant-1.7.0beta1 (ClassNotFound- Exception не обрабатывается должным образом и приводит к NPE)
  • 9. Примеры: избавляемся от утечек Parasoft Jtest находит утечку в коде Ant-1.7.0beta1 (утечка происходит, когда dis.read() бросает исключение)
  • 10. Примеры: оптимизируем код Parasoft Jtest находит неоптимальный код в FindBugs v1.0.0
  • 11. Примеры: обнаружение внедрения в SQL-запрос Parasoft Jtest находит уязвимость для внедрения в SQL-запрос в коде WebGoat
  • 12. Примеры: обнаружение XSS-уязвимостей Parasoft Jtest находит XSS-уязвимость в коде Parabank
  • 13. Почему хорошо использовать ПОК?  Поддерживается высокое качество кода по мере его написания  Уменьшается время, необходимое на отладку  Множество типов ошибок обнаруживается автоматически, программисты же решают творческие задачи  Снижается влияние человеческого фактора на качество разрабатываемого ПО  Покупатель получает более качественный продукт  Разработка становится более предсказуемой и легче поддается правильной оценке  Сокращается бюджет, требуемый на разработку
  • 14. Благодарность Спасибо за внимание :-)