На правах рукописи Соболев Михаил Сергеевич МОДЕЛИРОВАНИЕ МНОГОКОМПОНЕНТНЫХ СИСТЕМ ПРИ ПОМОЩИ ВЗАИМОДЕЙСТВУЮЩИХ Х-МАШИН Специальность 05.13.18 – математическое моделирование, численные методы и комплексы программ АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата физико-математических наук Москва - 2010 Работа выполнена на кафедре математических основ управления Московского физико-технического института (государственного университета) Научный руководитель: доктор физико-математических наук, профессор, член-корреспондент РАН ФЛЁРОВ Юрий Арсениевич Официальные оппоненты: доктор физико-математических наук, доцент ТОРМАСОВ Александр Геннадьевич кандидат физико-математических наук НОВИК Константин Валерьевич Ведущая организация: Институт точной механики и вычислительной техники имени С.А. Лебедева РАН Защита состоится « 18 » ноября 2010 года в 10:30 час. на заседании диссертационного совета Д 212.156.05 при Московском физико-техническом институте (государственном университете) по адресу: 141700, г. Долгопрудный Московской обл., Институтский пер. д.9, ауд. 903 КПМ. С диссертацией можно ознакомиться в библиотеке МФТИ (ГУ). Автореферат разослан Ученый секретарь диссертационного совета « 15 » октября 2010 г. Федько О.С. ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ Актуальность темы В настоящее время компьютеризированные системы все чаще используются как для решения задач в промышленности, управлении, информационно-вычислительных системах, бизнесе, так и в быту. Компьютеризации часто подвергаются области, где ранее использовалось специализированное оборудование, предназначенное для выполнения узкого класса задач. Замена такого оборудования компьютеризированными аналогами часто представляется более универсальным, гибким и экономически эффективным подходом. При этом проектирование прибора как такового во многом заменяется проектированием программного обеспечения для компьютерного контроллера. Часто несколько компьютеризированных приборов или программных комплексов работают в составе одной системы, обмениваясь данными и сообщениями. В таком случае совокупность программ этих приборов составляет многокомпонентную программную систему. К надежности такой системы предъявляются очень высокие требования: ошибка в проектировании может привести к самым серьезным последствиям. Жесткие требования предъявляются также к надежности и производительности многокомпонентных систем – серверным приложениям, на которые приходится большая часть функциональной нагрузки в клиентсерверных системах. Кроме того, в серверных приложениях широко используется параллельное программирование, что затрудняет поиск ошибок и оценку производительности. Часто традиционные методы отладки, используемые при разработке клиентских приложений, не обеспечивают должного уровня тестирования. 3 Математическое описание программной системы и требований к ней позволяет улучшить качество критически важных систем, в частности многокомпонентных. При моделировании многокомпонентных систем можно выделить два аспекта: моделирование данных и моделирование алгоритмов. Большинство из существующих формальных методов позволяют полно описать только один из этих аспектов. Для моделирования данных обычно используют иерархические, сетевые или реляционные модели, а для описания алгоритмов – модели, основанные на автоматах (машинах состояний): конечные автоматы, автоматы с магазинной памятью, машины Тьюринга. Одним из немногих методов, позволяющих сочетать достоинства обоих подходов, является моделирование на основании Х-машин. В определении Хмашины к состояниям конечного автомата добавляется память, позволяющая хранить типизированные данные. Это дает возможность описывать как динамические, так и статические аспекты системы. Поскольку многокомпонентные программные системы состоят из набора компонентов, для их моделирования применяются не отдельные Х-машины, а системы взаимодействующих друг с другом Х-машин. Существуют несколько методов построения систем взаимодействующих Х-машин, однако все они не допускают асинхронных коммуникаций между отдельными Х-машинами. Это не позволяет вычислениями. адекватно Кроме того, моделировать с помощью системы с параллельными этих методов невозможно разрабатывать модели поэтапно, начиная с создания и верификации отдельных Х-машин и заканчивая описанием связей между ними. Необходимым условием возможности применения рассматриваемого метода на практике является существование достаточно развитого языка для описания систем взаимодействующих Х-машин, а также программного обеспечения для осуществления моделирования динамического поведения системы. 4 Таким образом, область моделирования при помощи систем взаимодействующих Х-машин содержит много нерешенных или не полностью решенных задач. Цель работы Целью работы является создание метода моделирования многокомпонентных систем, основанного на взаимодействующих Х-машинах, допускающего поэтапную разработку и тестирование компонентов и асинхронную коммуникацию между частями системы, а также проверка применимости этого метода на практике. Таким образом, в работе решаются следующие задачи: 1. Разработка теоретических основ и метода построения систем взаимодействующих Х-машин, допускающих асинхронное взаимодействие между Х-машинами и поэтапное проектирование; 2. Формальная верификация Х-машин, позволяющая осуществлять тестирование компонентов систем взаимодействующих Х-машин; 3. Описание языка для создания спецификаций взаимодействующих Х-машин, а также систем комплекса программ позволяющего моделировать программные системы; 4. Моделирование распределенного хранилища данных с использованием предложенного метода. Научная новизна В работе предложен новый эффективный подход к моделированию многокомпонентных систем, основанный на системах взаимодействующих Хмашин. По сравнению с существующими методами данный подход обладает следующими достоинствами: 5 1. Модульность – система строится из отдельных независимых компонентов, которые могут быть впоследствии использованы при создании других систем; 2. Возможность построения систем с асинхронной коммуникацией; 3. Возможность формальной верификации компонент системы; 4. Удобство практического применения: спецификация разработанного языка описания взаимодействующих X-машин существенно сокращает трудоемкость описания многокомпонентных систем для практического применения при моделировании, создании и сопровождении и отражает требования практики, принятые при разработке и проектировании программных систем. Основные положения, выносимые на защиту 1. Математическая модель системы взаимодействующих Х-машин; 2. Метод формальной верификации Х-машин; 3. Язык для создания спецификаций систем взаимодействующих Х-машин, а также комплекс программ, позволяющий производить моделирование программных систем при помощи таких спецификаций; 4. Модель распределенного хранилища данных, созданная с применением изложенного в работе метода. Теоретическая и практическая ценность Большинство современных многокомпонентных систем относятся к классу реактивных систем. Это означает, что работа системы заключается в получении объектов-запросов, их обработке и формировании ответов. 6 В работе предложен и теоретически описан метод поэтапного моделирования и тестирования компонентов подобных систем. Это позволяет существенно повысить их надежность. Для практического моделирования реактивных систем в работе создан язык XDL и программная библиотека, позволяющая использовать XDL- описания в программах на Java. Апробация и публикации Основные результаты диссертации докладывались и обсуждались на следующих научных семинарах и конференциях: Научные конференции МФТИ «Современные проблемы фундаментальных и прикладных наук» (Долгопрудный, 2008, 2009); IX международная научно-практическая конференция «Исследование, разработка и применение высоких технологий в промышленности» (Санкт-Петербург, 2010); Научные семинары кафедры математических основ управления МФТИ (Долгопрудный, 2007- 2010); Научный семинар отдела математического моделирования систем проектирования Вычислительного центра РАН (Москва, 2010). По теме диссертации опубликовано 7 работ, в том числе две работы – в журналах из Перечня изданий, рекомендованных ВАК РФ [5,6]. Структура и объем диссертации Диссертация состоит из введения, пяти глав, заключения и списка использованных источников. Общий объём работы составляет 110 страниц, список использованных источников содержит 54 наименования. 7 СОДЕРЖАНИЕ РАБОТЫ Во ВВЕДЕНИИ обосновывается актуальность темы диссертации, формулируется ее цели, задачи, представляются результаты, выносимые на защиту, а также определяется научная новизна, теоретическая и практическая значимость полученных результатов. В ГЛАВЕ 1 анализируются существующие методы моделирования многокомпонентных программных систем. Среди них преобладают модели, основанные на типах данных. Несмотря на то, что эти модели значительно облегчают проектирование программного обеспечения, они недостаточны для описания динамического поведения систем. Другие формальные методы, такие как конечные автоматы или сети Петри, подробно описывают динамику системы, но плохо моделируют изменения внутренних данных во время переходов между состояниями. Существуют методы, хорошо описывающие как динамическое, так и статическое поведение системы, например метод диаграмм состояний, однако эти методы недостаточно формализованы. До сих пор нет подхода, позволяющего описывать программные системы достаточно полно и с разумными трудозатратами. Далее приведено используемое формальное определение Х-машины: Определение. Х-машиной называется девятка M (Q, , , M , , F , q0 , M 0 , T ) : Q – конечный набор состояний; , – входной и выходной алфавиты соответственно; M – память, конечный набор типизированных переменных; Ф – конечный набор частичных функций , отображающих входной символ и содержание памяти в выходной символ и новое содержание памяти : M M ; F – функция, отображающая состояние и функцию из Ф в новое состояние f : Q Q ; 8 q0, M0 – начальное состояние и начальное содержимое памяти соответственно; T – множество заключительных состояний. Проведено сравнение вычислительных возможностей автоматных моделей, доказана следующая теорема: Теорема 1.1. Пусть и – два конечных алфавита ( – внешний алфавит машины Тьюринга), а f : * * – частичная функция, вычисляемая машиной Тьюринга (МТ). Тогда существует Х-машина, вычисляющая f . В ГЛАВЕ 2 даётся теоретическое описание системы взаимодействующих Х-машин. Система взаимодействующих Х-машин состоит из нескольких Хмашин, которые могут обмениваться сообщениями. Сообщения отправляются и передаются функциями из в процессе работы Х-машины. Чтение входной строки осуществляется Х-машиной путем чтения стандартного входного порта, а запись в выходную строку – путем записи в стандартный выходной порт. Кроме того, каждая Х-машина может иметь коммуникационные порты, количество которых зависит от количества ее связей с другими Х-машинами. Часто система может включать в себя несколько однотипных Х-машин, различающихся начальным состоянием и начальным содержимым памяти. Для удобства практического моделирования целесообразно разделить описания внутренней структуры Х-машины от описания начальных параметров. Для этого в предлагаемом подходе вводится понятие типа Х-машины. Для преобразования типа Х-машины в Х-машину вводится специальный оператор. В данном методе реализована объектно-ориентированная парадигма, предусматривающая разделение описания внутренней структуры семейства объектов («тип») от описания конкретного объекта («экземпляра типа»). Оператор создания, таким образом, играет роль метода-конструктора. 9 Определение. TM (Q, , , M , , F ) , Типом Х-машины определения элементов называется которой шестерка аналогичны определениям соответствующих элементов Х-машины. Х-машина может быть получена из типа Х-машины с помощью оператора, добавляющего к ней начальное состояние: INST : TM i (q0i , M 0i ) M i , q0i Q, M 0i M . Для того, чтобы полученные Х-машины могли взаимодействовать между собой в составе системы, к ним нужно добавить входные и выходные порты, а также связать эти порты с частичными функциями из Ф. Кроме того, требуется осуществить преобразование множества Ф, для того, чтобы функции-элементы этого множества осуществляли чтение и запись не входных и выходных строк, а входных и выходных портов. Получившийся после этих преобразований объект называется компонентом системы. Определение. Компонент системы взаимодействующих Х-машин – это пятерка XM Ci (M i, IPi , OPi , IPi , OPi ), i N где: M i (Qi , i , i , M i , Ci , Fi , q0i , M 0i ) – X-машина, соответствующая этому компоненту. Единственное отличие от одиночной Х-машины – частичные функции i заменены на Ci (подробное описание будет дано ниже); IPi (ipi , ipi1, ipi 2 ,...,, ipil ), l N –входные порты компонента, ipi – стандартный входной порт; OPi (opi , opi1, opi 2 ,...,, opim ), m N –выходные порты компонента opi – стандартный выходной порт; IPi : Ci IPi – частичная функция, связывающая функцию из Ci с входным портом; OPi : Ci OPi – частичная функция, связывающая функцию из Ci с выходным портом. 10 Множество частичных функций Ci , заменяющее в соответствующей компоненту Х-машине множество i , можно получить из i путем отбора необходимых элементов. В Ci входит четыре типа функций: 1. Функции, принимающие сообщения из стандартного входного порта и записывающие сообщения в стандартный выходной порт: SISOi { : alpha(ipi ) M alpha(opi ) M | ( , m) ( , m) i alpha(ipi ) alpha(opi ) ( ipi ) IPi ( opi ) OPi } 2. Функции, принимающие сообщения из стандартного входного порта и записывающие сообщения в коммуникационный выходной порт: SIOSi { : alpha (ipi ) M alpha (opij ) M | ( , m) ( , m) i alpha(ipi ) alpha (opij ) ( ipi ) IPi ( opij ) OPi j m} 3. Функции, принимающие сообщения из коммуникационного входного порта и записывающие сообщения в стандартный выходной порт: ISSOi { : alpha(ipij ) M alpha(opi ) M | ( , m) ( , m) i alpha(ipij ) alpha(opi ) ( ipij ) IPi ( opi ) OPi j l} 4. Функции, принимающие сообщения из коммуникационного входного порта и записывающие сообщения в коммуникационный выходной порт: ISOSi { : alpha(ipij ) M alpha(opik ) M | ( , m) ( , m) i alpha(ipij ) alpha(opik ) ( ipij ) IPi ( opik ) OPi j m k l} Объединяя их, получаем Ci SISOi SIOSi ISSOi ISOSi . 11 Рис 1. Четыре типа функций компонента системы. Для наглядного графического изображения используются специальные обозначения: круг и ромб. Круг означает, что функция получает данные из коммуникационного порта, а не из стандартного входного порта. Аналогично, ромб обозначает вывод данных в выходной коммуникационный порт. На рис. 1 представлены четыре возможных типа функций. Последней стадией моделирования системы является создание связей между портами входящих в систему Х-машин и связей между портами этих Хмашин и самой системой: Определение. Системой взаимодействующих Х-машин называется XS ((M i )1 i n , IPsys , OPsys , CR, IR, OR) , где: M i – i-й компонент в системе; l ), l N –входные порты системы; IPsys (ip1sys ,..., ipsys m ), m N –выходные порты системы; OPsys (op1sys ,..., opsys CR (OP IP) , где OP n OPi , IP IPi i 1 i 1 n – коммуникационное отношение. Если (op, ip) CR, op OP, ip IP , то это значит, что сообщения из выходного порта компонента op отправляются во входной порт компонента ip ; 12 IR ( IPsys , IP) – отображение входных портов системы во входные порты компонентов. Если (ipsys , ip) IR, ipsys IPsys , ip IP , то это значит, что сообщения, поступающие во входной порт системы ipsys , транслируются во входной порт компонента ip ; OR (OP OPsys ) –отображение системы в выходных выходные порты портов компонентов системы. Если (op, opsys ) OR, op OP, opsys OPsys , то это значит, что сообщения из выходного порта компонента op транслируются выходной порт системы opsys . Таким образом, можно выделить несколько последовательных шагов описания системы взаимодействующих Х-машин: 1. Описание типов Х-машин, которое может осуществляться независимо от описания системы в целом. Для создания новой системы можно взять ранее описанные типы Х-машин из других систем; 2. Описание отдельных Х-машин. Каждый экземпляр получается из соответствующего типа путем применения оператора INST. При создании индивидуальной Х-машины задается ее начальное состояние и начальное содержимое памяти; 3. Описание коммуникационных портов, соответствующих каждой из Х-машин, и определение связей этих портов с функциями из Ф. Таким образом, полностью определяется набор компонентов, составляющих систему; 4. Описание взаимодействия компонентов путем задания связей между их коммуникационными портами; описание взаимодействия системы с внешним окружением путем создания коммуникационных портов системы и их связывания с портами компонентов; 13 5. В случае необходимости, может осуществляться расширение системы путем добавления новых компонентов. В ГЛАВЕ 3 предложен новый способ формальной верификации Х- машин с помощью так называемой логики X-CTL. Темпоральные логики представляют собой обобщение логики предикатов операторами, использующими понятие времени (модальные операторы). С помощью этих операторов удобно конструировать логические выражения, которые верны в некий определенный момент времени. В литературе предложена и описана темпоральная логика CTL (Computational Tree Logic), которая позволяет описывать системы с ветвлением вычислений. Выражения CTL позволяют представлять знания естественным образом, особенно в случае ветвящихся временных выражений. В логике CTL вводятся пять временных операторов, определенных на свойствах, которые принимают некоторые значения вдоль пути вычислений (свойствами могут быть как атомарные высказывания, так и другие CTLвыражения): Xp: свойство должно p быть истинным в состоянии, непосредственно следующим за начальным; Fp: свойство p должно стать истинным хотя бы в одном состоянии в будущем или в текущем состоянии; Gp: свойство p должно быть истинным во всех будущих состояниях и в текущем состоянии; будущем pUq: свойство q должно выполниться в некотором состоянии в (или, возможно, в текущем состоянии), свойство p должно выполняться во всех состояниях до этого состояния (не включительно); pRq: свойство q должно быть истинным во всех состояниях, предшествующих состоянию, в котором станет истинным свойство p, и в самом этом состоянии. В этом случае говорят, что p «освобождает» q. Если p ложно во всех состояниях, то оператор эквивалентен Gq. 14 Кроме того, существуют два префикса для описания ветвлений в дереве вычислений: A f : выражение f верно для всех ветвей вычисления; E f : выражение f верно хотя бы для одной ветви вычислений. Доказана Теорема 3.1. Любое выражение СTL может быть преобразовано так, что будет содержать только операторы , , X, U и E. Логика CTL имеет ограниченную применимость при верификации Хмашин, так как ее операторы не учитывают содержимое памяти. Для осуществления формальной верификации Х-машин, в данной работе предлагается дополнить логику CTL. Назовем новую расширенную логику Х-CTL. Для того, чтобы верификация Х-машины при помощи логики X-CTL была возможна, требуется установить дополнительное ограничение на значения памяти: множество всех возможных значений каждой переменной в памяти должно быть конечно. Учитывая эти ограничения, введем следующие обозначения: M (0), M (1), ... – переменные в памяти; M q – множество всех возможных значений памяти в состоянии q. Такое множество конечно, и его можно представить в виде M q {m0 , ..., mi , ..., mk }, 0 i k , где mi ( M i (0), M i (1), ...) – i-е возможное состояние памяти; Запись qmij означает, что Х-машина находится в состоянии q j Q и при этом q память имеет значение mi M j . Состояния q j Q , таким образом, расщепляются на метасостояния qmij . 15 Обозначим через MProp множество всех возможных предикатов, состоящих из переменных памяти и атомарных выражений, например, M (1) 0 или M (3) 2 . В логике X-CTL введем два новых оператора: M x ( p MProp) – выражение p верно при любом состоянии памяти; mx ( p MProp) – существует состояние памяти, в котором выражение p верно. Введем понятие выражения состояния (ВС), выражения пути вычислений(ВПВ) и выражения в памяти (ВП). Эти типы выражений определяются рекурсивно. Если p MProp , то p является выражением в памяти (ВП). Если a и b являются ВП, то a , a b и a b также являются ВП. Если a является ВП, то M x a и mx a являются ВС; Если f и g являются ВС, то выражения f , f g , f g являются Если f и g являются ВС, то выражения X f , F f , G f , f U g , ВС. f R g являются ВПВ. Если f является ВПВ, то A f и E f являются ВС. Доказана Теорема 3.2. Любое выражение X-СTL может быть преобразовано так, что будет содержать только операторы , , ,EX mx ,EU mx ,EG mx . Корректные выражения в X-CTL являются ВС. Для того, чтобы дать формальное определение верификации Х-машин при помощи Х-CTL, понадобятся определения означивающей функции, пути вычислений и отношения M , q | f . 16 LM : QM 2 MProp Определение. – функция означивания метасостояний предикатами из MProp. p MProp верно в метасостоянии qmij p LM (qmij ) . Так же определим тогда и только тогда, когда LM (q j ) k i0 LM (qmij ) . Определение. Путь вычислений в Х-машине – M это последовательность состояний q0 , q1, ... , такая, что для любого i 0 , : (qi , , qi 1) F . Будем обозначать i –отрезок пути , начинающийся с i-го состояния. Будем обозначать first( ) – первое состояние в пути . Определение. Запись M , q | f означает, что выражение X-CTL f выполняется в состоянии q в X-машине M. В случае если p является ВП, M , qmi | p означает , что p выполняется в метасостоянии qm i . Если g является ВПВ, то запись M , | g означает , что g выполняется вдоль некоторого пути в Х-машине M. Для прочих случаев отношение | определяется по индукции (будем считать, что a, b – ВП, f , f1, f 2 – ВС, а g1, g2 – ВПВ): M , qmij | p p LM (qmij ) , где p MProp ; M , qmij | a M , qmij | a ; M , qmij | a b M , qmij | a и M , qmij | b ; M , qmij | a b M , qmij | a или M , qmij | b ; M , q j | M x a i 0 : M , qmij | a ; M , q j | mx a i 0 : M , qmij | a ; 17 M , q | f M , q | f ; M , q | f1 f 2 M , q | f1 и M , q | f 2 ; M , q | f1 f 2 M , q | f1 или M , q | f 2 ; M , | Xf M , first ( 1) | f ; M , | Ff i 0 : M , first ( i ) | f ; M , | Gf i 0 : M , first ( i ) | f ; M , | f1Uf 2 k 0 : M , first ( k ) | f 2 , 0 j k , M , first ( j ) | f1 ; M , | f1Rf 2 для j 0 , если для i j M , first ( i ) | f1 , то M , first ( j ) | f 2 ; M , q | Ag M , | g для всех таких путей , что first ( ) q ; M , q | Eg существует такой путь , что first ( ) q и M , | g . Теперь можно формализовать задачу верификации Х-машины при помощи CTL: Определение.Пусть дана Х-машина M (Q, , , M , , F , q0 , M 0 , T ) и X-CTL выражение определения f . Тогда проверка модели осуществляется путем множества состояний, удовлетворяющих f( {q* Q*| M , q*| f } ). Х-машина считается прошедшей проверку, если ее начальное состояние входит во множество Q * . В ГЛАВЕ 4 предложен язык описания систем взаимодействующих Хмашин и приведено краткое описания синтаксиса этого языка. Описана библиотека для моделирования разнообразных систем с помощью Х-машин. Системы Х-машин задаются при помощи языка XDL, после чего преобразуются в автоматическом режиме в исходный код Java. XDL 18 представляет собой подмножество языка XML. Структура файла описания системы Х-машин задается с помощью XML Schema. Раздел <x-system> является корневым для описания системы Х-машин, все остальные тэги по отношению к нему вложенные. В файле описания может быть только один тэг <x-system>. В открывающем тэге раздела указывается файл с описанием языка XDL. В значении параметра name у тэга <x-system> указывается имя системы Х-машин. Это имя используется в качестве полного (с указанием пакета) для Java-класса, генерируемого из описания. Далее приводится описание возможных подразделов тэга <x-system>. Внутри раздела <parameters> задаются возможные параметры, которые могут в дальнейшем быть использованы в описании системы. Значения параметров задаются перед созданием экземпляра соответствующего Javaкласса. В XDL-спецификации в дальнейшем на параметры можно ссылаться с помощью конструкции #param(имя_параметра). В разделе <defines> задаются «псевдонимы» выражений, которые будут перед обработкой файла заменены на их значения. Например, для удобства чтения кода, можно задать псевдонимы численных констант. Все описания Х-машин находятся внутри раздела <x-machines>. Описание системы, включающей заданные ранее Х-машины, содержится в разделе <system>. В этом разделе задаются связи между отдельными Хмашинами, определяющие конфигурацию системы. Система Х-машин может обладать собственными входными и выходными портами. Запись и чтение этих портов осуществляется при помощи специальных методов класса ХSystem, в класс-потомка которого преобразуется ХМL-описание системы. Порты системы задаются в разделе <ports>, который по своему синтаксису аналогичен соответствующему разделу Х-машины. Для объединения Х-машин в систему требуется задать связи между их входными и выходными портами, а также между портами Х-машин и портами самой системы. Задание таких связей осуществляется в разделе <connections>. 19 Отдельная связь задается тэгом <connection>, в качестве параметров которого указывается входной и выходной порт, которые требуется связать. Для того, чтобы XDL-описания могли быть использованы для реального моделирования систем взаимодействующих Х-машин, требовалось разработать программное обеспечение, позволяющее осуществлять моделирование системы в динамике. Основным классом библиотеки является XSystem, представляющий собой базовый класс для систем Х-машин. Экземпляр этого класса является представлением системы Х-машин, заданной при помощи ХDL-описания. Взаимодействие пользовательской программы с этим объектом заключается в записи данных во входные порты и чтении содержимого выходных портов. Система, представляемая объектом ХSystem, может находиться в одном из следующих состояний: «готовность» и «работа». Сразу после создания система находится в состоянии «готовность», переключить в состояние «работа» её можно с помощью метода run(). При этом Х-машины, составляющие систему, начинают выполняться и пользователь получает возможность записи во входные порты. Метод reset() позволяет вернуть систему в состояние «готовность», при этом все Х-машины в системе устанавливаются в начальное состояние, а в их память записывается начальное содержимое. Это дает возможность осуществлять несколько независимых запусков системы без необходимости создания новых объектов XSystem. После того, как система переведена в состояние «работа», возможна запись во входные порты при помощи метода input(). Содержимое выходных портов считывается в асинхронном режиме при помощи класса-обработчика, указанного при создании. Если при создании или взаимодействии с системой происходит ошибка, то возбуждаются исключения, базовым классом для которых является XException. В ГЛАВЕ 5 приведен пример моделирования при помощи системы взаимодействующих Х-машин. Для моделирования была выбрана часто 20 используемая схема хранения данных – распределенное хранилище. Целью моделирования является выяснение экспериментальной зависимости производительности и надежности в зависимости от параметров системы. Предлагаемая модель распределенного хранилища данных включает в себя два типа Х-машин: Х-машину для моделирования узла хранилища и Хмашину для моделирования функций централизованного управления хранилищем. Эти Х-машины называются узел(HOST) и хранилище (STORE). Рис 2. Система Х-машин, моделирующая распределенное хранилище данных. Схема коммуникации в модели представлена на рис. 2. Коммуникация Хмашин в системе осуществляется путем передачи сообщений через выходные порты и приема сообщений в входные порты. Все сообщения являются объектами типа MSG. В системе определен ряд типов сообщений, которые записываются в поле type структуры MSG. Тип сообщения является целым числом(int), но для удобства описания для каждого типа предусмотрен символьный псевдоним, описанный в разделе <defines>. 21 Построенная система Х-машин была использована для моделирования распределенного хранилища данных с переменным количеством узлов. В качестве данных, находящихся в хранилище, рассматривался набор объектов, размер которых генерировался случайным образом. Каждый из узлов производил последовательное чтение и запись случайно выбранного объекта. Таким образом, моделировалось использование распределенного хранилища несколькими серверами, на каждом из которых исполняется экземпляр вебприложения. Рис 3. Зависимость среднего времени чтения от количества узлов. После того, как каждый из узлов выполнил 1000 циклов чтение-запись, вычислялось среднее время чтения для данного количества узлов и в систему добавлялся новый узел. Результат моделирования приведен на графике (рис. 3). Как видно из графика, не наблюдается роста времени чтения при увеличении размеров системы. Отклонения времени чтения от константы можно объяснить статистическими погрешностями. Хорошее согласие с экспериментальными данными, полученными при тестировании реально существующей системы, позволяет говорить об адекватности модели в данном случае. 22 В работе предложена модель распределенного хранилища данных, реализованная в виде системы взаимодействующих Х-машин. Поскольку асинхронная коммуникация является важной частью распределенного хранилища данных, реализация такой модели с использованием существующих методов построения систем Х-машин была бы сильно затруднена. Кроме того, модели для узла и хранилища независимы и могут быть подвергнуты тестированию по отдельности, а также могут быть использованы в качестве составных частей других систем. Показано, что язык XDL является достаточно выразительным и удобным средством для практического описания систем взаимодействующих Х-машин. В ЗАКЛЮЧЕНИИ приведены основные результаты исследования. ОСНОВНЫЕ РЕЗУЛЬТАТЫ И ВЫВОДЫ ДИССЕРТАЦИИ 1. Предложен многокомпонентных математический систем, использующий метод моделирования взаимодействие Х-машин. Допускается асинхронное взаимодействие между Х-машинами. Возможно поэтапное проектирование Х-машин, реализующих компоненты системы. Доказана эквивалентность вычислительных возможностей Х-машины и машины Тьюринга. 2. Предложена верификации темпоральная Х-машин. Доказана логика X-CTL достаточность для формальной минимального набора операторов. 3. Разработан язык XDL для описания систем взаимодействующих Х- машин. Создан программный комплекс в виде Java-библиотеки для моделирования динамического поведения программных систем по их XDLспецификациям. 4. Предложенный метод использован распределенного хранилища данных. 23 для моделирования ПУБЛИКАЦИИ ПО ТЕМЕ ДИССЕРТАЦИИ 1. Соболев М.С. Описание больших систем при помощи Х-машин // Современные проблемы фундаментальных и прикладных наук. Часть VII. Управление и прикладная математика: Труды 51-й научной конференции. – М. – Долгопрудный: МФТИ, 2008. – С.20–22. 2. Соболев М.С. Описание больших систем при помощи Х-машин // Моделирование и обработка информации: Сб.ст./Моск.физ.-тех.ин-т. – М., 2008. –С. 236-245. 3. Соболев М.С. Автоматные модели вычислений // Моделирование и обработка информации: Сб.ст./Моск.физ.-тех.ин-т. – М., 2009. –С. 76-85. 4. Соболев М.С. Описание больших систем при помощи Х-машин // Современные проблемы фундаментальных и прикладных наук. Часть VII. Управление и прикладная математика: Труды 52-й научной конференции. – М. – Долгопрудный: МФТИ, 2009. – С.122–123. 5. Соболев М.С. Описание систем при помощи X-машин // Информационные технологии и вычислительные системы – 2009. – №4 – С. 22-27. 6. Соболев М.С. Использование логики X-CTL для формальной верификации Х-машин // Информационные технологии и вычислительные системы – 2010. – №3 – С.47-52. 7. Соболев М.С. Автоматные модели вычислений// Высокие технологии, исследования, промышленность. Том 3. Труды IX международной научнопрактической конференции «Иследование, разработка и применение высоких технологий в промышленности»/ Изд-во Политехн. Ун-та – Санкт-Петербург, 2010.–С.130-132. 24 Соболев Михаил Сергеевич МОДЕЛИРОВАНИЕ МНОГОКОМПОНЕНТНЫХ СИСТЕМ ПРИ ПОМОЩИ ВЗАИМОДЕЙСТВУЮЩИХ Х-МАШИН Автореферат Подписано в печать 11.10.2010 Формат 60х90/16. Усл печ л 1.0. Тираж 100 экз. Заказ №Ф-114. Московский физико-технический институт (государственный университет) Печать на аппарате Rex-Rotary Copy Printer 1280. НИЧ МФТИ. 141700, г Долгопрудный Московской обл, Институтский пер, 9,