Опубликован: 24.09.2008 | Уровень: специалист | Доступ: платный
Лекция 11:

Модели качества и надежности в программной инженерии

  1. Функциональность - совокупность свойств, определяющих способность ПО выполнять перечень функций в заданной среде и в соответствии с требованиями к обработке и общесистемным средствам. Под функцией понимается некоторая упорядоченная последовательность действий для удовлетворения потребительских свойств. Функции бывают целевые (основные) и вспомогательные.

    К атрибутам функциональности относятся:

    • функциональная полнота - свойство компонента, которое показывает степень достаточности основных функций для решения задач в соответствии с назначением ПО;
    • правильность (точность) - атрибут, который показывает степень достижения правильных результатов;
    • интероперабельность - атрибут, который показывает возможность взаимодействовать на ПО специальными системами и средами (ОС, сеть);
    • защищенность - атрибут, который показывает на способность ПО предотвращать несанкционированный доступ (случайный или умышленный) к программам и данным.
  2. Надежность - совокупность атрибутов, которые определяют способность ПО преобразовывать исходные данные в результаты при условиях, зависящих от периода времени жизни (износ и его старение не учитываются). Снижение надежности ПО происходит из-за ошибок в требованиях, проектировании и выполнении. Отказы и ошибки в программах появляются на заданном промежутке времени [10.5-10.10].

    К подхарактеристикам надежности ПО относятся:

    • безотказность - атрибут, который определяет способность ПО функционировать без отказов (как программы, так и оборудования);
    • устойчивость к ошибкам - атрибут, который показывает на способность ПО выполнять функции при аномальных условиях (сбой аппаратуры, ошибки в данных и интерфейсах, нарушение в действиях оператора и др.);
    • восстанавливаемость - атрибут, который показывает на способность программы к перезапуску для повторного выполнения и восстановления данных после отказов.

    К некоторым типам систем (реального времени, радарных, систем безопасности, коммуникация и др.) предъявляются требования для обеспечения высокой надежности (недопустимость ошибок, точность, достоверность, удобство применения и др.). Таким образом, надежность ПО в значительной степени зависит от числа оставшихся и не устраненных ошибок в процессе разработки на этапах ЖЦ. В ходе эксплуатации ошибки обнаруживаются и устраняются.

    Если при исправлении ошибок не вносятся новые или, по крайней мере, новых ошибок вносится меньше, чем устраняется, то в ходе эксплуатации надежность ПО непрерывно возрастает. Чем интенсивнее проводится эксплуатация, тем интенсивнее выявляются ошибки и быстрее растет надежность ПО.

    К факторам, влияющим на надежность ПО, относятся:

    • совокупность угроз, приводящих к неблагоприятным последствиям и к ущербу системы или среды ее функционирования;
    • угроза как проявление нарушения безопасности системы;
    • целостность как способность системы сохранять устойчивость работы и не иметь риска.

    Обнаруженные ошибки могут быть результатом угрозы извне или отказов, они повышают риск и уменьшают некоторые свойства надежности системы.

    Надежность - одна из ключевых проблем современных программных систем, и ее роль будет постоянно возрастать, поскольку постоянно повышаются требования к качеству компьютерных систем. Новое направление - инженерия программной надежности (Software reliability engineering) - ориентировано на количественное изучение операционного поведения компонентов системы по отношению к пользователю, ожидающему надежную работу системы [10.7], и включает:

    • измерение надежности, т.е. проведение ее количественной оценки с помощью предсказаний, сбора данных о поведении системы в процессе эксплуатации и современных моделей надежности;
    • стратегии и метрики конструирования и выбора готовых компонентов, процесс разработки компонентной системы, а также среда функционирования, влияющая на надежность работы системы;
    • применение современных методов инспектирования, верификации, валидации и тестирования при разработке систем, а также при эксплуатации.

    Верификация применяется для определения соответствия готового ПО установленным спецификациям, а валидация - для установления соответствия системы требованиям пользователя, которые были предъявлены заказчиком.

    В инженерии надежности термин dependability (пригодноспособность) обозначает способность системы иметь свойства, желательные для пользователя, который уверен в качественном выполнении функций ПС, заданных в требованиях. Данный термин определяется дополнительным количеством атрибутов, которыми должна обладать система, а именно:

    • готовность к использованию (availability);
    • готовностью к непрерывному функционированию (reliability);
    • безопасность для окружающей среды, т.е. способность системы не вызывать катастрофических последствий в случае отказа (safety);
    • секретность и сохранность информации (сonfidential);
    • способность к сохранению системы и устойчивости к самопроизвольному ее изменению (integrity);
    • способность к эксплуатации ПО, простота выполнения операций обслуживания, а также устранения ошибок, восстановление системы после их устранения и т.п. (maintainability);
    • готовность и сохранность информации (security) и др.

    Достижение надежности системы обеспечивается предотвращением отказа (fault prevention), его устранением (removal fault), а также оценкой возможности появления новых отказов и мер борьбы с ними с применением методов теории вероятности.

    Каждый программный компонент, его операции и данные обрабатываются в дискретные моменты времени, например, \delta, 2\delta,\dots n\delta. Пусть за время Т после первого неудачно обработанного компонента системы появился отказ, q_{b} - вероятность этой неудачи, тогда P \{T > n\delta\} = (1 - q_{s})^{ n} и среднее время ожидания T = \delta/ q_{s}
.

    Положим, что момент времени \delta убывает, а время Т остается фиксированным, тогда имеем P \{T > t\} = (1 - \frac{\delta}{T})\frac{t}{\delta} = e^{-\frac{t}{T}}, время до отказа в данном случае - непрерывная величина c \dots l, распределенная экспоненциально с параметром T, \dots, 1/T.

    Таким образом, оценка надежности ПО - это трудоемкий процесс, требующий создания устойчивой работы системы по отношению к отказам ПО, т.е. вероятности того, что система восстановится самопроизвольно в некоторой точке после возникновения в ней отказа (fault).

  3. Удобство применения характеризуется множеством атрибутов, которые показывают на необходимые и пригодные условия использования (диалоговое или не диалоговое) ПО заданным кругом пользователей для получения соответствующих результатов. В стандарте [10.3] удобство применения определено как специфическое множество атрибутов программного продукта, характеризующих его эргономичность.

    К подхарактеристиками удобства применения относятся:

    • понимаемость - атрибут, который определяет усилия, затрачиваемые на распознавание логических концепций и условий применения ПО;
    • изучаемость (легкость изучения) - атрибут, который определяет усилия пользователей на определение применимости ПО путем использования операционного контроля, диагностики, а также процедур, правил и документации;
    • оперативность - атрибут, который показывает на реакцию системы при выполнении операций и операционного контроля;
    • согласованность - атрибут, который показывает соответствие разработки требованиям стандартов, соглашений, правил, законов и предписаний.
  4. Эффективность - множество атрибутов, которые определяют взаимосвязь уровней выполнения ПО, использования ресурсов (средства, аппаратура, материалы - бумага для печатающего устройства и др.) и услуг, выполняемых штатным обслуживающим персоналом и др.

    К подхарактеристикам эффективности ПО относятся:

    • реактивность - атрибут, который показывает время отклика, обработки и выполнения функций;
    • эффективность ресурсов - атрибут, показывающий количество и продолжительность используемых ресурсов при выполнении функций ПО;
    • согласованность - атрибут, который показывает соответствие данного атрибута с заданными стандартами, правилами и предписаниями.
  5. Сопровождаемость - множество свойств, которые показывают на усилия, которые надо затратить на проведение модификаций, включающих корректировку, усовершенствование и адаптацию ПО при изменении среды, требований или функциональных спецификаций.

    Cопровождаемость включает подхарактеристики:

    • анализируемость - атрибут, определяющий необходимые усилия для диагностики отказов или идентификации частей, которые будут модифицироваться;изменяемость - атрибут, который определяет удаление ошибок в ПО или внесение изменений для их устранения, а также введение новых возможностей в ПО или в среду функционирования;
    • стабильность - атрибут, указывающий на постоянство структуры и риск ее модификации;
    • тестируемость - атрибут, показывающий на усилия при проведении валидации и верификации с целью обнаружения несоответствий требованиям, а также на необходимость проведения модификации ПО и сертификации;
    • согласованность - атрибут, который показывает соответствие данного атрибута соглашениям, правилам и предписаниям стандарта.
  6. Переносимость - множество показателей, указывающих на способность ПО адаптироваться к работе в новых условиях среды выполнения. Среда может быть организационной, аппаратной и программной. Поэтому перенос ПО в новую среду выполнения может быть связан с совокупностью действий, направленных на обеспечение его функционирования в среде, отличной от той среды, в которой оно создавалось с учетом новых программных, организационных и технических возможностей.

    Переносимость включает подхарактеристики:

    • адаптивность - атрибут, определяющий усилия, затрачиваемые на адаптацию к различным средам;
    • настраиваемость (простота инсталляции) - атрибут, который определяет необходимые усилия для запуска данного ПО в специальной среде;
    • сосуществование - атрибут, который определяет возможность использования специального ПО в среде действующей системы;
    • заменяемость - атрибут, который обеспечивают возможность интероперабельности при совместной работе с другими программами с необходимой инсталляцией или адаптацией ПО;
    • согласованность - атрибут, который показывает на соответствие стандартам или соглашениями по обеспечению переноса ПО.
Александр Медов
Александр Медов
обе стороны сертификата
Александр Медов
Александр Медов
время оформления и сроки?
Александр Качанов
Александр Качанов
Япония, Токио
Владимир Карпенко
Владимир Карпенко
Украина