автореферат диссертации по информатике, вычислительной технике и управлению, 05.13.11, диссертация на тему:Разработка инструментального комплекса для создания и семантического анализа распределенных информационных систем
Автореферат диссертации по теме "Разработка инструментального комплекса для создания и семантического анализа распределенных информационных систем"
На правах рукописи
КОСТАРЕВ АЛЕКСАНДР НИКОЛАЕВИЧ
РАЗРАБОТКА ИНСТРУМЕНТАЛЬНОГО КОМПЛЕКСА ДЛЯ СОЗДАНИЯ И СЕМАНТИЧЕСКОГО АНАЛИЗА РАСПРЕДЕЛЕННЫХ ИНФОРМАЦИОННЫХ СИСТЕМ
Специальность 05.13.11 - Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей
АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата технических наук
Москва - 2004
Работа выполнена на кафедре Прикладной математики Московского энергетического института (Технического университета).
Научный руководитель:
доктор технических наук, профессор Кораблин Юрий Прокофьевич
Официальные оппоненты:
доктор технических наук, профессор Мамзелев Игорь Александрович
кандидат технических наук, доцент Хорев Павел Борисович
Ведущая организация:
Московский институт радиотехники, электроники и автоматики (МИРЭА)
Защита состоится «20» февраля 2004 г. в 18 ч. 00 м. на заседании диссертационного совета Д 212.157.01 при Московском энергетическом институте (Техническом университете) по адресу: 111250, г. Москва, ул. Красноказарменная, д.17 (ауд. Г-306).
С диссертацией можно ознакомиться в библиотеке Московского энергетического института (Технического университета).
Отзывы в двух экземплярах, заверенные печатью учреждения, просьба направлять по адресу: 111250, г. Москва, ул. Красноказарменная, д. 14, Ученый совет МЭИ.
Автореферат разослан "_"_2004 г.
Ученый секретарь диссертационного совета Д 212.157.01 к.т.н., профессор V ^Й.ИУ^—' Ладыгин
Sä з V
ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ
Актуальность темы. Особенностью создания крупных программных комплексов является включепие в их состав подсистем программирования, предназначенных для решения задач настройки и адаптации комплекса для конкретных условий его применения. Наличие таких подсистем позволяет расширять функциональные возможности комплекса в ходе его промышленной эксплуатации.
Большинство подсистем программирования, поставляемых с ориентированными на исполнение в операционных средах Microsoft Windows зарубежными информационными системами, построены на основе технологии Microsoft ActiveX. В то же время инструментальные средства, интегрированные в отечественные комплексы, по существу, не поддерживают указанную технологию. Это приводит к значительному ограничению набора управляющих элементов, пригодных для создания пользовательского интерфейса расширений комплексов. Последнее, в свою очередь, приводит либо к большим временным затратам на разработку расширений, либо к расширениям, реализованным не наилучшим образом.
Основным компонентом, обеспечивающим взаимодействие с управляющими . элементами ActiveX, является контейнер управляющих элементов ActiveX.
Учитывая, что корпорация Microsoft не предоставляет инструментальных средств поддержки разработки ActiveX-контейнеров, а также малое количество публикаций1, посвященных рассматриваемой тематике, можно говорить об актуальности проблемы создания технологии построения контейнеров управляющих элементов ActiveX.
Другой характерной особенностью создания промышленных программных систем, в частности, инструментального комплекса, ориентированного на разработку распределенных приложений, является наличие параллелизма и асинхронности вычислений. Как показывает практика (и.это подтверждается исследованиями2), обнаружение в многопоточных Windows-приложениях ошибок, связанных с исключительными ситуациями - блокировками и зацикливаниями, является одним из наиболее трудоемких процессов.
Типичная проблема любых тупиков заключается в том, что они возникают асинхронно. Кроме того, существуют ситуации, которые похожи на тупики, но
1 Автору известна только одна опубликованная на русском языке работа, в которой затронуты вопросы взаимодействия контейнеров с управляющими элементами ActiveX: Чеппел Д Технологии ActiveX и OLE: Пер с англ. - М • Русская редакция, 1997. - 320 с. Asche R . R - Detecting Deadlocks i n Multithreaded ЛгрИпПтнтУНттгг^шп!') prry"^ -, ]- Режим
"ОС
доступа MSDN Library, Technical Articles. I РОС, НАЦИОНАЛЬНАЯ
БИБЛИОТЕКА Olli О»
I
таковыми не являются. Например, поток может находиться в ожидании ресурса, требующего некоторое время для доступа. Следует также отметить, что большинство современных отладочных систем (debuggers) оказываются плохими помощниками для поиска ошибок такого рода.
Приведенные аргументы свидетельствуют о необходимости разработки формального метода анализа исходного кода Win32-nporpaммс целью обнаружения в них ситуаций, приводящих к блокировкам.
Цель и задачи работы. Целью работы является создание современного инструментального комплекса для разработки и семантического анализа расширяемых распределенных приложений с графическим интерфейсом пользователя.
Для достижения указанной цели в диссертации поставлены и решены следующие задачи:
- рассмотрены основные тенденции развития промышленных программных систем;
- проведен анализ подсистем программирования, поставляемых в составе отечественных и зарубежных информационных систем;
- проведены исследование и сравнительный анализ базирующихся на различных теоретических подходах методов обнаружения в программах исключительных ситуаций - блокировок и зацикливаний;
- разработан формальный метод обнаружения блокировок в Win32-приложениях;
- создана технология построения контейнеров управляющих элементов ActiveX;
- на основе предложенной технологии выполнена практическая реализация ряда основных компонент инструментального комплекса разработки приложений RS-Forms.
Методы исследований. В диссертации используются методы семантической теории языков программирования, теории множеств, теории конечных автоматов, аппарат сетей Петри, методы объектно-ориентированного анализа, проектирования и программирования.
Научная новизна. В работе:
- создана новая методика построения контейнеров управляющих элементов ActiveX, позволяющая упростить и значительно ускорить процесс их разработки;
- предложена классификация контейнеров управляющих элементов ActiveX по предоставляемым функциональным возможностям;
- предложен новый, базирующийся на семантической теории языков программирования, подход к анализу Win32 С++-программ с целью обнаружения в них ситуаций, приводящих к блокировкам;
- показано, что семантическое значение Win32 С++-программы„ может быть представлено конечной системой рекурсивных уравнений;.
- показана применимость предложенного подхода для анализа программ, создаваемых под платформу Win32 на любом языке программирования.
Достоверность основных результатов подтверждается:
- доказательством теоретических результатов и их апробацией-на модельных примерах;
- результатами внедрения работы в технологические процессы компании R-Style Softlab.
Результаты работы, выносимые на защиту.
1. Технология построения контейнеров управляющих элементов ActiveX.
2. Метод обнаружения исключительных ситуаций в Win32-пpилoжeнияx.
Практическая ценность. В работе:
- создана технология построения контейнеров управляющих элементов ActiveX, позволяющая упростить и значительно ускорить процесс их .разработки; основу технологии составляет библиотека С++--классов, функциональные возможности, расширяемость и гибкость которой позволяют, использовать ее в промышленных программных проектах;
- разработана программа автоматизации процесса создания (на основе предложенной технологии) ActiveX-контейнера, посредством генерации исходного С++-кода, обеспечивающая быстрое построение остова контейнера и позволяющая на примерах, познакомиться с предлагаемой технологией, испытать технологию в действии;
- разработан семантический метод, позволяющий автоматизировать процесс анализа исходного кода Win32-nporpaMM с целью обнаружения в них ситуаций, приводящих к блокировкам;
- разработан набор базовых компонент для построения графического интерфейса пользователя, входящих в состав инструментального комплекса RS-Forms.
Реализация результатов работы. На основе разработанной технологии построения контейнеров управляющих элементов ActiveX в компании R-Style Softlab создан инструментальный комплекс разработки приложений RS-Forms.
Апробация работы. Основные результаты работы докладывались: на 8-ой международной научно-технической конференции "Радиоэлектроника, электротехника и энергетика" (г. Москва, 2002); на международных конференциях "Информационные средства и технологии" (г. Москва, 2001, 2002); на семинарах в Управлении программных разработок компании R-Style Softlab; на семинарах кафедры ПМ МЭИ (ТУ). Программный комплекс RS-Balance компании R-Style Softlab, созданный с использованием результатов работы, был представлен на 14-ой ежегодной российской выставке информационных технологий "СОФТУЛ'2003".
Публикации. По теме диссертации опубликовано 7 работ.
Структура и объем работы. Диссертация состоит из введения, четырех глав, заключения, списка литературы и четырех приложений. Общий объем основного текста включает 138 стр., в том числе 35 рис. и 2 таблицы. Список литературы состоит из 64 наименований.
СОДЕРЖАНИЕ РАБОТЫ
Во введении обоснована актуальность темы диссертации, сформулированы цели и задачи исследования, показаны научная новизна и практическая значимость полученных результатов, излагается содержание работы.
В • первой главе проведен анализ развития промышленных программных комплексов в контексте проблемы обеспечения их гибкости и расширяемости. Показано, что гибкость и расширяемость таких комплексов достигается за счет их интеграции с подсистемами программирования, основное назначение которых состоит в предоставлении в ходе промышленной эксплуатации комплекса возможности автоматизировать часто встречающиеся операции, которые нельзя было предвидеть в процессе его разработки. Рассмотрена- эволюция подсистем программирования, показана необходимость включения в них средств разработки пользовательского интерфейса. Характерным примером этого является создание расширения к Microsoft Word,- предназначенного для записи чисел прописью. Потребность в таком расширении возникает, в частности, при составлении различных платежных документов, где значения денежных сумм указываются как в цифровом представлении," так и в словесном. Операция- перевода числа в словесное представление требует определения ряда параметров, таких как: валюта, в которой указана сумма; падеж, в котором необходимо ее вывести; нужно ли помещать расшифровку суммы в скобки, делать ли первую букву заглавной и пр. Для задания такого рода параметров требуется диалоговое окно настроек, а, следовательно, и средство для его разработки.
Проведено исследование сред создания интерфейса пользователя, поставляемых в составе отечественных и зарубежных прикладных программных комплексов, разработанных для платформ Microsoft Windows. Показаны недостатки сред, не интегрированных с компонентной технологией Microsoft ActiveX. Обоснована необходимость разработки инструментальных средств поддержки построения ActiveX-контейнеров - основных компонентов, обеспечивающих возможность работы с управляющими элементами ActiveX.
Рассмотрены проблемы реализации параллельных вычислений в программах, создаваемых для операционных систем семейства Microsoft Windows. Показана необходимость разработки формального метода обнаружения блокировок по исходному коду Шп32-пришэжений.
Во второй главе рассмотрены архитектурные решения, составляющие основу предлагаемой в настоящей работе технологии построения ActiveX-контейнеров. Целью создания технологии является предоставление эффективных механизмов для реализации:
1. контейнеров-форм - ActiveX-объектов, являющихся контейнерами для других ActiveX- о бъектов ;
2. контейнеров-представлений - ActiveX-контейнеров, работать с которыми можно как с дочерними окнами Windows (child window);
3. s-контейнеров - не имеющих визуального представления контейнеров произвольных СОМ-объектов.
Фундаментом технологии является библиотека повторно используемых С++-классов, разработанная при помощи интегрированной среды Microsoft Visual C++ 6.0 и библиотеки ATL 3.0.
В основу построения библиотеки положен принцип открытости-закрытости, суть которого состоит в том, что модули, методы и классы должны быть открыты для расширения, но закрыты для модификации. Гибкость и расширяемость библиотеки достигаются за счет применения при ее разработке шаблонов проектирования Factory Method, Template Method, Observer и Bridge и шаблонов C++.
На рис. 1 представлены определяемые спецификацией Microsoft ActiveX Controls стандартные компоненты контейнера управляющих элементов.
Рис. 1. Основные компоненты ActiveX-контейнера
Контейнер поддерживает коллекцию объектов связи с элементами ActiveX -по одному объекту связи на каждый управляющий элемент. Объект связи с управляющим элементом отвечает за корректное взаимодействие соответствующего ему элемента с контейнером. Каждый такой объект содержит в себе подобъект, расширяющий элемент управления стандартными для конкретного контейнера наборами свойств, методов и событий. Такой подобъект называется расширенным управляющим элементом. Примером расширенных свойств могут служить имя (Name), местоположение в контейнере (Width, Left) и т.п. Каждый расширенный управляющий элемент содержит, как подобъект, объект-приемник событий от сопоставленного с ним элемента управления. Среди его задач: первичная идентификация полученных событий (требуется пользовательская обработка события или нет) и, при необходимости, передача их своему объекту-владельцу (extended control), который обеспечивает маршрутизацию событий по иерархии объектов контейнера.
На рис.2 представлена UML-диаграмма классов, определяющая в рамках предложенной технологии внутреннее устройство контейнера-формы.
TAxContlmpl
/Collection
X
- IÇo(Ieci»pfvTA*Cofttlmfi_, I ■ ■ . f .11- II ■ . -.....i TArSit» i----------■ ■ , ■
CAxContüght ]" | fPars/stStreemfn/t \ | CAxContLIghtímpí [ | Ю/вСолШпвг j | IAxContamer2 [ ¡ /0/е 1пР1асвРгвте \
X
ICoiiKtert, TAxConümpl
TZ
/ г
IDispatch
IFrame —i-
__Д
4
-^T ОДмроГТАхСопфВД I--~Т I-1 I—1-■ I
CAxContBaae | jATL CComControTf ^ IQIeObject ( | CAxCorrtBasalmpI j
^ -X" / ,-1
- - - - - " IQIeContml |
T CotacMn. TAxCortknpl
IFramelmpI
X X-
I—^ T IW»
I CAxformBas» |
CForm, ConMa, CAfonnBaMlnnpl
■ / ,_ _
CForm - -C8tt»—
I CAxFormBwlmpI
CAxStteCreator"
CChlldAxCreator"
Рис. 2. Внутреннее устройство объекта контейнера
1 Unified Modeling Language (UML) - графический язык для визуализации, специфицирования, конструирования и документирования программнык систем (БучГ, РамбоД, ДжекобсонА Язык UML Руководство пользователя Пер. с англ.-М.:ДМКПресс, 2001 - 432 с)
Объект-форма являеться экземпляром класса CForm Этот класс представляет конкретный контейнер управляющих элементов и не входит в состав рассматриваемой библиотеки, как и класс IFramelmpI, являющийся реализацией конкретного интерфейса для работы со свойствами контейнера.
Как видно из диаграммы, большая часть классов, определяющих внутреннее устройство ко1ггейнера, представляет собой шаблоны1. Применение параметризованных классов обеспечивает, во-первых, независимость от конкретных интерфейсов доступа к коллекции внедренных элементов, а во-вторых, передачу используемым в реализации ATL-шаблонам параметров, значения которых могут быть определены только на этапе создания конкретного контейнера.
Таким образом, в иерархии классов контейнера аргумент ICoIlection задает интерфейс доступа к коллекции, аргумент Т - тип листового класса-наследника, необходимый большинству ATL-шаблонов. Этот ттг используется в ATL-шаблонах для альтернативной реализации полиморфизма, заключающейся в вызове шаблоном какого-либо метода (возможно в нем же и объявленного) от указателя this, приведенного к указателю на тип Т.
Особого внимания заслуживает аргумент TAxContlmpl, присутствующий в определении ряда шаблонов Класс, передаваемый "в качестве TAxContlmpl, обеспечивает функциональность, необходимую шаблону, но не зависящую от других его параметров. Например, CAxContBaselmpl содержит методы и данные, общие для всех инстанцирований шаблона CAxContBase. Классы, подобные CAxContBaselmpl, будем называть классами-реализаторами.
Экспортация общей функциональности шаблона в отдельный класс позволяет значительно сократить объем генерируемого по этому шаблону кода и, следовательно, уменьшить размер исполняемого модуля. Например, ранние версии рассматриваемой библиотеки были построены на шаблонах без использования классов-реализаторов. Перепроектирование библиотеки, направленное на выделение классов-реализаторов, привело к 30% уменьшению объема генерируемого кода
Концептуальная целостность шаблона и соответствующего ему класса-реализатора достигается в силу того, что шаблон является потомком (необязательно прямым) реализатора.
1 В верхнем правом углу пиктограммы класса шаблона пунктиром отображена ячейка, в которой перечислены параметры шаблона
На диаграмме (рис.2) показано отношение наследования, установленное между шаблонными классами, а также отношение наследования между соответствующими им классами-реализаторами.
На рис. 3 представлена UML-диаграмма классов, определяющая внутреннее устройство используемого совместно с контейнером-формой объекта связи с управляющим элементом.
Рис. 3. Внутреннее устройство объекта связи с управляющим элементом Объект связи является экземпляром класса CSite. Этот класс представляет конкретный объект связи и не входит в состав рассматриваемой библиотеки, как и класс Cltem, представляющий конкретный расширенный элемент управления. Шаблонные классы CChildAx и CChildAxCreator определяют стандартный механизм создания дочерних объектов. Класс CAxSiteBase инкапсулирует основные операции, выполняемые над управляющим элементом, а также реализует обязательные, в соответствии со спецификацией Microsoft ActiveX Controls, интерфейсы объекта связи. Классы, порожденные от CAxIdBase, используются для представления идентифицирующей информации об ActiveX-объекте, позволяющей создавать его в процессе загрузки.
Внутреннее устройство расширенного управляющего элемента представлено на рис. 4.
H Ortwglting »арякл1^
CAxltamBat» —--
CltwiCSrte ЮогфоИлф
Cltem
IContrallmpT*} »| JCoi?fro/~j—efiblspetch |
Рис. 4. Внутреннее устройство объекта расширенного элемента управления
Как было отмечено ранее, расширенный управляющий элемент является экземпляром не входящего в состав рассматриваемой библиотеки класса CItem. Класс IControlImpl, реализующий конкретный интерфейс взаимодействия с расширенными свойствами и методами, также не входит в состав библиотеки.
Иерархия классов, определяющих внутреннее устройство расширенного управляющего элемента, построена с применением' техники, аналогичной использованной при разработке объекта контейнера в том плане, что базовый класс CAxItemBase является шаблоном, при этом данные и методы, независящие от его параметров, инкапсулированы в классе-реализаторе CAxItemBaselmpl.
В главе подробно рассмотрены назначение и устройство каждого класса библиотеки; особое внимание уделено поведению и механизмам взаимодействия объектов, составляющих ActiveX-контейнер. Представлены различные подходы к использованию библиотеки. Показано, что при всех принципиальных различиях, существующих между s-контейнером, контейнером-представлением и контейнером-формой, все они обладают общей базой. Более того, между ними определено отношение включения: контейнер-форма добавляет функциональные возможности к контейнеру-представлению, который, в свою очередь, расширяет функциональные возможности s-контейнера.
В завершении' главы приведено описание реализованной утилиты, расширяющей функциональные- возможности среды Microsoft Visual C++ до механизма генерации исходного кода остова контейнера с заданными характеристиками.
В третьей главе диссертации проводится сравнительный, анализ базирующихся на различных теоретических подходах методов обнаружения в программах исключительных ситуаций - блокировок и зацикливаний. В основе первого метода лежит теория сетей Петри (СП-метод), в основе второго - алгебраическая семантика языков параллельного и распределенного программирования (АС-метод).
С использованием СП-метода в Microsoft Developer Network Technology Group создано программное средство, предоставляющее1 возможность частично проанализировать С++-программу на предмет наличия в ней блокировок.
С использованием АС-метода на кафедре ПМ МЭИ (ТУ) реализованы экспериментальные программные средства, обеспечивающие проведение анализа АФС-программ на эквивалентность, наличие тупиков, блокировок и зацикливаний.
Результаты исследования указанных подходов создают необходимый базис для разработки формального метода поиска блокировок по исходному тексту
программы, созданной для платформы Win32 - базовой платформы операционных систем семейства Microsoft Windows
Основная идея метода состоит в моделировании Win32-приложения программой на языке АФС, анализирующий пакет для которого разработан ранее1. При этом происходит абстрагирование от конкретной функциональности, реализуемой тем или иным Win32-потоком, а основное внимание акцентируется на аспектах синхронизации.
Предлагаемая, Win32 модель взаимодействия параллельно выполняющихся потоков базируется на синхронизирующих объектах. Основными такими объектами являются: критические разделы, мьютексы, семафоры и события. Базовыми функциями, позволяющими потоку ожидать освобождения какого-либо объекта ядра, являются WaitForSinglcObject и WaitForMultipleObjects.
Моделирование синхронизирующих объектов и функций осуществляется с использованием операционного подхода к формальному заданию семантики на основе их неформального описания. В общем случае, синхронизирующие объекты представляются в языке АФС одним или несколькими каналами. Каждый канал может иметь один или несколько входов типа ALL и один или несколько выходов типа ALL. Объекту в свободном состоянии соответствует канал, готовый к выдаче данных, объекту в занятом состоянии - канал, готовый к приему данных. Функции ожидания моделируются с использованием оператора read, осуществляющим чтение из соответствующего выхода соответствующего канала.
Результаты трансляции функций, предназначенных для взаимодействия параллельно выполняющихся потоков, в коды языка АФС отражены в утверждении 1.
Синхронизирующие Win32 API вызовы могут быть представлены в виде соответствующихкомпонентов АФС-программы.
Конструктивный способ решения проблемы возникновения блокировок обеспечивает следствие 1 из этого утверждения;
Семантическое значение Win32С++-программы, оперирующей*только синхронизирующими Win32 API вызовами, эквационально характеризуемо, то естьможет быть представлено конечной системойрекурсивныхуравнений*
В следствии 2 результаты, полученные для языка C++, обобщаются на произвольный язык разработки приложений для платформы Win32:
1 Корабдия Ю П Семантические методы анализа распределенных систем Дис на соиск уч ст д ра техн наук -М, 1994-272с ,
Для любой программы, создаваемой на любом языке программирования под платформу Win32, вопрос о возможности возникновения при выполнении этой программырассматриваемыхисключительныхситуацийразрешим.
Работу метода продемонстрируем' на примере следующей Win32 С++-программы:
linclude <windows.h> linclude <stdio.h>
CRITICAL_SECTION CSl,CS2; long WINAPX ThreadFn(long);
main О (
unsigned long iThreadlO, InitializeCnticalSection (ccsl); InitializeCriticalSection(£ca2);
CloseHandlelCreateThreadlNBLL, 0, (LPTb.RiAD START ROUTINE) ThreadFn, к DLL, 0, iiThreadID));
while(TRUE)(
EnterCriticalSectionUcsl);
printf ("\nThreadl has entered Critical Section 1 but not 2."); EnterCriticalSection(tcs2);
printf("\nThreadl has entered Critical Section 1 and 2'"); LeaveCriticalSection(scs2);
printf("\nThreadl has left Critical Sec 2 but still owns 1.")» LeaveCriticalSectionUcsl) ;
prmtf ("\nThreadl has left both critical sections..."); Sleepf20);
1;
return(0)i
)
long WINAFI ThreadFn (long lfaraia) I
while(TRUE)(
EnterCriticalSection[Scs2);
printf ("\nThread2 has entered Critical Section 2 but not 1."); EnterCriticalSection(tcsl)j
printf ("\nThread2 has entered Critical Section 2 and 1!"); LeaveCriticalSection(iCSl);
printf("\nThread2 has left Critical Sec 1 but still owns 2."); LeaveCriticalSection(4cs2);
printf("\nThread2 has left both critical sections..."),-Sleep(20);
1;
1
Здесь csl и cs2 представляют идентификаторы критических разделов -участков кода программы, требующих монопольного доступа к некоторым общим данным. EnterCriticalSection и LeaveCriticalSection - основные функции для работы с такими разделами. Функция CreateThread предназначена для создания дополнительных потоков. Создаваемый поток начинает свое выполнение с функции ThreadFn, передаваемой CreateThread в качестве параметра.
После запуска приложения на выполнение, можно наблюдать такой результат: программа работает некоторое время, а затем блокируется. Объясняется это тем, что первый поток заходит в критический раздел csl и его выполнение
приостанавливается до тех пор, пока второй поток не освободит критический раздел cs2, но он этого никогда не сделает, так как находится в ожидании освобождения первым потоком критического раздела csl.
В соответствии с предложенным подходом," запишем программу с учетом только тех операторов и функций, которые принимают участие в синхронизации потоков:
CRITICAL_SECTION CSl, CS2; main О t
CreateThread (NULL, 0, (LPTHR£AD_STA8T_RO0TI!JE)ThreadFn, NULL, 0, iiThreadlE); while(true){
EnterCriticalSection(icsl); EnterCriticalSection((cs2); LeaveCrlticalSectlon(Ics2){ LeaveCrlticalSectlon((csl) i
);
)
long WINAPI TfcreadFn(long lParan) (
while(true)(
EnterCriticalSection(fcs2); EnterCriticalSection(&cs1)) LeaveCriticalSectlon(icsl); LeaveCritlcalSectlon(ics2);
>;
)
На основании утверждения 1 модель рассматриваемой программы на языке АФС примет вид:
NET
CHAN 1::ALL(1):ALL(1) CHAN 2::ALL(1):ALL(1) CHAN 3::ALL(1):ALL(1) BESIN
FUN 1: :write (3,1), LOCP(ALT(tt -. SEQ(write(1,1), wnte(2,l), read(2,l), read(l,l)) )) FUN 2::read(3,1), LOOP(AlT(tt - SEQIvrlte(2,1), wrlte(l,l), read(l,l), read(2,l)) ))
END
Здесь каналы связи 1 и 2 соответствуют критическим разделам csl и cs2;
функции записи и чтения в/из них - функциям работы с критическими разделами;
функциональные процессы1 - потокам Win32. Канал связи 3 и операторы доступа к
нему необходимы для представления функции CreateThreacd
Учитывая то, что операторы write(3,1) и read(3,1), расположенные в начале
функциональных процессов, не влияют на семантическое значение программы,
хапактепизутотттее наличие блокиповок. пепепитттем ее слеттотттим обпазом: NET
CHAN 1::ALL(1):ALL(1) CHAN 2::ALL(1):ALL(1) BESIN
FUN l::LOOP(ALT(tt - SEQlwrite(1,1), write(2,l), read(2,l), read(l,l)) )) FUN 2.:L00P(ALT(tt - SEQ(write(2,1), wrltell.l), readll.l), read(2,l)) ))
END
1 Выпотоение АФС-лрограммы предполагает одновременный запуск всех функциональных процессов
Для построения системы рекурсивных уравнений определяется априорная семантика функциональных процессов и каналов связи полученной АФС-программы: /ТГОЯ 1: :LOOP{AL?(tt - SEQfwrite(1,1), write(2,l), read(2,l), readll,1))))]=
/IrtJN 2::L00P(ALT(tt - SEQ (write (2,1), wtite(l,l), read(l,l), read(2,l) I)) ] =
Здесь F и К - семантические функции вида F:Prog — • SP и K.Chan -SP, сопоставляющие, соответственно, функциональным процессам Prog и каналам связи Chan множества вычислительных последовательностей SP; IN и OUT- семантические значения команд ввода и вывода; Т - константа, обозначающая, тождественно-истинное значение; операция "+" - задает минимальную фиксированную точку соответствующего оператора.
Обозначим полученные априорные семантические значения через Р\,Р2, К\ и К2 соответственно, а семантическое значение всей программы - через Р, тогда Р - Р\ \\P2\\ К\ || К2. Система рекурсивных уравнений, характеризующая Р, имеет вид:
Р, = ГлР2 + ГаР3 = Р» = У21-Рц
Рг = Т* Р<+in Pi Pi = 1ivPu P\i - Т* P\i + 7ii-?i
Р2~Т' Pi + KvPi Pio=r>M + Y2iPi5 Pwyn-Pn
P< = yivP» Ph = 4U-PI6 Pn = T'Pt9+y2rPi
Ps~T* Pi + JnPw Р12=Г"Р|« + 7И-Р17 ^8 = 711^3
Рб ~ yii'Pu Pl3 = 0 Р19 = ТЛ-Л
Pi ~ r'Pn + Уп-Рп
Здесь у представляет элемент семантического множества взаимодействий, а определяет константу "останов". Из системы видно, что выполнение потоков может быть заблокировано (уравнение Р13). Кроме того, можно определить последовательность действий, приводящую к блокировке. Такой последовательностью является y11 y21 что следует из уравнений Р1 Р, Р3 Р4 И Р.. Эта последовательность соответствует успешному одновременному выполнению оператора write(l.l) первого функционального процесса и оператора write(2,l) второго функционального процесса моделирующей АФС-программы, что, в свою очередь, соответствует одновременному выполнению первым потоком исходной С++-программы оператора EnterCriticalSection(csl), а вторым EnterCriticalSection(cs2). Такой порядок вызовов "Мл32-функций определяет рассмотренный ранее контекст блокировки.
В четвертой главе рассмотрен разрабатываемый в компании R-Style Softlab на основе предложенной в настоящей работе технологии построения контейнеров управляющих элементов ActiveX инструментальный комплекс RS-Forms, предназначенный для создания расширяемых распределенных приложений с графическим интерфейсом пользователя
Приложения, построенные на основе RS-Forms, ориентированы на работу в двух- и трехуровневом режимах. В двухуровневом режиме RS-Forms-приложения функционируют так же, как и приложения, созданные с помощью других средств разработки В трехуровневом режиме выполнение RS-Forms-приложения разделяется: терминальная часть - код, обеспечивающий формирование пользовательского интерфейса, исполняется на клиентской станции, а серверная часть - код, определяющий логику приложения, работает на сервере приложений. Терминальная часть RS-Forms-приложения может функционировать только в операционных средах Microsoft Windows; серверная часть может работать как под управлением операционных систем Microsoft Windows, так и под управлением OS/400 или Sun Solans.
Трехуровневый режим RS-Forms предназначен для использования в локальных компьютерных сетях, обеспечивающих достаточно надежное сетевое соединение и высокую пропускную способность; он не рассчитан на применение в сетях Internet.
Важно отметить, что приложение, созданное для работы в трехуровневом режиме, может без каких либо модификаций функционировать и в двухуровневой архитектуре.
RS-Forms состоит из набора самостоятельных универсальных компонентов- Дизайнер - среда разработки графического интерфейса пользователя на платформах Windows, включающая в себя редакторы форм, печатных страниц, меню, списков иконок и др;
- подсистема графического хоста - модуль, инкапсулирующий средства создания и настройки фреймовых окон (frame window), каждое из которых является контейнером для разработанных в дизайнере форм, средства управления этими окнами; позволяет формировать и, при необходимости, централизовано изменять стиль внешнего вида RS-Forms-приложений;
- система исполнения RS-Forms - построенные на базе разработанной в компании R-Style Softlab компонентной модели RSCOM библиотеки C++ и RSL классов,
определяющие инфраструктуру RS-Forms-приложеиия и предоставляющие средства для взаимодействия с окнами, формами, печатными страницами и пр.;
- отладчик для интерпретатора RSL;
- генератор кода на языках C++ и RSL;
- семантический анализатор кода;
- редактор кода.
Большинство компонент RS-Forms может функционировать как в составе пакета RS-Forms, так и отдельно от остальных - для решения своего круга задач.-Так, в Дизайнере можно создавать формы для последующего использования не только внутри RS-Forms, но и, к примеру, в приложениях MFC.
Важно отметить, что RS-Forms не является формо-ориентированным средством разработки приложений - он не требует, чтобы создание приложения начиналось исключительно с проектирования некоторой формы. Формы, равно как печатные страницы, меню и пр. можно и нужно рассматривать как ресурсы приложения, аналогично ресурсам такой интегрированной среды разработки как Microsoft Visual C++.
В главе рассмотрены средства разработки RS-Forms, показаны-ключевые отличия комплекса. от существующих аналогов, особое внимание уделено компонентам, созданным автором на. основе предложенной в настоящей работе технологии построения ActiveX-контейнеров: контейнеру - оконной оболочке для произвольного ActiveX-элемента, управляющим элементам "форма", "печатная страница" и "табулятор", s-контейнеру "меню", модулю представления форм в виде самостоятельных ActiveX-объектов.
Контейнер - оконная оболочка для одного ActiveX-элемента представляет собой ориентированный на работу с единственным управляющим элементом контейнер-представление. Функция создания объекта-контейнера,- в числе прочих параметров, принимает идентификатор элемента управления, внедряемого в контейнер в процессе ее выполнения. Возвращаемый функцией результат - описатель окна контейнера (window handle), посредством которого дальнейшее взаимодействие с ним, равно как и с внедренным управляющим элементом, ведется стандартными методами, используемыми при работе с окнами Windows.
В RS-Forms этот контейнер используется в качестве промежуточного звена для обеспечения работы с элементами управления "форма" и "печатная страница".
Управляющий элемент "форма" является контейнером-формой. В RS-Forms этот элемент используется для создания экранных и печатных форм. Он обеспечивает
возможность работы с любыми управляющими элементами, зарегистрированными в операционной системе; позволяет работать со стандартными управляющими элементами RS-Forms без их регистрации; реализует механизм процентной привязки координат внедренных элементов к границам формы; поддерживает динамическую вставку управляющих элементов на этапе выполнения, внедрение и включение по ссылке ранее созданных форм; предоставляет средства для формирования множества контекстных меню и их сопоставления внедренным элементам управления; реализует операцию вывода своего представления на печать.
Кроме того, он предоставляет средства управления видимостью внедренных элементов, последовательностью их обхода клавиатурой; позволяет задавать шрифт, используемый управляющими элементами по умолчанию, цвет фона, текста и пр.; поддерживает работу с буфером обмена (clipboard).
Стоит особо отметить, что элемент управления "форма" позволяет задавать расположение внедренных в него ActiveX-элементов в двух единицах измерения: в пикселях и в сотых долях миллиметра (himetric'ax). Поддержка последней обеспечивает возможность создания форм, визуальное представление которых будет корректным при любом размере установленных в операционной системе шрифтов (small fonts, large fonts). Более, того, спроектированные в сотых долях миллиметра формы сохраняют расположение своих элементов при выводе на печать - на бумаге элементы формы будут иметь в миллиметрах в точности те размеры и положение, которые были заданы во время разработки.
Управляющий элемент "печатная страница" также является контейнером-формой. В RS-Forms он используется для подготовки печатных документов. Этот элемент управления во многом похож на рассмотренный выше элемент "форма". Его специфика состоит в интерпретации каждого внедренного в него ActiveX-объекта как абзаца, следствием чего является последовательное расположение элементов друг под другом. При этом предоставляется возможность задания вертикальных отступов, выравнивания по горизонтали, поддерживается работа с верхними и нижними колонтитулами, различными форматами бумаги и т.п.
Управляющий элемент "табулятор" является контейнером-формой. Однако в отличие от ранее рассмотренных элементов, он поддерживает работу только с элементом управления "форма", интерпретируемым как страница свойств.
Подобное устройство позволяет в режиме редактирования располагать управляющие элементы на нужных страницах "табулятора" без использования слоев и без написания дополнительного кода, как это необходимо делать в некоторых
других средах разработки, в частности, в подсистеме программирования, поставляемой фирмой 1С с комплексом "1С:Предприятие 7.7".
Элемент управления 'Лтабулятор" поддерживает переключение страниц при помощи клавиатуры, управление их видимостью, внедрение и включение по ссылке рапсе созданных форм; предоставляет средства для сопоставления каждой странице контекстного меню и пр.
Объект "меню" является s-контейнером пунктов меню. В RS-Forms этот объект используется для создания главных, всплывающих и контекстных меню. Он позволяет создавать, удалять и сортировать пункты меню, задавать их атрибуты; поддерживает работу с буфером обмена.
На этапе выполнения объекты "меню" представляют собой источники данных для подсистем, реализующих отображение меню на дисплее, в частности, для подсистемы графического хоста.
Модуль представления форм в виде самостоятельных ActiveX-объектов реализует механизм быстрой разработки управляющих элементов ActiveX в RS-Forms.
ОСНОВНЫЕ РЕЗУЛЬТАТЫ РАБОТЫ
1. Предложен новый базирующийся на> семантической теории языков программирования формальный подход к анализу Win32 С++-программ с целью обнаружения в них ситуаций, приводящих к блокировкам.
2. Показано, что семантическое значение Win32 С++-программы эквационально характеризуемо.
3. Доказана применимость подхода для анализа программ, создаваемых под платформу Win32 на любом языке программирования.
4. Создана технология построения контейнеров управляющих элементов ActiveX (контейнеров-форм, контейнеров-представлений, s-контейнеров), позволяющая упростить и значительно ускорить процесс их разработки.
5. На основе предложенной технологии:
- реализована программа автоматизации процесса создания ActiveX-контейнера посредством генерации исходного С++-кода;
- в компании R-Style Softlab создан инструментальный комплекс разработки приложений RS-Forms, в рамках которого автором реализованы:
• контейнер-предсташтение, ориентированный на работу с одним произвольным ActiveX-объектом;
№ - 939 2004-4 22999
• управляющие элементы-контейнеры "форма", "печатная страница , "табулятор";
• s-контейнер меню;
• инструментальные средства быстрой разработки управляющих элементов ActiveX.
Результаты работы отражены в следующих публикациях:
1. Кораблин Ю. П., Костарев А. Н. Метод обнаружения исключительных ситуаций в приложениях Windows // Известия академии наук. Теория и системы управления. -2003.-№4.-С. 124-131.
2. Костарев А. Создание контейнеров элементов управления ActiveX // Byte. - 2001. -№8.-с. 28-33.
3. Костарев А., Павлов Л. RS-Forms - новый инструмент для разработки приложений // RS-Club. - 2002. - №3. - С. 18-22.
4. Костарев А. О создании контейнеров управляющих элементов ActiveX // Доклады Международной конференции "Информационные средства и технологии". 16-18 октября 2001 г. В 3-х т. - М.: Изд-во "Станкин", 2001. - Т.З. - С. 30-33.
5. Кораблин Ю. П., Костарев А. Н. Методы обнаружения исключительных ситуаций в программах // Доклады Международной конференции "Информационные средства и технологии". 16-18 октября 2001 г. В 3-х т. - М.: Изд-во "Станкин", 2001. - Т.З. - С. 70-73.
6. Кораблин Ю. П., Костарев А. Н. Метод обнаружения исключительных ситуаций в Win32-пpилoжeнияx // Доклады Международной конференции "Информационные средства и технологии". 15-17 октября 2002 г. В 3-х т. - М.: Янус-К, 2002. - Т.2. - С. 40-42.
7. Костарев А. Концепция работы с клавиатурой и фокусом ввода в технологии ActiveX // Восьмая междунар. науч.-техн. конф. студентов и аспирантов: Тез. докл. В З-хт. - М. Изд-во МЭИ, 2002. - Т.1. - С. 272-273.
Подписано в печать
заказ №
тираж
, 1W
Hol Oh г.
Типография МЭИ; Красноказарменная, 13
печатных листов
ш
Оглавление автор диссертации — кандидата технических наук Костарев, Александр Николаевич
Введение.
Глава 1. Анализ развития промышленных программных систем.
1.1 Гибкость и расширяемость программного обеспечения.
1.1.1. Программные комплексы, создаваемые на заказ.
1.1.2. Тиражные программные комплексы.
1.2. Подсистемы программирования.
1.2.1. Этапы развития.
1.2.2. Недостатки первых подсистем программирования.
1.2.3. Механизмы взаимодействия приложений в операционных средах Microsoft Windows.
1.2.4. Интеграция с компонентной архитектурой Microsoft ActiveX.
1.3. Параллельные и распределенные вычисления.
1.4. Выводы по главе 1.
Глава 2. Технология построения контейнеров управляющих элементов ActiveX.
2.1. Общие принципы создания ActiveX-контейнеров.
2.2. Архитектурные решения.
2.2.1. Устройство объекта контейнера.
2.2.1.1. Класс CAxContLight.
2.2.1.2. Класс CAxContBase.
2.2.1.3. Класс CAxFormBase.
2.2.1.4. Класс CForm.
2.2.2. Устройство объекта связи с управляющим элементом.
2.2.2.1. Классы CChildAx и CChildAxCreator.
2.2.2.2. Класс CAxSiteBase.
2.2.2.3. Класс CAxFormSiteBase.
2.2.2.4. Класс CSite.
2.2.3. Устройство объекта расширенного управляющего элемента.
2.2.3.1. Класс CAxItemBase.
2.2.3.2. Класс CItem.
2.2.4. Подходы к использованию библиотеки.
2.3. Автоматизация процесса разработки ActiveX-контейнера.
2.4. Выводы по главе 2.
Глава 3. Методы обнаружения исключительных ситуаций.
3.1. СП-метод.
3.1.1. Пример использования.
3.2 АС-метод.
3.2.1. Пример использования.
3.3. Сравнительный анализ представленных методов.
3.4. Метод обнаружения исключительных ситуаций в \Ут32-приложениях.
3.4.1. Теоретическое обоснование.
3.4.1.1. Операционная семантика функции CreateThread.
3.4.1.2. Операционная семантика критических секций.
3.4.1.3. Операционная семантика функции WaitForSingleObject.
3.4.1.4. Операционная семантика функции WaitForMultipleObjects.
3.4.1.5. Операционная семантика семафоров.
3.4.1.6. Операционная семантика событий.
3.4.1.7. Операционная семантика мьютексов.
3.4.2. Пример работы.
3.5. Выводы по главе 3.
Глава 4. Инструментальный комплекс RS-Forms.
4.1. Архитектура приложений RS-Forms.
4.2. Структура RS-Forms.
4.3. Средства разработки RS-Forms.
4.3.1. Особенности Дизайнера RS-Forms.
4.3.2. Генератор кода.
4.3.3. Редактор исходного кода.
• 4.3.4. Особенности экранных форм.
4.3.5. Механизм вывода информации на печать.
4.3.6. Компонентный подход.
4.3.7. Настраиваемые элементы управления.
4.3.8. Окна в RS-Forms.
4.3.9. Особенности меню в RS-Forms.
4.3.10. Связь форм с данными.
4.3.11. Редактор списков иконок. it 4.4. Компоненты RS-Forms, созданные на основе предложенной технологии построения ActiveX-контейнеров.
4.4.1. Контейнер — оконная оболочка для одного ActiveX-элемента.
4.4.2. Управляющий элемент "форма".
4.4.3. Управляющий элемент "печатная страница".
4.4.4. Управляющий элемент "табулятор".
4.4.5. Объект "меню".
4.4.6. Представление форм в виде самостоятельных управляющих элементов ActiveX.
4.5. Выводы по главе 4.
Введение 2004 год, диссертация по информатике, вычислительной технике и управлению, Костарев, Александр Николаевич
Актуальность проблемы. Особенностью создания крупных программных комплексов является включение в их состав подсистем программирования, предназначенных для решения задач настройки и адаптации комплекса для конкретных условий его применения. Наличие таких подсистем позволяет расширять функциональные возможности комплекса в ходе его промышленной эксплуатации.
Большинство подсистем программирования, поставляемых с ориентированными на исполнение в операционных средах Microsoft Windows зарубежными информационными системами, построены на основе технологии Microsoft ActiveX. В то же время инструментальные средства, интегрированные в отечественные комплексы, по существу, не поддерживают указанную технологию. Это приводит к значительному ограничению набора управляющих элементов, пригодных для создания пользовательского интерфейса расширений комплексов. Последнее, в свою очередь, приводит либо к большим временным затратам на разработку расширений, либо к расширениям, реализованным не наилучшим образом.
Основным компонентом, обеспечивающим взаимодействие с управляющими элементами ActiveX, является контейнер управляющих элементов ActiveX.
Учитывая, что корпорация Microsoft не предоставляет инструментальных средств поддержки разработки ActiveX-контейнеров, а также малое количество публикаций, посвященных рассматриваемой тематике, можно говорить об актуальности проблемы создания технологии построения контейнеров управляющих элементов ActiveX.
Другой характерной особенностью создания промышленных программных систем, в частности, инструментального комплекса, ориентированного на разработку распределенных приложений, является наличие параллелизма и асинхронности вычислений. Как показывает практика, и это подтверждается исследованиями [24], обнаружение в многопоточных Windows-приложениях ошибок, связанных с исключительными ситуациями -блокировками и зацикливаниями, является одним из наиболее трудоемких процессов.
Типичная проблема любых тупиков заключается в том, что они возникают асинхронно. Кроме того, существуют ситуации, которые похожи на тупики, но таковыми не являются. Например, поток может находиться в ожидании ресурса, требующего некоторое время для доступа. Следует также отметить, что большинство современных отладочных систем (debuggers) оказываются плохими помощниками для поиска ошибок такого рода.
Приведенные аргументы свидетельствуют о необходимости разработки формального метода анализа исходного кода Win32-nporpaMM с целью обнаружения в них ситуаций, приводящих к блокировкам.
Цель и задачи работы. Целью работы является создание современного инструментального комплекса для разработки и семантического анализа расширяемых распределенных приложений с графическим интерфейсом пользователя.
Для достижения указанной цели в диссертации поставлены и решены следующие задачи:
- рассмотрены основные тенденции развития промышленных программных систем;
- проведен анализ подсистем программирования, поставляемых в составе отечественных и зарубежных информационных систем;
- проведены исследование и сравнительный анализ базирующихся на различных теоретических подходах методов обнаружения в программах исключительных ситуаций — блокировок и зацикливаний;
- разработан формальный метод обнаружения блокировок в Win32-приложениях;
- создана технология построения контейнеров управляющих элементов ActiveX;
- на основе предложенной технологии выполнена практическая реализация ряда основных компонент инструментального комплекса разработки приложений RS-Forms.
Методы исследований. В диссертации используются методы семантической теории языков программирования, теории множеств, теории конечных автоматов, аппарат сетей Петри, методы объектно-ориентированного анализа, проектирования и программирования. Научная новизна. В работе:
- создана новая методика построения контейнеров управляющих элементов ActiveX, позволяющая упростить и значительно ускорить процесс их разработки;
- предложена классификация контейнеров управляющих элементов ActiveX по предоставляемым функциональным возможностям;
- предложен новый, базирующийся на семантической теории языков программирования, подход к анализу Win32 С++-программ с целью обнаружения в них ситуаций, приводящих к блокировкам;
- показано, что семантическое значение Win32 С++-программы может быть представлено конечной системой рекурсивных уравнений;
- показана применимость предложенного подхода для анализа программ, создаваемых под платформу Win32 на любом языке программирования.
Достоверность основных результатов подтверждается:
- доказательством теоретических результатов и их апробацией на модельных примерах;
- результатами внедрения работы в технологические процессы компании R-Style Softlab.
Практическая ценность. В работе:
- создана технология построения контейнеров управляющих элементов ActiveX, позволяющая упростить и значительно ускорить процесс их разработки; основу технологии составляет библиотека С++-классов, функциональные возможности, расширяемость и гибкость которой позволяют использовать ее в промышленных программных проектах;
- разработана программа автоматизации процесса создания (на основе предложенной технологии) ActiveX-контейнера посредством генерации исходного С++-кода, обеспечивающая быстрое построение остова контейнера и позволяющая на примерах познакомиться с предлагаемой технологией, испытать технологию в действии;
- разработан семантический метод, позволяющий автоматизировать процесс анализа исходного кода Win32-nporpaMM с целью обнаружения в них ситуаций, приводящих к блокировкам;
- разработан набор базовых компонент для построения графического интерфейса пользователя, входящих в состав инструментального комплекса RS-Forms.
Реализация результатов работы. На основе разработанной технологии построения контейнеров управляющих элементов ActiveX в компании R-Style Softlab создан инструментальный комплекс разработки приложений RS-Forms.
Апробация работы. Основные результаты работы докладывались: на 8-ой международной научно-технической конференции "Радиоэлектроника, электротехника и энергетика" (г. Москва, 2002); на международных конференциях "Информационные средства и технологии" (г.Москва, 2001, 2002); на семинарах в Управлении программных разработок компании R-Style Softlab; на семинарах кафедры ПМ МЭИ (ТУ). Программный комплекс RS-Balance компании R-Style Softlab, созданный с использованием результатов работы, был представлен на 14-ой ежегодной российской выставке информационных технологий "СОФТУЛ'2003".
Публикации. По теме диссертации опубликовано 7 работ.
Структура и объем работы. Диссертация состоит из введения, четырех глав, заключения, списка литературы и четырех приложений. Общий объем основного текста включает 138 стр., в том числе 35 рис. и 2 таблицы. Список литературы состоит из 64 наименований.
Заключение диссертация на тему "Разработка инструментального комплекса для создания и семантического анализа распределенных информационных систем"
4.5. Выводы по главе 4
1. Рассмотрена структура инструментального комплекса RS-Forms, архитектура создаваемых на его основе приложений, входящие в его состав средства разработки. Показаны ключевые отличия RS-Forms от существующих аналогов.
2. Показана применимость предложенной во второй главе настоящей работы технологии построения контейнеров управляющих элементов ActiveX при реализации современного инструментального комплекса разработки приложений, в частности, для создания контейнера-представления, ориентированного на работу с одним произвольным ActiveX-объектом; управляющих элементов "форма", "печатная страница", "табулятор"; s-контейнера меню.
3. Рассмотрен подход к быстрой разработке управляющих элементов ActiveX. Показано, что в основе этого подхода лежит элемент управления "форма".
ЗАКЛЮЧЕНИЕ
1. Предложен новый базирующийся на семантической теории языков программирования формальный подход к анализу Win32 С++-программ с целью обнаружения в них ситуаций, приводящих к блокировкам. Показано, что семантическое значение Win32 С++-программы эквационально характеризуемо. Доказана применимость подхода для анализа программ, создаваемых под платформу Win32 на любом языке программирования.
2. Создана технология построения контейнеров управляющих элементов ActiveX (контейнеров-форм, контейнеров-представлений, s-контейнеров), позволяющая упростить и значительно ускорить процесс их разработки; основу технологии составляет библиотека С++-классов, функциональные возможности, расширяемость и гибкость которой позволяют использовать ее в промышленных программных проектах.
3. На основе предложенной технологии:
- реализована программа автоматизации процесса создания ActiveX-контейнера посредством генерации исходного С++-кода;
- в компании R-Style Softlab создан инструментальный комплекс разработки приложений — RS-Forms, в рамках которого автором реализованы:
• контейнер-представление, ориентированный на работу с одним произвольным ActiveX-объектом;
• управляющие элементы-контейнеры "форма", "печатная страница", "табулятор";
• s-контейнер меню;
• инструментальные средства быстрой разработки управляющих элементов ActiveX.
Библиография Костарев, Александр Николаевич, диссертация по теме Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей
1. Борланд Р. Эффективная работа с Word 7.0 для Windows 95: Пер. с англ. — СПб.: Питер, 1996. - 1104 с.
2. Крейг Д., Уебб Д. Microsoft Visual Basic 6.0. Мастерская разработчика: Пер. с англ. М.: Русская редакция, 2001. - 720 с.
3. БиллигВ. VBA в Office 2000. Офисное программирование: Пер. с англ. — М.: Русская редакция, 1999. — 400 с.
4. Колесов А., Павлова О. Microsoft Office 97 — инструмент для разработчиков бизнес-приложений // PC Week/RE. 1997. - № 25. - С. 33.
5. Кубрин С. Object RSL — объектно-ориентированная версия языка RSL // RS-Club. 1997. - №4. - С. 63-67.
6. Кубрин С. Эволюция RSL — от простейшей генерации отчетов до объектно-ориентированного программирования // RS-Club. 2000. — №3. - С. 75-78.
7. Волошин В. Visual RSL: компонентный подход к созданию системы обработки и анализа информации // RS-Club. 1998. - №2. - С. 75-77.
8. Резницкий Д., Кубрин С. Отладчик для интерпретатора Object RSL // RS-Club. 2001. - №2. - С. 70-73.
9. Аудит-Оптим. ascContainer средство создания динамического пользовательского интерфейса // Электронный ресурс. — 2000. — Режим доступа: http://www.optim.ru/Software/rus/ascContainer/asccontainer.asp.
10. BCGSoft Ltd. BCG ControlBar Library // Электронный ресурс. 2001. -Режим доступа: http://www.bcgsoft.com.
11. Котов В. Е. Сети Петри. М.: Наука, 1984. - 160 с.
12. Мельников В. Е., Харитонов Д. И. Применение сетей Петри при разработке графического языка программирования // Электронный ресурс. 2000. — Режим доступа: http://www.iacp.dvo.ru/labl l/pab/pub02.html.
13. Кораблин Ю. П. Семантика языков программирования. М.: Изд. МЭИ, 1992. -100 с.
14. Кораблин Ю. П. Семантика языков распределенного программирования. — М.: Изд. МЭИ, 1996. 102 с.
15. Кораблин Ю. П. Алгебраический подход к заданию семантики языков распределенного программирования // Известия академии наук. Теория и системы управления. 1995. - №5. — С. 34-41.
16. Кораблин Ю. П. Язык асинхронных функциональных схем и его операционная семантика // Известия академии наук. Теория и системы управления. 1996. - №5. - С. 42-53.
17. Кораблин Ю. П., Налитов С. Д., Куликова Н. JI. Распределенное программирование на языке АФС. М.: Изд. МЭИ, 1995. - 40 с.
18. Кораблин Ю. П. Семантические методы анализа распределённых систем. Дис. на соиск. уч. ст. д-ра техн. наук. М., 1994. - 272 с.
19. Кораблин Ю. П. Курс лекций по схематологии программ / М., 1999. 49 с.
20. Хоар Ч. Взаимодействующие последовательные процессы. — М.: Мир, 1989. -264 с.
21. Asche R. R. Detecting Deadlocks in Multithreaded Win32 Applications // Электронный ресурс. 1994. - Режим доступа: MSDN Library, Technical Articles.
22. Asche R. R. Putting DLDETECT to Work // Электронный ресурс. 1994. -Режим доступа: MSDN Library, Technical Articles.
23. Asche R. R. The Implementation ofDLDETECT.EXE // Электронный ресурс. 1994. - Режим доступа: MSDN Library, Technical Articles.
24. Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на С++. 2-е изд.: Пер. с англ. - М.: Издательство Бином; СПб.: Невский диалект, 1998. — 562 с.
25. Фаулер М., Скотт К. UML в кратком изложении. Применение стандартного языка объектного моделирования: Пер. с англ. -М.: Мир, 1999. 191 с.
26. Буч Г., Рамбо Д., Джекобсон А. Язык UML. Руководство пользователя: Пер. с англ. М.: ДМК Пресс, 2001. - 432 с.
27. Приемы объектно-ориентированного проектирования. Паттерны проектирования / Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. : Пер. с англ. — СПб.: Питер, 2001.-368 с.
28. Шаллоуей А., ТроттДж. Шаблоны проектирования. Новый подход к объектно-ориентированному анализу и проектированию: Пер. с англ. — М.: Вильяме, 2002. 288 с.
29. Ларман К. Применение UML и шаблонов проектирования: Пер. с англ. — М.: Вильяме, 2001.-496 с.
30. Чеппел Д. Технологии ActiveX и OLE: Пер. с англ. М.: Русская редакция, 1997.-320 с.
31. Роджерсон Д. Основы СОМ: Пер. с англ. М.: Русская редакция, 1997. -376 с.
32. Коберниченко A. Visual Studio 6. Искусство программирования. — М.: Нолидж, 1999. 256 с.
33. Трельсен Э. Модель СОМ и применение ATL 3.0: Пер. с англ. СПб.: BHV, 2000.-928 с.
34. Оберг Р. Технология СОМ+. Основы и программирование: Пер. с англ. — М.: Вильяме, 2000. 480 с.
35. Рихтер Д. Windows для профессионалов. 2-е изд.: Пер. с англ. - М.: Русская редакция, 1995. — 720 с.
36. Рихтер Д. Windows для профессионалов. 4-е изд.: Пер. с англ. — СПб.: Питер; М.: Русская редакция, 2001. — 752 с.
37. Круглински Д., Уингоу С., Шеферд Д. Программирование на Visual С++ 6.0 для профессионалов: Пер. с англ. — М.: Русская редакция, 2000. — 854 с.
38. White К. АррWizardry in 12 Easy Steps // Visual С++ Developer. 2000. - №5. -C. 20-28.
39. Крокет Ф. MFC. Мастерская разработчика: Пер. с англ. М.: Русская редакция, 1998.-400 с.
40. Тосс В. Visual С++ 5. Энциклопедия пользователя: Пер. с англ. — Киев: ДиаСофт, 1998.-688 с.
41. Kernighan В., Ritchie D. The С Programming Language. 2-nd. - Englewood Cliffs: Prentice-Hall PTR, 1988. - 274 c.
42. Керниган Б., Пайк P. Практика программирования: Пер. с англ. СПб.: Невский диалект, 2001. — 381 с.
43. Липпман С. Основы программирования на С++: Пер. с англ. — М.: Вильяме, 2002.-256 с.
44. Страуструп Б. Язык программирования С++. 3-е изд.: Пер. с англ. — СПб.: Невский диалект; М.: Бином, 1999. - 991 с.
45. Страуструп Б. Дизайн и эволюция С++: Пер. с англ. М.: ДМК Пресс, 2000. -448 с.
46. Мейерс С. Эффективное использование С++. 50 рекомендаций по улучшению ваших программ и проектов: Пер. с англ. М.: ДМК, 2000. - 240 с.
47. Мейерс С. Наиболее эффективное использование С++. 35 новых рекомендаций по улучшению ваших программ и проектов: Пер. с англ. М.: ДМК Пресс, 2000.-304 с.
48. Мейерс С. Эффективное использование STL. Библиотека программиста: Пер. с англ. СПб.: Питер, 2002. - 224 с.
49. Элджер Дж. С++: библиотека программиста: Пер. с англ. СПб.: Питер, 2000.-320 с.
50. ФаулерМ. Рефакторинг: улучшение существующего кода: Пер. с англ. — СПб.: Символ-Плюс, 2003. 432 с.
51. Брукс Ф. Мифический человеко-месяц или как создаются программные системы: Пер. с англ. — СПб.: Символ-Плюс, 2001. — 304 с.
52. Кнут Д. Искусство программирования: В 3-х т: Пер. с англ. — М.: Вильяме, 2000. — Т. 1. Основные алгоритмы. 3-е изд. - 720 с.
53. Кнут Д. Искусство программирования: В 3-х т: Пер. с англ. — М.: Вильяме, 2000. — Т.2. Получисленные алгоритмы. — 3-е изд. — 832 с.
54. Кнут Д. Искусство программирования: В 3-х т: Пер. с англ. М.: Вильяме,2000. Т.З. Сортировка и поиск. — 2-е изд. — 832 с.
55. Кораблин Ю. П., Костарев А. Н. Метод обнаружения исключительных ситуаций в приложениях Windows // Известия академии наук. Теория и системы управления. 2003. - №4. - С. 124-131.
56. Костарев А. Создание контейнеров элементов управления ActiveX // Byte. —2001. -№ 8.-С. 28-33.
57. Костарев А., Павлов JI. RS-Forms — новый инструмент для разработки приложений // RS-Club. 2002. - №3. - С. 18-22.
58. Костарев А. О создании контейнеров управляющих элементов ActiveX // Доклады Международной конференции "Информационные средства и технологии". 16-18 октября 2001 г. В 3-х т. М.: Изд-во "Станкин", 2001. - Т.З. -С. 30-33.
59. Кораблин Ю. П., Костарев А. Н. Методы обнаружения исключительных ситуаций в программах // Доклады Международной конференции "Информационные средства и технологии". 16-18 октября 2001 г. В 3-х т. — М.: Изд-во "Станкин", 2001. Т.З. - С. 70-73.
60. Кораблин Ю. П., Костарев А. Н. Метод обнаружения исключительных ситуаций в Win32-пpилoжeнияx // Доклады Международной конференции "Информационные средства и технологии". 15-17 октября 2002 г. В 3-х т. — М.: Янус-К, 2002. Т.2. - С. 40-42.
61. Костарев А. Концепция работы с клавиатурой и фокусом ввода в технологии ActiveX // Восьмая междунар. науч.-техн. конф. студентов и аспирантов: Тез. докл. В 3-х т. М. Изд-во МЭИ, 2002. - Т.1. - С. 272-273.
-
Похожие работы
- Синтез информационных моделей сложных производственных систем для распределенных образовательных структур
- Система автоматизации семантической интеграции распределенных баз данных
- Метод и технологии семантической обработки информации для государственного и муниципального управления
- Семантические методы анализа распределенных систем
- Применение объектно-ориентированных интеллектуальных систем в подготовке специалистов в области химии и химической технологии
-
- Системный анализ, управление и обработка информации (по отраслям)
- Теория систем, теория автоматического регулирования и управления, системный анализ
- Элементы и устройства вычислительной техники и систем управления
- Автоматизация и управление технологическими процессами и производствами (по отраслям)
- Автоматизация технологических процессов и производств (в том числе по отраслям)
- Управление в биологических и медицинских системах (включая применения вычислительной техники)
- Управление в социальных и экономических системах
- Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей
- Системы автоматизации проектирования (по отраслям)
- Телекоммуникационные системы и компьютерные сети
- Системы обработки информации и управления
- Вычислительные машины и системы
- Применение вычислительной техники, математического моделирования и математических методов в научных исследованиях (по отраслям наук)
- Теоретические основы информатики
- Математическое моделирование, численные методы и комплексы программ
- Методы и системы защиты информации, информационная безопасность