2008
ВЕСТНИК ТОМСКОГО ГОСУДАРСТВЕННОГО УНИВЕРСИТЕТА Управление, вычислительная техника и информатика
№ 3(4)
ДИСКРЕТНЫЕ ФУНКЦИИ И АВТОМАТЫ
УДК 618.5:519.68
Ю.В. Михайлов, А.В. Коломеец ПРОВЕРКА ПЕРЕХОДОВ В РАСШИРЕННОМ АВТОМАТЕ НА ОСНОВЕ СРЕЗОВ
В данной работе предлагается метод построения проверяющего теста для расширенного автомата на основе различающих последовательностей в специальном срезе автомата исходного расширенного автомата, т.е. в его упрощенной версии. Устанавливаются достаточные условия, при которых последовательности, различающие два состояния в срезе, различают эти состояния в исходном расширенном автомате.
Ключевые слова: расширенный автомат, контекстно-свободный расширенный автомат, различающая последовательность.
При построении тестов для телекоммуникационных протоколов очень важным является понятие различимости между состояниями спецификации. Для модели конечного автомата отношение различимости хорошо изучено. Однако для реальных протоколов соответствующий конечный автомат, если существует, имеет слишком много переходов, что затрудняет использование этой модели при построении тестов. Одной из модификаций конечного автомата является расширенный автомат; расширенный автомат содержит дополнительные переменные, и переходы снабжены условиями, при которых может выполниться данный переход. Известные методы построения тестов по расширенному автомату используют последовательности, различающие конфигурации в расширенном автомате. В данной работе мы предлагаем для построения таких различающих последовательностей использовать срезы расширенного автомата. Каждый срез, с одной стороны, имеет меньший размер, чем исходный расширенный автомат, а с другой - сохраняет свойства расширенного автомата, необходимые для построения последовательностей, различающих состояния и конфигурации расширенного автомата, т.е. эти срезы строятся таким образом, чтобы сохранить возможности построения полного проверяющего теста.
1. Основные определения
Под расширенным автоматом [1] понимается пятёрка Ы = (5, X, У, V, Г), где 5 - непустое конечное множество состояний автомата, X - непустое множество входных символов, называемое входным алфавитом, У - непустое множество выходных символов, называемое выходным алфавитом, V - конечное, возможно пустое множество контекстных переменных, Г - множество переходов между состояниями из 5. Каждый переход г из Г - это семёрка (я, х, Р, ор, у, ир, я ), где я, Я е 5 являются начальным и конечным состояниями перехода; х е X есть вход-
ной символ и А„р1 обозначает множество векторов, компонентами которых являются значения параметров, соответствующих входному символу х (далее - входные параметры); у е У - выходной символ и ВоШ_у обозначает множество векторов, компонентами которых являются значения параметров, соответствующих выходному символу у (далее - выходные параметры); Р, ор и ир - функции, определенные над входными параметрами и контекстными переменными из V:
Р: ВЫр_х х Бг ^ {истина, ложь} - предикат, где Бг - множество контекстных векторов;
ор: ВЫр_х х Бг ^ Оои,.у - функции для определения значений выходных параметров;
ир: ВЫр_х х Бг ^ Бг - функции для определения значений контекстных переменных.
Параметризованным входным символом называется пара «входной символ х, входной вектор а из А„рх», т.е. пара (х, a).
Конфигурацией расширенного автомата М называется пара «состояние я, контекстный вектор V», то есть (я, v).
Переход называется возбужденным для конфигурации (я, v) и параметризованного входа (х, р), если предикат на переходе из состояния я под действием входного символа х принимает значение «Истина» для пары (у, р).
Расширенный автомат называется полностью определенным, если в каждом состоянии я существует хотя бы один переход по каждому входному символу. Расширенный автомат Ы называется непротиворечивым, если из каждого состояния я для любого параметризованного входного символа и каждого значения контекстного вектора V из области определения существует не более одного перехода, предикат которого принимает значение «истина» при данном значении контекстного вектора. Расширенный автомат Ы называется детерминированным, если в каждом состоянии я существует не более одного выполнимого перехода по любому параметризованному входному символу.
Рассмотрим расширенный автомат ЕБ\ на рис. 1. В автомате 3 состояния, два параметризированных входных символа а(х) и Ъ(у), один непараметризированный входной символ с, два параметризированных выходных символа О(г) и -Р(^), два непараметризированных выходных символа Я и №иЪЬ (нет выхода) и две контекстные переменные V и ^.
Рис. 1. Расширенный автомат ES1
Состояния я и я2 расширенного автомата ЕБ различимы, если существует параметризованная входная последовательность а, на которую автомат ЕБ в состояниях я1 и я2 имеет различные выходные реакции, в противном случае состояния я1 и я2 называются неразличимыми.
Полностью определенные расширенные автоматы ЕБ и ЕГ называются эквивалентными, если их начальные состояния не различимы, т.е. для любой параметри-зированной входной последовательности а множества параметризированных выходных последовательностей автоматов совпадают. Если начальные состояния автоматов различимы, т.е. существует параметризированная входная последовательность а, такая, что выходные реакции ЕБ и ЕГ на а различны, то расширенные автоматы ЕБ и ЕГ различимы (последовательностью а), обозначение ЕЕ £ а ЕБ или просто ЕЕ £ ЕБ.
Мы далее полагаем, что эталонное поведение проверяемой системы описано расширенным автоматом ЕБ. Проверяемая система является реализацией эталонной системы, и в процессе реализации или функционирования проверяемой системы могли произойти ошибки, которые предполагаются постоянными во времени.
Рассмотрим переход г = (я, х, Р, ор,у, ир, я') эталонного автомата. Говорят, что на переходе г в проверяемой системе имеет место ошибка перехода [2], если конечное состояние перехода в проверяемом автомате (реализации) отличается от конечного состояния этого перехода в эталонном автомате. Иначе говоря, в проверяемом автомате вместо перехода г существует переход (я, х, Р, ор, у, ир, я''), в котором состояние я' Ф я''.
Переход г = (я, х, Р, ор, у, ир, я') имеет выходную ошибку [2], если выходной символ проверяемого автомата на данном переходе отличается от выходного символа у, т.е. в проверяемом автомате вместо перехода г существует переход (я, х, Р, ор,у', ир, я').
В данной работе на каждом шаге мы предлагаем строить фрагмент теста, который гарантированно обнаруживает ошибки только на одном переходе; этот переход называется подозрительным, остальные переходы называются проверенными переходами. Напомним, что мы рассматриваем только ошибки в финальном состоянии перехода и/или выходном символе.
Для построения полного проверяющего теста непосредственно по расширенному автомату мы предлагаем использовать срезы (т.е. уменьшенные образы) расширенного эталонного автомата ЕБ; каждый из срезов должен сохранять, хотя бы частично, свойства, необходимые для построения полного теста.
2. Построение срезов расширенного автомата
При синтезе полного теста мы должны пройти в эталонном автомате все подозрительные (а иногда и проверенные переходы) и, кроме того, различить финальное состояние перехода с другими состояниями эталонного автомата [3]. Решение проблемы достижимости и различимости явно или неявно базируется на моделировании поведения расширенного автомата, сложность которого в значительной степени зависит от числа контекстных переменных. Поэтому на первом шаге мы уменьшаем число контекстных переменных, сохраняя свойство достижимости для состояний расширенного автомата.
2.1. Построение среза расширенного автомата с сохранением достижимости состояний
Пусть V = {vi, v2, ... vn} - множество контекстных переменных расширенного автомата ES. Переменная vi непосредственно зависит от переменной Vj, если на некотором переходе функция определения значения контекстной переменной Vi зависит от переменной v,. Переменная vi зависит от переменной Vj, если существуют переменные v1, ..., vk, такие, что vi = v1, v, = vk и переменная vp непосредственно зависит от переменной vp+1, p = 1, ., k - 1.
Для упрощения решения задачи достижимости в расширенном автомате мы предлагаем построить срез SliceR(ES), который сохранит свойства достижимости исходного расширенного автомата ES. Мы называем такой срез R-срезом. Для построения среза SliceR(ES) предлагается следующий алгоритм.
Алгоритм 2.1. [4] Построения R-среза расширенного автомата.
Вход: Расширенный автомат ES.
Выход: Срез SliceR(ES) автомата ES.
Шаг 1: Сокращаем множество контекстных переменных: переменная v;, удаляется из множества контекстных переменных V, если ни одна из свободных переменных любого предиката не зависит от переменной vi. Другими словами, мы удаляем все контекстные переменные, не влияющие на значение предикатов. Обозначим V с V сокращенное множество контекстных переменных.
Шаг 2: Все соотношения для определения значения контекстной переменной из множества V\V удаляются из расширенного автомата.
Шаг 3: Если существует переход в расширенном автомате ES, на котором функция определения выходного параметра зависит от контекстной переменной из множества V\V , то данное соотношение удаляется из расширенного автомата. Соответствующему выходному параметру присваивается любое допустимое значение. Конец алгоритма.
Утверждение 1. Пусть ES - расширенный автомат и его срез SliceR(ES) получен по алгоритму 2.1. Если параметризованная входная последовательность а переводит расширенный автомат SliceR(ES) из начального состояния s в состояние s', то последовательность а также переводит автомат ES из начального состояния s в состояние s'. Более того, если под действием параметризированного входного символа а в автомате SliceR(ES) выполним переход t = (s,x,P,op,y',up,s'), то соответствующий переход выполним в автомате ES под действием того же параметризированного входного символа.
2.2. Построение FSM-среза расширенного автомата
Для того чтобы упростить проблему различимости состояний в расширенном автомате, мы предлагаем построить срез SliceFSM<ES) с конечно-автоматным поведением, т.е. срез, который не содержит контекстных переменных и выходных параметров. Как известно, задачи достижимости и различимости для конечных автоматов решаются достаточно просто (по сравнению с расширенными автоматами). Мы называем такой срез FSM-срезом. Следуя [4], мы обозначаем такой срез как SliceFSM(ES); однако наш алгоритм позволяет построить такой срез с сохранением большего числа переходов исходного расширенного автомата.
Идея построения среза состоит в удалении переходов, на которых предикат зависит от контекстных переменных, т.е. переходов, выполнение которых зависит
от значений контекстных переменных. Тем не менее, некоторые переходы, имеющие предикаты, зависящие от контекстных переменных можно сохранить,
воспользовавшись следующим свойством. Пусть, например, Р = Р1 V Р2 и предикат Р1 не зависит от контекстных переменных. Тогда переход с предикатом Р выполним, если выполним переход с предикатом Р1. В общем случае такая замена предиката возможна, если предикат Р можно представить в виде суперпозиции предикатов Р1 и Р2, Р = _ДРі, Р2), из которых следует, что предикат Р1 зависит
только от входных параметров и существует такое значение предиката Р1, при котором / существенно не зависит от значения предиката Р2. Соответственно предикат Р можно заменить предикатом Р1.
Алгоритм 2.2. Построения ЕБМ-среза расширенного автомата.
Вход: Расширенный автомат ЕБ.
Выход: Конечно-автоматный срез БІісеРяМ(ЕБ) автомата ЕБ.
Шаг 1: Удалить из расширенного автомата ЕБ все переходы, на которых предикат зависит только от контекстных переменных. Если предикат Р можно представить в виде суперпозиции предикатов Р1 и Р2, Р = / (Р1, Р2), из которых следует, что предикат Р1 зависит только от входных параметров и существует такое значение предиката Р1, при котором / существенно не зависит от значения предиката Р2, то заменяем предикат Р предикатом Р1.
Шаг 2: Удалить из расширенного автомата все контекстные переменные и функции вычисления контекстных переменных (ир).
Шаг 3: Удалить из расширенного автомата все выходные параметры и соответствующие функции вычисления выходных параметров (ор); полученный автомат обозначить БІісеР$м(ЕБ>). Конец алгоритма.
По построению расширенный автомат БІісеР$м(ЕБ) не содержит контекстных переменных и выходных параметров, и соответственно можно считать, что каждый переход вида ї = (з,х,Р,ор,у,ирУ), на котором предикат зависит от входных параметров, заменяется множеством переходов (^,х,у,^') для всех параметризированных входных символов х, которые обращают предикат Р в ИСТИНУ. Соответственно построенный срез имеет конечно-автоматное поведение; для детерминированного расширенного автомата соответствующий автомат является детерминированным, но в общем случае является частичным и не связным и более того не обязательно является конечным, так как число входных параметризированных символов может быть бесконечным. Однако такой срез имеет хорошие свойства, которые можно использовать при синтезе тестов для расширенного автомата ЕБ. В частности, в таком срезе достаточно просто найти последовательность, которая переводит расширенный автомат ЕБ из начального в заданное состояние (если такая последовательность существует в срезе БІісеР5м(ЕБ)), а также различить две конфигурации (^,у) и (У ,у') исходного расширенного автомата, если состояния я и У различимы в срезе БІісеряМ^ЕБ). Срез БІісеРвм(ЕБ1) для расширенного автомата ЕБ1 на рис. 1 приведен на рис. 2. В автомате, представленном на рисунке 2, несмотря на то, что множество контекстных переменных пусто, так же как и множество выходных параметров, выполнение некоторых переходов зависит от предиката, определенного на множестве входных параметров.
Заметим, что ЕБМ-срез расширенного автомата имеет конечно-автоматное поведение, однако в общем случае этот срез не является конечным автоматом. Более того, отношение переходов автомата явно не представлено четверками; в описании среза используются предикаты, зависящие от входных параметров. Таким об-
разом, гаМ-срез, скорее, является расширенным автоматов с пустым множеством контекстных переменных и выходных параметров. Расширенный автомат с пустым множеством контекстных переменных и выходных параметров будем далее называть контекстно-свободным расширенным автоматом, и в следующих разделах мы исследуем задачи достижимости и различимости состояний для таких расширенных автоматов.
Рис. 2. SliceFSM(ES1) расширенного автомата ES^
2.3. Построение различающего автомата для двух контекстно-свободных расширенных автоматов
Пусть имеется два контекстно-свободных расширенных автомата Мх и М2, которые находятся в двух различных начальных состояниях и зр, обозначим их М-у/Б1 и М2/зу соответственно. Автоматы Мх/з1 и М2/зу обладают одним входным и выходным алфавитами и множеством входных параметров (рис. 3).
Автомат М в состоянии Автомат М в состоянии я2
Рис. 3. Два контекстно-свободных расширенных автомата в начальных состояния s1 и S2
Введем понятие различающего автомата для двух контекстно-свободных расширенных автоматов М\ и М2 с начальными состояниями з и ц (обозначение: М\/б и М2/ц).
Различающим автоматом (M\/s ® M2/q)/(s,q) контекстно-свободных расширенных автоматов Mx/s и M2/q называется наибольший связный подавтомат расширенного автомата <(S х Q) и fail, X, Y и fail, T >, где S - множество состояний автомата Мь Q - множество состояний автомата М2, fail g S х Q - специальное состояние и специальный выходной символ, X и Y - входной и выходной алфавиты, на которых определены автоматы М\ и M2, и множество переходов данного автомата определяется следующим образом.
Для каждой пары состояний (s, q) е S х Q и для каждой пары переходов из состояний s и q по входному символу а, который определен в каждом из состояний s и q, с предикатами P и R, проверяем, является ли предикат (P & R) выполнимым, т.е. существует ли набор значений входных параметров, на котором предикат (P & R) принимает значение «Истина». Если такой набор р существует и выходной символ b на этих переходах один и тот же, то в автомате (Mx/s ® M2/q)/(s,q) есть переход (s, q) ^ а(р)/ b ^ (s’, q’).
Если выходные символы на переходах из состояний s и q по входному символу а, с предикатами Р и R, не совпадают, то в различающем автомате существует переход (s, q) ^ a(p)/fail ^ fail.
В состоянии fail по всем входным символам можно добавить петлю с выходным символом fail.
Проверка выполнимости предиката и нахождения выполняющего набора входных параметров для ряда частных случаев обсуждается в следующем разделе.
На рис. 4 представлен пример автомата различающего автомата для фрагментов M/s\ и M/s2, показанных на рис. 3
Рис. 4. Пример пересечения для среза SliceFSM(М)
Для построения различающего автомата необходимо рассматривать каждый переход автомата М/зь находящегося в состоянии с каждым переходом автомата М/з2, находящегося в состоянии з2, по входному символу т. В худшем случае количество переходов равняется ш-п, где т - число таких переходов для автомата М/я\, п -для Мз2. Для нашего примера количество переходов сократилось до четырех, так как остальные переходы невозможно построить из-за невыполнимости конъюнкции соответствующих предикатов.
Теорема. Состояния si и sj е S контекстно-свободного автомата М различимы тогда и только тогда, когда расширенный автомат M/s\ 0 M/s2 содержит состояние fail. Любая параметризованная входная последовательность, ведущая из начального состояния в состояние fail, является различающей для состояний si и sj.
Следствие (о существовании различающей последовательности для состояний на основе построения FSM-среза расширенного автомата). Пусть SliceFSM(M) есть FSM-срез расширенного автомата М. Состояния si и sj е S автомата М различимы, если расширенный автомат SliceFsм(M)/sl 0 SliceFsм(M)/s2 содержит состояние fail. Любая параметризированная входная последовательность, ведущая из начального состояния в состояние fail, является различающей для состояний si и sj.
Алгоритм 2.3. Построение различающих последовательностей для двух состояний расширенного автомата.
Вход: Расширенный автомат М, состояния s, и sj автомата М.
Выход: Различающая последовательность для состояний si и sj, если состояния sj и sj различимы в автомате SliceFsм(M).
Шаг 1: Строим FSM-срез SliceFsм(M) расширенного автомата М.
Шаг 2: Строим различающий автомат для контекстно-свободных расширенных автоматов SliceFsм(M)\si и SliceFsM(M)\sJ. Если различающий автомат содержит состояние fail, то находим путь, ведущий из начального состояния различающего автомата в состояние fail. Параметризированная входная последовательность ст, помечающая этот путь, является различающей последовательностью для состояний si и sj. КОНЕЦ.
Если различающий автомат не содержит состояния fail, то состояния si и sj не различимы в автомате SliceFSM(M). Конец алгоритма.
3. Алгоритм построения проверяющего теста для проверки ошибок переходов/выходов на выделенных переходах расширенного автомата
В данном разделе мы предлагаем алгоритм построения проверяющего теста в предположении, что ошибки переходов/выходов возможны только на одном заданном переходе расширенного автомата.
Алгоритм 3.1. Построение проверяющего теста для проверки ошибок переходов/выходов на выделенном переходе расширенного автомата.
Вход: Расширенный автомат ES и переход t = (s, x, P, op,y, up, s').
Выход: Тест, проверяющий наличие ошибок перехода/выхода на переходе t (если такой тест можно построить на основе R-среза и среза SliceFSM(ES)).
Шаг 1: Строим FSM-срез SliceFSM<ES) расширенного автомата ES, и R-срез SliceR(ES). Если FSM-срез не содержит перехода t, то конец алгоритма.
Шаг 2: Если в FSM-срезе состояние s достижимо из начального состояния по входной последовательности а и существует переход из состояния s под действием входного символа х, то Шаг 3.
Если состояние s недостижимо в FSM-срезе, то пытаемся построить последовательность, переводящую R-срез из начального состояния в состояние s, после которой выполним предикат перехода t. Если такая последовательность а найдена, то Шаг 3.
Если такая последовательность а не найдена, то конец алгоритма.
Шаг 3: На основе алгоритма 2.3 из раздела 2.3 проверяем, с какими состояниями различимо состояние s' в FSM-срезе. Строим множество различающих по-
следовательностей DS. Если состояние s' в FSM-срезе различимо с к состояниями из n состояний, то полагаемp = k/n-100.
Шаг 4: Строим тест TS = (а x DS), где x - параметризированный входной символ, при котором предикат P принимает значение ИСТИНА; полнота теста для проверки заданного перехода равнаp%. Конец алгоритма.
Данный алгоритм можно использовать для проверки одиночных ошибок на множестве выделенных переходов, проверяя непосредственно каждый переход в цикле. Если в результате алгоритма 3.1 тест не построен, то полагаем полноту проверки данного перехода равной 0. Тогда полнота теста будет усреднена по всем переходам и вычисляется по следующей формуле:
m
I p
р = i =1
m
где m - количество рассматриваемых (подозрительных) переходов.
Заключение
В данной работе предложен метод, позволяющий строить проверяющие тесты с гарантированной полнотой для одиночных неисправностей переходов/выходов на выделенных переходах расширенного автомата. Предложены алгоритмы, позволяющие упростить исходный расширенный автомат с сохранением свойств достижимости и различимости состояний, а также алгоритм построения различающего автомата, позволяющий различить два состояния расширенного автомата, который не содержит контекстных переменных и выходных параметров. Предложенный метод построения проверяющего теста не требует построения эквивалентного конечного автомата, что существенно повышает возможности построения проверяющих тестов данным методом, так как для большинства реальных систем, поведение которых описано расширенным автоматом, эквивалентный конечный автомат практически невозможно построить.
ЛИТЕРАТУРА
1. Petrenko A., Boroday S., Groz R. Confirming configurations in EFSM // IEEE TSE. 2004. V. 30/1. P. 29 - 42.
2. El-Fakih K., S. Prokopenko, N. Yevtushenko, G. Bochmann. Fault diagnosis in extended Finite State Machine // Lecture Notes in Computer Science. 2003. P. 197 - 210.
3. Petrenko A. , Yevtushenko N. , Bochmann G. A. Fault models for testing in context // Proc. of the IFIP 1st Joint International Confeence FORTE/PSTV. Chapman & Hall, 1996. P. 163 -178.
4. El-Fakih K., Kolomeez A., Prokopenko S., Yevtushenko N. Extended finite state machine based test derivation driving by user defined faults // International Conference ICST, 2008.
Статья представлена кафедрой информационных технологий в исследовании дискретных структур радиофизического факультета Томского государственного университета, поступила в научную редакцию 10 марта 2008 г.