Скачиваний:
313
Добавлен:
01.05.2014
Размер:
523.78 Кб
Скачать

2. Методы и средства разработки надежного программного обеспечения

Методы и средства разработки надежного программного обеспечения рассматриваются как стандарты и процедуры, ис­пользуемые как при разработке, так и при сопровождении ПО. Основное назначение этих средств и методов следующее:

- исключить ошибки до их попадания в конечное изделие;

- выявить ошибки, которые попали в программный продукт на предыдущих этапах разработки;

- облегчить исполнителю проекта выполнение рутинных за­дач.

Для реализации этих возможностей используются стандарты проектирования и программирования (анализ и выявление оши­бок вычислений, логики, ввода-вывода, манипулирования дан­ными, сопряжений), осуществляется проверка соответствия ре­шений и программ, ветвей алгоритма, функциональных воз­можностей ПО в экстремальных условиях (пошаговая проверка через 100 операторов).

Средства выявления программных ошибок подразделяются на предупредительные, обнаружительные и вспомогательные.

К предупредительным методам относятся:

имитаторы - ориентированы на логические и вычисли­ тельные аспекты программного комплекса;

языки проектирования - ориентированны на программную логику, включая такие наиболее часто встречающиеся логические ошибки, как пропуск логических проверок и проверок условий.

К обнаружительным и вспомогательным можно отнести:

• ревизор стандартов программирования - главная ценность этого обнаружительного средства - строгое выполнение ус­тановленных стандартов программирования;

анализатор - обеспечивает согласованность единиц из­мерения;

определитель присваивания и обращений - средство для обнаружения ошибок манипулирования данными (идентифи­кация точек присвоения значений данным и программ, кото­рые к ним обращаются);

фиксатор согласованности элементов — имеется ввиду согласованность двух элементов программы (выявляет до 10% всех ошибок); динамический анализатор ветвей - осуществляет идентификацию и выявление сегментов и ветвей программы с це­лью прослеживания ее исполнения и определения частей программы, участвующих в работе;

генератор текстовых данных - обеспечивает динамиче­ский анализ по всем ветвям и исходным данным;

универсальные средства конструирования базы данных - для генерирования таблиц и массивов данных для целей стендовых испытаний;

компаратор баз данных - обеспечивает поэлементное сравнение базы данных в исходном состоянии и регистрацию всех случаев несовпадений после использования программ. Грамотное использование средств разработки и испытаний позволяет обнаружить своевременно 60-70% ошибок.

Для прогнозирования числа ошибок в j-й программе наиболее широко используется регресси­онная модель вида

, (7)

где Zi,j- вычисленные по формулам (1) – (6) величины показателей сложности j-й программы;

ai - коэффициенты влияния i-го показателя сложности на число ошибок.

Коэффициенты ai находятся следую­щим образом. Предположим, что в нашем распоряжении имеется N отлаженных программ, для каждой из которых известно число ошибок до начала отладки. Обозначим число ошибок j-й программы Yj.

Тогда для определения неизвестных коэффициентов аj, необходимо минимизировать сумму квадратов отклонений фак­тического числа ошибок от ожидаемого по каждой программе, т. е. найти минимум

.

Для того, чтобы найти минимум данной квадратичной функции достаточно взять частные производные этой функции по неизвестным параметрам ai и приравнять их к нулю. В результате получится система из шести уравнений с шестью неизвестными, решив которую мы найдем коэффициенты ai. Подставляя эти коэффициенты в формулу (7) для других программ, мы можем определять ожидаемое число ошибок в них. Этот метод, обеспечивающий минимум квадратов отклонений ошибок называется методом наименьших квадратов и лежит в основе регрессионного анализа.

Многообразие категорий, типов, форм проявления ошибок приводит к появлению множества моделей надежности ПО в за­висимости от определенных параметров. Термин модель надеж­ности ПО, как правило, относится к математической модели, построенной для оценки зависимости надежности ПО от неко­торых определенных параметров. Значения таких параметров могут быть измерены в ходе наблюдений или эксперименталь­ного исследования процесса функционирования ПО.

Одним из видов модели надежности ПО, которая заслужива­ет особого внимания, является так называемая феменопогическая или эмпирическая модель. При разработке моделей такого типа предполагается, что связь между надежностью и другими параметрами является статической. С помощью подобного под­хода пытаются количественно оценить те характеристики ПО, которые свидетельствуют либо о высокой, либо о низкой его надежности. При разработке феменологической модели надеж­ности ПО стремятся иметь дело с такими параметрами, соответ­ствующее изменение значений которых должно приводить к по­вышению надежности ПО. Так, например, параметр сложность программы характеризует степень уменьшения уровня ее на­дежности, поскольку усложнение программы всегда приводит к нежелательным последствиям и в том числе к неизбежным ошибкам программистов при составлении программ и трудностям их обнаружения и устранения.

Модель Шумана. Предполагается, что в начальный момент компоновки программных средств в систему ПО в них имеется ET ошибок. С этого момента начинается отсчет времени отладки τ, которое включает затраты времени на выявление ошибок с помощью тестов, на контрольные проверки и т.д. При этом время исправного функционирования системы не учитывается.

В течение времени отладки τ устраняется ошибок в расчете на одну команду в машинном языке. Таким образом, удельное число ошибок на одну машинную команду, оставшихся после времени отладки τ равно

,

где Im – общее число машинных команд, которое предполагается постоянным.

Предполагается, что значение функции частоты отказов Z(t) пропорционально числу ошибок, оставшихся в ПО после израсходования на отладку времени τ, т.е.

.

Тогда, если начальный момент времени отладки принять равным нулю, а τ фиксировано, то вероятность безотказной работы программ на интервале (0,t) равна

.

Модель Джелинского-Моранды. Данная модель предназначена для прогнозирования надежности ПО и представляет собой частный случай модели Шумана. В ней предполагается дополнительно, что время между обнаружением ошибок в ходе отладки подчинено экспоненциальному закону.

Модель Шика-Волвертона. Данная модель является модификацией модели Джелинского-Моранды. В ее основе лежит предположение, согласно которому частота обнаружения ошибок пропорциональна не только количеству ошибок в программах, но также и времени отладки. Тогда вероятность обнаружения ошибок с течением времени возрастает.

Модели Дженинского-Моранды и Шика-Волвертона могут быть обобщены, если допустить возможность возникновения на рассматриваемом интервале более одной ошибки и считать, что исправление ошибок производится лишь после истечения ин­тервала времени, на котором они возникли.

Перечисленные модели нашли ограниченное применение, так как в них слабо учитываются свойства программ, режимы функционирования и стратегии испытаний. Эти модели основы­ваются главным образом на таких общих закономерностях тео­рии вероятностей, как экспоненциальная зависимость надежно­сти от числа испытаний, и на весьма упрощенных представле­ниях относительно последствий программных ошибок.

Для устранения недостатков, которыми характеризуются описанные выше модели, была разработана модель Нельсона. Модель Нельсона разработана с учетом основных свойств машинных про­грамм и использует методы теории вероятностей лишь в тех случаях, когда невозможно получение полной информации о том или ином факторе. Все приближения, принятые в модели, четко определены и известны границы их применимости. По­скольку в основу модели Нельсона положены свойства ПО, она допускает развитие за счет более детального описания других аспектов надежности. Вследствие отмеченных особенностей модели ее следует рассматривать как математическую теорию надежности ПО, а не как простую модель надежности.

Основным методом проектирования надежных сложных комплексов является метод структурного проектирования. В его основе лежит использование модульно-иерархического принци­па на основе декомпозиции целей и задач функционирования системы. Проектирование ведется сверху вниз с последователь­ной детализацией задач и методов их решения. На каждом уровне сложность связей и взаимодействия ограничены; В ре­зультате общая сложность системы ПО при усложнении задач растет значительно медленнее, чем при неструктурированном проектировании. При этом методе решаются следующие авто­номные задачи.

• создание структуры комплекса программ и правил взаимо­ действия модулей;

• разработка правил и методов структурного построения компонент:

• определение правил построения и структур массивов дан­ных, отдельных компонент.

Таким образом, актуальность проблемы "выживания" слож­ных организационных систем в кризисных ситуациях породила необходимость разработки методологии моделирования круп­номасштабных развивающихся систем при неполных и нечет­ких знаниях и слабой формализации задач. В любой системе критические условия функционирования, вызванные ее корен­ными структурными преобразованиями, выдвигают на первый план вопросы обеспечения выживания подобной системы при внутренних и внешних структурных и параметрических воздей­ствиях на нее.

Соседние файлы в папке Лекции по войне