Как обеспечить качество программного обеспечения? Как обеспечить качественные производственные процессы? Как сделать так, что поменять, чтобы процессы и сам продукт имели встроенное качество?   Такими вопросами задаются практически все компании, которые занимаются производством программного обеспечения и для которых важно доставлять ценность до клиента без дефектов.  Этой статьей начинаю серию публикаций, посвященную встроенному качеству и как мы меняли процессы в нашей компании. Для начала давайте определимся что же такое качество? Как гарантировать качество? Как его контролировать и управлять?  Существует множество международных стандартов, таких как 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. Резюмируя, хочется отметить, чтобы обеспечить качество в ПО, надо начать с аудита производственных процессов, пересмотреть все регламенты и стандарты, которые используются и, если хочется повысить качество, начать их менять, внедрять новые методологии и подходы. Иначе, мы получим тот же самый результат. Как говорил Эйнштейн: Самая большая глупость — это делать тоже самое и надеяться на другой результат.  В следующих публикациях по качеству поговорим про гибкие подходы к обеспечению встроенного качества. Технический директор