Лекция №19Инженерия качества
Качество — одна из основных характеристик, требуемых от программного обеспечения. Несмотря на это, понятие качества достаточно сложно формализовать. Обычно под качеством подразумевают две связанных между собой свойства программной системы:
- мера, в которой ПО соответствует функциональным требованиям, заданным планом разработки и прочими документами спецификации (функциональное качество);
- уровень поддержки нефункциональных требований: надежности, производительности и так далее (структурное качество).
Функциональное качество, как правило, оценивается при помощи тестирования, поэтому основная часть управления качеством фокусируется на обеспечении структурного качества ПО. Управление состоит из трех частей:
- обеспечение качества — определение стандартов для производства, проверки и оценки программных продуктов;
- планирование качества — применение стандартов и инструментов для поддержания качества в конкретном программном проекте;
- контроль качества — соблюдение процессов планирования качества и обеспечения качества во время разработки.
Ключевую роль в процессах управления качеством играют стандарты и другие регламентирующие документы. Некоторые стандарты определяются самой организацией (например, стандарты оформления кода или документации), другие берутся из внешних источников (например, стандарт ISO 9001, определяющий обеспечение качества в производстве). Для контроля соблюдения стандартов составляется план и периодически проводится анализ продуктов разработки (например, с помощью обзоров и инспекций исходного кода).
Роль стандартов зависит от выбранной методологии разработки:
- В классических моделях жизненного цикла стандарты — основная движущая сила при разработке.
- В гибкой методологии и связанных моделях жизненного цикла ПО роль стандартов сведена к минимуму. Вместо формальных обзоров и инспекций используется неформальная кооперация между разработчиками, например, при помощи парного программирования.
Оценка качества ПО при помощи инспекций — дорогостоящий и длительный процесс. Для сокращения затрат качество измеряется с помощью определенных математических моделей. Замерив метрики отдельных компонентов программной системы, такие как число ошибок на строку кода и цикломатическая сложность, можно оценить, какие из компонентов нуждаются в доработке и в каком направлении эта доработка должна вестись. К сожалению, пока не существует моделей, которые могли бы принимать подобные решения без участия человека. Это связано с тем, что ключевые характеристики ПО (надежность, удобство использования и так далее) по своей сути субъективны; их можно лишь приблизительно описать измеримыми метриками.