Рассмотрим алгоритм процедуры обработки объявлений.
Все объявления принятые системой помещаются во временный массив объявлений. После чего с помощью процедуры Processing они обрабатываются и помещаются в базу данных объявлений (массив объявлений). Также процедура выполняет одну из важнейших функций, а именно определяет время вывода сообщения и помещает его в массив неопубликованных объявлений. Исключает коллизии, т.е. если два разных сообщения должны быть опубликованы в одно и тоже время, данная процедура определяет приоритеты и принимает решение о первоочередном выводе того или иного объявления.
Переменные используемые в процедуре:
· временный массив представляет собой массив записей, состоящий из 16 элементов. В каждой записи находится два поля 1- "Номер устройства" и 2 – "Номер объявления". Причем 1-вая строка в каждой записи содержит значение количества объявлений, время опубликования которых наступило, но по каким либо причинам они не были опубликованы;
· J – номер временного массива;
· К- номер строки;
· Мах – максимальный приоритет;
· МахК – строка. где находится максимальный приоритет.
Сформировать сообщение с Типом сообщения = 06
|
Определить объявления, которые должны быть выведены в данный момент
|
Временный массив[i] существует объявление
|
Алгоритм процедуры обработки объявлений (Processing)
Сформировать сообщение с Типом сообщения = 06
|
Выделить j-ый бит из Временный массив объявлений[i].Идентификатор устройств
|
Устройство[j].Не работает = True
|
Массив исходящих сообщений клиенту
Тип сообщения =06.
Адрес приемника=Временный массив объявлений[i].Адрес источника
Текст=device
ID=true
|
·
·
·
·
·
·
·
·
·
·
Определить объявления, которые должны быть выведены в данный момент
|
A=Временный массив[j].Str[1].Col[1]
Временный массив[j].Str[A].Col[1] = Объявление. Номер
Временный массив[j].Str[A].Col[1]= Объявление. Приоритет
Временный массив[j].Str[1].Col[1]=A+1
|
Из массива объявлений считать объявление время вывода, которого пришло
|
Выделить j-ый бит из Объявление. Идентификатор устройств
|
Существуют объявления, время вывода которых наступило
|
Заполнение массива неопубликованных объявлений
|
Заполнение массива неопубликованных объявлений
|
Временный массив[j].Str[К].Col[2]
>Max
|
K >= Временный массив[j].Str[1].Col[1]
|
Max=Временный массив[j].Str[k].Col[2]
MaxK=К
|
Временный массив[j].Str[1].Col[1]=0 или Динамический массив[j].занят=true
|
Массив неопубликованных объявлений[j].Номер объявления= Временный массив[j].Str[MaxK].Col[1]
ID[j]=True
Удалить строку MaxK и сдвинуть все ниже лежащие строки на одну вверх
Временный массив[j].Str[1].Col[1]= Временный массив[j].Str[1].Col[1]-1
|
Для расчета надежности был реализован алгоритм Процедура обработки объявления (Processing). Данный модуль был протестирован в 3 этапа по 10 тестов в каждом. Количественный расчет делался в пакете Mathcad, и имеет следующий вид:
Si - число тестов на этапе;
mi - число отказов на i-ом этапе;
m - число этапов;
Rf - предельное значение надежности;
A - параметр роста;
R(i)=Rf-A/i - надежность на i-ом этапе.
График надежности
Из графика видно, что в процессе проведенных тестов прогнозируемое значение надежности приближается к 1.
Заключение
Модели надежности программных средств являются одним из средств оценки и повышения надежности ПС. Модели надежности ПС могут использоваться для расчета показателей надежности (вероятность безотказной работы, вероятность исправления всех ошибок, средняя наработка на отказ), планирования испытаний ПС, выбора стратегии отладки и сроков завершения проекта.
Важным вопросом практического применения моделей является подготовка исходных данных. Эта задача особенно актуальна при моделировании на ранних этапах жизненного цикла. Исходные данные (общее количество ошибок и временные характеристики процессов их поиска и устранения) могут быть получены с использованием объектно – ориентированных метрик сложности и статистики, собранной при разработке похожих программных проектов.