УДК 519.688
РЕАЛИЗАЦИЯ НАДЕЖНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ЗАДАЧ ТЕХНИЧЕСКОЙ ДИАГНОСТИКИ ИНФОРМАЦИОННО-УПРАВЛЯЮЩИХ
СИСТЕМ
© 2011 г. А.Н. Гуда *, Т. С. Калинин * *, А.В. Черное * *
*Ростовский государственный университет *Rostov State Transport
путей сообщения University
**Ростовский государственный строительный **Rostov State Building
университет University
Описан комплекс программ реализации линейных двоичных разностных моделей технической диагностики информационно-управляющих систем. Эти модели предназначены для нового класса быстрых вычислительных методов дифференциальной технической диагностики.
Ключевые слова: модели неисправностей; техническая диагностика; программный комплекс; информационно-управляющие системы.
In article the software realization linear binary difference models of technical diagnostics of informationsystems systems is described. These models are intended for a new class offast computing methods of differential technical diagnostics.
Keywords: fault models; technical diagnostics; software; information-control systems.
Введение
Под надежным программным обеспечением будем понимать программные комплексы, построенные на основе предлагаемых в статье линейных двоичных разностных моделей.
Целью данной статьи является описание возможностей программного обеспечения, предназначенного для практической апробации и проверки ряда новых алгебраических моделей функциональной технической диагностики информационно-управляющих систем. Часть из математических моделей, реализованных в комплексе программ, является развитием известного подхода к технической диагностике, основанного на применении булева дифференциального исчисления [1, 2]. В остальных моделях использованы идеи двоичного анализа [3], основанного на диадиче-ской производной Гиббса [4], функциях и (спектральных) преобразованиях Уолша на конечных группах [5], но заметим, что такой подход к контролю технического состояния информационно-управляющих систем пока используется довольно редко. Тем не менее авторы считают его перспективным.
В обоих подходах, различающихся по основным положениям и математическому аппарату, на взгляд авторов, есть, по крайней мере, два аспекта, позволяющих объединить их для целей моделирования в технической диагностике. Во-первых, и булево дифференциальное исчисление, и диадическая производная Гиббса являются попытками перенесения континуального дифференциального исчисления на булевы функции. Естественно, способ определения производ-
ной булевой функции в вышеперечисленных подходах различен, но основной контекстный смысл производной одинаков - с её помощью можно выполнить линеаризацию и различить изменение значения булевой функции в зависимости от изменения её аргументов, а в случае спектрального подхода и направление этого изменения. Во-вторых, оба упоминаемых подхода к дифференцированию могут быть описаны в терминах теории конечных групп порядка 2 и конечных полей характеристики 2, где образующее множество состоит из двоичных 0 и 1, а операцией является сумма по модулю 2 (в случае конечного поля еще умножение по модулю 2). В этой связи авторы считают подходящим объединяющим названием линейные двоичные разностные модели. Заметим, что в научной литературе есть распространение этих подходов на дифференцирование не только булевых, но и многозначных логических функций, например в работах [2, 6].
Место линейных двоичных разностных моделей в задачах технической диагностики
Методы технической диагностики сложных объектов, к которым относятся информационно-управляющие системы, весьма различны. Одним из факторов, существенно влияющих на эффективную организацию процесса диагноза, являются математические модели, определяющие суть принципов и содержание методов диагностики. Среди них свою нишу заняли логические методы распознавания ошибок и отказов, использующие математическую логику для диагностики состояний систем и установления логи-
ческих связей между признаками и состояниями объектов. Логические методы технической диагностики на данное время можно считать достаточно развитыми, и они включают системы тестового диагноза и системы функционального диагноза (рис. 1 а, б).
Тестовые
Рабочие воздействия
Средства диагноза
Ответы
Результаты диагноза
б
Рис. 1. Организация: а - систем тестовой диагностики; б - систем функциональной диагностики информационно-управляющих систем
На первых этапах развития логических методов распознавания (конец 1960-х гг.) цифровые управляющие устройства автоматизированных систем в основном состояли из дискретных логических элементов и микросхем малой степени интеграции, которые имели высокую стоимость и невысокое быстродействие, поэтому значительное внимание уделялось решению задачи локализации ошибки с целью замены неисправного элемента. В связи с возрастающей сложностью цифровых устройств, блочно-модульным подходом к построению информационно-управляющих систем и требованиям их функционирования в реальном времени задачи, выполняемые логическими методами распознавания ошибок, на данное время несколько поменялись. На первый план выдвинулась задача быстрого обнаружения неисправного модуля, а затем уже, если позволяет степень интеграции элементов, решение задачи локализации элемента в модуле. Приведенные далее элементы математических моделей предназначены, прежде всего, для быстрого обнаружения факта логической ошибки в модулях аппаратного и программного обеспечения информационно-управляющих систем. На их основе можно развить и реализовать методы локализации места неисправности, но это не являлось целью данной работы. Как было указано выше, математические модели, входящие в рассматриваемый в статье программный комплекс, можно разделить на две разновидности, которые подробно описаны в статьях авторов: базируемые на дифференциальном исчислении булевых функций [2] и на основе бинарных производных Гиббса [7], что и реализовано в обсуждаемом в статье программном комплексе.
Сравнительный анализ систем компьютерной алгебры: возможности логических вычислений в конечных группах и полях
Программные пакеты символьных вычислений, обобщаемые под названием «системы компьютерной алгебры», заняли достойное место в аппарате поддержки научно-исследовательской деятельности в области математического моделирования. Возможности таких пакетов программ относятся как к диалоговым режимам работы с ними, так и имеют режимы программирования, связываемые с наличием у многих из распространенных пакетов встроенных языков программирования. Функциональное наполнение современных систем символьных вычислений в области компьютерного моделирования включает многие разделы современной математики. К таким реализациям относятся следующие:
1. Высшая арифметика, которая включает вычисления с вещественными и целыми числами произвольной точности, модулярную арифметику, комбинаторные вычисления.
2. Алгебраические преобразования, включающие разложение, упрощение, факторизацию алгебраических выражений.
3. Линейную алгебру, в которой реализуются матричные вычисления и тензорный анализ.
4. Решение уравнений и систем уравнений, однородных дифференциальных уравнений, систем уравнений, в том числе в частных производных, решения на основе преобразования Лапласа.
5. Тригонометрические вычисления.
6. Вычисления и преобразования в математическом анализе, численные методы дифференциального и интегрального исчислений.
7. Вычисления в теории чисел.
8. Реализацию вычислений в области высшей алгебры, в том числе в теории групп, колец полей и других алгебраических структур.
В основе любой из перечисленных систем компьютерной алгебры, да и вообще в основе программного комплекса, относящегося к такому классу, лежит псевдоязык математических преобразований, по сути относящийся к разновидности языков программирования высокого уровня. Устройство псевдоязыка математических преобразований может быть как императивным, так и функциональным, однако во всех случаях исполнение инструкций такого языка производится интерпретирующим образом. Алфавит, описание данных и конструкции псевдоязыка символьных компьютерных алгебр включают в себя типы данных, алгебраические и логические операции, встроенные функции. Псевдоязык обычно позволяет записывать программы пользователя, в связи с чем имеет набор управляющих конструкций и обычными возможностями создания программ являются:
- поддержка основных принципов организации вычислительного процесса;
- модульность либо объектная ориентированность принципов построения программ;
а
- функции экспорта-импорта данных между программами и основной программой.
Как и любые другие программы, системы компьютерной алгебры можно разделить по принципу доступности исходного кода продукта на:
- системы с закрытым кодом, к ним относятся Derive, Fermat, Macsyma Maple , Magma , Mathematica, MuPAD, Reduce и некоторые менее известные;
- системы с открытым кодом, среди них наиболее известными являются Axiom , Euler , GAP , Maxima , PARI / GP , SAGE , Xcas, Yacas .
Лидирующие позиции в области универсальных систем компьютерной алгебры занимают коммерческие продукты Maple , Mathematica .
Рассмотрим теперь подробнее возможности оперирования в среде компьютерной алгебры с булевыми и логическими функциями.
В системе Maple для работы с логическими функциями реализован модуль logic, который может оперировать с символьным представлением булевых функций. Булевы функции задаются в виде выражений, использующих переменные и операторы вида &and , &or , ¬, &ff, &implies , &nor , &nand , &xor. Выражения могут преобразовываться к каноническому виду (функция Canonicalize()) с опциями в виде дизъюнктивной и конъюнктивной нормальной формы либо суммы произведений по модулю 2. Функция BooleanSimplify() минимальной суммы произведений простых импликант для задаваемой булевой функции. Функции Tautology(), Contradicion() предназначены, соответственно, для определения факта, является ли заданная булева функция тавтологией либо противоречием.
Функция Dual() генерирует для заданной булевой функции двойственное выражение, заменяя операцию &and на операцию &or и наоборот. Для определения эквивалентности двух логических выражений используется функция Equivalent(). Функция Normalize является аналогом функции Canonicalize(). Функции Ran-dom() и TruthTable() предназначены, соответственно, для задания произвольной булевой функции (возможно в виде дизъюнктивной нормальной формы, конъюнктивной нормальной формы, суммы по модулю 2 произведений) и построения таблицы истинности.
Программный комплекс символьных вычислений Wolfram Mathematica имеет значительные возможности для обработки булевых функций. Базовые логические операции могут задаваться в текстовой и символьной формах. К ним относятся: And(&&, л),
Or (И, v), Not (!, -) , Nand (Л), Nor (V) , Xor(v),
Xnor (v), Implies , Eqvivalent (ö) , Majority . В
записи булевых функций возможно использование символических значений True и False , а функция Boole [ ] выполняет преобразование символических значений в 1 и 0.
Для конструирования булевых функций со многими переменными предназначены функции пакета BooleanFunction [ ] и BooleanCountingFunction [ ],
последняя из которых создает булеву функцию, истинную при некотором заранее заданном наборе переменных. Функции BooleanMinterms [ ],
BooleanMaxterms [ ] позволяют определять минтер-мы и макстермы из булевой функции. Функции Conjunction [ ] и Disjunction [ ] позволяют составлять булеву функцию из комбинаций множества переменных, связанных между собой операциями And и Or соответственно. Для работы со структурными элементами булевых функций предназначена BooleanTable [ ], позволяющая строить таблицу истинности. Выделять переменные, участвующие в построении функции, можно с помощью BooleanVari-ables[]. Основные преобразования логических функций между различными базисами выполняются функцией BooleanConvert [ ]. Эта функция поддерживает
значительное число базисов представления булевых функций: дизъюнктивной нормальной формы, конъюнктивной нормальной формы, суммы по модулю 2 произведений, алгебраической нормальной формы, в базисах (Nand, Not) , (Nor, Not), (And, Not) ,
(Or, Not) , (Implies, Not) в виде бинарной диаграммы решений. Минимизация булевых функций выполняется с помощью функции BooleanMinimize [ ], причем
результат представим в любом из вышеперечисленных базисов представления функций. Для решения задачи об истинности логической функции при некоторых наборах переменных предназначена функция SatisfiableQ [ ], а определить факт, является ли функция тавтологией, можно с помощью функции TautologyQ [ ].
В отличие от других аналогичных систем символьных вычислений в пакете Mathematica реализованы функции работы с кванторами ForAll [ ],
Exists [ ], Resolve [ ]. Функция LogicalExpound [ ]
применяет к булевой функции дистрибутивные законы разложения.
Из некоммерческих программных продуктов некоторыми возможностями преобразований логических функций обладает пакет символьных вычислений Sage (Software for Algebra and Geometry), в котором
реализован модуль Propcalc . Основными возможностями модуля являются функции: propcalc. formula ( ), позволяющая записывать булевы функции с применением операций &(" И"), |("Или"), ~ ("Не") , Л("Исключающее Или") , ^ ("Импликация") , ö ("Эквивалентность"); propcalc.truthtable ( ) - построение таблицы истинности; propcalc.convert _ dnf ( )-
преобразование к дизъюнктивной нормальной форме; propcalc.convert _ cnf ( ) - преобразование
к конъюнктивной нормальной форме; propcalc.
booleanformula.eq ( ) - проверка эквивалентности
булевых функций; propcalcbooleanformula.simlify ( ) —
упрощение функции методом Квайна - МакКласки.
Другие системы компьютерной алгебры не реализуют преобразования булевых функций, и стоит отметить, что ни одна из приведенных выше наиболее распространенных систем не обладает возможностями вычислений в логическом дифференциальном и интегральном исчислениях и разложений типа Рида - Мал-лера.
Перейдем теперь к обсуждению функциональных возможностей перечисленных распространенных программных пакетов в области вычислений в конечных полях.
Для работы с конечными полями в системе Maple реализован модуль GF(), вызываемый командой readlib(GF()), в котором есть одноименная функция GF(): —, обладающая следующими опциями вызова. Общий формат вызова функции GF(p, k, a), где a - простое число характеристики поля, p -положительное целое число, a - неприводимый полином степени k над конечным полем характеристики p. Данная функция позволяет строить поля порядка pk . Функции GF : —input() и GF : —output предназначены для построения характеристического полинома конечного поля. Функции GF: —ConvertIn() и GF : —ConvertOut() имеют аналогичное назначение и существуют для поддержки обратной совместимости версий программы Maple. Нейтральные элементы относительно операций сложения и умножения задаются соответственно GF : — zero , GF: —one . Функции GF : —trace, GF : —norm , GF : —order предназначены для определения числовых характеристик поля: следа, нормы и мультипликативного порядка элементов поля. Функция GF: —random возвращает случайный элемент из поля GF k. Функция
GF: —PrimitiveElement генерирует примитивный элемент поля, а функция GF: —IsPrimitiveElement определяет, является ли заданный элемент примитивным элементом поля.
Основные функциональные возможности комплекса программ
Програмный комплекс и его модули были реализованы на языке программирования C ++ с
использованием кроссплатформенного компилятора GNU g + + / gfortran и кросплатформенной среды разработки визуальных интерфейсов QtDesigner и библиотек Qt4. Программный комплекс выполнен в виде opensource продукта и его исходный код может
быть скомпилирован в исполняемый код на платформе Windows / Linux / Solaris / MacOS . Язык реализации - английский.
Разработанный программный комплекс для моделирования и решения задач технической диагностики информационных систем имеет модульную структуру и может быть использован в различных уровнях функционирования.
1. Уровень символьных вычислений на математическом псевдоязыке.
2. Уровень визуального редактирования и отображения комбинационных схем.
3. Уровень программирования и использования подключаемых модулей.
На уровне символьных вычислений в среде пакета можно работать в двух основных режима (так, как и в упомянутых в предыдущем параграфе распространенных системах символьной компьютерной алгебры): интерактивном и программном. Интерактивный режим аналогичен работе с высокоинтеллектуальным калькулятором. В окне символьных вычислений, показанном на рис. 2, вводится требуемое выражение, и в следующем за ним параграфе получаем результат его вычисления. В пошаговом режиме можно решать достаточно сложные математические задачи, в процессе работы действия пользователя будут документированы в окне истории команд, а результаты вычислений можно сохранить в файл, а также контролировать текущие значении переменных, как, например, показано на рис. 3. Для использования такого режима не требуется специальных знаний от пользователя программного комплекса, только знание о синтаксисе используемых выражений и встроенных функциях псевдоязыка вычислений.
Рис. 2. Главное окно программного комплекса
Рис. З. Вычисления в режиме высокоинтеллектуального калькулятора
Все возможности реализованного в среде псевдо- пригодных для самотестируемых схем, как показано языка символьных вычислений открываются в про- на рис. 7. граммном режиме работы, включающем конструкции, обеспечивающие ход выполнения программы, пример показан на рис. 4.
- —| — fl^^H. 1 = 1® \щ£2шт 1
File Edi Project^ Not ü And &
1г -^Я —a
и й-~ 0- •
Or П
и г -1 о - Hot
л •B -
1 Main [21,13) о
Рис. 6. Окно редактирования и конвертирования логической формулы по комбинационной схеме
Рис. 4. Режим программирования: организация циклов
Главное меню программы также содержит стандартные диалоги работы с файлами, подменю инструментальных средств и пошаговой отладки программы. Сохраняемые файлы по своему внутреннему формату совместимы с де-факто стандартом форматов программного комплекса Maple .
Примеры реализации алгоритмов численных вычислений
В программный комплекс включен модуль визуализации логических схем LogicalCircuit, который вызывается из подменю Tools основной программы. Модуль позволяет в визуальном режиме редактировать комбинационную схему из дискретных логических элементов, как показано на рис. 5. Логические элементы являются объектами схемы, и существует возможность преобразования визуальной логической схемы в логическую функцию, записываемую на псевдоязыке, как показано на примере рис. 6.
Рис. 5. Окно редактирования комбинационной схемы f = х1х2 V Xз x4
Следующим этапом является выбор разложения логической схемы в различных базисах, в частности,
Рис. 7. Выбор базиса разложения комбинационной схемы
Программный комплекс для реализации численных вычислений методов выполнен в виде библиотек, подключаемых к основному программному комплексу. Далее рассматриваются основные функции этих библиотек. Разработанная библиотека на языке C ++ представляет собой инструментарий, переносимый между различными аппаратными платформами. В качестве иллюстрации приведем описание некоторых классов. Для вычисления в конечных полях и полях расширений:
- GF2 - основной класс для вычислений в поле GF(2).
- GF2P - основной класс для вычислений полиномов в поле GF(2).
- GF2PFactoring - процедуры для факторизации полиномов над GF(2), а также для конструирования минимальных и неприводимых полиномов.
- GF2PVec - процедуры с реализацией векторов фиксированной длины над полем GF(2).
- GFPQ - основной класс реализации вычислений над полями расширений GFpQ .
- GF2PQEX - процедуры реализации модулярной арифметики и вычисления характеристических многочленов для GFpQ .
- GF2PQEXFactoring - процедуры для факторизации полиномов над GFpQ , также для конструирования минимальных и неприводимых полиномов.
Таким образом, в статье описываются основные характеристики комплекса программ, предназначенного для реализации линейных двоичных разностных моделей технической диагностики информационно-управляющих систем. Эти модели являются основой для реализации нового класса быстрых вычислительных методов дифференциальной технической диагностики.
Работа выполнена при поддержке РФФИ (проект 09-08-00097-а)
Литература
1. Бохманн Д., Постхоф Х. Двоичные динамические системы : пер с нем. М., 1986.
2. Чернов А.В. Модели и методы дискретного анализа и синтеза в задачах технической диагностики информационных систем : монография. Ростов н/Д., 2009.
3. Голубов Б.И. Элементы двоичного анализа : 2-е изд.. М., 2007.
4. Хармут Х. Применение методов теории информации в физике. М., 1989.
5. Голубов Б.И., Ефимов А.В., Скворцов В.А. Ряды и преобразования Уолша. Теория и применения М., 1987.
6. Yanushkevich S.N., Shmerko V.P., Lyshevski S.E. Logic Design of NanoICs. CRC Press, 2005.
7. Чернов А.В., Калинин Т.С. Спектральные преобразования дискретных функций для вычисления логических производных // Обозрение прикладной и промышленной математики. М., 2010. Т. 17, вып. 6. С. 1049 - 1050.
Поступила в редакцию 14 апреля 2011 г.
Гуда Александр Николаевич - д-р техн. наук, профессор, проректор по научной работе и инновациям, заведующий кафедрой информатики, Ростовский государственный университет путей сообщения. Тел. (863)272-63-50. E-mail: [email protected]
Калинин Тимур Сергеевич - аспирант, кафедра «Прикладная математика и вычислительная техника», Ростовский государственный строительный университет. Ph. (863)263-10-82. E-mail: [email protected]
Чернов Андрей Владимирович - д-р техн. наук, доцент, заведующий кафедрой «Прикладная математика и вычислительная техника», Ростовский государственный строительный университет. Тел. (863)263-10-82. E-mail: [email protected]
Guda Alexander Nikolaevich - Doctor of Technical Sciences, professor, head of department «Informatics», Vice-rector, Rostov State Transport University. Ph. (863)272-63-50. E-mail: [email protected]
Kalinin Timur Sergeevich - post-graduate student, department «Applied Mathematics and Computers», Rostov State Building University. Тел. (863)272-63-50. E-mail: [email protected]
Chernov Andrey Vladimirovich - Doctor of Technical Sciences, assistant professor, head of department «Applied Mathematics and Computers», Rostov State Building University. Ph. (863)263-10-82. E-mail: [email protected]