11.2. СВОЙСТВА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
11.2. СВОЙСТВА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Следует выделить следующие свойства программного обеспечения.
Корректность программного обеспечения — свойство безошибочной реализации требуемого алгоритма при отсутствии таких мешающих факторов, как ошибки входных данных, ошибки операторов ЭВМ (людей), сбои и отказы ЭВМ.
В интуитивном смысле под корректностью понимают свойства программы, свидетельствующие об отсутствии в ней ошибок, допущенных разработчиком на различных этапах проектирования (спецификации, проектирования алгоритма и структур данных, кодировании). Корректность самой программы понимают по отношению к целям, поставленным перед ее разработкой (т. е. это относительное свойство).
Устойчивость — свойство осуществлять требуемое преобразование информации при сохранении выходных решений программы в пределах допусков, установленных спецификацией. Устойчивость характеризует поведение программы при воздействии на нее таких факторов неустойчивости, как ошибки операторов ЭВМ, а также не выявленные ошибки программы.
Восстанавливаемость — свойство программного обеспечения, характеризующее возможность приспосабливаться к обнаружению ошибок и их устранению.
Надежность можно представить совокупностью следующих характеристик:
— целостностью программного средства (способностью его к защите от отказов);
— живучестью (способностью к входному контролю данных и их проверки в ходе работы);
— завершенностью (бездефектностью готового программного средства, характеристикой качества его тестирования);
— работоспособностью (способностью программного средства к восстановлению своих возможностей после сбоев).
Отличие понятия корректности и надежности программ состоит в следующем:
— надежность характеризует как программу, так и ее "окружение" (качество аппаратуры, квалификацию пользователя и т. п.);
— говоря о надежности программы, обычно допускают определенную, хотя и малую долю ошибок в ней и оценивают вероятность их появления.
Вернемся к понятию корректности. Очевидно, что не всякая синтаксически правильная программа является корректной в указанном выше смысле, т. е. корректность характеризует семантические свойства программ.
С учетом специфики появления ошибок в программах можно выделить две стороны понятия корректности:
— корректность как точное соответствие целям разработки программы (которые отражены в спецификации) при условии ее завершения или частичная корректность;
— завершение программы, т. е. достижение программой в процессе ее выполнения своей конечной точки.
В зависимости от выполнения или невыполнения каждого из двух названных свойств программы различают шесть задач анализа корректности:
1) доказательство частичной корректности;
2) доказательство частичной некорректности;
3) доказательство завершения программы;
4) доказательство не завершения программы;
5) доказательство тотальной (полной) корректности (т. е. одновременное решение 1-й и 3-й задач);
6) доказательство некорректности (решение 2-й или 4-й задачи). Методы доказательства частичной корректности программ, как
правило, опираются на аксиоматический подход к формализации семантики языков программирования. Аксиоматическая семантика языка программирования представляет собой совокупность аксиом и правил вывода. С помощью аксиом задается семантика простых операторов языка (присваивания, ввода-вывода, вызова процедур). С помощью правил вывода описывается семантика составных операторов или управляющих структур (последовательности, условного выбора, циклов). Среди этих правил вывода надо отметить правило вывода для операторов цикла, так как оно требует знания инварианта цикла (формулы, истинность которой не изменяется при любом прохождении цикла).
Наиболее известным из методов доказательства частичной корректности программ является метод индуктивных утверждений, предложенный Флойдом и усовершенствованный Хоаром. Один из важных этапов этого метода — получение аннотированной программы. На этом этапе для синтаксически правильной программы должны быть заданы утверждения на языке логики предикатов первого порядка: входной предикат; выходной предикат.
Эти утверждения задаются для входной точки цикла и должны характеризовать семантику вычислений в цикле.
Доказательство неистинности условий корректности свидетельствует о неправильности программы или ее спецификации, или программы и спецификации.
По влиянию на результаты обработки информации к надежности и устойчивости программного обеспечения близка и точность программного обеспечения, определяемая ошибками метода и ошибками представления данных.
Наиболее простыми методами оценки надежности программного обеспечения являются эмпирические модели, основанные на опыте разработки программ: если до начала тестирования на 1000 операторов приходится 10 ошибок, а приемлемым качеством является 1 ошибка, то в ходе тестирования надо найти:
Более точна модель Холстеда: N ошибок = N операторов * log2(N операторов — N операндов),
где N операторов — число операторов в программе; N операндов — число операндов в программе.
Эмпирическая модель фирмы IBM:
N ошибок = 23 M(10) + 2 M(1),
где M(10) — число модулей с 10 и более исправлениями; M(1) — число модулей с менее 10 исправлениями.
Если в модуле обнаружено более 10 ошибок, то его программируют заново.
По методу Милса в разрабатываемую программу вносят заранее известное число ошибок. Далее считают, что темпы выявления ошибок (известных и неизвестных) одинаковы.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Глава 13 Надежность программного обеспечения
Глава 13 Надежность программного обеспечения Системные меры безопасности (ядра безопасности, меры контроля доступа, криптография и т. д.) в комплексе с хорошими сетевыми мерами безопасности (брандмауэрами, системами обнаружения вторжения, механизмами проверки) создают
2.6. Установка программного обеспечения
2.6. Установка программного обеспечения Многие начинающие пользователи операционной системы Linux сталкиваются с проблемой установки нового программного обеспечения, а также удаления и обновления уже установленного. При описании установки той или иной программы в
17.2.1. Установка программного обеспечения
17.2.1. Установка программного обеспечения В качестве операционной системы, естественно, будем использовать ОС Linux. Метод настройки, рассмотренный в этой главе, подойдет для любого дистрибутива. Также вам потребуются пакет ррр версии 2.3.x (желательно самая новая версия) и
11.7.6 Конфигурирование загрузки программного обеспечения
11.7.6 Конфигурирование загрузки программного обеспечения Первоначально предполагалось размещение на одном сервере как конфигурационных данных, так и загружаемого через TFTP программного обеспечения. Однако разделить эти службы очень просто. Сервер конфигурации BOOTP может
7.5. Установка программного обеспечения
7.5. Установка программного обеспечения В ОС Windows установка новых программ происходит просто: достаточно запустить setup.exe, ввести серийный номер, каталог для установки и нажать на кнопку «Далее». После этого вы можете поступить так. как рекомендует Microsoft: «откиньтесь на
Распространение программного обеспечения и язык С++
Распространение программного обеспечения и язык С++ Для понимания проблем, связанных с использованием C++ как набора компонентов, полезно проследить, как распространялись библиотеки C++ в конце 1980-х годов. Представим себе разработчика библиотек, который создал алгоритм
4.3. Иерархичность программного обеспечения
4.3. Иерархичность программного обеспечения В проектировании иерархии функций или объектов определяется два направления. От выбора направления очень зависит иерархическое представление
4.3. Иерархичность программного обеспечения
4.3. Иерархичность программного обеспечения В проектировании иерархии функций или объектов определяется два направления. От выбора направления очень зависит иерархическое представление
Гонка в запуске программного обеспечения
Гонка в запуске программного обеспечения Сделайте что-нибудь и идите быстроЗапуск программного обеспечения — лучший способ добиться инерции, поучаствовать в ралли командой, и отсеять идеи, которые не работают. Это должно быть приоритетом номер один в первый же день
24 Цели программного обеспечения
24 Цели программного обеспечения Программист, проспавший большую часть последних десяти или двадцати лет, наверное, не знает о том, что такое объектно-ориентированное программирование. Остальные из нас уже сыты этими объектами по горло. Я испытываю некоторое сочувствие к
4. ХАРАКТЕРИСТИКИ КАЧЕСТВА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
4. ХАРАКТЕРИСТИКИ КАЧЕСТВА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ Качество программного обеспечения может быть оценено следующими
5.2 Представления о качестве программного обеспечения
5.2 Представления о качестве программного обеспечения Имеется несколько представлений о качестве, некоторые из которых обсуждаются
5.5. Сопровождение программного обеспечения
5.5. Сопровождение программного обеспечения Сопровождающим программистам требуется детальное описание программного обеспечения, такое, чтобы они могли локализовать и корректировать ошибки и модернизировать или изменять программное обеспечение соответствующим