Проектирование программных моделей сетевых протоколов для встроенных систем
Разработка метода проектирования программных моделей протоколов передачи данных. Разработка алгоритма разметки раскрашенной сети Петри для осуществления верификации архитектурных диаграмм программных моделей. Метод построения раскрашенной сети Петри.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | автореферат |
Язык | русский |
Дата добавления | 02.12.2017 |
Размер файла | 514,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Автореферат
диссертации на соискание ученой степени
Проектирование программных моделей сетевых протоколов для встроенных систем
05.13.11 - Математическое и программное обеспечение
вычислительных машин, комплексов и компьютерных сетей
кандидата технических наук
Оленев Валентин Леонидович
Санкт-Петербург, 2011
Работа выполнена на кафедре «Информационных систем» в Федеральном государственном бюджетном образовательном учреждении высшего профессионального образования «Санкт-Петербургский государственный университет аэрокосмического приборостроения» (ГУАП).
Научный руководитель: доктор технических наук Шейнин Юрий Евгеньевич
Официальные оппоненты:
доктор технических наук, профессор Водяхо Александр Иванович
кандидат технических наук, доцент Щекин Сергей Валерьевич
Ведущая организация Санкт-Петербургский институт информатики и автоматизации РАН
Защита состоится «____» __________ 2011 г. в ______ часов на заседании диссертационного совета Д 212.233.02 при Федеральном государственном бюджетном образовательном учреждении высшего профессионального образования «Санкт-Петербургский государственный университет аэрокосмического приборостроения» по адресу: 190000, Санкт-Петербург, ул. Б. Морская, 67, ГУАП.
С диссертацией можно ознакомиться в библиотеке ГУАП.
Автореферат разослан «____» __________ 2011 г.
Ученый секретарь диссертационного совета доктор технических наук, профессор Осипов Л.А
программный алгоритм протокол данные
Общая характеристика работы
Актуальность темы. Встроенные системы стали использоваться повсеместно: в автомобилестроении, мобильной индустрии и других вещах, без которых жизнь современного человека уже сложно представить. Многие встроенные системы состоят не только из одного процессора, а могут содержать целые сети-на-кристалле. Составляющие элементы таких сетей должны взаимодействовать между собой, руководствуясь жесткими правилами для достижения требований энергопотребления, физических размеров и стоимости, выдвигаемых к встроенной системе. Такие правила называют протоколами для встроенных систем. Разработка протоколов передачи данных для таких систем является очень трудоемкой задачей, состоящей из нескольких этапов: она начинается с концептуального проектирования системы и заканчивается сбором устройства, работающего по заданному протоколу. Однако в процессе разработки спецификации протокола зачастую возникают моменты, когда необходимо выбирать тот или иной путь решения проблемы, анализировать различные подходы к реализации и проверять спецификацию на ошибки разработчиков. Именно поэтому программное моделирование становится все более необходимым элементом проектирования протоколов передачи данных для встроенных систем. Оно позволяет обнаружить ошибки на ранних этапах разработки спецификаций, значительно уменьшить само время разработки, а так же в дальнейшем использовать полученные программные модели для тестирования реальных плат.
Программное моделирование протоколов ведется во многих крупных компаниях, таких как Nokia, STErricsson, Qualcomm, в работах, курируемых Европейским Космическим Агентством (ESA), в разработках авиационных компаний и т.д. Однако каждая компания ведет разработку своими путями. Методы проверки на программных моделях широко используются и описаны в работах таких авторов как Э. М. Кларк, О. Грамберг и Д. Пелед, Ю.Г. Карпов, в результатах исследований компании Cadence. Однако на данный момент не существует четко сформулированных и описанных формальных методов организации программного обеспечения для моделирования стеков протоколов встроенных систем, что осложняет их разработку и реализацию. Поэтому, разработка методики построения программного обеспечения для написания программных моделей протоколов передачи данных для встроенных систем и верификации этих программных моделей является актуальной проблемой.
В данной диссертации предлагается использовать широко используемый в последнее время подход компонентного проектирования, описанный в работах Э. Дж. Брауде, Кулямина В.В., Э. Ванга и К. Квана, для разработки набора стандартных модулей, предназначенного для построения архитектурных диаграмм программных моделей протоколов встроенных систем. А также предлагается разработать методику, позволяющую строить архитектурные диаграммы на основе этого набора модулей, что позволит значительно упростить процесс проектирования программной модели. Кроме того, предлагается осуществлять верификацию полученных архитектурных диаграмм на предмет ошибок построения и организации взаимодействий между модулями, пользуясь теорией сетей Петри и в частности, теорией раскрашенных сетей Петри, развитой и доработанной К. Енсеном. Результатом такой работы может быть сгенерированный из полученной архитектурной диаграммы скелет программной модели на языке SystemC.
Целью работы является разработка методов и алгоритмов проектирования программных моделей сетевых протоколов для встроенных систем. Разработка методики проектирования программного обеспечения для реализации и верификации архитектурных диаграмм программных моделей стеков протоколов передачи данных, обеспечивающей повышение эффективности разработки и корректности программных моделей.
Для достижения поставленной цели в работе решались следующие задачи:
· разработка метода проектирования и анализа программных моделей протоколов передачи данных;
· разработка набора типовых модулей для построения архитектурных диаграмм программных моделей протоколов встроенных систем;
· разработка метода организации межмодульных взаимодействий в программных моделях сетевых протоколов;
· разработка метода перехода от архитектурной диаграммы программной модели к интерпретирующей ее раскрашенной сети Петри;
· разработка алгоритма разметки раскрашенной сети Петри для осуществления верификации архитектурных диаграмм программных моделей;
· исследование и разработка метода перехода от раскрашенной сети Петри к эквивалентной ей классической сети Петри в целях применения методов анализа классических сетей Петри к раскрашенным сетям;
· разработка методики верификации архитектурной диаграммы на основе данных, полученных при анализе набора классических сетей Петри.
Методы исследования. Для решения поставленных задач использовались методы теории имитационного моделирования, теорий сетей Петри и раскрашенных сетей Петри, методы теории программирования и принципы объектно-ориентированного и компонентного программирования, методы теории множеств, теории комплектов.
Научной новизной обладают следующие результаты работы:
1. метод проектирования архитектурной диаграммы программной модели протокола передачи данных для встроенных систем по его спецификации;
2. набор модулей для проектирования архитектурных диаграмм программных моделей протоколов передачи данных для встроенных систем;
3. метод построения раскрашенной сети Петри на основе архитектурной диаграммы программной модели;
4. алгоритм разметки раскрашенной сети Петри для осуществления анализа движения фишек при помощи деревьев достижимости;
5. метод верификации архитектурной диаграммы программной модели протокола на основе результатов анализа сетей Петри.
Практическая значимость диссертации заключается в том, что в ней предложена методика построения программного обеспечения для разработки программных моделей протоколов и стеков протоколов передачи данных во встроенных системах, обеспечивающая упрощение и ускорение этого процесса разработки. Для апробации результатов работы был разработан программный комплекс ESPMS, реализующий методы и алгоритмы, описанные в данной диссертационной работе.
Внедрение и реализация результатов работы. Основные исследования и результаты диссертационной работы использованы в Институте высокопроизводительных компьютерных и сетевых технологий Государственного Университета Аэрокосмического Приборостроения для разработки программных моделей протоколов передачи данных для таких компаний как Nokia и ОАО «НИИ Авиационного оборудования». Результаты внедрения подтверждены соответствующими актами.
Апробация результатов работы. Основные положения и результаты диссертации докладывались и обсуждались на конференции Cadence CDNLife (2008 г.), Научных сессиях ГУАП (2008, 2009, 2010 гг.), а также международных конференциях FRUCT в 2009 и 2010 гг.
Публикации. По теме диссертации опубликовано семнадцать печатных работ, в том числе две статьи в рецензируемых журналах по перечню ВАК.
Основные положения, выносимые на защиту:
1. Метод перехода от спецификаций протоколов передачи данных к архитектурным диаграммам программных моделей этих протоколов, составленных из набора типовых модулей;
2. Метод формального описания архитектурных диаграмм программных моделей раскрашенными сетями Петри;
3. Алгоритм разметки раскрашенных сетей Петри для осуществления анализа движения фишек по сети Петри методом построения деревьев достижимости;
4. Метод верификации архитектурной диаграммы программной модели на основе результатов анализа достижимости набора классических сетей Петри, эквивалентных раскрашенной сети Петри по поведению.
Объем и структура работы. Диссертационная работа состоит из введения, списка используемых сокращений, четырех глав, заключения, списка использованных источников и трёх приложений. Диссертация содержит 144 страницы машинописного текста, 56 рисунков и 16 таблиц, а также приложения объемом 38 страниц, включая 10 рисунков и 3 таблицы. В списке использованной литературы 119 наименований.
Краткое содержание работы
Во введении обоснована актуальность выбранной темы, определена цель и сформулированы решаемые в работе задачи. Перечислены новые научные результаты, полученные при выполнении работы, показаны практическая значимость и апробация работы, описаны внедрение и реализация результатов. Приведены основные положения, выносимые на защиту.
В первой главе диссертации дано понятие встроенных систем и разрабатываемых для них сетевых протоколов, а также описан сам процесс разработки этих протоколов.
Встроенной системой называют специализированную компьютерную систему управления, встроенную непосредственно в устройство, которым она управляет. Она основана на работе микропроцессоров и спроектирована таким образом, что конечный пользователь не может перепрограммировать ее.
Сетевым протоколом называют набор правил, а также технических процедур, которые регулируют порядок и позволяют осуществлять соединение и обмен данными между двумя и более включёнными в сеть устройствами. Сетевые протоколы, проектируемые для межкристальных коммуникаций во встроенных системах, ориентированы на минимальное энергопотребление, минимальные аппаратные затраты, высокую точность и скорость передачи данных, не высокую стоимость реализации. Протоколы передачи данных по своей сути являются параллельными системами, поскольку ориентированы на одновременное выполнение нескольких задач на разных уровнях. Например, независимо друг от друга и параллельно работают сервисные точки доступа между уровнями, параллельно работают сами уровни. Данные, передаваемые на удаленное устройство и принимаемые от него, тоже передаются параллельно, принимающая и передающая части сетевого устройства тоже работают независимо и параллельно. Далее в диссертации под термином протокол подразумеваются протоколы для межкристальных коммуникаций во встроенных системах.
Также в первой главе диссертации дано понятие программной модели. Программная модель является представлением объекта, системы или понятия в форме, отличной от реальной, но приближенной к алгоритмическому описанию, включающей набор данных, характеризующих свойства системы и динамику их изменения со временем. Исходя из параллельности протоколов, сделан вывод, что программные модели протоколов передачи данных для встроенных систем являются параллельными программными системами. В работе дано понятие верификации и проверки проектируемых сетевых протоколов на программной модели.
В первой главе показано место программного моделирования в процессе разработки стеков протоколов передачи данных на различных этапах проектирования, показана сложность и трудоемкость этих процессов. Сформулированы требования к языку проектирования и написания программных моделей протоколов, основываясь на которых был выбран язык проектирования SystemC.
На основе проведенного анализа в первой главе показано, что на данный момент не существует четко сформулированных и описанных методов организации программного обеспечения для моделирования стеков протоколов для встроенных систем, что осложняет их разработку и реализацию. Программные модели разрабатываются каждый раз полностью с нуля и абсолютно разными способами. Зачастую выбранные способы являются не самыми удобными. Отсутствие формализованных подходов и методик написания подобного программного обеспечения в значительной степени усложняет процесс проектирования и тестирования встроенных систем. Разработка методов и алгоритмов проектирования программных моделей могла бы ускорить работу и облегчить процесс разработки.
Ставится задача создания метода компонентного проектирования программных моделей протоколов, позволяющего строить программные модели протоколов передачи данных на основе набора типовых модулей и верифицировать эти модели на предмет ошибок построения. Процесс написания программной модели включает проектирование архитектурной диаграммы, на которой будут присутствовать все необходимые модули и межмодульные связи. Следуя определению, данному П. Клементсом, архитектурной диаграммой называется описание составляющих элементов программы, их внешних свойств и установленных между ними отношений. Внешними свойствами называются те предположения, которые сторонние элементы могут выдвигать в отношении данного элемента - в данном случае это интерфейсы, предоставляемые модулем. Таким образом, исходя из требований к архитектурным диаграммам, при проектировании должны быть определены их программные элементы и приведена информация об их взаимоотношениях, в состав которой должен входить целый ряд структур, каждая из которых должна решать свои определенные задачи. Архитектурная диаграмма ориентирована на независимую и параллельную работу каждого из модулей. При приходе данных в интерфейс модуль начинает выполняться, поэтому данные, идущие по архитектурной диаграмме двумя разными путями, обрабатываются параллельно и независимо.
При построении архитектурной диаграммы указывается задача, решаемая каждым модулем, но не алгоритм ее решения. То есть на архитектурной диаграмме отображается модуль, цель которого выполнить определенную задачу протокола, описанную в спецификации. Из этой спецификации известно, какие данные поступают на вход модуля, и какие должны получиться на выходе. При этом алгоритм работы модуля при проектировании архитектурной диаграммы не описывается. Количество модулей на архитектурной диаграмме обусловлено количеством задач, выполняемых протоколом, каждая из которых описана в спецификации. Типы модулей также определяются в зависимости от задачи, которую этот модуль должен выполнять в рамках модели. Исходя из спецификации протокола, определяются требуемые данные, которые поступают на уровень протокола или в модуль. Зная задачу, выполняемую этим модулем, и отталкиваясь от описания этой задачи в спецификации, определяются данные, которые являются для модуля выходными. Взаимосвязи между модулями расставляются, основываясь на связях между задачами, выполняемыми протоколом. Если после выполнения одной задачи над данными, они обрабатываются следующей задачей, то между модулями архитектурной диаграммы, соответствующими этим задачам, ставится связь, передающая нужные данные. Так формируются маршруты следования данных между модулями.
На основе такой архитектурной диаграммы в дальнейшем генерируется «скелет» программной модели. Скелетом программной модели называется код, полученный (возможно, автоматически) на основе архитектурной диаграммы; он включает в себя описания модулей, портов, интерфейсов и методов, отвечающих за передачу данных между модулями. Вышеописанный метод приведен в следующей главе диссертации. На основе скелета программной модели может писаться код, описывающий алгоритмы работы каждого из модулей.
Вторая глава начинается с описания основных принципов компонентного проектирования. Даются понятия архитектурного проектирования программных моделей. Приведено описание принципа модульности, который предписывает организовывать сложную систему в виде набора более простых систем. Основываясь на этом, дано понятие компонента или модуля программной модели протокола и приведено описание типа, к которому относятся компоненты, разработанные в данной диссертационной работе. На основе этих свойств определен набор модулей, необходимых и достаточных для программного моделирования выделенного класса протоколов.
Также во второй главе определен ряд свойств спецификаций протоколов, к которым могут быть применены методы, описанные в данной диссертации:
1. Моделируемый протокол должен быть описан по слоям или составлять целиком один уровень;
2. Между уровнями могут быть описаны сервисные точки доступа;
3. Спецификация протокола должна описывать структуру передаваемых данных относительно каждого уровня;
4. Спецификация должна содержать описание основных функций протокола, описанных для каждого из уровней.
Под данную классификацию подходит большинство стандартов для стеков протоколов передачи данных встроенных систем.
Разработан метод перехода от спецификации стандарта протокола передачи данных к архитектурной диаграмме программной модели этого протокола. Метод позволяет составить архитектурную диаграмму протокола по слоям (уровням) при помощи предложенного в работе набора типовых модулей: модуль инициализации (IM), стандартный модуль (CM), симплексный канал (SC), дуплексный канал (DC), сервисная точка доступа (SAP). Взаимодействие модулей осуществляется посредством портов и интерфейсов.
Множество модулей, необходимых для реализации программных моделей протоколов передачи данных для встроенных систем выглядит следующим образом:
M={IM, CM, SC, DC, SAP}
Каждый модуль имеет порты () и интерфейсы (), которые представляют из себя структуры, описанные в языке SystemC (sc_port и sc_interface). Каждый интерфейс описывает ряд методов, определенных в модуле, которые могут быть вызваны на исполнение через порт удаленного модуля, связанный с данным интерфейсом.
Модуль инициализации IM предназначен для инициализации подмодулей, то есть использование модуля инициализации позволяет применять вложенность архитектурной диаграммы. Это дает возможность структурировать архитектурную диаграмму программной модели и логически разбивать ее на уровни моделируемого протокола. Пример использования модуля инициализации показан на рис. 1.
Рис.1 Пример использования модуля инициализации
Модуль не учавствует в процессе передачи данных по модели, не имеет входов и выходов (портов и интерфейсов).
Стандартный модуль CM может иметь от нуля до нескольких входов и выходов (N портов и M интерфейсов). Особенности работы каждого CM (функциональность) задаются разработчиком в дальнейшем написании соответствующей программы на языке SystemC. Модуль показан на рис. 2.
Рис. 2 Стандартный модуль
Предикат срабатывания модуля обозначим RCM.
RCM(data1, data2,…, datan) = ,
где datai - данные, поступившие на i-й интерфейс модуля. То есть срабатывание модуля происходит при поступлении данных на вход одного или нескольких интерфейсов.
Модуль симплексного канала SC, рис. 3, принимает и передает данные одного или нескольких типов в одном направлении. Объекты передаются через канал путем записи в очередь FIFO и чтения из нее. Используется для моделирования передачи данных между устройствами или какими-то отдельными модулями, в которых требуется накопление данных.
Рис. 3 Симплексный канал
Предикатом срабатывания модуля обозначим RSC.
RSC(data) = ()
где data - данные, поступившие на интерфейс модуля. То есть срабатывание модуля происходит при поступлении данных на вход интерфейса. Затем данные записываются в очередь FIFO.
Модуль дуплексного канала DC, рис. 4, принимает и передает данные одного или нескольких типов в обоих направлениях. Объекты передаются через канал путем записи в очередь FIFO и чтения из неё. Используется для моделирования передачи данных между устройствами или какими-то отдельными модулями, в которых требуется накопление и двунаправленная передача данных.
Рис. 4 Дуплексный канал
Предикатом срабатывания модуля обозначим RDC.
RDC(data1, data2) =
где datai - данные, поступившие на i-й интерфейс модуля (i={0,1}). То есть срабатывание модуля происходит при поступлении данных на один или оба интерфейса. Каждый из интерфейсов связан с разными портами. Затем данные записываются в очередь FIFO, связанную с интерфейсом, на который эти данные пришли.
Модуль типа «Сервисная точка доступа» (SAP) является более сложной, чем канал структурой, которая способна передавать различные примитивы. Примитивами называются передаваемые аргументы в виде структур данных, в данном случае это методы с набором параметров. И очередь FIFO, расположенная в SAP, должна быть адаптирована к приему разного вида примитивов с разным количеством аргументов.
Рис. 5 Сервисная точка доступа
Зачастую введение одного или нескольких SAP определяет использование дополнительных стандартных модулей для организации межслоевой коммуникации. Это позволяет вынести функции создания примитивов и чтения данных из примитивов из самого модуля SAP. Графическое изображение модуля SAP показано на рис. 5.
Предикатом срабатывания модуля обозначим RSAP.
RSAP(prim1, prim2) = ,
где primi - примитив, поступивший на i-й интерфейс модуля (i={0,1}). Срабатывание модуля происходит при поступлении примитивов на один или оба интерфейса, каждый из которых связан с разными портами. Затем примитивы со всеми содержащимися в них данными записываются в очередь FIFO, с которой связан интерфейс, на который этот примитив пришел. На следующем такте модельного времени данные передаются дальше через соответствующий порт.
Доказана необходимость и достаточность данного набора модулей для моделирования описанного класса протоколов.
Архитектурная диаграмма может быть использована для генерации «скелета» программной модели на языке SystemC. Однако для генерации программной модели недостаточно просто построить архитектурную диаграмму, необходимо также проверить эту диаграмму на наличие определенного класса ошибок, способных нарушить работу программной модели.
Проведен анализ видов ошибок, которые могут быть допущены при построении архитектурной диаграммы. Выделены следующие виды ошибок архитектурной диаграммы, задачи выявления которых поставлены в диссертации:
1. ошибочная постановка связи порт/интерфейс;
2. ошибочное описание вызываемого метода С++ класса;
3. ошибочное указание или отсутствие описания данных в методе;
4. отсутствие названия порта;
5. отсутствие названия интерфейса;
6. отсутствие названия метода С++ класса;
7. отсутствие названия модуля;
8. отсутствие связи порт/интерфейс;
9. повторное название интерфейса в рамках программной модели;
10. повторное название модуля в рамках программной модели;
11. повторное название порта в рамках одного модуля;
12. повторное название метода С++ класса в рамках одного модуля.
Любая спецификация протокола, соответствующая вышеописанным требованиям, содержит описание протокола по уровням. Для каждого уровня присутствует описание функциональности, которую этот уровень обеспечивает в рамках работы протокола. На основе этого описания при проектировании архитектурной диаграммы программной модели определяется количество и назначение используемых модулей. Количество моделируемых уровней протокола формирует количество IM модулей, количество описанных задач, выполняемых каждым уровнем, формирует количество CM модулей, используемых для моделирования уровня. Для выполнения каждой отдельной задачи предусматривается отдельный модуль программной модели, выбранный из определенного в диссертации набора модулей. Если какая-либо задача уровня включает накопление данных в рамках одного модуля, то вместо CM - используется DC или SC модуль. Если между уровнями в спецификации описаны сервисные точки доступа - для них используется модуль SAP.
Таким образом, для каждого уровня формируется множество модулей Y, в котором содержатся имена модулей. Каждое имя должно быть уникально в рамках программной модели.
Y={y0, y1, y2,…, yx} (1)
Спецификация протокола описывает данные, которые являются входными и выходными для уровней протокола. То есть имеется описание pdu (protocol data unit) относительно каждого из уровней (формат пакета, сегмента, кадра и т.п.). Следовательно, из спецификации можно определить формат данных, поступающих на вход модели, и получаемых на выходе. Далее, в зависимости от задач, выполняемых протоколом на том или ином уровне, определяется, меняются ли данные при прохождении через тот или иной модуль, или нет. Если данные меняются - можно выделить новый тип данных, идущий на выход модуля и, соответственно, дальше по модели. Так составляется множество данных, которые должны присутствовать в модели.
D={d1, d2, d3,…,dn} (2)
Это множество данных может быть дополнено в процессе дальнейшего проектирования архитектурной диаграммы.
На основе полученных множеств модулей и данных составляются две таблицы:
· Таблица требований спецификации, в которой отражается, в какие модули должны попасть те или иные данные;
· Таблица взаимосвязей, на основе которой строится архитектурная диаграмма, отображаются взаимосвязи между модулями, а так же данные, методы С++ классов и передаваемые с их помощью данные.
Таблица 1. Таблица требований спецификации
Номер |
Данные |
Модули |
|
0 |
a0 |
y0, … yf |
|
… |
|||
n |
an |
yk, … ym |
В Таблице требований спецификации отражены сведения, какие данные ai, согласно спецификации, должны попасть в какие модули yj. Каждому данному из множества D присваивается свой номер и ставится в соответствующий столбец. Данные в столбец «Модули» ставятся в зависимости от того, входными для каких модулей эти данные являются по спецификации. Модулей для одного данного может быть указано несколько, если данные идут маршрутом через несколько модулей, или идут по нескольким модулям параллельно. Пример такой таблицы показан в Таблице 1.
По результатам данной таблицы составляются множества модулей X, в которых должны побывать данные. Если поле в столбце «Модули» пустое, то для этого данного ai множество Xi также будет пустым. Например,
X0 = {y0, … yn}; (для а0) (3)
Процесс построения таблицы взаимосвязей выглядит следующим образом. В таблицу для каждого модуля выписываются методы С++ классов, отвечающие за передачу и прием данных в модуль.
yx: {z0, z1, …, zn} (4)
Для каждого метода С++ класса ставится признак, говорящий о выполняемых им функциях. По признаку, поставленному в первом столбце таблицы, методы для каждого модуля делятся на два множества: входящие и исходящие. Например,
In(y0)={ z0, z1,…, zm} (5)
Out(y0)={ zm+1, zm+2,…, z m+n}
Данные, которые передаются или принимаются при помощи этого метода С++ класса, заносятся в третий столбец таблицы. Это делается на основе вышеопределенного множества D. Например,
A(yx, zm) = {a1, a2, …, an} (6)
Затем необходимо определить и обозначить порты и интерфейсы модулей. Например,
B(yx) = {if1, if2, …, ifi}
B(yx+1) = {port1, port2, …, porti} (7)
Если порт связан с интерфейсом, то вызываемая портом и предоставляемая интерфейсом функция - это один и тот же метод. Соответственно, они будут иметь одно и то же название в таблице.
Далее по связям порт-интерфейс ставятся метки (числовые значения), которые идентифицируют связи между блоками. Это в дальнейшем упростит процесс верификации архитектурной схемы. Для этого производятся следующие операции над множествами:
Если выполняется условие
(8)
тогда для метода С++ класса zn в модулях yx и yt ставится одна числовая метка g. Для портов, не связанных ни с каким интерфейсом числовые метки не ставятся; аналогично для интерфейсов, не связанных с портами. Если порт связан с несколькими интерфейсами или наоборот, интерфейс - с несколькими портами, то одинаковая числовая метка также ставится для всех портов и интерфейсов. Это описывает те случаи, когда данные параллельно отправляются в несколько модулей архитектурной диаграммы и дальше работа осуществляется в параллельных потоках.
G = {g0, g1, …, gn} (9)
Пример, как может выглядеть архитектурная диаграмма, показан на рисунке 6.
Рис. 6 Пример вида архитектурной диаграммы
Пример окончательного вида таблицы взаимодействий отображен в Таблице 2.
Подобная таблица предоставляет основные данные, необходимые для создания архитектурной диаграммы:
1) Названия модулей;
2) Методы С++ классов, отвечающие за межмодульное взаимодействие, и их названия;
3) Названия портов и интерфейсов между модулями;
4) Методы С++ классов, которые должны быть описаны в соответствующих интерфейсах;
5) Взаимосвязи между портами и интерфейсами;
6) Данные, необходимые для верификации архитектурной диаграммы.
По данным полученной таблицы строится архитектурная диаграмма программной модели, а также производится формальная проверка на следующие виды ошибок:
· отсутствие названия порта;
· отсутствие названия интерфейса;
· отсутствие названия метода С++ класса;
· отсутствие названия модуля;
· отсутствие связи порт/интерфейс;
· повторное название интерфейса в рамках программной модели;
· повторное название модуля в рамках программной модели;
· повторное название порта в рамках одного модуля;
· повторное название метода С++ класса в рамках одного модуля.
Остальные потенциальные ошибки обнаруживаются в архитектурной диаграмме путем ее верификации. Такой метод верификации описан в третьей главе диссертации.
Таблица 2. Таблица взаимосвязей (пример)
Признак |
Метод |
Данные |
Порт/Интерфейс |
Метка |
|
y0 |
|||||
> |
zm |
a0 |
ifj |
g0 |
|
… |
|||||
an |
|||||
> |
zm+1 |
a1 |
ifj+1 |
g1 |
|
… |
|||||
an+k |
|||||
… |
|||||
yx |
|||||
< |
zn |
a1 |
porti |
g1 |
|
… |
|||||
an+k |
|||||
… |
После построения таблицы взаимосвязей добавляются данные во множество D. Данные, отсутствующие во множестве, но присутствующие в столбце «Данные» таблицы взаимосвязей, добавляются во множество D.
D={type1 data1,type2 data2,type3 data3,…,typem datan} (10)
Также во второй главе диссертации приведено описание, как на основе таблицы взаимосвязей можно сгенерировать скелет программной модели протокола передачи данных.
В третьей главе обоснован выбор теории сетей Петри для верификации архитектурных диаграмм, получаемых по представленному во второй главе методу. Приведен анализ сетей Петри, включающий применение их для нужд программного моделирования, формальное описание сетей Петри и их модификация - раскрашенные сети Петри. Применение сетей Петри дает возможность рассматривать в динамике перемещение данных по архитектурной диаграмме, в том числе и параллельное перемещение. Разметка сети Петри дает возможность увидеть, какие фишки находятся в каких позициях, или какие данные находятся в каких модулях архитектурной диграммы. Применение раскрашенных сетей Петри дает возможность различать типы данных и проводить анализ их движения по архитектруной диаграмме независимо друг от друга.
Сеть Петри - это набор
N = (Р, Т, F, W, M0)
где P - конечное множество позиций;
Т - конечное множество переходов;
F - конечное множество дуг.
А W: F > N\{0} и M0: P > N -- две функции, называемые соответственно кратностью дуг и начальной разметкой.
Раскрашенная сеть Петри - это кортеж
Т =(У,P,T,F,K,C,G,E,I)
где У - конечное множество цветов;
K - функция позиций, ставит в соответствие каждой дуге пару, состоящую из связанных с ней перехода и позиции;
C - функция цвета, представляет собой список цветов, определенных для каждой позиции;
G - предохраняющая функция, представляет собой список булевых выражений, связывание перехода должно удовлетворять каждой из этих функций (может быть не определена или быть true для всех переходов)
E - функция выражений дуг, определяется по означиванию выражения дуги, определенного на множестве цветов для конкретной позиции;
I - функция инициализации позиций, ставит в соответствие каждой позиции переменную, определенную на множестве цветов (может быть определена как конкретный цвет или отсутствовать);
Предложен метод построения раскрашенной сети Петри по архитектурной диаграмме программной модели протокола. Это позволяет описать структуру модели формальными методами, а так же применить их для анализа архитектурной диаграммы и её верификации. Метод включает в себя ряд шагов для составления раскрашенной сети Петри, а так же алгоритм для ее маркировки.
Для построения раскрашенной сети Петри по архитектурной диаграмме протокола необходимо сопоставить составляющие архитектурной диаграммы с формализмами теории сетей Петри. Построение осуществляется по следующему методу:
1) каждому модулю yn, участвующему в передаче данных, сопоставляется позиция сети Петри pn;
2) каждому вызываемому С++ методу и передаваемым с его помощью данным zx(ay) по связи порт-интерфейс сопоставляется свой переход ty (в том случае, когда метки g в таблице взаимосвязей в модулях совпадают (G(yx,zn)=G(yt,zn)));
3) порту () сопоставляется дуга к переходу;
4) интерфейсу () сопоставляется дуга из перехода;
5) комбинации (тип данных, имя переменной), которые должны быть переданы от модуля к модулю (ay), задают цвета дуг, фишек и позиций;
Раскрашенная сеть Петри, построенная по вышеописанному методу, будет обладать следующим рядом свойств, выделяющих ее из общего класса раскрашенных сетей Петри в отдельный подкласс:
1. Каждой дуге a сопоставляется не выражение, а одна переменная, отвечающая за цвет фишки, по которой данный переход сработает. Таким образом, по одной дуге фишки разных цветов ходить не могут;
2. Каждому переходу t сопоставляется не выражение, а так же, как и в предыдущем случае, цвет фишки;
3. Функция позиций I также будет содержать лишь данные о цвете и количестве фишек, поставленных в конкретную позицию;
4. Дуги, входящие и исходящие из одного перехода могут иметь лишь одинаковый цвет.
После составления сети Петри на основе данного метода, необходимо ее разметить. В соответствии с множеством D (формула 10) и порядковым номерам таблицы требований, каждой комбинации (тип данных, имя переменной) присваивается свой цветной маркер, однозначно идентифицирующий это данное среди других. Переходу, где осуществляется только вызов метода С++ класса без передачи каких-либо данных в модуль (<вызов>), фишки не присваиваются и он не анализируется в процессе проверки. Для примера с рисунка 6 распределение цветов показано в Таблице 3.
Таблица 3. Распределение цветов
Номер |
Тип данных |
Название |
Цвет |
Пример |
|
0 |
тип0 |
a0 |
Черный прерывистый |
_ _ _ |
|
1 |
тип1 |
a1 |
Серый |
____ |
|
2 |
тип2 |
a2 |
Черный |
____ |
Пример построенной раскрашенной сети Петри показан на рисунке 7а.
В соответствии с теорией сетей Петри примем следующие обозначения:
Pm - множество позиций для разметки (до начала выполнения алгоритма Pm=P);
Pnext - множество позиций, в которые осуществляется переход из текущей позиции;
Сm - множество уже поставленных цветов (до начала выполнения алгоритма Cm= Ш);
С(tout) - множество цветов, определенных для переходов из текущей позиции;
С - полученное множество цветов фишек, которые ставятся в текущей позиции;
Разметка раскрашенной сети Петри производится, начиная с позиции, соответствующего модулю SAP архитектурной диаграммы или определенного разработчиком как точка начала разметки, по следующему алгоритму:
1) Определяется, в какие позиции Pnext осуществляется переход из текущего pi;
2) Определяются цвета фишек, которые необходимо поставить в текущей позиции по формуле
C = С(tout)\ Cm (11)
3) Во множество Cm записываются новые цвета, определенные для данной позиции.
Cm = Cm?С (12)
4) Обновляется множество неразмеченных позиций
Pm=Pm\pi (13)
5) Определяются позиции для осуществления следующего перехода:
Pnext=Pm ? Pnext (14)
Поскольку позиций в Pnext может быть несколько, то далее разметка происходит для каждого из этих позиций параллельно.
a. Если Pnext=Ш, то останавливается дальнейшая разметка этой ветви;
b. Если нет, то переходим к разметке позиций, определенных в Pnext, начиная для каждого из них с п.1;
Алгоритм разметки останавливается, когда нет новых мест для осуществления перехода. Конечность алгоритма доказана.
После проведения разметки получим раскрашенную маркированную сеть Петри, которую можно применять для анализа архитектурной диаграммы и, следовательно, работы и поведения программной модели. Пример разметки такой сети с рисунка 7а показан на рисунке 7б. Разметка начата с позиции p0.
Для раскрашенных сетей Петри не применимы методы анализа классических сетей Петри, поэтому в работе применен принцип построения классической сети Петри, эквивалентной данной раскрашенной сети по поведению, что является достаточным для анализа архитектурной диаграммы программной модели протокола.
Таким образом, с учетом вышеописанных замечаний, алгоритм построения сети Петри, эквивалентной раскрашенной, выглядит следующим образом:
1. Каждой позиции p в раскрашенной сети Петри Т сопоставляется столько позиций в эквивалентной сети Петри N, сколько цветов в C(p). После такого преобразования в сети Петри N можно различать фишки, которые в Т имеют разные цвета. Фишки в N утрачивают свой цвет, но они размещаются в разных позициях;
2. каждый переход t раскрашенной сети Петри Т без изменений становится переходом классической сети Петри N;
3. если срабатывание перехода t раскрашенной сети Петри Т удаляет хотя бы одну фишку из позиции p, то дуга из этой позиции p в переход t ставится в классической сети Петри N;
4. если срабатывание перехода t раскрашенной сети Петри добавляет хотя бы одну фишку в позицию p, то дуга из перехода t в позицию p ставится в классической сети Петри N;
5. количество фишек для каждой позиции сети Петри N ставится в соответствии с количеством фишек соответствующего цвета, определенным начальной маркировкой M0 раскрашенной сети Петри Т.
Результатом использования данного алгоритма для вышеупомянутого подкласса раскрашенных сетей Петри является классическая сеть Петри, которая состоит из набора связных компонентов, которые между собой не связаны. Это является отличительной особенностью построения классических сетей Петри, эквивалентных раскрашенным сетям Петри из подкласса, обладающего свойствами, описанными ранее.
Рис. 7. Пример раскрашенной сети Петри, построенной по архитектурной диаграмме с рисунка 6
В тексте диссертации приведено доказательство следующих теорем.
Теорема 3.1: При построении классической сети Петри N из раскрашенной сети Петри Т, полученной из архитектурной диаграммы программной модели протокола передачи данных по предложенному алгоритму, раскрашенная сеть Петри Т преобразуется в несколько классических сетей Петри N0…Nx-1 по признаку цвета из У.
Теорема 3.2: Классические сети Петри N0…Nx-1, полученные из раскрашенной сети Петри Т по предложенному алгоритму, не имеют общих дуг F, позиций P и переходов T.
Теорема 3.3: Алгоритм построения набора классических сетей Петри, дает набор сетей Петри N0…Nx-1, который эквивалентен раскрашенной сети Петри Т.
Дальнейший анализ может проводиться для каждой полученной сети Петри в отдельности. Таким образом, к раскрашенной сети Петри, полученной из архитектурной диаграммы, можно применять методы анализа классических сетей Петри.
Пример разбиения раскрашенной сети Петри с рисунка 7б на несколько классических сетей Петри показан на рисунке 8.
Рис. 8. Пример разбиения раскрашенной сети Петри с рисунка 7б на набор классических сетей Петри
Рис. 9. Деревья достижимости, построенные для набора классических сетей Петри с рисунка 8
Из двух существующих методов, применяемых для анализа сетей Петри (метода деревьев достижимости и метода матричных уравнений), для дальнейшего исследования был выбран метод деревьев достижимости, так как метод матричных уравнений не дает всех необходимых для верификации данных. Применяются классические методики построения деревьев достижимости для сетей Петри, в том числе алгоритм, позволяющий добиться построения конечного дерева достижимости, описанный в работах Дж. Питерсона. Деверья достижимости, построенные по такому алгоритму для сетей Петри с рисунка 8, приведены на рисунке 9.
После построения дерева достижимости для каждой из классических сетей Петри, полученных по вышеописанному алгоритму, анализируются вершины этих деревьев достижимости. Каждой из вершин дерева достижимости соответствует маркировка сети Петри от M0 (начальной маркировки) до Mj. Например, маркировка 00201 показывает, что две фишки находятся в позиции p2 и одна фишка в позиции p4. Для каждой из вершин дерева достижимости составляется множество позиций Щ, в которых находятся фишки. Таким образом, для n вершин дерева достижимости будет Щ0…Щn-1 множеств. Из этих множеств для каждой ветви дерева достижимости составляется множество достижимости Q по следующей формуле:
(15)
Каждое множество Q fi содержит данные о том, в какие позиции попала фишка цвета c, пройдя по маршруту f. Или соответственно, в терминологии архитектурных диаграмм, в какие модули попали данные, соответствующие цвету c. Например, для рис. 10:
Q00 = Щ0Щ1={p0}{p1}={p0, p1} (16)
Здесь возле обозначения Q нуль в верхнем индексе означает номер ветви в дереве достижимости, а нуль в нижнем индексе - номер данных в таблице требований.
Исходя из вышеописанных принципов построения сетей Петри на основе архитектурных диаграмм, каждая позиция pi сети Петри соответствует модулю yj архитектурной диаграммы. Также, фишки, ходящие по каждой классической сети Петри Nm, соответствуют определенному типу данных an. Поэтому, на основе полученных множеств Q может осуществляться верификация архитектурной диаграммы программной модели протокола передачи данных.
Каждая позиция p во множестве Q замещается связанным с ним модулем архитектурной диаграммы y. Таким образом, множество Q00 преобразуется в
Q00 = {y0, y1} (17)
На основе множеств Q, полученных из ветвей деревьев достижимости, и множеств X, полученных из таблицы требований, для каждого цвета c осуществляется верификация архитектурной диаграммы.
Для каждого цвета ci=ai ставятся в соответствие множество Xi и множества Q fi. Далее для каждого маршрута f определяется множество модулей, по которым прошли и в которые не попали данные типа aj по формуле:
Д fi = Xi \ Qfi (18)
Если Д=Ш, то это означает, что данные определенного типа, пройдя маршрутом f, попали во все требуемые модули. Таким образом, верификация была завершена без ошибок.
Если же Д?Ш, то в результате в множестве Д оказывается набор модулей, в которые данные aj не попали, пройдя маршрутом f. Если для данных aj нет такого маршрута, идя по которому данные попали во все требуемые модули, то в построении архитектурной диаграммы допущена ошибка.
...Подобные документы
Понятие сетей Петри, их применение и возможности. Сетевое планирование, математические модели с использованием сетей Петри. Применение сетевых моделей для описания параллельных процессов. Моделирование процесса обучения с помощью вложенных сетей Петри.
курсовая работа [1,0 M], добавлен 17.11.2009Разработка и реализация графического редактора сетей Петри. Описание программы, которая позволяет создавать новые сети путем добавления позиций и переходов, соединяя их определенным образом. Основы построения систем автоматизационного проектирования.
курсовая работа [2,6 M], добавлен 21.06.2011Методы моделирования, отличные от инструментария "сети Петри". Пример моделирования стандартом IDEF0 процесса получения запроса браузером. Раскрашенные (цветные) сети Петри. Моделирование процессов игры стандартными средствами сетей Петри, ее программа.
курсовая работа [1,6 M], добавлен 11.12.2012Процессы индивидуализации, интеллектуализации и веб-ориентации традиционных обучающих систем как важные особенности современных компьютерных технологий обучения. Знакомство с программными средствами для построения компетентностно-ориентированных моделей.
дипломная работа [2,7 M], добавлен 04.10.2014Разработка структурной и инфологической моделей информационной системы организации по разработке и продаже программных средств. Выбор и обоснование размера и структуры сети, оборудования, кабельной системы; сетевое взаимодействие между компьютерами.
курсовая работа [513,0 K], добавлен 12.05.2013Разработка программы – сетевого эмулятора, позволяющего представить в графическом виде топологию маршрутизируемой сети. Сравнительный анализ существующих программных эмуляторов сетей и сетевого оборудования. Моделирование протоколов маршрутизации.
дипломная работа [512,2 K], добавлен 26.09.2014Сравнительный анализ топологий сети. Описательная сущность эталонной модели взаимосвязи открытых систем (OSI) и сетевых протоколов. Разработка структурно-функциональной схемы локальной сети, расчет производительности каналов и подбор оборудования.
курсовая работа [1,1 M], добавлен 16.11.2010Составление программы решения задачи по подсчету количества пересечений прямых, заданных двумя точками. Стандартные схемы программ в линейной и графовой формах, их интерпретация и протокол выполнения программы. Схема программы в виде сети Петри.
курсовая работа [85,4 K], добавлен 02.03.2012Разработка первой программы для отправки электронной почты по сети. Развитие протоколов передачи данных. Роль Джона Постела в разработке и стандартизации сетевых протоколов. Способы подключения к Интернету. Настройка СТРИМ. Доступ через сотовую связь.
презентация [410,8 K], добавлен 30.04.2014Выделение подсистем на основе некоторой меры. Выбор типов шкал. Метод логического ранжирования. Построение моделей систем. Динамическая модель системы в виде сети Петри. Элементарные контуры графа системы. Расчет энтропии системы и матрицы приоритетов.
курсовая работа [1,2 M], добавлен 06.08.2013Особенности организации передачи данных в компьютерной сети. Эталонная модель взаимодействия открытых систем. Методы передачи данных на нижнем уровне, доступа к передающей среде. Анализ протоколов передачи данных нижнего уровня на примере стека TCP/IP.
курсовая работа [1,0 M], добавлен 07.08.2011Программная и техническая характеристика информационных систем предприятия. Требования к информационной и программной совместимости. Проектирование программного обеспечения с использованием специализированных программных пакетов. Разработка базы данных.
отчет по практике [1,3 M], добавлен 11.04.2019Особенности аналитической и эмпирической моделей надежности программных средств. Проектирование алгоритма тестирования и разработка программы для определения надежности ПО моделями Шумана, Миллса, Липова, с использованием языка C# и VisualStudio 2013.
курсовая работа [811,5 K], добавлен 29.06.2014Анализ существующих решений системы поддержки принятия решений для корпоративной сети. Многоагентная система. Разработка концептуальной модели. Структура базы знаний. Разработка модели многоагентной системы на базе сетей Петри. Методика тестирования.
дипломная работа [5,1 M], добавлен 19.01.2017Структурные подразделения и отделы организации, ее технические программные средства. Разработка приложений обработки данных на ассемблере, языке программирования высокого уровня. Тестирование и оптимизация программных модулей. Разработка документации.
отчет по практике [175,0 K], добавлен 30.09.2022Обзор и анализ программных технологий создания WEB-приложений для аналитической обработки данных. Разработка многомерных моделей данных для построения OLAP-кубов по международному научно-техническому и образовательному сотрудничеству вузов России.
дипломная работа [3,8 M], добавлен 16.05.2013Теоретические основы организации локальных сетей. Общие сведения о сетях. Топология сетей. Основные протоколы обмена в компьютерных сетях. Обзор программных средств. Аутентификация и авторизация. Система Kerberos. Установка и настройка протоколов сети.
курсовая работа [46,3 K], добавлен 15.05.2007Методика и основные этапы создания многофункциональной программы получения и отправки сообщений по локальной сети с помощью программного обеспечения Winpopup и Traypopup. Сравнительная характеристика встроенных протоколов и их функциональные особенности.
дипломная работа [371,6 K], добавлен 19.06.2010Разработка функциональной модели предметной области. Построение UML диаграмм в среде Pacestar UML Diagrammer. Выбор программных средств разработки. Разработка логической и физической модели данных. Разработка клиентского приложения ИС в среде Access.
курсовая работа [2,2 M], добавлен 09.03.2011Объектный подход как метод реализации программных систем. Проектирование и программная реализация стратегической системы, реализующей процессы создания и взаимодействия группы объектов. Разработка объектной модели. Назначение элементов интерфейса.
курсовая работа [4,1 M], добавлен 11.05.2012