Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Методы предотвращения дефектов




Методы поиска дефектов

Методы поиска дефектов можно разбить на 4 категории:

· Ручной анализ (обзор) разрабатываемых артефактов:

o Персональные проверки (personal review) [1, стр. 231-269], [4, стр. 163-201];

o Формальные инспекции [1, стр. 232], [3, стр. 335-357];

o Групповые обзоры (walkthrough) [1, стр. 232];

o Парное программирование [11, стр. 84-85, 93, 131-133], групповое проектирование [5, стр. 76-77, 158-162];

o и т.п.;

· Автоматическая статическая проверка:

o Компиляция (помимо явных дефектов компилятор умеет находить неявные (warnings) – их не следует оставлять без внимания);

o Автоматический статический анализ кода с помощью специальных анализаторов;

o Автоматическая проверка на соблюдение принятого код-стандарта и стиля;

· Автоматизированное тестирование:

o Модульное или блочное тестирование (unit testing) [10, стр. 101-115], [11, стр. 147-152], [12];

o Автоматизированное функциональное (комплексное) тестирование;

o Автоматизированное тестирование графического интерфейса пользователя;

o Тестирование производительности; стресс-тестирование;

o Использование утверждений (asserts) [9, стр. 109-111];

o и т.д.;

· Ручное тестирование:

o Ручное интеграционное тестирование;

o Ручное системное тестирование;

o Сравнительное тестирование;

o Верификация требований;

o Пошаговая трассировка [9, стр. 82-83];

o и т.д.

У каждого из перечисленных методов есть свои плюсы и минусы. Какие-то виды дефектов лучше ловятся одними методами, какие-то другими. Поэтому, эффективная стратегия поиска дефектов будет состоять в применении комбинации нескольких разнородных методов [2, стр. 463-465]. Каждый метод поиска в зависимости от того, насколько хорошо он реализован и применяется в конкретных условиях, будет иметь свой собственный уровень эффективности, выраженный в процентах. В книге С. Макконнелл «Совершенный код» можно найти таблицу примерных значений эффективностей поиска дефектов для разных методов [2, стр. 463]. Обратите внимание, что согласно этим данным тестирование имеет сравнительно низкую эффективность поиска дефектов (30%-40%), а для того, чтобы сделать её высокой, необходимо увеличить стоимость процесса тестирования в разы (эффективность бета-тестирования при количестве тестеров >1000 около 75%).

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

· Прототипирование [9, стр. 44-48] – создание и опробование дешёвой модели разрабатываемой системы с целью проверить её характеристики и выявить неверные предположения и решения, которые могли бы привести к серьёзным дефектам (и переделкам) при разработке.

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

· Применение компонентного (или модульного) подхода [14, стр. 33, 65, 247]. Грамотное применение компонентного подхода при построении программных систем уменьшает их сложность [9, стр. 126-129], а, следовательно, сужает пространство возможных дефектов.

· Использование готовых проверенных решений и компонентов (собственных или купленных), в высоком качестве которых мы уверены. Чем меньше нам приходится разрабатывать новых собственных решений, тем меньше ошибок мы делаем.

· Рефакторинг кода [10] – приведение кода в надлежащий вид есть хороший способ профилактики будущих дефектов сопровождения, которые очень любят появляться при модификации непонятных, плохо спроектированных участков кода.

· Предварительная разработка тест-кейсов (до этапа кодирования) позволяет глубже понять требования к разрабатываемой системе и лучше спроектировать её. Частный случай этого подхода – Test-Driven Development, при котором модульные тесты разрабатываются не после, а до кодирования.

· Регулярный анализ причин появления наиболее серьёзных дефектов и поиск путей устранения этих причин. Это может происходить на периодических собраниях команды разработчиков [3, стр. 185-196], или можно проводить такой анализ для каждого серьёзного дефекта, найденного на этапах системного тестирования или после внедрения. Результатом такого анализа должны быть модификации процесса разработки [3, стр. 186-187], направленные на устранение причин появления дефектов или, как минимум, способствующие более раннему обнаружению подобных дефектов [1, стр. 301-304].

· Ваши идеи?

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




Поделиться с друзьями:


Дата добавления: 2015-04-29; Просмотров: 1522; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.