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

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

Этой статьей начинаю серию публикаций, посвященную встроенному качеству и как мы меняли процессы в нашей компании.

Что же такое качество?

Для начала давайте определимся что же такое качество? Как гарантировать качество? Как его контролировать и управлять? 

Существует множество международных стандартов, таких как ISO9000, ISO9126 (был заменен ISO/IEC 25010:2011) и т.д., которые дают некоторые определения качеству и процессам.

Так, к примеру согласно ISO9000. Качество - это степень соответствия совокупности присущих характеристик объекта требованиям.

Хмм...Окей. Выглядит заумно. Как насчет программного обеспечения? На это отвечает стандарт ISO 9126.

Качество программного обеспечения - это

  • Способность программного продукта при заданных условиях удовлетворять установленным или предполагаемым требованиям.

  • Весь объём признаков и характеристик программ, который относится к их способности удовлетворять установленным или предполагаемым требованиям.

  • Степень, в которой система, компонент или процесс удовлетворяют требованиям или ожиданиям заказчика или пользователя.

Как видно из определений, качество и требования тесно связаны и любой объект (будь то ювелирное украшение или программное обеспечение), который считается качественным, должен удовлетворять установленным требованиям.

Согласно тому же стандарту ISO9126 качество программного обеспечения имеет внутренние и внешние характеристики. Каждая характеристика детализируется субхарактеристиками.

К внешним характеристика качества относятся:

  • Функциональность (Functionality) - Набор атрибутов, которые влияют на существование набора функций и их заданных свойств. Функции — это характеристики ПО, которые удовлетворяют заявленные или подразумеваемые потребности.

  • Надежность (Reliability) - Набор атрибутов, которые влияют на способность программного обеспечения поддерживать свой уровень производительности при указанных условиях в течение указанного периода времени.

  • Юзабилити (Usability) - Набор атрибутов, которые влияют на усилия, необходимые для использования, и на индивидуальную оценку такого использования заявленным или подразумеваемым набором пользователей.

  • Эффективность (Efficiency) - Набор атрибутов, которые влияют на взаимосвязь между уровнем производительности программного обеспечения и количеством используемых ресурсов при указанных условиях

  • Портируемость (Portability) - Набор атрибутов, влияющих на возможность передачи программного обеспечения из одной среды в другую.

К внутренним качествам относятся:

  • Сопровождаемость (Maintainability) - Набор атрибутов, влияющих на усилия, необходимые для внесения определённых изменений.

  • Тестируемость (Testability) - Набор атрибутов, влияющих на усилия, необходимые для проверки программного обеспечения после проведения какого-либо видоизменения.

Данные семь характеристик достаточны для того, чтобы программное обеспечение считалось качественным.

Но как гарантировать качество? Как контролировать и управлять? Какие процессы отвечают за это?

Но как гарантировать качество?

В целом, большинство, когда слышат слово качество, подразумевают тестирование, команду тестирования, которая сидит и весь день тестирует программное обеспечение. Но на самом деле все гораздо сложнее и интереснее.

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

4-уровневая система обеспечения качества
4-уровневая система обеспечения качества

Quality Management (QM) или управление качеством - это процесс наблюдения за всеми действиями и задачами, необходимыми для поддержания желаемого уровня качества. Управление качеством включает определение политики качества, создание и реализацию планирования и обеспечения качества (QA), а также контроль качества (QC) и улучшения качества. Управление качеством требует, чтобы все заинтересованные стороны бизнеса работали вместе надо улучшением процессов, продуктов, услуг и культуры самой компании.

Обеспечение качества (QA) - это часть управления качеством, направленная на обеспечении уверенности (гарантированности) в том, что требования к качеству будут выполнены.

Управление качеством (QC) - это рабочие методы и активности, нацеленные на выполнение требований к качеству.

Тестирование (Testing) включает в себя различные задачи и подходы к выявлению и обнаружению ошибок, дефектов в продукте.

Как видно между QA, QC и тестированием есть разница. Да, они об одном и том же - о качестве, но работают с ним с разных уровней.

QA
QA

Так, QA задействован в процессе верификации и позволяет получить ответ на вопрос - Создаю ли я продукт правильно? У QA ориентация на процессы и их постоянное улучшение. Поэтому QA это проактивный процесс, направленный на предотвращение дефектов путем постепенного совершенствования производственных процессов, политик и процедур. QA отвечает за разработку стандартов и методологий, аудит, обучение и т.д.

QC
QC

А вот QC задействован в процессе валидации и позволяет получить ответ на вопрос - Создаю ли я правильный продукт? В отличии от QA, QC ориентирован на продукт и является реактивным процессом, который направлен на эффективное выявление дефектов в программном обеспечении до релиза и отправки клиентам. QC следует стандартам и регламентам, методологиям, за которые отвечает QA.

Резюмируя, хочется отметить, чтобы обеспечить качество в ПО, надо начать с аудита производственных процессов, пересмотреть все регламенты и стандарты, которые используются и, если хочется повысить качество, начать их менять, внедрять новые методологии и подходы. Иначе, мы получим тот же самый результат. Как говорил Эйнштейн: Самая большая глупость — это делать тоже самое и надеяться на другой результат.

В следующих публикациях по качеству поговорим про гибкие подходы к обеспечению встроенного качества.

Комментарии (3)


  1. alcochtivo
    23.11.2021 16:45

    Ух, звучит достаточно "энтерпрайзненько") Интересная статья, спасибо.

    Но вот думается мне, что данная четырехуровневая система не всем подходит, да и не всем "по карману".


    1. ChiTechOff Автор
      25.11.2021 08:25
      +1

      Совершенно верно. Применение новых методологии и фреймворков должно зависеть от всего процесса доставки ценности до клиента. Какой в компании SDLC, STLC? Какие стандарты и регламенты, практики разработки (к примеру, экстремального программирования), проектное и продуктовое управление? Культура! Все это в купе формирует встроенное качество. И, имхо, закладывать фундамент для этого лучше в начале. Конечно же, не надо внедрять все и сразу, особенно, если есть процессы.


  1. moiseevg
    28.11.2021 08:00

    Полезная статья. Как раз занимаемся перестройкой процессов!