Как обеспечить качество программного обеспечения? Как обеспечить качественные производственные процессы? Как сделать так, что поменять, чтобы процессы и сам продукт имели встроенное качество?
Такими вопросами задаются практически все компании, которые занимаются производством программного обеспечения и для которых важно доставлять ценность до клиента без дефектов.
Этой статьей начинаю серию публикаций, посвященную встроенному качеству и как мы меняли процессы в нашей компании.
Что же такое качество?
Для начала давайте определимся что же такое качество? Как гарантировать качество? Как его контролировать и управлять?
Существует множество международных стандартов, таких как ISO9000, ISO9126 (был заменен ISO/IEC 25010:2011) и т.д., которые дают некоторые определения качеству и процессам.
Так, к примеру согласно ISO9000. Качество - это степень соответствия совокупности присущих характеристик объекта требованиям.
Хмм...Окей. Выглядит заумно. Как насчет программного обеспечения? На это отвечает стандарт ISO 9126.
Качество программного обеспечения - это
Способность программного продукта при заданных условиях удовлетворять установленным или предполагаемым требованиям.
Весь объём признаков и характеристик программ, который относится к их способности удовлетворять установленным или предполагаемым требованиям.
Степень, в которой система, компонент или процесс удовлетворяют требованиям или ожиданиям заказчика или пользователя.
Как видно из определений, качество и требования тесно связаны и любой объект (будь то ювелирное украшение или программное обеспечение), который считается качественным, должен удовлетворять установленным требованиям.
Согласно тому же стандарту ISO9126 качество программного обеспечения имеет внутренние и внешние характеристики. Каждая характеристика детализируется субхарактеристиками.
К внешним характеристика качества относятся:
Функциональность (Functionality) - Набор атрибутов, которые влияют на существование набора функций и их заданных свойств. Функции — это характеристики ПО, которые удовлетворяют заявленные или подразумеваемые потребности.
Надежность (Reliability) - Набор атрибутов, которые влияют на способность программного обеспечения поддерживать свой уровень производительности при указанных условиях в течение указанного периода времени.
Юзабилити (Usability) - Набор атрибутов, которые влияют на усилия, необходимые для использования, и на индивидуальную оценку такого использования заявленным или подразумеваемым набором пользователей.
Эффективность (Efficiency) - Набор атрибутов, которые влияют на взаимосвязь между уровнем производительности программного обеспечения и количеством используемых ресурсов при указанных условиях
Портируемость (Portability) - Набор атрибутов, влияющих на возможность передачи программного обеспечения из одной среды в другую.
К внутренним качествам относятся:
Сопровождаемость (Maintainability) - Набор атрибутов, влияющих на усилия, необходимые для внесения определённых изменений.
Тестируемость (Testability) - Набор атрибутов, влияющих на усилия, необходимые для проверки программного обеспечения после проведения какого-либо видоизменения.
Данные семь характеристик достаточны для того, чтобы программное обеспечение считалось качественным.
Но как гарантировать качество? Как контролировать и управлять? Какие процессы отвечают за это?
Но как гарантировать качество?
В целом, большинство, когда слышат слово качество, подразумевают тестирование, команду тестирования, которая сидит и весь день тестирует программное обеспечение. Но на самом деле все гораздо сложнее и интереснее.
Существует, как минимум, четырехуровневая система процессов, которые вместе могут обеспечить, гарантировать качество. Эти процессы начинают свою работу с момента контакта с заказчиком и заканчиваются...а, хотя нет, они не заканчиваются, они работают постоянно по всему потоку создания ценности для клиента.
Quality Management (QM) или управление качеством - это процесс наблюдения за всеми действиями и задачами, необходимыми для поддержания желаемого уровня качества. Управление качеством включает определение политики качества, создание и реализацию планирования и обеспечения качества (QA), а также контроль качества (QC) и улучшения качества. Управление качеством требует, чтобы все заинтересованные стороны бизнеса работали вместе надо улучшением процессов, продуктов, услуг и культуры самой компании.
Обеспечение качества (QA) - это часть управления качеством, направленная на обеспечении уверенности (гарантированности) в том, что требования к качеству будут выполнены.
Управление качеством (QC) - это рабочие методы и активности, нацеленные на выполнение требований к качеству.
Тестирование (Testing) включает в себя различные задачи и подходы к выявлению и обнаружению ошибок, дефектов в продукте.
Как видно между QA, QC и тестированием есть разница. Да, они об одном и том же - о качестве, но работают с ним с разных уровней.
Так, QA задействован в процессе верификации и позволяет получить ответ на вопрос - Создаю ли я продукт правильно? У QA ориентация на процессы и их постоянное улучшение. Поэтому QA это проактивный процесс, направленный на предотвращение дефектов путем постепенного совершенствования производственных процессов, политик и процедур. QA отвечает за разработку стандартов и методологий, аудит, обучение и т.д.
А вот QC задействован в процессе валидации и позволяет получить ответ на вопрос - Создаю ли я правильный продукт? В отличии от QA, QC ориентирован на продукт и является реактивным процессом, который направлен на эффективное выявление дефектов в программном обеспечении до релиза и отправки клиентам. QC следует стандартам и регламентам, методологиям, за которые отвечает QA.
Резюмируя, хочется отметить, чтобы обеспечить качество в ПО, надо начать с аудита производственных процессов, пересмотреть все регламенты и стандарты, которые используются и, если хочется повысить качество, начать их менять, внедрять новые методологии и подходы. Иначе, мы получим тот же самый результат. Как говорил Эйнштейн: Самая большая глупость — это делать тоже самое и надеяться на другой результат.
В следующих публикациях по качеству поговорим про гибкие подходы к обеспечению встроенного качества.
alcochtivo
Ух, звучит достаточно "энтерпрайзненько") Интересная статья, спасибо.
Но вот думается мне, что данная четырехуровневая система не всем подходит, да и не всем "по карману".
ChiTechOff Автор
Совершенно верно. Применение новых методологии и фреймворков должно зависеть от всего процесса доставки ценности до клиента. Какой в компании SDLC, STLC? Какие стандарты и регламенты, практики разработки (к примеру, экстремального программирования), проектное и продуктовое управление? Культура! Все это в купе формирует встроенное качество. И, имхо, закладывать фундамент для этого лучше в начале. Конечно же, не надо внедрять все и сразу, особенно, если есть процессы.