ScholarGate
Ассистент

Разработка и качество программного обеспечения

Разработка и качество программного обеспечения касаются дисциплинированного создания работающего кода и методов — тестирования, верификации, анализа и измерения — которые устанавливают и гарантируют соответствие программного обеспечения его требованиям и целям качества.

Найти тему в PaperMindСкороFind papers & topics
Tools & resources
Скачать слайды
Learn & explore
ВидеоСкоро

Definition

Разработка программного обеспечения — это детальное создание работающего программного обеспечения посредством кодирования, верификации, модульного тестирования и отладки, а качество программного обеспечения — это степень, в которой программное обеспечение удовлетворяет своим заявленным и подразумеваемым требованиям, обеспечиваемая верификацией, валидацией и деятельностью по управлению качеством.

Scope

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

Sub-topics

Core questions

  • Какие практики позволяют создавать код, который является корректным, читаемым и поддерживаемым?
  • Как обнаруживаются дефекты посредством тестирования, анализа и обзора?
  • Как определяется, измеряется и обеспечивается качество программного обеспечения?
  • Когда корректность может быть установлена формальным доказательством, а не только тестированием?

Key theories

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

Clinical relevance

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

Evidence & guidelines

ISO/IEC 25010 определяет модель качества программного продукта, а области знаний SWEBOK по разработке, тестированию и качеству программного обеспечения предоставляют консенсусное справочное руководство.

History

Систематическое тестирование было сформулировано Майерсом в 1970-х годах, структурное программирование и верификация — Дейкстрой и Хоаром в ту же эпоху, а мастерство разработки — Макконнеллом в 1990-х годах; модели и стандарты качества, такие как ISO/IEC 25010, консолидировали атрибуты качества и измерения.

Debates

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

Key figures

  • Glenford Myers
  • Steve McConnell
  • C. A. R. Hoare
  • Edsger Dijkstra

Related topics

Seminal works

  • myers2011
  • mcconnell2004
  • swebok2014

Frequently asked questions

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

Methods for this concept

Related concepts