Разработка верхнего уровня Информационной Системы Университета
равна:
[pic] , (57)
где m — количество тестов, используеиых при тестировании;
q — вероятность обнаружения ошибки в каждом из т тестов, рассчитанная
по формуле:
[pic], (58)
S - общее количество искусственно внесенных ошибок;
N-количество собственных ошибок, имеющихся в ПС до начала
тестирования.
Для использования модели Лилова должны выполняться следующие условия:
N(n(0;
S(V(0; (59)
m(n+V(0.
Оценки максимального правдоподобия (наиболее вероятное значение) для N
задаются соотношениями:
[pic] при n(1, V(1;
N = [pic] при V = 0; (60)
0 при n = 0.
Модель Лилова дополняет модель Миллса, дав возможность оценить
вероятность обнаружения определенного количества ошибок к моменту оценки.
Простая интуитивная модель. Использование этой модели предполагает
проведение тестирования двумя группами программистов (или двумя
программистами в зависимости от величины программы) независимо друг от
друга, использующими независимые тестовые наборы. В процессе тестирования
каждая из групп фиксирует все найденные ею ошибки. При оценке числа
оставшихся в программе ошибок результаты тестирования обеих групп
собираются и сравниваются.
Получается, что первая группа обнаружила N1 ошибок, вторая – N2, а N12
- это ошибки, обнаруженные обеими группами.
Если обозначить через N неизвестное количество ошибок,
присутствовавших в программе до начала тестирования, то можно эффективность
тестирования каждой из групп определить как:
[pic]; [pic]. (61)
Предполагая, что возможность обнаружения всех ошибок одинакова для
обеих групп, можно допустить, что, если первая группа обнаружила
определенное количество всех ошибок, она могла бы определить то же
количество любого случайным образом выбранного подмножества. В частности,
можно допустить, что:
[pic]. (62)
[pic]
Из формулы (25) N2 = Е2N, подставив в (26), получим:
[pic], (63)
или
[pic]. (64)
Значение N12 известно, а E1 и E2 можно определить как N12/N1 и N12/N1.
Развивая эту модель и опираясь на предположение, что обе группы, проводящие
тестирование, имеют равную вероятность обнаружения "общих" ошибок, ее можно
рассчитать по следующей формуле:
[pic] , (65)
где Р(N12) — вероятность обнаружения N12 "общих" ошибок тестирования
программы двумя независимыми группами.
Модель Коркорэна. Модель Коркорэна относится к статическим моделям
надежности ПС, так как в ней не используются параметры времени тестирования
и учитывается только результат N испытаний, в которых выявлено N1 ошибок i-
го типа. Модель использует изменяющиеся вероятности отказов для различных
типов сшибок.
В отличие от двух рассмотренных выше статических моделей, где
оценивалось количество первоначальных ошибок в программе, а также их
количество, оставшееся после некоторого периода тестирования, по модели
Коркорэна оценивается вероятность безотказного выполнения программы на
момент оценки.
[pic], (66)
где N0 — число безотказных выполнений программы;
N — общее число прогонов;
К — априориорно известное число типов
ai, если Ni>0;
Yi=
(67)
0, если Ni = 0;
ai — вероятность выявления при тестировании ошибки 1-го типа.
В этой модели вероятность ai, должна оцениваться на основании
априорной информации или данных предшествующего периода функционирования
однотипных программных средств. Наиболее часто встречающиеся ошибки и
вероятности их выявлений при тестировании ПС прикладного назначения
приводятся в таблице 13 (пример).
Таблица 13 - Ошибки программы по категориям и вероятности их появления
|Тип ошибки |Вероятность |
| |появления ошибки |
|Ошибки вычислений |0,09 |
|Логические ошибки |0,26 |
|Ошибки ввода-вывода |0,16 |
|Ошибки манипулирования данными |0,18 |
|Ошибки сопряжения |0,17 |
|Ошибки определения данных |0,08 |
|Ошибки в БД |0,06 |
Модель Нельсона. Данная модель была создана в фирме TRW
(аэрокосмическая компания США), при расчете надежности ПС учитывает
вероятность выбора определенного тестового набора для очередного выполнения
программы.
Предполагается, что область данных, необходимых для выполнения
тестирования программного средства, разделяется на К взаимоисключающих
подобластей Zi, i= 1,2, .... k. Пусть Рi - вероятность того, что набор
данных Zi будет выбран для очередного выполнения программы. Предполагая,
что к моменту оценки надежности было выполнено Ni прогонов программы на Zi
наборе данных и из них ni, количество прогонов закончилось отказом,
надежность ПС в этом случае равна:
[pic]. (68)
На практике вероятность выбора очередного набора данных для прогона
(Рi) определяется путем разбиения всего множества значений входных данных
на подмножества и нахождения вероятностей того, что выбранный для
очередного прогона набор данных будет принадлежать конкретному
подмножеству. Определение этих вероятностей основано на эмпирической оценке
вероятности появления тех или иных входов в реальных условиях
функционирования.
10.4. Эмпирические модели надежности
Эмпирические модели в основном базируются на анализе структурных
особенностей программного средства (или программы). Как указывалось ранее,
эмпирические модели часто не дают конечных результатов показателей
надежности, однако их использование на этапе проектирования ПС полезно для
прогнозирования требующихся ресурсов тестирования, уточнения плановых
сроков завершения проекта и т.д.
Модель сложности. В литературе неоднократно подчеркивается тесная
взаимосвязь между сложностью и надежностью ПС. Если придерживаться
упрощенного понимания сложности ПС, то она может быть описана такими
характеристиками, как размер ПС (количество программных модулей),
количество и сложность межмодульных интерфейсов.
Под программным модулем в данном случае следует понимать программную
единицу, выполняющую определенную функцию (ввод, вывод, вычисление и т.д.)
и взаимосвязанную с другими модулями ПС.
Некоторые базовые понятия для определения характеристик сложности даны
в таблице 14.
Сложность модуля ПС может быть описана, если рассматривать структуру
программы как последовательность узлов, дуг и петель в виде направленного
графа.
Таблица 14 - Определение характеристик сложности
|Связь |Для модуля |Для ПС (многомодульная программа) |
|Узел |Точка ветвления модуля |Модуль, имеющий более одного выхода|
| | | |
| | | |
| | | |
| | | |
| | | |
|Дуга |Последовательные участки |Последовательность нескольких |
| |модуля |модулей, имеющих один выход |
|Петля |Циклические участки модуля |Циклические участки, состоящие из |
| | |нескольких модулей |
В качестве структурных характеристик модуля ПС используются:
1) отношение действительного числа дуг к максимально возможному числу
дуг, получаемому искусственным соединением каждого узла с любым другим
узлом дугой;
2) отношение числа узлов к числу дуг;
3) отношение числа петель к общему числу дуг.
Для сложных модулей и для больших многомодульных программ составляется
имитационная модель, программа которой "засоряется" ошибками и тестируется
по случайным входам. Оценка надежности осуществляется по модели Миллса.
При проведении тестирования известна структура программы, имитирующей
действия основной, но не известен конкретный путь, который будет
выполняться при вводе определенного тестового входа. Кроме того, выбор
очередного тестового набора из множества тест-входов случаен, т.е. в
процессе тестирования не обосновывается выбор очередного тестового входа.
Эти условия вполне соответствуют реальным условиям тестирования больших
программ.
Полученные данные анализируются, проводится расчет показателей
надежности по модели Миллса (или любой другой из описанных выше), и
считается, что реальное ПС, выполняющее аналогичные функции, с подобными
характеристиками и в реальных условиях должно вести себя аналогичным или
похожим образом.
Преимущества оценки показателей надежности по имитационной модели,
создаваемой на основе анализа структуры будущего реального ПС, заключаются
в следующем:
модель позволяет на этапе проектирования ПС принимать оптимальные проектные
решения, опираясь на характеристики ошибок, оцениваемые с помощью
имитационной модели;
позволяет прогнозировать требуемые ресурсы тестирования;
дает возможность определить меру сложности программ и предсказать возможное
число ошибок и т.д.
К недостаткам можно отнести высокую стоимость метода, так как он
требует дополнительных затрат на составление имитационной модели, и
приблизительный характер получаемых показателей.
Модель, определяющая время доводки программ. Эта модель используется
для ПС, которые имеют иерархическую структуру, т.е. ПС как система может
содержать подсистемы, которые состоят из компонентов, а те, в свою очередь,
состоят из V модулей. Таким образом, ПС может иметь V различных уровней
композиции. На любом уровне иерархии возможна взаимная зависимость между
любыми парами объектов системы. Все взаимозависимости рассматриваются в
терминах зависимости между парами модулей.
Анализ модульных связей строится на том, что каждая пара модулей имеет
конечную (возможно, нулевую) вероятность, что изменения в одном модуле
вызовут изменения в другом модуле.
Пусть ПС состоит из n модулей.
Рij есть вероятность того, что изменения в модуле вызовут
необходимость внесения изменений в модуль;.
Для ПС, состоящего из n модулей, будет ne таких парных отношений.
Р - матрица размерностью n * т с элементами Рij. Допустим, что при
тестовой сборке ПС в i-м модуле выявлено Аi, ошибок, или в модуле i должно
быть сделано Аi изменений.
Обозначим через А вектор размерностью n с элементами Аi,. Тогда А -
общее число изменений, требуемых при интеграции модулей в систему на
нулевом шаге.
Общее число изменений на первом шаге, требуемых в результате
изменений, сделанных на нулевом шаге, будет равно А * Р.
Обозначим через Р2 матрицу размерностью n * m, элементы которой равны:
[pic], (69)
и представляют собой сумму вероятностей, что изменения в модуле i
распространяются в модуль К и затем в модуль j. Следовательно, i-й, и j-й
элементы матрицы Р2 - это двушаговая вероятность, что изменение в модуле ш
распространится в модуль j.
Общее число изменений ПС с учетом двушагового распространения будет
равно А * Р2. Очевидно, что число изменений, требуемых в системе, с учетом
k-шагового распространения начальных изменений будет равно А * Рk..
Величины, которые используются в модели для получения нужных оценок, -
это вектор начальных изменений А и матрица вероятности межмодульных связей
Р. По мере развития проекта ПС эти величины могут уточняться при появлении
реальных данных тестирования. Значения элементов вектора А становятся
очевидными при присоединении очередного модуля к системе в процессе
тестовой сборки.
Для уточнения элементов матрицы достаточно фиксировать для каждого
модуля данные о проведенных изменениях, их причинах и последствиях в форме
следующей таблицы (см. табл. 15).
Таблица 15- Сбор данных, необходимых для расчета матрицы вероятностей р
|Описание ошибки |Каким модулем вызвана |Действие на другие модули |
| | | |
После получения относительно большой выборки данных их можно
использовать для коррекции элементов матрицы Р следующим образом:
Число измерений в модуле i, вызванных модулем j
Pij =
. (70)
Общее число измерений в модуле j
Рассмотренная модель позволяет на этапе тестирования, а точнее при
тестовой сборке системы, определять возможное число необходимых исправлений
и время, необходимое для доведения ПС до рабочего состояния.
Основываясь на описанной процедуре оценки общего числа изменений,
требуемых для доводки ПС, можно построить две различные стратегии
корректировки ошибок:
фиксировать все ошибки в одном выбранном модуле и устранить все побочные
эффекты, вызванные изменениями этого модуля, отрабатывая таким образом
последовательно все модули;
фиксировать все ошибки нулевого порядка в каждом модуле, затем фиксировать
все ошибки первого порядка и т.д.
Исследование этих стратегий доказывает, что время корректировки ошибок
на каждом шаге тестирования определяется максимальным числом изменений,
вносимых в ПС на этом шаге, а общее время - суммой максимальных времен на
каждом шаге.
Это подтверждает известный факт, что тестирование обычно является
последовательным процессом и обладает значительными возможностями для
параллельного исправления ошибок, что часто приводит к превышению
затрачиваемых на него ресурсов над запланированными.
10.5. Количественный расчет надежности
Для количественной оценки надежности был выбран метод La Padula, так
как он позволяет вычислить прогнозное значение надежности.
Для расчета надежности был реализован алгоритм Процедура обработки
объявления (Processing). Данный модуль был протестирован в 3 этапа по 10
тестов в каждом. Количественный расчет делался в пакете Mathcad, и имеет
следующий вид:
Si - число тестов на этапе;
mi - число отказов на i-ом этапе;
m - число этапов;
Rf - предельное значение надежности;
A - параметр роста;
R(i)=Rf-A/i - надежность на i-ом этапе.
[pic]
[pic]
[pic] [pic]
[pic]
[pic]
[pic]
[pic]
[pic]
[pic]
[pic]
[pic]
[pic]
График надежности представлен на рисунке 35.
График надежности
[pic]
Рис. 35
Из графика видно, что в процессе проведенных тестов прогнозируемое
значение надежности приближается к 1.
Заключение
В результате выполненной работы была спроектирована полномасштабная
функциональная схема верхнего уровня Информационной Системы Университета
обеспечивающая качественный и оперативный вывод информации. Верхний уровень
системы не зависит от топологии нижнего уровня, что увеличивает гибкость
системы и обеспечивает размещение устройств вывода в любой точке
университетского городка, это позволяет охватить все учебные корпуса АмГУ
и обеспечивает донесение необходимой информации до конечных потребителей
информации в минимальный срок.
Спроектирована схема положения ИСУ в существующей системе передачи
информации и схема взаимодействия основных частей ИСУ. Разработаны и
описаны все информационные массивы участвующие в функционировании верхнего
уровня. При этом большой акцент сделан на уменьшение избыточности данных.
Также ИСУ исключает возможность ввода данных способных выработаться внутри
нее.
Представлено полное описание функционирования верхнего уровня с
разработанными алгоритмами, обеспечивающими уменьшение времени реакции на
возникновение какого либо события, сохранение всей статистической
информации о функционировании системы для ее последующего анализа.
Обеспечено однозначное реагирование на любое событие, возникшее в системе,
это достигнуто за счет детальной проработки всех возможных ситуаций
способных возникнуть как на верхнем, так и на нижнем уровне ИСУ. С позиции
обеспечения надежности системы была введена некоторая избыточность данных,
а именно - все переменные и массивы, используемые в системе, имеют свои
копии на жестком диске, это позволяет при отказе системы полностью
восстановить ее на момент отключения.
При анализе входной и выходной информации были спроектированы все
пакеты, необходимые для обеспечения работоспособности и выполнения всех
поставленных задач и функций перед ИСУ. Структура пакетов полностью
отвечает требованиям уменьшения избыточности и уменьшения времени
обработки сообщений при передаче между различными частями ИСУ. Введение
контрольной суммы обеспечивает защиту от ошибок при передаче пакетов.
Разработана и описана клиентская часть верхнего уровня, со всеми
правилами взаимодействия с серверной частью. Определены все пакеты и
возможные сообщения для полной работоспособности "Клиента". Правила
построения основаны на тех же принципах, что и "Сервер", а именно -
уменьшение избыточности данных, увеличение надежности, защита от ошибок и
др. Клиентская часть позволяет пользователям опубликовывать свои объявления
в системе непосредственно со своего рабочего места. Это позволяет улучшить
оперативность и качество предоставления информации конечному потребителю.
При этом введена иерархия пользователей: каждый пользователь, принадлежит к
своей группе, с определенным приоритетом, сформированной администратором
системы. Это позволяет более важные объявления опубликовывать в первую
очередь.
В системе заложена возможность опубликования различных объявлений,
сообщений и другой текстовой и графической информации, которая позволяет
привлечь государственные и не государственные предприятия для опубликования
объявлений рекламного характера. Это дает возможность открыть еще одну
статью доходов университета и окупить все затраты на создание и поддержание
работоспособности системы.
Внедрение разработанной информационной системы позволит повысить
статус и имидж университета, что является одной из задач поставленной перед
ИСУ.
Список использованных источников
1. Бирник А.С. Информация и управление. – М., 1994. – 240 с.
2. www.citforum.ru Дьяконов В.П. 95 вопросов по серийной Windows 95.
3. www.citforum.ru Олифер Н.А. Сетевые операционные системы.
4. www.citforum.ru Громов Ю.Ю. Программирование на языке СИ.
5. www.citforum.ru Брежнев А.Ф. Семейство протоколов TCP/IP.
6. www.citforum.ru Комер Д.А. Протоколы TCP/IP. Том 1. Принципы,
протоколы и архитектура.
7. www.citforum.ru Олифер В.С. Введение в IP-сети.
8. Робачевский А.М. Операционная система UNIX.-СПб.: BHV – Санкт-
Петербург, 1998. – 528 с.
9. Труфанов В.А. Производственная практика по специальности
"Автоматизированные системы обработки информации и управления":
Учебно-методическое пособие / Амурский гос. ун-т. – Благовещенск,
1997. – 12 с.
10. Е.Л.Еремин, А.Д.Плутенко. Учебно-методическое пособие по
дипломному проектированию для студентов специальности
"Автоматизированные системы обработки информации и управления" –
2202. Благовещенск, 1997. – 48 с.
11. Араманов И.Н. Пакеты и сообщения в сетях TCP/IP, IPX/SPX, NetBios
и др. –М.: Известия. 1998. – 286 с.
12. www.elec.ru
13. Удавиченко М.Ф. Строим алгоритмы. – М.: СТУ. 1990. – 78 с.
14. Боэм Б.У. Инженерное проектирование программного обеспечения: Пер.
с англ./Под ред А.А.Красилова. – М.: Радио и связь. 1985. - 512 с.
15. Гласс Р. Руководство по надежному программированию: Пер. с англ.
–М.: Финансы и статистика, 1982. - 280 с.
16. Липаев В.В. Тестирование программ. – М.: Радио и связь, 1986 - 292
с.
17. Шураков В.В. Надежность программного обеспечения систем обработки
данных. –М.: Статистика, 1981. - 215 с
Приложение 1. Функциональная схема "Сервер". Подсистемы Управления и
Интерфейсная
Приложение 2. Функциональная схема "Сервер". Подсистема взаимодействия с
"Клиентом"
Приложение 3. Функциональная схема "Клиент"
-----------------------
Рис. 7
Рис. 6
Рис. 5
Рис. 4
Рис. 2
Информация как основа управления
Методы воздействия на ОУ
Рис. 1
Технология управления
Структура управления
Организация управления труда
Теория управления, функции, стиль, принципы, цели
К
Mas1.Тип сообщения=08
Mas1.Текст объявления =””
Mas1.ID = True
Да
Нет
Нет
Да
Mas1.Тип сообщения=06
Mas1.Приоритет = Приоритет
Mas1.Устройства =Устройства
Mas1.Время = Время
Mas1.Текст объявления = Текст объявления
Mas1.ID = True
Ввести номера устройств
Время
Текст объявления
Устройства i-ый бит =1
Выбрано i-ое устройство
I>15
I=I+1
I=-1
Нет
Да
Mas1.ID =False
Нет
Да
Послать объявление
Описание устройств было успешно принято
N=1-ый байт Mas2.Текст
а=2+203*i байт Mas2.Текст
Устройства[а].Не работает=1+203*i байт Mas2.Текст
Устройства[а].Описание=3-203+203*i байт Mas2.Описание
Нет
Да
I>n
I=I+1
I=-1
Обработать сообщение с типом сообщения = 08
Нет
Да
Нет
Да
Объявление было успешно принято системой
Устройства[i].Не работает = True
i-ое Устройство на которое было послано объявление не работоспособно
Текст i байт =1
I>15
I=I+1
I=-1
Обработать сообщение с типом сообщения = 06
Да
Нет
Нет
Да
Сетевое имя=Mas1.Сетевое имя
Приоритет= Mas1.Приоритет
Ок=true
Вам присваивается Сетевое имя Гость с наименьшим приоритетом
Пароль не опознан
Ваше сетевое имя не обнаружено в системе
Mas1.Ошибка=1
Вы зарегистрированы на сервере и имеете право отправлять сообщения под
своим именем и приоритетом
Mas1.Ошибка=0
Обработать сообщение с типом сообщения = 05
Проверка на завершение
Н
Сервер получил сообщение с неправильной Контрольной суммой. Повторите свое
сообщение
Mas2.ID=False
Пришло неопознанное сообщение от сервера, повторите предыдущее действие
Нет
Нет
Нет
Да
Да
Да
Да
Нет
Да
Обработать сообщение с типом сообщения = 08
Обработать сообщение с типом сообщения = 06
Обработать сообщение с типом сообщения = 05
Mas2.Тип сообщения=07
Mas2.Тип сообщения=06
Mas2.Тип сообщения=05
Mas2.Контрольная сумма=true
Mas2.ID=true
Нет
Нет
Да
Mas1.ID =False
Нет
Да
Н
А=Ввести сетевое имя
В=Ввести приоритет
Mas1.Тип сообщения=05
Mas1.Сетевое имя=А
Mas1.Приоритет=B
Mas1.ID=True
Сетевое имя=Гость
Приоритет=минимальный
Ок=true
Зарегистрироваться как Гость
К
Добавить к Текст
1-ый +203*k байт = Устройства[k].Не работает
2-ой +203*k байт = k
3-202 +203*k байт = Устройства[k].Описание
k=0, Текст=1 байт n
Нет
Да
Нет
Да
Mas2[i].ID=False
Mas2[i].Тип сообщения=08
Mas2[i].Текст=Текст
Mas2[i].ID[i]=True
Mas2[i].Арес приемника= Mas1[i].Адрес источника
k>n
k=k+1
Обработать сообщение с Типом сообщения =08
I=1
I>5
I=I+1
I=0
Mas[i].Идентификатор устройств=Mas1[i].Устройства
Mas[i].Время начала вывода сообщения= Mas1[i].Время
Mas[i].Текст сообщения= Mas1[i].Текст объявления
Mas[i].Приоритет= Mas1[i].Приоритет
Mas[i].Адрес источника= Mas1[i].Адрес источника
Mas[i] Свободен
Сетевое имя =Mas1[i].Сетевое имя
Приоритет = Приоритет из БДП
Сетевое имя =Гость
Приоритет минимальный
Mas2[i].Тип сообщения=05
Mas2[i].Ошибка=Ошибка
Mas2[i].Сетевое имя=Сетевое имя
Mas2[i].Приоритет=Приоритет
Mas2[i].ID=True
Mas2[i].Адрес приемника= Mas1[i].Адрес источника
Нет
Да
Да
Нет
Ошибка=0
Ошибка=2
Mas1[i].Пароль совпадает с паролем в БДП
Ошибка=1
Mas1[i].Сетевое имя присутствует в БДП
Нет
Да
Mas2[i].ID=False
Нет
Да
Mas2[i].ID=False
Mas2[i].Тип сообщения=07
Mas2[i].Текст=””
Mas2[i].Адрес приемника= Mas1[i].Адрес источника
Mas2[i].ID=True
Обработать сообщение с Типом сообщения =06
Проверка на завершение
Нет
Да
Послать сообщение с Типом сообщения =07
Mas1[i].Контрольная сумма = true
Обработать сообщение с Типом сообщения =08
Да
Обработать сообщение с Типом сообщения =06
Да
Обработать сообщение с Типом сообщения =05
Нет
Нет
Mas1[i].Тип сообщения=06
Mas1[i].Тип сообщения=05
Да
Нет
Нет
Да
I=1
I=I+1
Н
I=1
I > 5
Mas1[i].ID[i]=true
Массив неопубликованных объявлений[j].Номер объявления= Временный
массив[j].Str[MaxK].Col[1]
ID[j]=True
Удалить строку MaxK и сдвинуть все ниже лежащие строки на одну вверх
Временный массив[j].Str[1].Col[1]= Временный массив[j].Str[1].Col[1]-1
Нет
Да
Нет
Да
Временный массив[j].Str[1].Col[1]=0 или Динамический массив[j].занят=true
Max=Временный массив[j].Str[k].Col[2]
MaxK=К
Да
Нет
K >= Временный массив[j].Str[1].Col[1]
K=K+1
K=-1 Max=1 MaxK=1
J>15
J=J+1
J=-1
Да
Нет
Временный массив[j].Str[К].Col[2]
>Max
Заполнение массива неопубликованных объявлений
Заполнение массива неопубликованных объявлений
Да
Нет
Да
Существуют объявления, время вывода которых наступило
Нет
Нет
Да
J>15
J=J+1
j-ый бит=1
Выделить j-ый бит из Объявление.Идентификатор устройств
J=0
Из массива объявлений считать объявление время вывода, которого пришло
A=Временный массив[j].Str[1].Col[1]
Временный массив[j].Str[A].Col[1] = Объявление.Номер
Временный массив[j].Str[A].Col[1]= Объявление.Приоритет
Временный массив[j].Str[1].Col[1]=A+1
Определить объявления, которые должны быть выведены в данный момент
Да
Массив исходящих сообщений клиенту
Тип сообщения =06.
Адрес приемника=Временный массив объявлений[i].Адрес источника
Текст=device
ID=true
Нет
J=J+1
j>15
Да
device j-бит = 1
Нет
device j-бит = 0
Нет
Да
j-ый бит=1
Устройство[j].Не работает = True
J=0
Выделить j-ый бит из Временный массив объявлений[i].Идентификатор устройств
Сформировать сообщение с Типом сообщения = 06
Проверка на завершение
НЕТ
ДА
НЕТ
ДА
Временный массив[i] существует объявление
I = 0
I > 5
I=i+1
Н
I = 0
Определить объявления, которые должны быть выведены в данный момент
Сформировать сообщение с Типом сообщения = 06
Проверка на завершение
Нет
Устройства[i].Не работает=True
Да
Время[i]=60
ID[i](вых)=True
Нет
Да
Нет
Да
Повтор[i] n
Прерывание раз в секунду
К
Инициализировать динамический массив
Последовательно вызвать процедуру Order с параметром Номер устройства,
перебрав все устройства существующие в системе
Нет
Да
Создать Временный массив объявлений на диске и обнулить информацию
хранящуюся в оперативной памяти системы
Считать массив с диска и разместить его в оперативной памяти
Существует на диске Временный массив объявлений
Нет
Да
Последовательно запросить информацию обо всех устройствах нижнего уровня у
администратора системы и сохранить полученную информацию на диске и в
оперативной памяти
Считать массив с диска и разместить его в оперативной памяти
Массив Устройств существует на диске
Н
Проверка на завершение
5. Пусто
Нет
Да
5. первые 2 байта Текст= Номер объявления[i](вых)
5. последующие байты Текст = Текст объявления
Н
i>n
I = 1
ID[i](вых) = True
Нет
i= i + 1
Да
Нет
Тип сообщения = 02
I=1
Да
Добавить в строку
1.Заголовок пакета
2.Адрес источника
3.Адрес приемника=Устройства[i]. Физический адрес устройства в сети
4.Тип сообщения = Тип сообщения[i](вых)
6.Контрольная сумма(вычислить)
7.Префикс пакета
Поместить сформированную строку в выходной буфер и в массив сообщений в
системе
Нет
Да
I существует
К
Нет
Тип сообщения[i] = 03
Ответ[i]=Текст(1-ый байт)
Номер объявления[i]=Текст(2 и 3-ий байт)
ID[i]=True
Да
Тип сообщения[i] = 02
Ошибка[i]=Текст
ID[i]=True
Да
Тип сообщения[i] = 01
ID[i]=True
Нет
Да
Тип сообщения = 04
Тип сообщения = 02
Тип сообщения = 01
Тип сообщения[i] = 04
ID[i]=True
Нет
Да
Контрольная сумма правильная
Посчитать Контрольную сумму принятого пакета
n =n + 1
Массив сообщений в системе[n] = Входной буфер
n = 1
n > 100
Прерывание
Нет
Нет
Да
I=Номер(адрес источника)
К
Н
Нет
Да
Массив исходящих сообщений[i].Текст=””
Тип сообщения[i](вых)=02
Повтор[i] = 0; Время[i] = 60
ID[i](вых) =true
Динамический массив[i].Занят = true
Из Массив объявлений.Номер объявления(Динамический массив[i].Номер
объявления)
Массив исходящих сообщений[i].Текст= Массив объявлений.Текст сообщения
Номер объявления[i] (вых)= Динамический массив[i].Номер объявления
Тип сообщения[i](вых)=02
Повтор[i] = 0; Время[i] = 60
ID[i](вых) =true
Да
Нет
ID[i](вых) = True
Повтор[i] = 0
Время[i] = 60
Тип сообщения(вых) >1 and n
Нет
Да
i=1
i = 1
Нет
Нет
Массив неопубликованных объявлений ID[i] = True
ID1[i]=true
Да
i = i + 1
Информация
Да
Mas1.ID =False
Нет
Да
Ок=True
Да
Нет
Вам запрещено посылать объявления. Зарегистрируйтесь.
Рис. 32
Н
К
Закрыть программу
Kol=kol+1
Kol=Количество процедур работающих пораллельно-1
Close=true
Проверка на завершение
Страницы: 1, 2, 3, 4
|