Модели качества и надежности в программной инженерии
Разработка ПС достигла такого уровня развития, что начали развиваться и использоваться инженерные методы, способствующие обеспечению высокого качества, в частности надежности, компонентов и системы в целом. Повышение качества – основная цель инженерных методов в программировании и задача разработчиков и заказчиков. Для достижения этих целей сформировались методы определения требований к качеству, подходы к выбору и усовершенствованию моделей метрического анализа показателей качества, методы количественного измерения показателей качества на этапах ЖЦ.
Главной составляющей качества является надежность, которой уделяется большое внимание со стороны многих специалистов в области надежности технических средств и тех критических систем (реального времени, радарные системы, системы безопасности и др.), для которых надежность является главной целевой функцией их реализации. Как следствие, разработано более сотни математических моделей надежности, являющихся функциями от ошибок, оставшихся в ПС, от интенсивности отказов или частоты появления дефектов в ПС. По ним производится оценка показателя – надежность ПС.
Качество ПО было предметом стандартизации, создан стандарт ГОСТ 2844–94, в котором дано определение качества ПО, как совокупность свойств (показателей качества) ПО, которые обеспечивают его способность удовлетворять потребности заказчика, в соответствии с назначением. Этот стандарт регламентирует базовую модель качества и его показатели, главным среди них является надежность. Стандарт ISO/IEC 12207 определил не только основные процессы ЖЦ разработки ПС, но и организационные и дополнительные процессы, которые регламентирую инженерию, планирование и управление качеством ПС.
На этапах ЖЦ проводится анализ качества ПО, ориентированные на:
– достижение качества ПО в соответствии с требованиями и критериями;
– верификацию и аттестацию (валидацию) промежуточных результатов ПО на этапах ЖЦ и измерение степени достижения отдельных его показателей;
– тестирование готовой ПС, сбор данных об отказах, дефектах и др. ошибках в системе и оценивание надежности по соответствующим моделям надежности.
Изложение данной темы будем проведено по представлению моделей качества и надежности, способы их применения в создаваемых ПС.
Модель качества ПО
Качество ПО является относительным понятием, которое имеет смысл только при учете реальных условий его применения, поэтому требования, предъявляемые к качеству, ставятся в соответствии с условиями и конкретной областью их применения.
Качество ПО характеризуется тремя главными аспектами: качество программного продукта, качество процессов ЖЦ и качество сопровождения или внедрения (рис. 9.1).
Аспект, связанный с процессами ЖЦ, характеризуется степенью формализации, достоверностью и качеством самих процессов ведения разработки ПО, а также верификацией и валидацией полученных промежуточных результатов на процессах ЖЦ, уменьшающих количество ошибок в ПО и тем самым способствующих повышению качества готового продукта.
Качество процесса Качество продукта Качество сопровождения
Процессы Программный Эффект от
ЖЦ продукт внедрения
ПО
Рис. 9.1 Основные аспекты качества ПО
Качество продукта целиком и полностью определяется процессами ЖЦ. Эффект от внедрения полученного программного продукта в значительной степени зависит от качества сопровождения и знаний обслуживающего персонала.
Модель качества ПО имеет следующие четыре уровня детализации.
Первый уровень соответствует определению характеристик (показателей) качества для ПО, каждая из них отражает отдельную точку зрения пользователя на качество. Согласно стандартов [1–4] определено шесть характеристик или шесть показателей качества в стандартной модели качества:
1. функциональность (functionality),
2. надежность (realibility),
3. удобство (usability),
4. эффективность (efficiency),
5. сопровождаемость (maitainnability),
6. переносимость (portability).
Второму уровнюсоответствуют атрибуты качества для каждой характеристики, которые детализируют разные аспекты конкретной характеристики. Набор атрибутов характеристик качества используется при оценки качества.
Третий уровень предназначен измерения качества с помощью метрик, каждая из них согласно стандарта [1] определяется как комбинация метода измерения атрибута и шкалы измерения значений атрибутов. Для оценки атрибутов качества на этапах ЖЦ (при просмотре документации, программ и результатов тестирования программ) используются метрики с заданным оценочным весом для нивелирования результатов метрического анализа совокупных атрибутов конкретного показателя и качества в целом. Атрибут качества определяется с помощью одной или нескольких методик оценки на этапах ЖЦ и на завершающем этапе разработки ПО.
Четвертый уровеньзадает оценочный элемент метрики для оценки количественного или качественного значения отдельного атрибута показателя ПО с учетом его веса.
В зависимости от назначения, особенностей и условий сопровождения ПО выбираются наиболее важные характеристики качества и их приоритеты. Выбранные для каждой характеристики атрибуты и их приоритеты отражаются в требованиях на разработку систем. Для программных систем, при разработки которых в требованиях не указан приоритет характеристик качества, используется приоритет эталона – класса ПО, к которому оно относится.
Модель качества приведена на рис.9.2, а короткое описание семантики каждой из шести характеристик качества и ее атрибутов приводится ниже.
1). Функциональность – совокупность свойств, определяющих способность ПО выполнять в заданной среде перечень функций в соответствии с требованиями к обработке и общесистемным средствам.
Под функцией понимается некоторая упорядоченная последовательность действий для удовлетворения некоторых потребительских свойств. Функции бывают целевые (основные и вспомогательные).
К атрибутам функциональности относятся:
– функциональная полнота – свойство компонента, которое показывает степень достаточности основных функций для решения задач в соответствии с назначением ПО;
– правильность (точность) – атрибут, который показывают степень достижения правильных результатов;
– интероперабельность – атрибут, который показывают на возможность взаимодействовать ПО со специальными системами и средами (ОС, сеть);
– защищенность – атрибут, который показывают на необходимость предотвратить несанкционированный доступ (случайный или умышленный) к программам и данным.
2). Надежность – совокупность атрибутов, которые определяют способность ПО преобразовывать исходные данные в результаты при условиях, зависящих от периода времени жизни (износ и его старение не учитывается). Снижение надежности ПО происходит из–за ошибок в требованиях, проектировании и выполнении. Отказы и ошибки в программах появляются на заданном промежутке времени [8-13].
К подхарактеристикам надежности ПО относятся:
– безотказность – атрибут, который определяет функционирование системы без отказов (программы или оборудования);
– устойчивость к ошибкам – атрибут, который показывают на способность ПО выполнять функции при аномальных условиях (сбоях аппаратуры, ошибках в данных и интерфейсах, нарушениях в действиях оператора и др.);
– восстанавливаемость – атрибут, который показывают на способность программы к перезапуску для повторного выполнения и восстановления данных после отказов.
К некоторым типам систем (реального времени, радарных, систем безопасности, коммуникация и др.) предъявляются требования для обеспечения высокой надежности (недопустимость ошибок, точность, достоверность, удобство применения и др.). Таким образом, надежность ПО в значительной степени зависит от числа оставшихся и не устраненных ошибок в процессе разработки на этапах ЖЦ. В ходе эксплуатации ошибки обнаруживаются и устраняются.
Если при исправлении ошибок не вносятся новые, или, по крайней мере, новых ошибок вносится меньше, чем устраняется, то в ходе эксплуатации надежность ПО непрерывно возрастает. Чем интенсивнее проводится эксплуатация, тем интенсивнее выявляются ошибки и быстрее растет надежность ПО.
Показатели – характеристики Атрибуты
Полнота функций
Точность
Функциональность Интероперабельность
Защищенность
Согласованность
Безотказность
Надежность Отказоустойчивость
Восстанавливаемость
Согласованность
Понимаемость
Обучаемость
Удобство
применения Привлекательность
Модель
качества
Согласованность
програм-
много Анализуруемость
обеспече-
ния Изменяемость
Сопровождаемость Стабильность
Тестируемость
Согласованность
Реактивность
Рациональность Эффективность ресурсов
Согласованность
Адаптируемость
Переносимость Простота установки
Сосуществование
Заменяемость
Согласованность
Рис. 9.2. Модель характеристик качества
К факторам, влияющим на надежность ПО, относятся:
– риск как совокупность угроз, приводящих к неблагоприятным последствиям и ущербу системы или среды ее функционирования;
– угроза как проявление нарушения безопасности системы;
– целостность как способность системы сохранять устойчивость работы и не иметь риска.
Обнаруженные ошибки могут быть результатом угрозы извне или отказов, они повышают риск и уменьшают некоторые свойства надежности системы.
3). Удобство применения характеризуется множеством атрибутов, которые показывают на необходимые и пригодные условия использования (диалоговое или недиалоговое) ПО определенным кругом пользователей для получения соответствующих результатов. В стандарте [3] удобство применения определено как специфическое множество атрибутов программного продукта, характеризующих его эргономичность.
Подхарактеристиками удобства применения являются:
– понимаемость – атрибут, который определяет усилия, затрачиваемые на распознавание логических концепций и условий применения ПО;
– изучаемость (легкость изучения) – атрибут, который определяет усилия пользователей при определении применимости ПО, используя, например, операционный контроль, ввод, вывод, диагностику, а также процедуры, правила и документацию;
– оперативность – атрибут, который показывает на реакцию системы при выполнении операций и операционного контроля;
– согласованность – атрибут, который показывает соответствие разработки требованиям стандартов, соглашений, правил, законов и предписаний.
4). Эффективность – множество атрибутов, которые определяют взаимосвязь между уровнем выполнения ПО, количеством используемых ресурсов (средства, аппаратура, другие используемые материалы – бумага для печатающего устройства и др.) и услуг выполняемых штатным обслуживающим персоналом и др.
К подхарактеристикам эффективности ПО относятся:
– реактивность – атрибут, который показывает время отклика, обработки и выполнения функций;
– эффективность ресурсов – атрибут, показывающий количество и продолжительность используемых ресурсов при выполнении функций ПО;
– согласованность: атрибут, который показывает соответствие данного атрибута с заданными стандартами, правилами и предписаниями.
Сопровождаемость
Сопровождаемость – множество свойств, которые показывают на усилия, которые надо затратить на проведение модификаций, включающих корректировку, усовершенствование и адаптацию ПО при изменении среды, требований или функциональных спецификаций.
Cопровождаемость включает подхарактеристики:
– анализируемость – атрибут, определяющий необходимые усилия для диагностики в отказов или идентификации частей, которые будут модифицироваться;
– изменяемость – атрибут, определяющий усилия, которые затрачиваются на модификацию, удаление ошибок или внесение изменений для устранения ошибок или введения новых возможностей в ПО или в среду функционирования;
– стабильность – атрибут, указывающие на риск модификации;
– тестируемость – атрибут, показывающий на усилия при проведении валидации, верификации с целью обнаружения ошибок и несоответствий требованиям, а также на необходимость проведения модификации ПО и сертификации;
– согласованность – атрибут, который показывает соответствие данного атрибута с определенными в стандартах, соглашениях, правилах и предписаниях.
6). Переносимость – множество показателей, указывающих на способность ПО приспосабливаться к работе в новых условиях среды выполнения. Среда может быть организационной, аппаратной и программной. Поэтому перенос ПО в новую среду выполнения может быть связан с совокупностью действий, направленных на обеспечение его функционирования в среде, отличной от той среды, в которой оно создавалось с учетом новых программных, организационных и технических возможностей.
Переносимость включает подхарактеристики:
– адаптивность – атрибут, определяющий усилия, затрачиваемые на адаптацию к различным средам;
– настраиваемость (простота инсталлирования) – атрибут, который определяет на необходимые усилия для запуска или инсталляции данного ПО в специальной среде;
– сосуществование – атрибут, который определяет возможность использования специального ПО в среде действующей системы;
– заменяемость – атрибут, который обеспечивают возможность интероперабельности при совместной работе с другими программами с необходимой инсталляцией или адаптацией ПО;
– согласованность – атрибут, который показывают на соответствие стандартам или соглашениями по обеспечению переноса ПО.