Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: Научного журнала «Студенческий» № 8(8)

Рубрика журнала: Информационные технологии

Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2

Библиографическое описание:
Чувашова Д.А., Ермаков А.А. ВОЗМОЖНЫЕ МЕТОДЫ ОЦЕНКИ НАДЕЖНОСТИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ // Студенческий: электрон. научн. журн. 2017. № 8(8). URL: https://sibac.info/journal/student/8/79836 (дата обращения: 25.04.2024).

ВОЗМОЖНЫЕ МЕТОДЫ ОЦЕНКИ НАДЕЖНОСТИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

Чувашова Дарья Александровна

студент, гр. Пим1-15-1, Иркутский государственный университет путей сообщения

РФ, г. Иркутск

Ермаков Анатолий Анатольевич

канд. техн. наук, доц. кафедры «Информационные системы и защита информации»,

РФ, г. Иркутск

В статье рассмотрены особенности современных взглядов на оценку надежности программного обеспечения и определены общие подходы к решению вопросов повышения объективности этих подходов. Рассмотрена возможность применения методов из классической теории надежности для оценки надежности и отказоустойчивости программного обеспечения.

Ключевые слова: программное обеспечение, надежность программного обеспечения, тестирование компьютерных программ, оценка надежности, ошибка в программе, отказ программы, структурные схемы надежности, автоматизация бизнес-процессов

 

Если только представить, какую долю всех бизнес-процессов компаний во всем мире охватывает автоматизация, то вопрос об актуальности исследований может быть снят. Актуальность и важность вопроса становится очевидной. Если взглянуть на историю развития информационных технологий, то можно сказать, что с середины двадцатого века началась разработка программ, которые являлись не сложными по своей структуре. Но со временем тенденции изменились, технический прогресс позволил нам получить невероятные вычислительные возможности

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

Сегодня программное обеспечение редко используется для решения лишь одной задачи, а требуется комплексная автоматизация бизнес-процессов компании или множества компаний [1]. И эти условия диктует, прежде всего, сам бизнес, ведь не адаптируясь к этим условиям, компания быстро становится неконкурентоспособной. Поэтому над новыми заказами трудится внушительная команда специалистов. Кроме того, нередко специалистам приходится сопровождать унаследованное программное обеспечение, реинжиниринг или доработка которого, также ведет к его значительному усложнению и увеличивает возможное количество ошибок.

В итоге, компания получает потенциально низко-надежное программное обеспечение и сталкивается с проблемами по оценке надежности и принятию мер для обеспечения безотказной работы.

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

В связи с вышесказанным можно выделить основную цель в вопросе исследований надежности программного обеспечения – это повышение его отказоустойчивости. Так же можно выделить основные задачи изучения надежности:

Найти как можно больше ошибок. Условимся, что аппаратное обеспечение достаточно надежно, чтобы не принимать во внимание его возможные отказы. В таком случае вся ответственность будет возлагаться на разработчика. И основной задачей данного этапа остается поиск и исправление максимально возможного числа ошибок программы. Исправляя ошибки, специалист повышает надежность программы.

Выявить потенциально уязвимые места в программе и обеспечить некоторую избыточность, которая позволит избежать отказов. 

Возникает вполне справедливый вопрос, как оценить вероятность отказа, не зная, сколько ошибок допустил разработчик? Именно на эти вопросы и стремятся ответить существующие модели надежности программного обеспечения.

Данные модели надежности неплохо работают, если нам необходимо оценить надежность небольшого участка программы. Но когда речь идет о технически сложном и масштабном программном продукте, то, например, внести достаточное количество искусственных ошибок по модели Миллса для репрезентативной оценки – слишком трудоемкая задача [2]

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

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

 

Рисунок 1. блок-схема алгоритма.

 

На блок-схеме присутствуют ветвление и цикл. Проверка и выполнение условия всегда приводится к линейному алгоритму, так как нельзя пойти по двум ветвям одновременно. Так же, если условиться, что алгоритм выполняется одним процессором, то и цикл будет выполняться линейно.

Если каждый элемент выделить в отдельный блок, мы получим последовательную линейную схему алгоритма, которая очень похожа на структурные схемы надежности из классической теории надежности технических объектов [3]. На рисунке 2 представлены некоторые возможные структурные схемы надежности по представленному на рисунке 1 алгоритму.

 

Рисунок 2. некоторые возможные структурные схемы надежности.

 

Мировой опыт в оценке надежности программных продуктов не большой, но можно предположить, что вполне успешно найдут свое применение в данном вопросе разработки из общепризнанной классической теории надежности технических объектов. Если назвать полученные схемы структурными схемами надежности, тогда возможно оценить вероятность безотказной работы каждого блока по любому выбранному способу, а затем рассчитать вероятность безотказной работы программно системы в целом, применяя правила умножения вероятностей. Таким образом, можно получить оценку надежности всей программы.

Структурные схемы надежности в разрезе программного обеспечения могут быть очень гибким инструментом. Можно так же выбрать степень детализации в зависимости от поставленных целей. Например, детализацию схемы можно выбрать в зависимости от архитектуры программы, либо, если требуется рассмотреть более подробно какой-то вычислительный алгоритм, то каждый блок структурной схемы может включать в себя лишь один оператор языка высокого уровня. При необходимости можно детализировать схему и разобрать надежность одного оператора высокого уровня, оценив вероятность безотказной работы машинной команды.

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

 

Список литературы:

  1. Клюйков, Д. С., Фролов Е.М. Программный модуль автоматизированного анализа экспериментальных данных // Новые материалы и технологии -НМТ-2012 : матер. Всерос. науч.-техн. конф. 20-22 нояб. 2012 г. / МАТИ - Рос. гос. технол. ун-т им. К.Э. Циолковского. – М., 2012. – С. 144-145. 
  2. Липаев В.В. Надежность программных средств. – М.: Синтез, 1998. – 246 с.
  3. Черкесов Н.Г. Надежность аппаратно-программных комплексов. – СПб.: Питнр, 2005. – 479 с.

Комментарии (1)

# Алексей 01.04.2018 23:31
Интересно

Оставить комментарий

Форма обратной связи о взаимодействии с сайтом
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.