Надёжность программного обеспечения (ПО) – это вероятность того, что ПО определённый период времени будет работать без отказов (сбоев) с учётом степени их влияния на выходные результаты. Другими словами, надежность ПО, есть функция от ущерба, наносимого ошибкой пользователю.
Сопоставим кривые интенсивности отказов технического объекта (ТО) (см. рис.2.3) и ПО. Интенсивность отказов ПО значительно отличается от интенсивность отказов ТО. А именно ПО не подвержено износу, редко встречаются ошибки производства. Ненадежность ПО целиком определяется ошибками разработки. Интенсивность отказов ПО изменяется в соответствии с кривой (рис. 1.1, б). Причём, в данном случае, ошибки исправляются по мере обнаружения и не вносятся новые ошибки.
Из рис. 11.1 можно сделать вывод: Надежность ТО определяется в основном случайными отказами, а в основе ненадежности ПО лежат предопределенные ошибки. Кроме того, отказ оборудования не зависит от обрабатываемой информации.
|
|
Отказ ТО, как правило, не зависит от конкретных значений обрабатываемых данных, если эти данные не выходят за рамки определённые технической характеристикой. С другой стороны, программные ошибки в большей степени зависят от входной информации. Причина появления ошибки при этом заключается в уникальном наборе обрабатываемых ПО данных.
Корректное ПО – это ПО удовлетворяющее своей спецификации.
Большая часть ПО, рассматриваемого в настоящее время как надежное, не является корректным. Можно считать систему надежной и при наличии в ней ошибок, но при условии, что:
· ошибки программирования оставляют возможность правильного использования системы (например, неправильный вывод, который обнаруживается и исправляется пользователем);
· ситуации, в которых ошибки оказывают влияние на конечные результаты, встречаются редко, а вероятность возникновения этих ситуаций в необходимый момент не очень велика.
С другой стороны, корректное ПО может быть ненадежным. Это случается тогда, когда спецификация ПО не является полным описанием того, что ожидается от данного ПО.
Огромное влияния на надежность и корректность ПО оказывает структура системы. Слабо структурированные системы обладают большей вероятностью быть ненадёжными и некорректными. В случаи их изменения (модификации) велика вероятность внесения ошибок.
Для решения задачи получения надежного ПО на этапе проектирования необходимо:
· при написании спецификаций для системы и каждого из ее модулей быть достаточно реалистичными при описании желаемого поведения в условиях, когда совершенное поведение недостижимо;
· в описании интерфейса между системой и окружающей средой, а также интерфейса между модулями системы необходимо предусматривать проверки корректности отработки заданий;
· включать в интерфейс взаимные проверки корректности отработки заданий.