Автор: Пользователь скрыл имя, 27 Декабря 2011 в 22:52, реферат
Существует и другое, более простое определение, согласно которому программное обеспечение представляет собой совокупность компьютерных инструкций. Оно охватывает программы, подпрограммы (разделы программы) и данные. Таким образом, программное обеспечение указывает компьютеру, что делать, как, когда, в какой последовательности и как часто. Нередко программное обеспечение называют просто программой.
Компьютерные программы состоят из перечней команд, которые заставляют компьютер выполнять нужную работу. Компьютер должен получать исчерпывающие конкретные команды. Часто компьютерные программы имеют вид стенограммы.
ВВЕДЕНИЕ 3
1. Свойства надежности программного обеспечения 4
2. Модели оценки надежности программ 6
2.1. Модель Джелински-Моранды 6
2.2. Модель Шумана 7
2.3. Модель Миллса 7
3. Методы обеспечения надежности программных средств 8
4. Подход к обеспечению надежности №1 - предупреждение ошибок 10
4.1. Методы борьбы со сложностью 10
4.2. Обеспечение точности перевода 10
4.3. Преодоление барьера между пользователем и разработчиком 11
4.4. Контроль принимаемых решений 11
5. Подход к обеспечению надежности №2 - обнаружение и исправление ошибок 12
6. Подход к обеспечению надежности №3 - обеспечение устойчивости программы к ошибкам 16
ЗАКЛЮЧЕНИЕ 18
СПИСОК ИСПОЛЬЗОВАНОЙ ЛИТЕРАТУРЫ 19
Стремление к рациональному использованию ограниченных ресурсов приводит к систематизации процесса и методов тестирования. Методы упорядоченного тестирования базируются на выделении факторов и параметров, позволяющих эффективно распределять ресурсы тестирования с учетом их влияния на качество программ. Систематизация может значительно изменяться в зависимости от этапов тестирования, однако можно выделить несколько общих принципов, на базе которых строятся основные методы тестирования. Для упорядочения операции тестирования используется информация о структуре программы и процессе обработки информации, о характере изменения и взаимосвязи переменных, о наиболее вероятных и важных сочетаниях исходных данных, о характеристиках ошибок и вероятности их проявления и т. д. В результате ограниченные ресурсы тестирования используются, прежде всего, для обнаружения наиболее опасных ошибок в наиболее важных режимах функционирования программ. С этой целью последовательно применяются методы тестирования: статический, детерминированный, стохастический и в реальном масштабе времени.
Статическое тестирование является наиболее формализованным и автоматизируемым методом проверки корректности программ. В качестве эталонов применяются правила структурного построения программных модулей и обработки данных, конкретизированные для проекта ПО в целом. Кроме того, могут использоваться некоторые частные правила обработки данных, зафиксированные в спецификациях на отдельные компоненты программ. Проверка степени выполнения этих правил проводится без исполнения объектного кода программы путем формального анализа текста программы на языке программирования. Операторы и операнды текста программ при этом анализируются в символьном виде, поэтому такой метод называют также символическим тестированием. Развитие и углубление символического тестирования может доводиться до уровня формальной верификации программы на соответствие ее текста детальной спецификации совокупности утверждений, полностью определяющей связи между входными и выходными данными этой программы.
Наиболее
трудоемкими и детализирующими
являются методы детерминированного тестирования.
При детерминированном
Стохастическое тестирование применяется в случаях, когда невозможно перебрать все комбинации исходных данных и проконтролировать результаты функционирования программы на каждой из них (в сложных программах). При этом виде тестирования исходные тестовые данные задаются множествами случайных величин с соответствующими распределениями и для сравнения полученных результатов используются также распределения случайных величин. В результате при стохастическом тестировании возможно более широкое варьирование исходных данных, хотя отдельные ошибки могут быть не обнаружены, если они мало искажают средние статистические значения или распределения. Стохастическое тестирование применяется в основном для обнаружения ошибок, а для диагностики и локализации ошибок приходится переходить к детерминированному тестированию с использованием конкретных значений параметров из области изменения ранее использовавшихся случайных величин.
Последующее расширение области изменения исходных данных возможно при применении тестирования в реальном масштабе времени. В процессе такого тестирования проверяется исполнение программ и обработка исходных данных с учетом времени их поступления, длительности и приоритетности обработки, динамики использования памяти и взаимодействия с другими программами и т.д. При обнаружении отклонений результатов исполнения программ от предполагавшихся эталонных для локализации ошибки приходится фиксировать время и переходить к детерминированному тестированию.
Последним этапом функционального тестирования является оценка безошибочности программы, производимая на основе результатов тестирования как статистического эксперимента таким же методом, как оценка безотказности аппаратуры.
Отказы программ проявляются как случайные, однако носят детерминированный характер для заданного набора исходных данных (положение, аналогичное с любыми испытаниями по контролю качества объектов). При выборочном контроле качества некоторый объект выбирается случайно, но после того, как он был выбран, его качество детерминировано. Поэтому при стохастическом тестировании программ применимы математические методы выборочного контроля качества, если допустить, что проявление ошибки при одном тесте не зависит от проявления ошибки при другом тесте.
Поскольку обнаруженные
ошибки в программе следует
6. Подход
к обеспечению надежности №3 - Обеспечение
устойчивости программы к ошибкам
Самообнаружение ошибки в программе означает, что программа содержит средства обнаружения отказа в процессе ее выполнения.
Самоисправление ошибки в программе означает не только обнаружение отказа в процессе ее выполнения, но и исправление последствий этого отказа, для чего в программе должны иметься соответствующие средства.
Обеспечение устойчивости программы к ошибкам означает, что в программе содержатся средства, позволяющие локализовать область влияния отказа программы, либо уменьшить его неприятные последствия, а иногда предотвратить катастрофические последствия отказа. Однако эти подходы используются весьма редко (может быть, относительно чаще используется обеспечение устойчивости к ошибкам). Связано это, во-первых, с тем, что многие простые методы, используемые в технике в рамках этих подходов, неприменимы в программировании, например, дублирование отдельных блоков и устройств (выполнение двух копий одной и той же программы всегда будет приводить к одинаковому эффекту - правильному или неправильному). А, во-вторых, добавление в программу дополнительных фрагментов приводит к ее усложнению (иногда - значительному), что в какой-то мере мешает методам предупреждения ошибок. В некоторых частных случаях возможны специальные методы, например - метод контрольных функций.
В данном методе наряду с вычисляемой функцией по иной программе определяется другая функция в соотношениях, называемых контрольными соотношениями. Эти соотношения позволяют не только обнаружить отказ одной из программ, но также и восстановить искаженный результат отказавшей программы на основании результата, полученного по безошибочно работающей программе (программам). Простейшим примером применения метода контрольных соотношений является вычисление функции sinx и cosx по отдельным программам. Контрольное соотношение в данном случае будет соотношение sin2x+cos2x=1.
Более сложный вариант исправления ошибок с использованием матрицы Хэмминга.
Чаще всего в качестве методов обеспечения устойчивости используются методы отступления. Когда ПО в случае возникновения ошибки (благопристойно) заканчивает работу, без потери предыдущих результатов (обеспечить безаварийное завершение всех управляемых системой процессов).
Методы
изоляции ошибок, используются при
проектировании ПО и их суть - не дать
последствиям ошибки выйти за пределы
как можно меньшей части системы программного
обеспечения (то есть отключились бы только
определенные функции программы).
Следует
отметить, что все эти методы требуют
включения дополнительных модулей
в само программное обеспечение, что
приводит к увеличению сложности системы,
а следовательно вероятности возникновения
новых ошибок и затрат на их исправление
и локализацию.
Заключение
В заключение можно подвести итог:
Основными причинами ошибок программного обеспечения являются:
Список использованной литературы:
1. Г. Майерс. Надежность программного обеспечения.
2. Электронный конспект лекций по «Надежности ИС»,
источник http://artem221287.narod.ru
3. http://ru.wikipedia.org/wiki/%
Информация о работе Методы оценки и повышения надежности программного обеспечения