10-software_engineering_quality (1133550), страница 2
Текст из файла (страница 2)
ISO/IECопределяет три связанных модели качества программного обеспечения (ISO 9126-01 SoftwareEngineering - Product Quality, Part 1: Quality Model) – внутреннее качество, внешнее качество икачество в процессе эксплуатации, а также набор соответствующих работ по оценке качествапрограммного обеспечения (ISO14598-98 Software Product Evaluation).Copyright © Сергей Орлик, 2004-2010.http://swebok.sorlik.ru4Основы программной инженерии (по SWEBOK)Программная инженерия. Качество программного обеспечения.1.3.1 Качество процессов программного обеспечения (Software engineering process quality)Управление качеством (software quality management) и качество процессов программнойинженерии (software engineering process quality) имеют непосредственное отношение к качествусоздаваемого программного продукта.Модели и критерии оценки возможностей организаций, занимающихся разработкой программногообеспечения, прежде всего касаются рассмотрения организации проектных работ и аспектовуправления.
Соответственно, они рассматриваются в областях знаний SWEBOK “Управлениепрограммной инженерией” и “Процесс программной инженерии”.Конечно, невозможно полностью отделить качество процесса от качества продукта.Качество процесса, обсуждаемое в области знаний “Процесс программной инженерии”, влияют нахарактеристики качества продукта, которые, в свою очередь, отражаются в восприятии качествапродукта в процессе эксплуатации со стороны заказчика.Существует два важнейших стандарта в области качества программного обеспечения. TickIT касается рассмотрения общей системы менеджмента качества ISO 9001-00 в приложении кпрограммным проектам (и, в частности, сочетания такого взгляда с положениями стандартажизненного цикла ISO 12207) и представленный, также, в виде специальных рекомендаций ISO90003-04 “Software and Systems Engineering - Guidelines for the Application of ISO9001:2000 toComputer Software”.Другой важный стандарт – CMMI, обсуждаемый в области знаний “Процесс программнойинженерии”, предоставляет рекомендации по совершенствованию процесса.
(здесь нельзя неупомянуть и ISO 15504 “Information Technology - Software Process Assessment”, известный какSPICE - Software Process Improvement and Capability dEtermination, который также рассматриваетсяв упомянутой области знаний). Непосредственно с управлением качеством связаны процессныеобласти (области компетенции) CMMI: обеспечение качества процесса и продукта (process andproduct quality assurance, категория процессов CMMI “Support”), проверка (verification, категория“Engineering”) и аттестация (validation, категория “Engineering”). При этом, CMMI классифицируетобзор (review) и аудит (audit) в качестве методов верификации, но не как самостоятельныепроцессы, в отличие, например, от стандарта 12207.Дебаты в отношении того, какой именно стандарт стоит использовать инженерам для обеспечениякачества программного обеспечения – CMMI или ISO 9001, продолжаются с самого создания этихстандартов. Сегодня можно сказать о том, что данные стандарты все же рассматривают каквзаимодополняющие и, что сертификация по ISO 9001 помогает в достижении старших уровнейзрелости по CMMI.1.3.2 Качество программного продукта (Software product quality)Прежде всего, инженеры должны определить цели создания программного обеспечения.
В этомконтексте, особо важно помнить, что требования заказчика - первичны и содержат требования вотношении качества, а не только функциональности (функциональные требования). Такимобразом, инженеры ответственны за извлечение требований к качеству, которые не всегдапредставлены явно, а также обсуждение их важности и степени сложности их достижения. Всепроцессы, ассоциированные с качеством (например, сборка, проверка и повышение качества),должны проектироваться с учетом этих требований и несут на себе тяжесть дополнительныхрасходов (как важную составную часть стоимости программного обеспечения).Стандарт ISO 9126-01 (Software Engineering - Product Quality, Part 1: Quality Model) определяет длядвух из трех описанных в нем моделей, связанные характеристики и "суб-характеристики"качества, а также метрики, полезные для оценки качества программных продуктов.Понимание термина “продукт” расширено включением всех артефактов, создаваемых на выходевсех процессов, используемых для создания конечного программного продукта.
Примерамипродукта являются (но не ограничиваются этим): полная спецификация системных требований(system requirements specification), спецификация программных требований для программныхкомпонент системы (software requirements specification, SRS), модели, код, тестовая документация,Copyright © Сергей Орлик, 2004-2010.http://swebok.sorlik.ru5Основы программной инженерии (по SWEBOK)Программная инженерия. Качество программного обеспечения.отчеты, создаваемые в результате работ по анализу качества.
Хотя, чаще всего термин качествоиспользуется в отношении конечного продукта и поведения системы в процессе эксплуатации,хорошей инженерной практикой является требование к тому, чтобы соответствие заданнымхарактеристикам качества оценивалось и для промежуточных результатов/продуктов жизненногоцикла в рамках всех процессов программной инженерии.1.4 Повышение качества (Quality Improvement)Качество программного обеспечения может повышаться за счет итеративного процессапостоянного улучшения.
Это требует контроля, координации и обратной связи в процессеуправления многими одновременно выполняемыми процессами: (1) процессами жизненного цикла,(2) процессом обнаружения, устранения и предотвращения сбоев/дефектов и (3) процессовулучшения качества.К программной инженерии применимы теории и концепции, лежащие в основе совершенствованиякачества. Например, предотвращение и ранняя диагностика ошибок, постоянноесовершенствование (continuous improvement) и внимание к требованиям заказчика (customerfocus), составляющие принцип “building in quality”. Эти концепции основываются на работахэкспертов по качеству, пришедших к мнению, что качество продукта напрямую связано скачеством используемых для его создания процессов.Такие подходы, как TQM (Total Quality Management – всеобщее управление качеством) PDCA (Plan,Do, Check, Act – Планирование, Действие, Проверка, Реакция/Корректировка), являютсяинструментами достижения задач, связанных с качеством.
Поддержка менеджмента помогает ввыполнении процессов, оценке продуктов и получению всех необходимых данных. Кроме этого,разрабатываемая программа совершенствования (improvement program, обычно является целевойи охватывает работу подразделения или организации, в целом) детально идентифицирует вседействия и проекты по улучшению <отдельных аспектов деятельности> в рамках определенногопериода времени, за который такие проекты можно осуществить с успешным решениемсоответствующих задач. При этом, поддержка менеджмента означает, что все проекты поулучшению обладают достаточными ресурсами для достижением поставленных целей. Поддержкаменеджмента тесно связана с реализацией активного взаимодействия в коллективе, и должнапредупреждать возникновение потенциальных проблем (и пассивного или даже активногопротиводействия реализации программы совершенствования или отдельных ее проектов).Формирование рабочих групп, поддержка менеджеров среднего звена и выделенные ресурсы науровне проекта – эти вопросы обсуждаются в области знаний “Процесс программной инженерии”.2.
Процессы управления качеством программного обеспечения (Software Quality Processes)Управление качеством программного обеспечения (SQM, Software Quality Management)применяется ко всем аспектам процессов, продуктов и ресурсов. SQM определяет процессы,владельцев процессов, а также требования к процессам, измерения процессов и их результатов,плюс – каналы обратной связи.Процессы управления качеством содержат много действий. Некоторые из них позволяютнапрямую находить дефекты, в то время, как другие помогают определить где именно может бытьважно провести более детальные исследования, после чего, опять-таки, проводятся работы понепосредственному обнаружению ошибок.
Многие действия также могут вестись с цельюдостижения и тех и других целей.Планирование качества программного обеспечения включает:(1) Определение требуемого продукта в терминах характеристик качества (см., например,область знаний “Управление программной инженерией”).(2) Планирование процессов для получения требуемого продукта (см., например, областизнаний “Проектирование” и “Конструирование”).Эти процессы отличаются от процессов SQM, как таковых, которые, в свою очередь, направленына оценку планируемых характеристик качества, а не на реальную реализацию этих планов.Процессы управления качеством должны адресоваться вопросам, насколько хорошо продуктCopyright © Сергей Орлик, 2004-2010.http://swebok.sorlik.ru6Основы программной инженерии (по SWEBOK)Программная инженерия. Качество программного обеспечения.будет удовлетворять потребностям заказчика и требованиям заинтересованных лиц,обладать ценностью для заказчика и заинтересованных лиц и качеством, необходимым длясоответствия сформулированным требованиям к программному обеспечению.SQM может использоваться для оценки и конечных и промежуточных продуктов.Некоторые из специализированных процессов SQM определены в стандарте 12207: Процесс обеспечения качества (quality assurance process) Процесс верификации (verification process) Процесс аттестации (validation process) Процесс совместного анализа (joint review process) Процесс аудита (audit process)Все эти процессы поддерживают стремление к достижению качества и, кроме того, помогают впоиске возможных ошибок.
Однако, они отличаются в том, на чем концентрируют внимание.Процессы SQM помогают в обеспечении лучшего качества программного обеспечения в данномпроекте. Они предоставляют менеджерам основную информацию по каждому продукту и, крометого, включают параметры качества всего процесса программной инженерии. Области знанийSWEBOK “Процесс программной инженерии” и “Управление программной инженерией” обсуждаютпрограммы качества для организаций, занимающихся разработкой программного обеспечения.SQM может предоставить соответствующую обратную связь для этих областей.Процессы SQM состоят из задач и техник, предназначенных для оценки того, как начинаютреализовываться планы по созданию программного обеспечения и насколько хорошопромежуточные и конечные продукты соответствуют заданным требованиям.