Перейти к содержимому

Фотография

Андрей Уразов: Методы раннего обнаружения ошибок


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 andrey.urazov

andrey.urazov

    Новый участник

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Уразов Андрей

Отправлено 20 мая 2011 - 03:43

Доклад посвящен методам раннего обнаружения ошибок. Начинаю я его рассказом о том, сколько стоят программные ошибки. В частности, сколько они стоят, если не обнаружены до введения проекта в эксплуатацию. Говорю о том, сколько они стоят в совокупности, используя оценки, доступные для самой крупной экономики мира - США, и для отдельных проектов, опираясь на некоторые вопиющие примеры, когда программные ошибки приводили, например, к подрыву ракеты носителя Ариан-5 стоимостью $370 млн., или к смерти нескольких людей в случае с прибором лучевой терапии Терак-25.

К сожалению, ошибки берут не только стоимостью, но и количеством и присутствуют в каждом проекте. Так, будучи создателем средств автоматизированного обнаружения ошибок, я вместе со своей командой проводил поиск ошибок с помощью статических анализаторов из продуктов Parasoft C++test и Jtest на известных зрелых и широко используемых проектах, реализованных на C, C++ и Java. В докладе я привожу примеры некоторых ошибок, не найденных разработчиками, но обнаруженных автоматически с помощью статического анализа. В частности, это ошибки в версии ОС Android, установленной на телефоне HTC Incredible, и проекте автоматизированной сборки Apache Ant.

Одним крайне важным моментом в процессе обеспечения качества ПО является срок обнаружения ошибки с момента ее появления. Чем раньше ее удается обнаружить, тем быстрее и дешевле ее исправить, и тем эффективнее процесс производства ПО.

Существует целый ряд методов, широко применяемых на практике для выявления ошибок:

- статический и динамический анализ,
- модульное и функциональное тестирование,
- тестирование на проникновение и др.

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

Нашей целью является эффективное обеспечение качества ПО, и для этого нам необходимо хорошо понимать возможности каждого из методов, их достоинства и недостатки. Опираясь на это, мы сможем эффективно применять каждый из них в отдельности и, что даже более важно, правильно выстроить весь процесс обеспечения качества, получив максимальную отдачу от взаимодействия различных способов обнаружения ошибок. Именно этому и посвящена основная часть моего доклада.

И, наконец, хочу сказать о целях, которые я ставил для этого выступления. Хоть это и не отражает темы моего доклада, прежде всего, я хотел побудить слушателей к размышлениям о том, сколько стоят ошибки в их проектах. И отсюда к размышлениям о том, как можно улучшить процессы тестирования и разработки, так чтобы обеспечить высокое качество производимого ПО. Техническую же часть доклада, которая и отражена в заглавии, я посвятил обзору и сравнению методов обнаружения ошибок, для того чтобы дать широкое понимание возможностей обнаружения дефектов и, следовательно, основу для улучшения процессов обеспечения качества ПО в произвольном проекте.

Примечательно, что накануне выступления я общался с одной из участниц конференции, Мариной Павловой, которая рассказала о том, что занимается тестированием ПО для медицинского оборудования, которое производит ее компания, в частности, это ПО для рентген аппаратов. В случае с таким производством цена ошибок может быть столь же печальной, сколь в широко известном случае с аппаратом Терак-25, где программные ошибки привели к смерти троих пациентов из-за сверхвысокой дозы облучения. Мне очень приятно, что Марина, ее компания, отправившая ее на конференцию, а также все остальные участники задумываются об улучшении качества ПО и, возможно, по возвращении с конференции смогут что-то (или даже многое!) сделать лучше и правильней в своих проектах.

Доступна презентация.
  • 0

#2 Alisa

Alisa

    Новый участник

  • Members
  • Pip
  • 1 сообщений

Отправлено 25 мая 2011 - 10:51

Отличная тема для доклада! Ведь это знают все как важно раннее обнаружение ошибок, но к сожалению не редко забывают об этом или упираются в какие-то другие вопросы, задачи, улучшения... зачастую пропуская незначительные детали, отмахиваясь от них, а потом выясняется что именно эти "детали" приводят к катастрофическим последствиям...Мы все ищем ошибки, в наших руках множество инструментов для их поиска, но мы их все равно пропускаем и будем пропускать,такова жизнь... Но не будем сгущать краски-обращайтесь к своим пользователям, зачастую они хранят целый набор полученных дефектов, годами....они ждут когда мы придем и спросим у них "А что не так?"....Ищите-ищите, не останавливайтесь, ищите до, ищите после, прогнозируйте, не оставляйте качество лишь словом "качество" !!!
  • 0

#3 andrey.urazov

andrey.urazov

    Новый участник

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Уразов Андрей

Отправлено 26 мая 2011 - 02:49

Alisa, рад что доклад вас заинтересовал! Вы совершенно правы, что тесное взаимодействие с пользователем необходимо, в частности, и для улучшения качества продуктов, и гибкие методологии (Agile), столь ныне популярные, как раз на это делают сильный упор.

А доклад посвящен тому, как сделать, чтобы эти ошибки не доходили до пользователей :-), методам обнаружения, совместное использование которых позволяет наладить НЕПРЕРЫВНЫЙ процесс ОБЕСПЕЧЕНИЯ (это очень важно: именно ОБЕСПЕЧЕНИЯ, а не КОНТРОЛЯ) качества как часть процесса производства ПО. Сочетание разных методов обнаружения позволяет атаковать ошибки с разных сторон. Такой разносторонний подход компенсирует недостатки одного метода достоинствами другого. Например, тестирование не выявляет многих ошибок из-за, как правило, недостаточного покрытия кода тестами. Статический же анализ, позволяет добиться 100% покрытия и выявить ошибки, не выявленные тестированием. В целом, при таком подходе в ходе всего жизненного цикла программного продукта ошибки выявляются вскоре после их появления, когда исправление обнаруженных дефектов обходится дешевле всего в смысле ресурсов компании и не наносит урона пользователям и репутации компании.

Что касается методов, для меня важно было дать обзор и стимулировать слушателей подумать, применяют ли они их в своих компаниях и на сколько эффективно. Если сейчас какие-то из методов не применяются, то могло ли бы их внедрение улучшить качество разрабатываемого ПО.

Интересно, например, какие из освященных мной методов применяются у вас. Насколько эффективно? Стоит ли расширять обнаружение ошибок другими методами?
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных