а можно послушать видео лекцию по данному курсу |
Программное обеспечение. Свойства программного обеспечения устройств в сетях телекоммуникации
Автоматный подход и табличные функции
Автоматный подход позволяет упорядочить работу по конкретной последовательности вызову серверов по запросу объекта. Кроме того, надо заметить, что согласно рекомендациям [67] предложен язык спецификаций и описаний SDL (Specification and Description Language) для представления алгоритмов. Он также опирается на понятие "конечный автомат". Поэтому этот подход позволяет применить плавный переход от алгоритмов различных уровней к программе.
С помощью модели конечного автомата любой алгоритм отображается с помощтью сиситемы рекурсивных функций1Рекурсивная функция — функция, позволяющая последовательное вычисление ее значений на основании предыдущего значения и начальных условий.:
S(t+1)=f(S(T),X(t)),
Z(t=1)=f1 (S(t),X(t).
X(t) = [x1(t), x2(t), x3(t),….. ,xp(t)] — значения сигналов на входе автомата,
S(t) = [s1(t), s2(t), x3(t),….. ,sn(t)] — внутренние состояния автомата,
Z(t) = [z1(t), z2(t), z3(t),….. ,zk(t)] —значения сигналов на выходе состояния.
Следуя этому уравнению, алгоритм можно представить как последовательное вычисление рекурсивной функции, которая сопоставляет совокупности входного сигнала, текущего состояния и нового состояния. Эта смена состояний называется переходом. Пара "вход-состояние" уникальна, т. е. нигде в алгоритме она не применяется для перехода в другое состояние. Переход из одного состояния в другое сопровождается выполнением действий при переходе. Эти действия указаны в рекомендациях МККТТ Z.100-104 [67], упомянутых выше: ЗАДАЧА, УСЛОВИЕ, ВЫХОД. Приведем определения основных понятий, которые уже были даны в начале "Алгоритмы отдельных функций, выполняемые в станциях с программным управлением" .
Согласно рекомендациям МККТТ, для изображения алгоритмов применяются следующие обозначения (рис. 4.3).
При использовании этих символов имеется небольшое число естественных ограничений.
- За символом СОСТОЯНИЕ может следовать один только символ или несколько символов ВХОД.
- Каждому символу ВХОД должен предшествовать один символ СОСТОЯНИЕ (пара СОСТОЯНИЕ-ВХОД уникальна, т. е. должна соответствовать только переходу в одноименное СЛЕДУЮЩЕЕ СОСТОЯНИЕ ).
- За символом ВХОД должен следовать один и только один символ, который не может быть символом ВХОД.
- За символом ЗАДАЧА или ВЫХОД должен следовать один и только один символ, который не может быть символом ВХОД.
- За символом УСЛОВИЕ должны следовать два или более символа, которые не могут быть символами ВХОД.
Заметим, что нет никаких ограничений на число следующих повторно операций ПЕРЕХОДА (ЗАДАЧА, УСЛОВИЕ, ВЫХОД), ни на порядок их следования. Указанные выше ограничения позволяют иметь еще одно отображение алгоритма, записанного в SDL в виде таблицы соответствий (таблица 4.1 )2В некоторых случаях применяется таблица переходов [44, 45], которая имеет другой вид, но эквивалентна рассматриваемой здесь таблице соответствия., которая сопоставляет каждой паре ВХОД-СОСТОЯНИЕ набор действий при переходе.
Наименование операторов | S(t) | X(t) | TASK | Q(t) | Z(t) | S(t+1) |
Текущие значения операторов | s(t) | x(t) | Taks(t) | 0 | z(t) | s(t+1) |
1 | s(t) | s(t+1) |
В таблице 4.1 в верхней строке большими буквами записаны наименования операторов языка SDL, во второй строке — их текущие значения.
Наименование операторов указывают, что в этом столбце содержатся числовые значения, задающие номера конкретных действий. Для этого вводится соответствующая нумерация, отображающая возможные значения операторов.
s(t) — указывает номер состояния, в котором находится процесс. Например, таблица 4.2 показывает пример нумерации оператора СОСТОЯНИЕ.
Эта таблица либо составляется нумерацией состояний в готовом алгоритме, либо устанавливается руководителем разработки (для ограничения имен и числа состояний), либо накапливается, контролируется, пополняется и предлагается по отдельным значениям системой автоматизации.
Наименование состояния | Числовое значение |
---|---|
Свободно | 1 |
Ожидание первой цифры | 2 |
Ожидание отбоя абонента | 3 |
x(t) — указывает номер входного сигнала, который инициирует переход. Например, таблица 4.3 показывает пример нумерации оператора ВХОД.
Наименование входа | Числовое значение |
---|---|
Абонент снял трубку | 1 |
Абонент положил трубку | 2 |
Оператор ВХОД до поступления его в основной алгоритм обработки выполняется модулем (объектом) "сканирование".
Q (t) — указывает номер УСЛОВИЯ. Для нумерации условия применяют индексы при буквенном обозначении Q. Таблица 4.5 показывает пример нумерации УСЛОВИЙ (в таблице отображено одно УСЛОВИЕ ).
Наименование условия | Числовое значение |
---|---|
Свободный МЧПП найден | Q1 ДА-0 НЕТ-1 |
z(t) — указывает номер выходного сигнала, в окружающие устройства или алгоритмы. task(t) — указывает номер ЗАДАЧИ.
При нумерации этих операторов следует дать несколько комментариев. Как показано в предыдущих разделах (3.1-3.9), многие из этих функций выполняются алгоритмическими модулями, в терминологии объектно-ориентированного подхода — объектами. В соответствии с этим модули имеют свое поведение и интерфейсы, показанные ранее.
Например, ВЫХОД, указывающий на включение и выключение акустических сигналов, выполняется модулем передачи команд. Этот модуль (объект) согласно идеологии объектно-ориентированного подхода имеет свой интерфейс. Поэтому при описании интерфейса указывается нумерация последовательностей команд, которые могут быть конкретными значениями оператора ВЫХОД. Обычно они бывают многозначными. Например, применяется номер, состоящий из двух частей: в первой содержится номер устройства (объекта), которое должно выполнить последовательность команд, а во второй части (через точку) указывается конкретная последовательность команд.
Таблица 4.6 показывает пример нумерации ВЫХОДОВ. В этой таблице предполагается, что при нумерации объекту "Акустическое соединение" сопоставлен номер 3 (первая часть номера ВЫХОДА ) и он может сформировать две последовательности команд (вторая часть номера ВЫХОДА ) — "включить" или "выключить". Эти действия отражены соответственно номерами 1 и 2 во второй части номера.
Номер сигнала ВЫХОД с именем "включить таймер 20 сек" предполагает, что таймер — это объект с номером 4 (первая часть номера), а действие "включить 20 сек" имеет номер 1.
Еще раз напомним, что присвоение этих номеров делается произвольно по готовому алгоритму, или руководителем, или системой автоматизации, но впоследствии строго соблюдается. Особое значение придается разрешению, запрещению или ограничению синонимов. Например, термин "включить" может иметь синонимы "активизировать", "запустить" и т. п. Для табличного алгоритма выполнение операторов синонимов возможно, но лучше выполнять заповедь "Не умножай сущности без необходимости", поскольку многозначность может привести к трудностям в понимании разработчиком или пользователем.
Наименование состояния | Числовое значение |
---|---|
Включить акустический сигнал "занято" | 3.1 |
Отключить акустический сигнал "занято" | 3.2 |
Включить акустический сигнал "ответ станции" | 3.3 |
Включить таймер | 4.1 |
Оператор ЗАДАЧА также выполняется модулями, которые, как и ВЫХОДЫ, имеют свои интерфейсы. Принцип назначения номеров тот же, что и для ВЫХОДОВ.
Например, при выполнении ЗАДАЧИ с именем "найти свободный приемник" надо указать, что он предназначен модулю поиска промежуточных путей (он также проводит поиск свободных приборов), и номер действия внутри этого модуля.
Таблица 4.7 показывает пример нумерации ЗАДАЧА. В данном случае назначенный номер 2.1 показывает, что модуль (объект) "поиск промежуточных путей" имеет номер 2 (первая часть номера оператора), а действие "найти свободный МЧПП" (Многочастотный Приемник Набора Номера) имеет номер 1.
Наименование состояния | Числовое значение |
---|---|
Найти свободный МЧПП | 2.1 |
Заметим, что при передаче сообщения объекту номер оператора сопровождается необходимой информацией, которая рассматривалась при описании отдельных алгоритмов. Эти данные указаны на рисунках (рис. 3.2, 3.5, 3.8, 3.11, 3.17, 3.23) в виде некоторых входов.
Возвращаясь к таблице соответствия можно сказать, что для описания работы большого устройства, например станции, таблица должна включить в себя все переходы алгоритма, что составляет сотни тысяч строк. Это предполагает наличие программной поддержки для минимизации таблиц, минимизации их хранения в памяти, поиска и коррекции. Однако преимуществом табличного подхода является то, что эти операции никак не связаны с особенностями самого алгоритма и обладают всеми свойствами программного обеспечения для распределенных систем программирования. То есть от пользователя скрыты элементы взаимодействия: местоположение объекта, реализация объекта, механизм связи с объектом.
Еще одним достоинством является прямой переход от алгоритма к программе. Это дает возможность автоматизации и быстрой реализации, что позволяет разработчикам приложений сконцентрировать внимание на приложениях и не беспокоиться о проблемах распределенного системного программирования нижнего уровня.
Рассмотрим пример табличного отображения алгоритма. На рис. 4.4 приведен простой алгоритм, выполненный автоматным подходом и написанный с помощью языка SDL.
Этот же алгоритм отображен с помощью таблицы соответствий (таблица 4.8), в которой применяется нумерация операторов, заданная таблицами 4.2-4.7.
№ строки | S(t) | x(t) | TASK1(t) | Q1 | TASK2(t) | TASK3(t) | S(t+1) |
---|---|---|---|---|---|---|---|
1 | 1 | 1 | 2.1 | 1 | 3.3 | 4.1 | 2 |
2 | 0 | 3.1 | 3 | ||||
3 | 2 | 3.2 | 1 |
Попробуем описать работу алгоритма по таблице 4.8.
Первая строка. В состоянии S(t)=1 (свободно) поступает входной сигнал x=1 (абонент снял трубку). Эта пара ВХОД-ВХОД-СОСТОЯНИЕ вызывает ПЕРЕХОД, который включает в себя следующие действия.
Задача – Task2(t) = 2.1. Найти свободный МЧПП.
Предположим, что получено значение Q1=1 — свободный МЧПП найден, тогда продолжаем действия, стоящие в первой строке.
Включаем заявку на передачу команд устройством подключения акустических сигналов task2=3.3.
Передаем сигнал на включение таймера, равного 20 с, для ожидания набора номера ( task3=4.1 ).
Завершаем переход установкой состояния s(t)=2.
Вторая строка. Если после проверки условия Q1=0 — свободный МЧПП не найден, то проводятся следующие действия:
Task2=3.1 (включается акустический сигнал "занято").
Task3 не выполняется, поскольку в ней поставлен прочерк ( - ).
В конце выполнения строки устанавливается состояние s(t)=3.
Третья (последняя) строка начинается с состояния s(t)=3.
При поступлении входного сигнала x(t)=2 ("абонент положил трубку") выполняется переход, содержащий следующие действия (напоминаем: действия, обозначенные прочерком, не выполняются, и следует перейти к обработке следующего столбца этой строки):
Task 3=3.2 ("отключить акустический сигнал").
Устанавливается состояние s(t)=1 (свободно).
Приведенное выше описание показывает, что существует обратное соответствие, т. е. таблица однозначно может быть переведена в алгоритм на языке SDL.
Более того, язык на первом этапе внедрения имел текстовую версию, которая не получила развития. При табличном подходе она может быть использована для автоматизации одной из самых "скучных" работ — составления описания алгоритма.
Строке таблицы может быть сопоставлен текст, который заполняется по подставленным в таблицу параметрам. В результате получается описание работы алгоритма.
Например, для строки таблицы 4.8может быть представлен следующий текст:
" Если система находится в состоянии…….. и поступил сигнал……, то выполняется, ……проверяется условие…. Если в результате проверки….., то ………акустический….. таймер……. И система переходит в состояние…."
Все пропущенные слова восстанавливаются с использованием параметров таблицы и значений, заданных в словаре.