Лекция
Привет, Вы узнаете о том , что такое надежность программного обеспечения, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое надежность программного обеспечения, надежность , настоятельно рекомендую прочитать все из категории Надёжность программного обеспечения.
Теория надежности — наука, изучающая закономерности распределения отказов программных средств, комплексов, технических устройств и конструкций, причины и модели их возникновения. Теория надежности изучает методы обеспечения стабильности работы объектов (конструкций, изделий, устройств, систем и т. п.) в процессе проектирования, производства, приемки, транспортировки, эксплуатации и хранения.
Устанавливает и изучает количественные показатели надежности. Исследует связь между показателями эффективности и надежности.
Предмет надежности – изучение причин, вызывающих отказы объектов, определение закономерностей, которым они подчиняются, разработка способов количественного измерения надежности, методов расчета и испытаний, разработка путей и средств повышения надежности.
Объектом исследования надежности как науки является то или иное техническое средство : отдельная деталь, узел машины, агрегат, машина в целом, изделие и др.
Предмет надежности программного обеспечения — это изучение причин, вызывающих сбои и отказ программных систем, выявление закономерностей, которым подчиняются такие отказы, разработка методов количественной оценки надежности программ, способов моделирования и тестирования отказов, а также формирование подходов и технических решений, направленных на повышение устойчивости и безотказности программных продуктов.
Объектом исследования надежности ПО являются различные компоненты и уровни программных систем:
— отдельные функции и модули программы,
— библиотеки,
— программные интерфейсы (API),
— приложения в целом,
— распределенные системы,
— облачные платформы,
— встроенное ПО,
— и даже инфраструктура развертывания и обновления.
надежность программного обеспечения также охватывает аспекты его архитектуры, корректности кода, устойчивости к ошибкам пользователя, а также способности к восстановлению после сбоев и поддержанию работоспособности в условиях перегрузок, внешних атак или частичных отказов.
Надежность программного обеспечения является особым аспектом инженерии надежности. Она фокусируется на основах и методах, чтобы сделать программное обеспечение более надежным, т. е. устойчивым к сбоям. Надежность системы, по определению, включает все части системы, включая аппаратное обеспечение, программное обеспечение, поддерживающую инфраструктуру (включая критические внешние интерфейсы), операторов и процедуры. Традиционно инженерия надежности фокусируется на критических аппаратных частях системы. С момента широкого использования технологии цифровых интегральных схем программное обеспечение стало все более важной частью большинства электронных устройств и, следовательно, почти всех современных систем. Поэтому надежность программного обеспечения приобрела известность в области надежности системы.
Три составляющие надежности:
1. Математическая теория надежности. Определяет математические закономерности, которым подчиняются отказы и методы количественного измерения надежности, а также инженерные расчеты показателей надежности.
Математический аппарат современной теории надежности основан на результатах следующих разделов математики:
2. Статистическая теория надежности. Обработка статистической информации о надежности. Статистические характеристики надежности и закономерности отказов.
3. Физическая теория надежности. Исследование физико-химических процессов, физических причин отказов, влияния старения и прочности материалов на надежность.
Надежность связана с эффективностью и работай объекта. Недостаточная надежность технического средства имеет следствием:
– снижение производительности из-за простоев вследствие поломок;
– снижение качества результатов использования технического средства из-за ухудшения его технических характеристик вследствие неисправностей;
– затраты на ремонты технического средства;
– потеря регулярности получения результата (например, снижение регулярности перевозок для транспортных средств);
– снижение уровня безопасности использования технического средства.
I этап. Начальный этап.
Он начинается с начала появления первых технических устройств (это конец XIX в. (приблизительно 1880 г.)) и заканчивается с появлением электроники и автоматики, авиации и ракетно-космической техники (середина XX в.).
Уже в начале века ученые стали задумываться, как сделать любую машину неломающейся. Появилось такое понятие, как «запас» прочности. Но, увеличивая запас прочности, увеличивается и масса изделия, что не всегда приемлемо. Специалисты стали искать пути решения этой проблемы.
Основой для решения таких проблем стала теория вероятностей и математическая статистика. На базе указанных теорий уже в 30-е гг. было сформулировано понятие отказа, как превышение нагрузки над прочностью.
С началом развития авиации и применения в ней электроники и автоматики теория надежности начинает бурно развиваться.
II этап. Этап становления теории надежности (1950 – 1960).
В 1950 г. военно-воздушные силы США организовали первую группу для изучения проблем надежности радиоэлектронного оборудования. Группа установила, что основная причина выхода из строя радиоэлектронной аппаратуры заключалась в низкой надежности ее элементов. Стали в этом разбираться, изучать влияние различных эксплуатационных факторов на исправную работу элементов. Собрали богатый статистический материал, который и явился основой теории надежности. На этом этапе становления теории надежности можно считать 1950 г. — 1960 г.г. В 1950 г. военно-воздушные силы США организовали группу для изучения проблем надежности радиоэлектронного оборудования. Группа установила, что основная причина выхода из строя радиоэлектронной аппаратуры заключалась в низкой надежности ее элементов. Был собран богатый статистический материал, который и явился основой теории надежности. Для математической обработки данного материала разрабатывались новые вероятностно-статистические математические подходы.
В 50-х годах ХХ-го века в СССР также были созданы первые группы надежности в ВВА им. Н. Е. Жуковского и ЦНИИ 22 МО. В конце 50-х в НИИ МЭП была разработана первая отраслевая методика расчета надежности. Тогда же появилось математическое определение термина «надежность»:
III этап. Этап классической теории надежности (1960 – 1970).
В 60-70 гг. появляется космическая техника, требующая повышенной надежности. С целью обеспечения надежности этих изделий начинают анализировать конструкцию изделий, технологию производства и условия эксплуатации. На данном этапе было установлено, что причины поломок машин можно обнаружить и устранить. Начинает развиваться теория диагностики сложных систем. Появляются новые стандарты по надежности машин.
IV этап. Этап системных методов надежности (с 1970 г. по настоящее время).
На этом этапе были разработаны новые требования к надежности, заложившие основу современных систем и программ обеспечения надежности. Были разработаны типовые методики проведения мероприятий, связанных с обеспечением надежности.
Эти методики разделяются на два основных направления:
− первое направление относится к потенциальной надежности, которое учитывает конструктивные (выбор материала, запас прочности и т.д.) и технологические (ужесточение допусков, повышение чистоты поверхности и т.д.) методы обеспечения надежности;
− второе направление – эксплуатационное, которое направлено на обеспечение эксплуатационной надежности (стабилизация условий эксплуатации, совершенствование методов ТО и ремонта и т.д.).
В 1980-х годах телевизоры все чаще изготавливались из твердотельных полупроводников. Автомобили быстро увеличивали использование полупроводников с различными микрокомпьютерами под капотом и на панели приборов. Большие системы кондиционирования воздуха разработали электронные контроллеры, как и микроволновые печи и множество других приборов. Системы связи начали использовать электронику для замены старых механических коммутационных систем. Bellcore выпустила первую методологию потребительского прогнозирования для телекоммуникаций, а SAE разработала аналогичный документ SAE870050 для автомобильных приложений. Характер прогнозов развивался в течение десятилетия, и стало очевидно, что сложность кристалла не является единственным фактором, определяющим частоту отказов интегральных схем (ИС). Кам Вонг опубликовал статью, в которой подверг сомнению кривую ванны — см. также обслуживание, ориентированное на надежность . В течение этого десятилетия частота отказов многих компонентов снизилась в 10 раз. Программное обеспечение стало важным для надежности систем.
К 1990-м годам темпы разработки ИС набирали обороты. Более широкое использование автономных микрокомпьютеров стало обычным явлением, а рынок ПК помог поддерживать плотность ИС в соответствии с законом Мура и удваиваться примерно каждые 18 месяцев. Теперь техника надежности менялась по мере продвижения к пониманию физики отказов . Частота отказов компонентов продолжала снижаться, но проблемы на уровне системы становились все более заметными. Системное мышление становилось все более и более важным. Об этом говорит сайт https://intellect.icu . Для программного обеспечения была разработана модель CMM ( модель зрелости возможностей ), которая дала более качественный подход к надежности. ISO 9000 добавил меры надежности в качестве части сертификации по проектированию и разработке. Расширение Всемирной паутины создало новые проблемы безопасности и доверия. Старая проблема слишком малого количества надежной информации теперь была заменена слишком большим количеством информации сомнительной ценности . Проблемы надежности потребителей теперь можно было обсуждать онлайн в режиме реального времени с использованием данных. Новые технологии, такие как микроэлектромеханические системы ( MEMS ), портативные GPSи карманные устройства, объединяющие сотовые телефоны и компьютеры, представляют собой проблемы для поддержания надежности. Время разработки продукта продолжало сокращаться в течение этого десятилетия, и то, что было сделано за три года, теперь делалось за 18 месяцев. Это означало, что инструменты и задачи обеспечения надежности должны были быть более тесно связаны с самим процессом разработки. Во многих отношениях надежность стала частью повседневной жизни и ожиданий потребителей.
Качество — совокупность минимально допустимых требований к ПО, обусловливающих ее пригодность удовлетворять определенные потребности в соответствии с ее назначением.
Надежность — свойство объекта сохранять во времени в установленных пределах значения всех параметров, характеризующих способность выполнять требуемые функции в заданных условиях применения, технического обслуживания, хранения и транспортирования.
Предельное состояние– состояние, при котором дальнейшая эксплуатация объекта недопустима или нецелесообразна, либо восстановление работоспособного состояния невозможно или нецелесообразно.
Повреждение – это событие, заключающееся в нарушении исправного состояния объекта при сохранении работоспособного состояния.
Отказ – это событие, заключающееся в нарушении работоспособного состояния объекта. Отказ – событие заключающееся в прекращении ПО выполнять требуемые функции с учетом заданных ограничений. Причиной отказов является проявление дефектов, оставшихся не выявленными.
Восстановление (ремонт) – возвращение объекту работоспособного состояния.
Дефект – это программная аномалия, некорректное определение операции, процесса и данных в ПО или программной спецификации , которые могут привести к отказу.
Неисправность – это соответствие, в котором ПО не способно выполнить требуемые функции. Состояние неисправности наступает после возникновения отказа.
Ошибка – это действие человека (проектировщика или программиста), в результате которого в ПО вносится дефект.
Измерение – процесс определения количественного и качественного значения атрибутов объекта оценки .
Показатель – абсолютное значение атрибута По или процесс разработки. Т.е. количественная оценка степени , в которой программный продукт или процесс обладает заданными свойствами.
Метрика – качественная или количественная характеристика ПО или процесса его разработки. При определении метрик важную роль играет используемая шкала и метод измерения. Метрики позволяют оценить уровень качества и надежности программных продуктов и процессов и выявить имеющиеся проблемы. Необходимость расчета и анализа разнообразных метрик возникает при верификации и сертификации программного продукта.
Живучесть (Survivability). Живучесть системы характеризует ее способность сохранять полную или частичную работоспособность при действии причин, кроющихся за пределами системы и приводящих к разрушениям или значительным повреждениям некоторой части ее элементов. Подобные причины разделяют на стихийные и умышленные. Под живучестью сети чаще всего понимают свойство сети сохранять связность при массовых разрушениях узлов и линий связи сети и обеспечивать при этом связь между всеми или большинством пунктов хотя бы с пониженным качеством . Живучесть системы имеет ключевой целью своевременное выполнение своей задачи. Согласно одним определениям живучесть может включать полное восстановление системы, в то время как другие исключают такой вариант. Живучесть системы фактически можно обеспечить за три шага: защита, обнаружение и ответные действия наряду с восстановлением.
Подобно концепции надежности живучесть характеризуется минимальным набором атрибутов, таких как безотказность, готовность, катастрофоустойчивость, отказоустойчивость, безопасность и работоспособность.
Концепция живучести применима ко всей системе, предоставляющей определенные сервисы, а не к отдельной ее части или элементам. Основополагающей целью является выполнение системой своей задачи, а не полное их восстановление. Живучая система должна, в первую очередь , реагировать на неисправность и пытаться устранить ее негативное воздействие до момента полного отказа. Другими словами, во враждебной обстановке живучая система может или функционировать с ухудшением характеристик или работать так долго, чтобы этого времени было достаточно на выполнение первостепенных задач .
Критерии повреждений и отказов устанавливают в нормативно-технической и (или) конструкторской документации.
В процессе эксплуатации объект может находиться в одном из следующих состояний:
1) Исправное состояние – состояние объекта, при котором он соответствует всем требованиям нормативно-технической и (или) конструкторской документации.
Неисправное состояние. Различают неисправности, не приводящие к отказам, и неисправности, ведущие к возникновению отказа. Частным случаем неработоспособного состояния является предельное состояние.
2) Неисправное состояние – состояние объекта, при котором он не соответствует хотя бы одному из требований нормативно-технической и (или) конструкторской документации.
3) Работоспособное состояние – состояние объекта, при котором значения всех параметров, характеризующих способность выполнять заданные функции, соответствует требованиям нормативно-технической и (или) конструкторской документации.
4) Неработоспособное состояние– состояние объекта, при котором значение хотя бы одного параметра, характеризующего способность выполнять заданные функции, не соответствует требованиям нормативно-технической и (или) конструкторской документации.
Переходы конечного автомата (графа) состояний обекта или программного обеспечения с точки зрения теории надежности:
Исправное состояние → Работоспособное состояние Переход: Система работает корректно и выполняет свои функции.
Работоспособное состояние → Неработоспособное состояние Переход: Сбой, повреждение или нарушение условий работы, приводящее к невозможности выполнения функций.
Неработоспособное состояние → Неисправное состояние Переход: Ухудшение состояния системы, из-за которого она становится физически или логически неработоспособной.
Неисправное состояние → Исправное состояние Переход: Ремонт , восстановление или замена компонентов, возвращающих систему в исправное состояние.
Неработоспособное состояние → Работоспособное состояние Переход: Исправление временной ошибки или устранение внешнего фактора, мешающего функционированию.
Таблица 1 – Сравнение структуры рассматриваемых понятий
Атрибуты | Причины угроз | |
Надежность |
Готовность Конфиденциальность Целостность Ремонтопригодность Безотказность Катастрофоустойчивость Безопасность |
Дестабилизирующие факторы, неисправности, отказы. |
Отказоустойчивость |
Готовность Ремонтопригодность Работоспособность Постепенное ухудшение рабочих характеристик Тестопригодность |
Дестабилизирующие факторы, неисправности, отказы. |
Безотказность |
Готовность Ремонтопригодность Тестопригодность |
Дестабилизирующие факторы, неисправности, отказы. |
Безопасность |
Доступность Отчетность Аутентичность Готовность Конфиденциальность Целостность Неотказуемость Информированность Катастрофоустойчивость |
Преднамеренные, Злоумышленные и случайные |
Живучесть |
Готовность Отказоустойчивость Работоспособность Безотказность Катастрофоустойчивость Безопасность (конфиденциальность, целостность , готовность, аутентичность) |
Атаки, отказ и аварии износ |
Классификация отказов:
Вид отказа |
|
I. Значимость |
1) Критический 2) Существенный 3) Несущественный |
II. Зависимость |
1) Зависимый 2) Независимый |
III. Характер возникновения |
1) Внезапный 2) Постепенный |
IV. Характер обнаружения |
1) Явный 2) Скрытый |
V. Причина возникновения |
1) Конструктивный 2) Производственный 3) Эксплуатационный 4) Деградационный |
Зависимый отказ– отказ, обусловленный другими отказами.
Внезапный отказ– характеризуется резким изменением одного или нескольких заданных параметров объекта. Примером внезапного отказа является нарушение работоспособности системы зажигания или системы питания двигателя.
Постепенный отказ– характеризуется постепенным изменением одного или нескольких заданных параметров объекта. Характерным примером постепенного отказа является нарушение работоспособности тормозов в результате износа фрикционных элементов.
Явный отказ– отказ, обнаруживаемый визуально или штатными методами и средствами контроля и диагностирования при подготовке объекта к применению или в процессе его применения по назначению.
Скрытый отказ– отказ, не обнаруживаемый визуально или штатными методами и средствами контроля и диагностирования, но выявляемый при проведении технического обслуживания или специальными методами диагностики.
В зависимости от способа устранения отказа все объекты разделяют на ремонтируемые (восстанавливаемые) и неремонтируемые (невосстанавливаемые).
К ремонтируемым относят объекты, которые при возникновении отказа ремонтируют и после восстановления работоспособности снова вводят в эксплуатацию.
Неремонтируемые объекты (элементы) после возникновения отказа заменяют. К таким элементам относятся большинство асбестовых и резинотехнических изделий (тормозные накладки, накладки дисков сцепления, прокладки, манжеты), некоторые электротехнические изделия (лампы, предохранители, свечи зажигания), быстроизнашивающиеся и обеспечивающие безопасность эксплуатации детали (вкладыши и пальцы шарниров рулевых тяг, втулки шкворневых соединений).
Надежность – свойство объекта сохранять во времени в установленных пределах значения всех параметров, характеризующих способность выполнять требуемые функции.
Безотказность – свойство объекта непрерывно сохранять работоспособное состояние в течение некоторого времени или наработки.
Безопасность – условия, в которых находится сложная система, когда действие внешних и внутренних факторов не приводит к процессам, которые считаются негативными по отношению к данной сложной системе в соответствии с имеющимися на данном этапе потребностям, знаниям и представлениям
Работоспособность - это состояние изделия, при котором оно способно выполнять заданную функцию с параметрами, установленными требованиями технической документации. Отказ — это нарушение работоспособности. Свойства элемента или системы непрерывно сохранять работоспособность при определенных условиях эксплуатации (до первого отказа) называется безотказностью.
Защищенность - Защищенностьотсбоевиотказовоборудования, атакжеошибокпользователейинеобходимостьминимальноговмешательстваоператорадляликвидациисбоев, отказовиошибочныхситуаций
Жизненный цикл ПО.
Такой график описывает типичное поведение интенсивности отказов программных средств и отражает их жизненный цикл, известный как "ванная кривая". Вот как это можно интерпретировать в контексте ПО:
Начальный этап: высокая интенсивность отказов На ранних этапах использования программного обеспечения наблюдается высокий уровень отказов. Это связано с "детскими болезнями" программы:
Нераскрытые ошибки в коде.
Недостаточное тестирование на реальных данных.
Проблемы совместимости с оборудованием или другими системами. По мере выявления и исправления этих ошибок интенсивность отказов начинает снижаться.
Стабильный этап: низкая интенсивность отказов После исправления основных проблем система достигает стабильного состояния. На этом этапе:
Отказы происходят редко и, как правило, связаны с незначительными отклонениями.
Программное обеспечение функционирует надежно в рамках заданных параметров. Это самая долгосрочная и продуктивная фаза эксплуатации ПО.
Заключительный этап: рост интенсивности отказов Со временем интенсивность отказов вновь начинает увеличиваться. Это связано с:
Износом и устареванием оборудования, на котором работает ПО.
Эволюцией требований пользователей и среды, что делает систему менее актуальной.
Накоплением новых ошибок, которые проявляются при взаимодействии с обновленными компонентами системы. техническим долгом, отложенынным рефакторингом, и накоплением скрытых ошибок На этом этапе требуется модернизация или замена программного обеспечения.
Таким образом, график показывает важность регулярного тестирования, обновления и адаптации ПО на протяжении всего его жизненного цикла. Это помогает минимизировать отказоустойчивость на каждом этапе и продлить срок службы программного обеспечения.
Жизненный цикл объекта состоит из ряда стадий: проектирование объекта, изготовление объекта, эксплуатация объекта. Каждая из этих стадий жизненного цикла влияет на надежность изделия.
На стадии проектирования программых средств или объектов закладываются основы его надежности. На надежность объекта влияют:
– выбор фрейворков, архитектур, сторонних АПИ, языка програмирования, оборудоования (компьютеров), устройств (датчиков, контроллеров, процессоров, исполнительных механизмов), материалов (прочность материалов, износостойкость материалов);
– выбор надежного фремворка и АПИ, запасы прочности деталей и конструкции в целом;
– удобство использования, сборки и разборки (определяет трудоемкость последующих ремонтов, тестов, исправлений);
– механическая и тепловая напряженность конструктивных элементов(для материалов и вычислительных систем);
– резервирование важнейших или наименее надежных элементов и другие меры.
На стадии изготовления надежность определяется выбором технологии производства, соблюдением технологических допусков, качеством обработки сопрягаемых поверхностей, качеством используемых материалов, тщательностью сборки и регулировки.
Эксплуатация оказывает решающее влияние на надежность объектов, особенно сложных. Надежность объекта при эксплуатации обеспечивается путем:
Развитие теории надежности привело к появлению таких новых направлений прикладных научных исследований , как:
Применение теории надежности программного обеспечения (ПО) направлено на повышение качества, устойчивости и эффективности программных продуктов. Вот основные направления и примеры ее использования:
Моделирование и прогнозирование отказов на основе статистических данных.
Оценка вероятности отказов и средней продолжительности безотказной работы.
Использование методов анализа отказов и их последствий (FMEA, FTA).
Внедрение избыточности в программные компоненты для снижения риска сбоев.
Проведение нагрузочного тестирования для выявления слабых мест.
Верификация кода на соответствие стандартам надежности.
Применение в авиации, медицине, финансовой сфере и атомной энергетике.
Адаптация ПО к различным внешним угрозам, включая кибератаки.
Постоянный мониторинг работы систем в реальном времени.
Обновление программ для устранения найденных уязвимостей и ошибок.
Теория надежности является важным инструментом при создании программ, от которых зависят жизни и безопасность людей, стабильность производства и экономическая устойчивость.
Надежное программное обеспечение используется в различных отраслях, где важна высокая степень безопасности, устойчивости и эффективности. Вот некоторые из них:
Авиация и аэрокосмическая отрасль
Управление полетами, навигация, системы контроля воздушного движения.
Надежность программ критична для предотвращения аварий.
Медицина
Диагностические системы, устройства жизнеобеспечения, управление медицинскими данными.
Ошибки могут повлиять на здоровье и жизнь пациентов.
Финансовый сектор
Банковские системы, биржи и платежные платформы.
Обеспечение безопасности и отказоустойчивости защищает от финансовых потерь и кибератак.
Энергетика
Управление электрическими сетями, атомными станциями и другими объектами.
Надежность ПО снижает вероятность аварий и энергетических кризисов.
Автомобильная промышленность
Автопилоты, системы безопасности и управления транспортными средствами.
Сбои могут привести к опасным ситуациям на дороге.
Военная сфера
Управление оружием, разведывательные системы и координация операций.
Надежность критична для защиты национальной безопасности.
Производство и промышленность
Системы автоматизации, робототехника , контроль качества продукции.
Надежное ПО позволяет сократить вероятность ошибок и увеличивает производительность.
Центры обработки данных , облачные платформы и телекоммуникационные системы.
Поддержание непрерывности работы важно для бизнесов и пользователей.
Термины "надежность" и "живучесть" возникли сравнительно недавно благодаря развитию технологий и представляют собой комплексные и масштабные понятия. Проблема заключается в том, что эти термины имеют множество общих характеристик, таких как безотказность, устойчивость к отказам и безопасность. Однако их можно разграничить через набор специфических атрибутов, таких как готовность, ремонтопригодность и другие. Правильное определение и анализ этих атрибутов позволяют точно охарактеризовать каждое из понятий и выявить их различия. Например, живучесть существенно отличается от надежности. Она включает аспекты безопасности системы и охватывает более широкий спектр угроз, как внутренних (старение элементов, сбои , дестабилизирующие факторы ), так и внешних (атаки, природные катаклизмы, аварии).
Ошибки и неточности в терминологии, допущенные на этапе проектирования, негативно влияют на эксплуатацию систем. Это приводит к снижению их характеристик, так как не учитываются показатели, влияющие на надежность, живучесть и безопасность . Поэтому умение правильно выделять основные понятия и разбивать их на конкретные атрибуты или целевые функции помогает существенно упростить процесс проектирования сложных систем и избежать внезапных сбоев. Это направление исследований является относительно новым для нашей страны и нуждается в должном внимании.
Анализ данных, представленных в статье про надежность программного обеспечения, подтверждает эффективность применения современных технологий для обеспечения инновационного развития и улучшения качества жизни в различных сферах. Надеюсь, что теперь ты понял что такое надежность программного обеспечения, надежность и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Надёжность программного обеспечения
Комментарии
Оставить комментарий
Надёжность программного обеспечения
Термины: Надёжность программного обеспечения