SQC versus SQA (02.02.2010)
Контроль качества программного обеспечения vs. обеспечение качества программного обеспечения Цель этой статьи - провести грань между понятиями "контроль качества программного обеспечения" (Software Quality Control, QC) и "обеспечение качества ПО" (Software Quality Assurance, QA). Также, мы расширим понятие "обеспечения качества" и определим его роль в рамках процесса непрерывного совершенствования. Хотя во многих ресурсах даны правильные определения этих терминов и их употребление уместно и верно, эти понятия так схожи, что требуют соответствующего разъяснения на примерах.
Формальные определения, которые используются в этой статье:
Обеспечение качества программного обеспечения
Одна из функций качества ПО, которая гарантирует соответствие проекту стандартов, процессов и процедур и их надлежащее внедрение.
Контроль качества программного обеспечения
Одна из функций качества ПО, которая контролирует, что проект действует в соответствии с процессами и процедурами соответствующих стандартов и что проект производит требуемые внутренние и внешние (конечный продукт) результаты.
Кажется, что провести границу сложно, но принципиальная разница будет видна на простом примере. Рассмотрим проект, состоящий из требований, дизайна пользовательского интерфейса и создания базы SQL.
Группа обеспечения качества разработает план обеспечения качества (quality plan), в котором определяются стандарты, процессы и процедуры, применяемые к проекту, который мы рассматриваем в примере. Исходя из рассматриваемого примера, сюда можно отнести план спецификации IEEE xyz (для требований), руководство по стилю оформления (для дизайна интерфейса пользователя) и стандарты Open SQL (для внедрения SQL). Все стандарты, процессы и процедуры, которые необходимо выполнять, определяются и документируются в тест-плане. Этим занимается группа обеспечения качества.
После разработки требований в этом примере группа обеспечения качества ПО удостоверилась бы, что все требования соответствуют задокументированным стандартам (в данном случае IEEE xyz). За выполнение такой же задачи по дизайну пользовательского интерфейса и внедрения SQL, принялась бы и группа контроля качества, т.е. обе группы действовали бы по стандарту, определенному группой обеспечения качества. Потом группа обеспечения качества могла бы провести проверку, чтобы удостовериться в качестве стандартов требований использовался IEEE xyz, а не IEEE abc.
Таким образом, четко видна разница между правильным внедрением, за которое отвечает группа обеспечения качества, и работе согласно внедренным стандартам, за что отвечает группа контроля качества.
Также следует обратить внимание, что само понятие контроля качества подразумевает тестирование ПО, поскольку это является частью определения контроля качества: «проект производит требуемые внутренние и внешние (конечный продукт) результаты». Слово «требуемые» относится не только к функциональным требованиям, но и к нефункциональным аспектам (наличие технической поддержки, производительность, удобство использования и т.д.). Все требования верифицируются или валидируются группой контроля качества. Главным образом, разница состоит в разграничении надлежащего внедрения и следования стандартам процессов и процедур, в основном, из-за этого и возникает путаница с определением понятий контроля и обеспечения качества. Тестирование обычно отождествляется с контролем качества, несмотря на то, что оно часто только взаимосвязано с тестированием процесса непрерывного совершенствования обеспечение качества, как правило, играет другую роль.
Роль обеспечения качества в процессе непрерывного совершенствования
К задачам обеспечения качества также относится сбор и представление метрик программного обеспечения.
Например, среднее время между отказами (Mean Time Between Failure, MTBF) широко распространенная метрика ПО, которая отслеживает, насколько часто в системе происходит сбой. Эта метрика существенна для характеристики надежности ПО, а значит, и для характеристики уровня работоспособности ПО.
В обеспечении качества эти метрики могут быть собраны из разнообразных источников, но на практике нужно помнить, что результат (или эффект) взаимосвязан с причиной. С этой точки зрения обеспечение качества может измерить значимость или влияние наличия данного стандартного процесса или процедуры. Затем, в форме процесса непрерывного совершенствования поддерживать обратную связь с различными группами разработки (анализа, дизайна, кодирования и т.д.) и начать процесс непрерывного совершенствования.
Для примера, рассмотрим стандарт интерфейса пользователя, в котором не различаются команды «открыть новое окно» и «открыть новое окно вместо текущего», они обе выполняются с помощью кнопки «Открыть». Если при тестировании удобства пользования (usability testing) выяснилось, что пользователи ищут правильное окно (или какое-то другое решение), команда обеспечения качества может передать эту информацию (метрику удобства пользования) обратно к разработчикам интерфейса пользователя и предложить улучшение стандартов интерфейса.
Говоря о вовлеченности групп обеспечения качества в процесс улучшения, следует понимать, что они только передают измерения ответственным за процесс лицам, которые (например, отдел разработки) в свою очередь предлагают новый стандарт или процедуру. Этим стандартом или процедурой пользуются в последующих проектах (т.е. группа обеспечения качества не придумывает стандарты и процедуры) уже в отрыве от того проекта, в котором он был выработан. Однако, использование соответствующего стандарта или процедуры верифицируется группой обеспечения качества.
Таким образом, в задачи обеспечения качества входит не только гарантия применения определенных стандартов и процедур, но и сбор тех измерений ПО, которые имеют отношение к оценке полезности стандартов процессов и процедур. Таким образом, группы обеспечения качества позволяют удостовериться, что применяются согласованные стандарты процессов и процедур, и измерить эффект от их применения. Ценность стандартов процессов и процедур измеряется только результатом их применения, поэтому обеспечение качества – прагматическая методология, которая не управляется основными принципами или неоспоримыми теориями и правилами.
Обеспечение качества специализируется на оценке ПО посредством его измерений или метрик, что сочетает в себе искусство с наукой.
|