Управление качеством программного обеспечения — это управление совокупностью свойств, которые характеризуют способности программного обеспечения удовлетворять потребности пользователей в соответствии с его предназначением.
Введение
Управление качеством является процессом, лежащим в основе обеспечения конкурентоспособности выпускаемой продукции. В начале двадцатого века управление качеством состояло, главным образом, в исполнении мероприятий, связанных с контролем качества используемого сырья и изготовленной продукции. А сегодня управление качеством является сложным, непрерывным процессом, затрагивающим каждый этап производства.
В соответствии с ГОСТ 15467-79, управлением качеством продукции являются действия, которые осуществляются при формировании и эксплуатации или потреблении продукции с целью установления, обеспечения и поддержания требуемого уровня ее качественных показателей.
Из этого определения следует, что управление качеством должно затрагивать каждый из этапов производства (жизненного цикла) продукции. Комплекс мер по обеспечению качества способен образовать систему управления качеством, при этом, предупреждению возникновения дефектов должно уделяться больше внимания чем их ликвидации.
Качество продукции может определяться объемом брака, то есть, числом дефектов. Причем дефектом считается каждое отклонение от требований, которые предъявляются к выпускаемой продукции. Совокупность требований может зависеть от типа производимой продукции, в частности это может быть и программное обеспечение.
Управление качеством программного обеспечения
Прежде чем начинать разработку программного обеспечения, следует сформулировать определенный набор требований к нему. Требования должны быть зафиксированы в техническом задании. К этим требованиям следует отнести, к примеру, следующие моменты:
- Набор функциональных возможностей, то есть, программное обеспечение обязано удовлетворять заданные потребности пользователя, что означает выполнение требуемых функций.
- Требование эффективности, то есть, должно выполняться соотношение между качеством функционирования программного обеспечения и требованиями, предъявляемыми им к ресурсам.
- Требование мобильности, то есть, наличие переносимости программного обеспечения под разные архитектуры и платформы.
- Наличие удобного использования.
- Требование надежности, то есть, программное обеспечение должно обладать устойчивостью к сбоям.
- Наличие удобного сопровождения, то есть, возможности вносить
- Изменения и дополнения в программное обеспечение.
Допускается наличие множества разных требований, каждое из которых может иметь зависимость от многих факторов. К примеру, удобство сопровождения может зависеть от наличия подробных сопроводительных документов, соответствия кода заданным соглашениям, архитектуры программного обеспечения. К примеру, программное обеспечение может обеспечить поддержку системы модулей, которые расширяют функциональный набор без изменения существующего кода. Следует подчеркнуть, что нарушение любого из требований может считаться как дефект.
Формирование архитектуры программного обеспечения должно быть произведено до начала кодирования. Во время процесса кодирования следует непрерывно отслеживать соблюдение всех соглашений. Документы могут разрабатываться как в одно время с кодированием, так и после его завершения. Это все означает, что управление качеством программного обеспечения должно осуществляться непрерывно, то есть, течение всего жизненного цикла.
В соответствии с ANSI/IEEE Std 610.12-1990, жизненным циклом программного обеспечения считается период времени, от момента принятия решения о необходимости реализации программного продукта до момента его полной утилизации. Жизненный цикл может делиться на ряд этапов, куда входит разработка и использование программного обеспечения. Следует выделить несколько моделей жизненного цикла, в зависимости от методов деления его на этапы. На рисунке ниже в виде схемы показаны каскадная и итерационная модели жизненного цикла.
Рисунок 1. Каскадная и итерационная модели жизненного цикла. Автор24 — интернет-биржа студенческих работ
В этих моделях разработка программного обеспечения подразделяется на следующие этапы:
- Этап формулирования требований к продукту.
- Этап проектирования.
- Этап формирования кодов.
- Этап отладки.
- Этап внедрения.
- Этап поддержки.
Переход к началу следующего этапа следует производить только по завершении работ на предыдущем этапе.
При применении каскадной модели, дефекты могут накапливаться по ходу осуществления проекта. Обнаружение и устранение дефектов должно выполняться только на этапе отладки, причем на этом этапе можно использовать тестирование или верификацию программного обеспечения. Стоимость устранения дефектов, которые были допущены на этапе проектирования значительно выше, чем стоимость дефектов, допущенных на этапе кодирования. Это означает необходимость уделять этапу проектированию больше внимания. Итеративная модель жизненного цикла предоставляет возможность снизить риски возникновения дефектов программного обеспечения на ранних стадиях.
В итеративной модели жизненный цикл должен делиться на итерации, каждая из которых имеет в своем составе весь набор этапов процесса разработки, а именно, этап проектирования, этап реализации, тестирования и оценки результатов. В результате выполнения каждой итерации формируется работающая модель системы, причем все последующие итерации обязаны улучшать работу программного обеспечения. В итеративной модели поиск дефектов должен осуществляться многократно, то есть, он в обязательном порядке исполняется на каждой итерации.
Следует также подчеркнуть важность комплексного подхода к управлению качеством программного обеспечения. Причем, под комплексным подходом необходимо понимать наличие поиска и устранения дефектов на всех этапах жизненного цикла программного обеспечения.