ПОИСК
Это наилучшее средство для поиска информации на сайте
Определение надежности программного обеспечения
из "Надежность программного обеспечения систем обработки данных Издание 2 "
Проблема надежности ПО была объектом пристального внимания с самого начала развития средств машинной обработки информации. Основной акцент в начальной стадии делается на аппаратурную надежность, но уже тогда те, кто занимался написанием программ, на своем опыте убедились, что исправление ошибок в программах составляло большую часть времени процесса программирования. [c.6]С началом исследования вопросов надежности ПО возникла проблема стандартного определения программной ошибки и собственно надежности ПО. Это важно для того, чтобы в любой ситуации можно было однозначно определить факт наличия ошибки и причину, ее породившую. [c.6]
Программная ошибка. Люди имеют различные точки зрения на то, что представляет из себя программная ошибка. Не существует одного всеобъемлющего определения ошибки. [c.6]
Одно известное определение программной ошибки утверждает, что программная ошибка происходит тогда, когда программа работает не в соответствии со своими спецификациями. Это определение имеет один существенный недостаток однозначно предполагается, что спецификации корректны. Однако редко можно встретить явное подтверждение корректности спецификации, хотя опыт показывает, что одним из главных источников ошибок являются спецификации. Если программа работает не в соответствии с ее спецификациями, то это можно объяснить присутствием ошибки. Но если программа работает в соответствии со спецификациями, то нельзя утверждать, что ошибок в ней нет. [c.6]
Второе распространенное определение утверждает, что ошибка происходит тогда, когда программа работает не в соответствии со спецификациями при условии, что она эксплуатируется в заранее определенных границах. Это определение имеет некоторые недостатки. Если даже система случайно используется вне заранее определенных пределов, то она должна выдать какие-то разумные результаты. В противном случае в системе имеется ошибка. [c.7]
Рассмотрим, например, систему слежения за воздушными объектами в районе крупного аэропорта. Предположим, что в задаче на разработку системы требовалось, чтобы было обеспечено одновременное слежение за 24 самолетами. Неожиданно в поле наблюдения системы появился 25-й самолет. Если в этом случае система сработает каким-то непредвиденным образом, то, следовательно, в ней присутствует ошибка, несмотря на то, что система используется вне заранее определенных пределов. [c.7]
Одним из возможных определений может быть следующее ошибка имеет место тогда, когда работа программы не соответствует сопутствующей ей документации. Это определение также не лишено недостатков. Существует, например, такая возможность, что программа работает в соответствии с документацией, но ошибка имеет место, так как и документация, и программа являются ошибочными. Существует и другая проблема, когда в документации пользователя описывается только запланированное использование системы. Однако пользователь случайно потребовал от программы незапланированных действий, и это привело к сбою в работе системы. Очевидно, что в системе содержится ошибка, однако нет оснований утверждать, что система работает не в соответствии с документацией. [c.7]
Достаточно широко используется следующее определение ошибка — это несоответствие работы программы первоначальным требованиям пользователя-заказчика. Это определение существенно отличается от приведенных выше, но тоже имеет ряд недостатков. Кроме того, изложенные в письменном виде требования пользователя очень редко бывают достаточно подробными, чтобы описать желаемое поведение программы при всех возможных случаях. [c.7]
Надежность ПО. Применительно к сложным системам надежность ПО [4] определяется как свойство системы выполнять заданные функции, сохраняя во времени значения установленных эксплуатационных показателей в заданных пределах, соответствующих заданным режимам и условиям использования, технического обслуживания, ремонта, хранения и транспортирования. Свойство надежности проявляется в том, что система выполняет поставленные перед ней задачи. Потеря надежности системой связывается с появлением отказов в работе. [c.8]
Как следует из определения, должны быть известны следующие основные моменты заданное время работы среда, в которой функционирует система то, что понимается под эксплуатационными показателями. [c.8]
Приведенное выше определение надежности приемлемо и для такой сложной системы, какой является программное обеспечение. Однако в этом определении не отражается различие между типами возможных ошибок, степенью влияния конкретной ошибки на функционирование системы. Это значит, что надежность ПО должна определяться как функция от степени влияния ошибок и частоты их проявления. [c.8]
Для более глубокого понимания надежности ПО необходимо сопоставить ее с надежностью аппаратуры вычислительной системы. Любое устройство, входящее в комплект вычислительной системы, может оказаться неработоспособным из-за ошибок разработки, ошибок производства или сбоев в работе. Ошибка разработки, присутствующая в каждом экземпляре данного устройства, может проявиться, например, в том, что из-за ошибки в логике цепей адресации адресация к некоторым участкам памяти невозможна. Ошибка производства присутствует в одном или нескольких устройствах и объясняется недостатками производства конкретных экземпляров устройств. Например, ошибкой производства может служить некачественная пайка соединений, неправильное соединение проводов и т. д. Сбои первоначально не присутствуют в устройствах, а возникают в процессе функционирования последних под воздействием таких факторов, как температура, влажность, трение и т. д. [c.9]
Надежность ПО в значительной степени отличается от надежности оборудования. Действительно, ПО не подвержено износу, практически отсутствуют ошибки производства, так как встречаются они редко и легко могут быть исправлены (например, ошибки перезаписи при копировании). Ненадежность ПО целиком определяется ошибками разработки. Для среды, в которой по мере обнаружения ошибки исправляются и не вносятся в результате исправления новые ошибки, надежность ПО изменяется в соответствии с кривой Ь на рис. 1.1. [c.10]
Из рисунка видно, что кривые надежности ПО (Ь) и оборудования (а) ведут себя различно. Надежность оборудования определяется в основном случайными отказами, а в основе ненадежности ПО лежат предопределенные ошибки. [c.10]
Чтобы подчеркнуть различие между отказом и ошибкой, рассмотрим поведение отказов оборудования и ошибок ПО с точки зрения их зависимости от входных данных и от времени. Отказ оборудования не зависит от обрабатываемой информации. Если двоичный сумматор находится на грани отказа, то сам отказ не будет зависеть от конкретных значений обрабатываемых данных. С другой стороны, программные ошибки в большей степени зависят от входной информации. Причина появления ошибки в какой-то конкретный момент времени заключается в том, что в этот момент была обработана уникальная последовательность входных данных, вызвавшая проявление ошибки. [c.10]
Как ранее было показано, отказы оборудования зависят от времени. Ошибки ПО в действительности являются функцией от текущей входной информации и текущего состояния системы. Кроме того, ошибки ПО носят, как правило, систематический характер, а сбои оборудования — случайный характер. [c.11]
Достижения в области повышения надежности оборудования в настоящее время более ощутимы, чем в надежности ПО. Это объясняется рядом причин, среди которых можно выделить следующие. [c.11]
Прежде всего программное обеспечение по своей природе значительно сложнее оборудования. Так, например, основным входным потоком информации для центрального процессора является поток машинных команд. Для выполнения обычной машинной команды центральный процессор получает информацию о коде операции и операндов, хранящуюся в памяти. Выполнение большинства команд не зависит от значений операндов. Для сравнения отметим, что входной поток системы программного обеспечения в зависимости от желания пользователя может быть достаточно сложным. [c.11]
Второе различие заключается в области применения. Действительно, оборудование в основном не зависит от области применения. Например, один и тот же центральный процессор можно использовать как для обработки массовых статистических данных, так и для решения некоторой математической проблемы с несколькими входными переменными. С другой стороны, большая часть программного обеспечения в высшей степени чувствительна к конкретной области применения. [c.11]
Вернуться к основной статье