Рекомендуемая категория для самостоятельной подготовки:
Реферат*
Код |
282245 |
Дата создания |
06 октября 2014 |
Страниц |
17
|
Мы сможем обработать ваш заказ (!) 18 ноября в 12:00 [мск] Файлы будут доступны для скачивания только после обработки заказа.
|
Описание
Теоретическое описание методов оценки надежности программного обеспечения, формулы и порядок применения ...
Содержание
1. Определение надежности программного обеспечения………………….3
1.1 Что такое ошибка……………………………………………………….3
1.2 Что такое надежность…………………………………………………..4
2. Надежность аппаратуры…………………………………………………...6
3. Ошибки – их причины и последствия…………………………………….8
4. Модели надежности………………………………………………………..9
4.1 Модель роста надежности……………………………………………..9
4.2 Другие вероятностные модели……………………………………….12
4.3 Статистическая модель Миллса……………………………………...13
4.4 Простые интуитивные модели……………………………………….14
5. Заключение………………………………………………………………...16
6. Список используемой литературы……………………………………….17
Введение
На сегодня самая серьезная проблема в области обработки данных – это проблема программного обеспечения. ...
Первое, с чем мы сталкиваемся при анализе надежности программного обеспечения, - это проблема определения: что такое ошибка в программном обеспечении и что такое надежность программного обеспечения
Фрагмент работы для ознакомления
Согласно третьему возможному определению, ошибка имеется тогда, когда программное обеспечение ведет себя не в соответствии с официальной документацией и поставленными пользователю публикациями. Это определение также страдает несколькими изъянами. Возможны ситуации, когда программное обеспечение ведет себя в соответствии с официальными публикациями, но ошибки все-таки имеются, так как они содержатся и в программе, и в публикациях.
Согласно последнему определению, которое также иногда используется, ошибка определяется как неспособность системы действовать в соответствии с исходным контрактом или перечнем требований пользователя. Хотя это определение лучше трех предыдущих, оно также не без недостатков. Если, согласно требованиям пользователя, система должна обеспечивать среднее время между отказами из-за ошибки в программном обеспечении на уровне 100 часов, а для действующей системы этот показатель равен 150 часам, система все же имеет ошибки (поскольку ее среднее время между отказами конечно), даже несмотря на то, что она превышает требования пользователя. Кроме того, письменно зафиксированные требования пользователя редко детализированы настолько, чтобы описывать желаемое поведение программного обеспечения при всех мыслимых обстоятельствах.
Есть, однако, разумное определение ошибки в программном обеспечении, разрешающее перечисленные выше проблемы:
В программном обеспечении имеется ошибка, если оно не выполняет того, что пользователю разумно от него ожидать. Отказ программного обеспечения – это проявление ошибки в нем.
Пользователь согласится с этим определением, в разработчик ПО может возразить: «Определение непрактично. Откуда мне знать, что пользователю разумно ожидать?» Дело в том, что если разработчик программного обеспечения хочет спроектировать удачную систему, то он всегда должен понимать, что именно ее пользователям разумно ожидать.
Необходимо понять тонкую особенность надежности программного обеспечения; ошибки в программном обеспечении не являются внутренним его свойством. Это значит, что, как бы долго и пристально мы ни разглядывали (или тестировали) программу, мы никогда не сможем найти в ней все ошибки. Мы можем обнаружить некоторые ошибки (например найти бесконечный цикл), но, по самой природе ошибок в ПО, мы никогда не можем рассчитывать найти их все. Коротко говоря, наличие ошибок – функция как самого программного обеспечения, так и ожиданий его пользователей.
1.2 Что такое надежность?
Второй термин, который следует определить – это надежность программного обеспечения. Опять начнем с исследования известного определения, согласно которому надежность есть вероятность того, что при функционировании системы в течение некоторого периода времени не будет обнаружено ни одной ошибки. Основной недостаток такого определения – это то, что в нем не учтено различие между ошибками разных типов. Рассмотрим авиационную систему диспетчеризации с двумя ошибками в ПО: из-за одной теряется след самолета, а другая состоит в том, что в сообщении оператору неправильно печатается одно слово (например «трансаммериканский» вместо «трансамериканский»). По своим последствиям эти ошибки далеко не одинаковы, поэтому надежность должна быть определена как функция не только частоты ошибок, но и их серьезности. В соответствии с этим дадим следующее определение:
Надежность программного обеспечения есть вероятность его работы без отказов в течение определенного периода времени, рассчитанная с учетом стоимости для пользователя каждого отказа.
Таким образом, надежность ПО является функцией воздействия ошибок на пользователя системы; она не обязательно прямо связана с оценкой «изнутри» программного обеспечения. Даже крупный просчет в проектировании может оказаться не слишком заметным для пользователя. С другой стороны, как будто бы тривиальная ошибка может иметь катастрофические последствия.
Надежность не является внутренним свойством программы; она во многом связана с тем, как программа используется. Слово «вероятность» в определении, по существу, означает вероятность того, что пользователь не введет в систему некоторый конкретный набор данных, выводящий систему из строя.
2. Надежность аппаратуры.
Для лучшего понимания надежности ПО стоит сравнить ее с надежностью аппаратуры. Возможны три причины отказа некоторого устройства: ошибка проектирования, производственный дефект и сбой. Ошибка проектирования – это дефект, который с самого начала присутствует в каждом экземпляре изделия. Это ошибка такого рода, когда, например, часть памяти ЦП оказывается недоступной из-за логической ошибки в проектировании схемы адресации. Производственный дефект – это ошибка, имеющаяся в одном или нескольких экземплярах изделия из-за того, что эти конкретные экземпляры изготовлены неверно. Например, они могут быть вызваны плохой пайкой или неправильным соединением проводов. Сбои – это дефекты, первоначально не присутствующие в изделии, но возникающие в процессе его функционирования вследствие некоторых физических явлений, например, нагревом, влажностью, радиацией и т.д. Примерами сбоев могут быть физический износ переключателя вследствие трения, размагничивание магнитного сердечника при перегреве или выход из строя интегральной схемы вследствие медленного ухудшения ее герметизации.
На рис. 1 показано изменение со временем частоты отказов типичного устройства. Можно проиллюстрировать кривую на примере автомобиля.
Рис.1 Различие между надежностью аппаратуры и программного обеспечения.
Средний автомобиль вначале ненадежен из-за ошибок проектирования и производственных дефектов, таких, как неправильная регулировка, недозатяжка болтов, нехватка деталей. Эти дефекты быстро обнаруживаются и ликвидируются, и машина достигает своего пика надежности. После первоначального этапа идет период относительного постоянства частоты поломок, во время которого детали выходят из строя случайным образом, обычно в соответствии с пуассоновским распределением. По мере того как заканчивается срок службы автомобиля, поломки перестают быть случайными и возникают с возрастающей частотой. Исследования надежности аппаратуры концентрируются в первую очередь на промежуточном периоде случайных сбоев.
Надежность программного обеспечения существенно отличается от надежности аппаратуры. Программы не изнашиваются, поломка программы невозможна. Более того, производственные дефекты (такие, как ошибка при копировании системы во время ее переноса на носитель информации) не имеют значения, поскольку они относительно редки и быстро обнаруживаются. Таким образом, надежность ПО – следствие исключительно ошибок проектирования, т.е. ошибок, внесенных в процессе разработки. В условиях, когда ошибки исправляются тотчас же, как только они обнаруживаются (причем они никогда не появляются повторно), изменение надежности программного обеспечения обычно соответствует кривой, изображенной на рисунке 1. Эта кривая отражает предположение, что при исправлении обнаруженных ошибок не вносятся новые. Это предположение обычно не справедливо.
Рис.1 отражает тот факт, что поведение надежности ПО и аппаратуры по сути различно. Надежность аппаратуры определяется во многом случайными сбоями, надежность ПО – скрытыми в нем ошибками.
Частота сбоев аппаратуры существенно зависит от времени. Все физические устройства имеют некоторый срок службы, по истечение которого эта частота начинает быстро расти. Частоты, с которой обнаруживаются ошибки в программном обеспечении, хотя иногда и кажется зависящей от времени, в действительности является функцией входных данных и состояния системы. Большую часть времени жизни аппаратного устройства его сбои случайны и описываются пуассоновским законом распределения; на этом основаны многие исследования. Ошибки в программе проявляются как систематические, далеко не случайные события.
3. Ошибки – их причины и последствия.
Прежде чем разрабатывать методы повышения надежности, позволяющие избежать ошибок, следует понять их причины.
Один из методов, часто применяемых при исследовании причин ошибок, состоит в том, чтобы собрать данные об ошибках и затем разбить их по категориям, подтверждающим, например, что 17% ошибок – это ошибки сопряжения, 22% - следствие неправильного выбора последовательности операторов программы и т.п. В соответствии с другим методом ошибки группируются по типу предложений языка программирования, в которых они совершены: например, оказывается, что 29% всех ошибок приходится на условные предложения, 13% - на объявление данных и т.д.
Польза подобных исследований ограничена, поскольку они занимаются симптомами, а не причинами ошибок. Именно понимание первопричин ошибок и возможность увязать их с процессов создания программного обеспечения необходимы прежде всего.
Единственная важная причина ошибок в программном обеспечении – неправильный перевод информации (из одного представления в другое).
Создание программного обеспечения можно описать просто как ряд процессов перевода, начинающих с задачи и заканчивающих большим набором подробных инструкций, управляющих ЭВМ при решении этой задачи. Другими словами, программирование – это решение задач, а программное обеспечение – это совокупность информационных элементов (но не физических объектов), описывающих решение задачи. Создание ПО в этом случае – просто совокупность процессов трансляции, т.е. перевода исходной задачи в различные промежуточные решения, пока наконец не будет получен подробный набор машинных команд. Когда не удается полно и точно перевести некоторое представление задачи или решение в другое, более детальное, тогда и возникают ошибки в программном обеспечении.
4. Модели надежности.
В области надежности аппаратуры достигнут уровень, когда уже создан ряд математических методов, позволяющих инженеру предсказывать надежность его продукта. Эти математические методы (главным образом в форме вероятностных моделей) широко применяются во многих инженерных областях с различными целями. Так как теория надежности аппаратуры развита довольно хорошо, естественно попытаться применить ее и к надежности программного обеспечения.
Из всех неизвестных параметров надежности ПО, вероятно, самым важным является число ошибок, оставшихся в программе. Если бы разумная его оценка была известна при тестировании, это помогло бы решить, когда можно закончить процесс. Если знать число оставшихся ошибок в устанавливаемой системе, можно было бы оценить стоимость работ по сопровождению и определить уровень доверия к программе. Другие параметры, для которых желательно иметь оценки, - это надежность программы (вероятность, что программа будет выполняться в течение данного интервала времени, прежде чем обнаружится ошибка заданной степени серьезности) и среднее время между отказами программы. Показатели сложности программы также были бы полезны для того, чтобы оценить качество проектирования и «эффект ряби» (какое влияние вызовет изменение данного модуля на другие части программы).
Рассматриваются несколько моделей надежности. Несколько первых моделей тесно связаны с теорией надежности аппаратуры и существенно опираются на определенные предположения о распределении вероятности отказов программного обеспечения. Следующий ряд моделей дает сходные результаты, но не связан с теорией надежности аппаратуры. Последние несколько моделей предназначены для предсказания сложности программных систем.
4.1 Модель роста надежности.
Вероятно, самой известной моделью надежности является модель, разработанная Джелински, Морандой и Шуманом. Поскольку она опирается на теорию надежности аппаратуры, необходимо ввести некоторые понятия этой теории.
Пусть R(t) – функция надежности, т.е. вероятность того, что ни одна ошибка не проявится на интервале от 0 до t; F(t) – функция отказов: вероятность того, что ошибка проявится на интервале от 0 до t. Очевидно, F(t) = 1- R(t). Плотностью вероятности для F(t) является функция f(t) такая, что
Список литературы
1. Г. Майерс. Надежность программного обеспечения. Москва, Мир, 1980.
2. Р. Гласс. Руководство по надежному программированию. Москва, Финансы и статистика, 1982.
3. Карповский Е.Я., Чижов С.А. Надежность программной продукции. Киев, Техника, 1990.
4. Липаев В.В. Надежность программных средств. Москва, СИНТЕГ, 1998.
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.00455