Инспекция в программной инженерии относится к экспертной оценке любого рабочего продукта обученными лицами, которые ищут дефекты, используя четко определенный процесс. Инспекция также может называться инспекцией Фагана в честь Майкла Фагана, создателя очень популярного процесса инспекции программного обеспечения.
Инспекция — один из наиболее распространенных видов практик проверки, встречающихся в проектах по разработке программного обеспечения. Целью инспекции является выявление дефектов. Обычно проверяемые рабочие продукты включают спецификации требований к программному обеспечению и планы тестирования . В ходе инспекции выбирается рабочий продукт для проверки, и группа собирается на совещание по проверке для проверки рабочего продукта. Модератор выбирается для модерирования совещания. Каждый инспектор готовится к совещанию, читая рабочий продукт и отмечая каждый дефект. В ходе инспекции дефектом является любая часть рабочего продукта, которая не позволит инспектору одобрить его. Например, если группа проверяет спецификацию требований к программному обеспечению, каждый дефект будет текстом в документе, с которым инспектор не согласен.
Процесс проверки был разработан [1] в середине 1970-х годов и впоследствии был расширен и изменен.
Процесс должен иметь критерии входа, которые определяют, готов ли процесс проверки к началу. Это предотвращает попадание в процесс проверки незаконченных рабочих продуктов. Критериями входа может быть контрольный список, включающий такие пункты, как «Документ был проверен на орфографию».
Этапы процесса инспекций: Планирование, Обзорное совещание, Подготовка, Инспекционное совещание, Доработка и Последующие действия. Этапы Подготовка, Инспекционное совещание и Доработка могут повторяться.
Процесс завершается модератором, когда он удовлетворяет некоторым предопределенным критериям выхода. Термин «инспекция» относится к одному из важнейших элементов всего процесса, который окружает выполнение и успешное завершение проекта по разработке программного обеспечения.
Во время проверки используются следующие роли.
Обзор кода может быть выполнен как особый вид проверки, в ходе которой команда изучает образец кода и исправляет любые дефекты в нем. В обзоре кода дефектом является блок кода, который не реализует должным образом свои требования, который не функционирует так, как задумал программист, или который не является неправильным, но может быть улучшен (например, его можно сделать более читабельным или улучшить его производительность). Помимо помощи командам в поиске и исправлении ошибок, обзоры кода полезны как для перекрестного обучения программистов по рассматриваемому коду, так и для помощи младшим разработчикам в изучении новых методов программирования.
Экспертные оценки считаются передовой отраслевой практикой для раннего обнаружения дефектов программного обеспечения и изучения артефактов программного обеспечения. Экспертные оценки состоят из пошаговых инструкций и проверок программного обеспечения и являются неотъемлемой частью деятельности по разработке программного продукта. Набор скоординированных знаний, навыков и поведения способствует наилучшей возможной практике экспертных оценок. Элементы экспертных оценок включают структурированный процесс обзора, контрольные списки продукта стандарта качества, определенные роли участников, а также формы и отчеты.
Инспекции программного обеспечения являются наиболее строгой формой экспертных оценок и полностью используют эти элементы для обнаружения дефектов. Пошаговые руководства по программному обеспечению выборочно опираются на элементы, помогая производителю получить самое глубокое понимание артефакта и достичь консенсуса среди участников. Измеренные результаты показывают, что экспертные оценки обеспечивают привлекательную окупаемость инвестиций, полученных за счет ускоренного обучения и раннего обнаружения дефектов. Для достижения наилучших результатов экспертные оценки развертываются в организации посредством определенной программы подготовки политики и процедуры, обучения практиков и менеджеров, определения измерений и заполнения структуры базы данных, а также поддержания инфраструктуры развертывания.