Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Особенности расчета надежности и резервирования ПО



 

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

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

Отказ ПО – проявление ошибки – всегда закладывается на этапе разработки алгоритма или в процессе программирования. ПО не стареет и не отказывает в следствие износа или усталости.

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

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

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

 

 
 

P(t)

 
 

t

Отказы ПО (Ошибки в ПО)

 

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

Имеются статистические данные по числу совершаемых ошибок при разработке ПО. По данным американского института программной инженерии ( SEJ ) профессиональные программисты со стажем 10 и более лет на 1000 строк кода допускают в среднем 131, 3 ошибки. При этом на этапе компиляции сразу же обнаруживаются и устраняются 50% ошибок. На этапе отладки отдельных модулей обнаруживается ещё 25% ошибок. Остальные ошибки должны быть обнаружены на этапе комплексной отладки или остаются в ПО.

Надо уточнить «что же такое ошибка».

Ошибка программы – невыполнение ею при правильных входных данных, находящихся в заданном диапазоне, заданных функций с заданным качеством, оговоренных в НТД (спецификации), за заданное время, оговоренное в НТД (спецификации); неправильное взаимодействие со смежными программами, ОС, аппаратурой СТС; создание помех работе другим программам ПК.

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

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

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

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

Кратковременная память позволяет хранить семантические сущности в течении времени до 30 секунд.

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

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

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

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

 

Анализ обнаруживаемых в ПО ошибок и необходимость его проведения

 

Человеку свойственно ошибаться. Понимание того, как человек совершает ошибки позволяет построить защиту от них. Большая часть ошибок ПО должна устраняться при отладке. Эти ошибки не видимы широкой публике, но они обязательно должны анализироваться и причины их должны выявляться и систематизироваться.

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

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

К гибели людей из-за передозировки радиации в компьютеризированной медицинской установке для радиационной терапии Therac-25.

К гибели ракеты Arian5 Европейского Космического Агенства.

К аварии телефонной сети США, охватившей всю страну в 1990г. и 1998г.

Ведение статистики ошибок имеет еще один аспект, учитывающий свойство ошибок повторяться.

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

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

Классификация ошибок ПО

Будем классифицировать ошибки ПО на программные и алгоритмические.

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

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

1.Ошибки – промахи или оплошности, как результат автоматических действий на подсознательном уровне Это - неправильные действия по правильным предпосылкам (планам), представлениям.

2.Ошибки – заблуждения, как результат сознательных, но не правильных размышлений. В результате совершаются внешне правильные действия, но по неправильным предпосылкам, целям, установкам, планам, представлениям.

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

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

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

Часть алгоритмических ошибок связана с невыполнением требований по управлению аппаратурой СТС или неправильностью этих требований, изложенных в НТД – несоответствию реального прибора его описанию и ИЭ, а также требований по управлению СТС в целом.

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

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

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

 


Поделиться:



Последнее изменение этой страницы: 2017-04-12; Просмотров: 326; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.018 с.)
Главная | Случайная страница | Обратная связь