Предметно-ориентированный язык программирования для разработки информационных систем для муниципальных образований

3. Буч, Г. Объектно-ориентированный анализ и проектирование с примерами приложений на C++ / Г. Буч. - СПб.: Невский диалект, 1998.

УДК 004.9

ПРЕДМЕТНО-ОРИЕНТИРОВАННЫЙ ЯЗЫК ПРОГРАММИРОВАНИЯ ДЛЯ РАЗРАБОТКИ ИНФОРМАЦИОННЫХ СИСТЕМ ДЛЯ МУНИЦИПАЛЬНЫХ

ОБРАЗОВАНИЙ

Григоров Антон Сергеевич, Череповецкий государственный университет, инженер-программист отдела информационных систем, МУ «Центр муниципальных информационных ресурсов и технологий», Россия, Череповецк, antongrigorov1986@gmail.com

Введение

Скорость разработки программного обеспечения растёт с каждым годом. Быстро изменяющиеся экономические, политические факторы часто требуют незамедлительного реагирования. Поэтому создаваемые информационные системы должны быть мобильны и восприимчивы к таким изменениям, необходимо, чтобы производимые корректировки в работе системы были менее трудоёмкими с точки зрения разработчиков, а новые функций системы были доступны для пользователей как можно скорее. Возникает необходимость создания инструментов, позволяющих ускорить разработку новых информационных систем и доработку уже имеющихся. В статье [1] рассматривался общий подход к созданию муниципальных информационных систем, основанный на использовании метаописания предметных областей. Также описывалась модель ядра системы и принципы функционирования пользовательских подсистем, которые разрабатываются на базе МУ «ЦМИРиТ» г. Череповца в рамках создания муниципальной геоинформационной системы (МГИС).

В данной статье представлено описание предметно-ориентированного языка программирования, разработанного в МУ «ЦМИРиТ» и используемого для создания информационных систем в муниципальных образованиях.

1. Предметно-ориентированный подход к созданию муниципальных информационных систем

Если рассматривать основные направления в развитии информационных систем (ИС), которые используются в настоящее время в работе муниципальных органов власти, то можно сказать, что в основном ИС муниципальных организаций оперируют «картотечной» информацией. К их основным функциям можно отнести: ввод в систему данных об объекте и их редактирование; поиск данных об объектах; создание разнообразных отчетов, основанных на данных, хранящихся в ИС. Так как подобных информационных систем для среднего российского города (более 100 тысяч жителей) может насчитываться несколько десятков, то возникает ряд вопросов, требующих решения. Каким образом уменьшить затраты на создание этих ИС? Каким образом обеспечить взаимодействие между ними (например, данные из подсистем «Адресный реестр» и «Реестр населения» могут использоваться в таких подсистемах, как «Аренда земельных участков» или «Оплата услуг ЖКХ»)?

В качестве подхода к решению данных вопросов предлагается разработка единого шаблона, по которому должны строиться муниципальные ИС. В качестве инструмента, с помощью которого можно создавать однотипные ИС, было принято решение использовать специально разработанный для таких целей предметно-ориентированный язык программирования.

Предметно-ориентированный язык программирования (англ. domain-specific programming language, domain-specific language, DSL) — язык программирования, специально разработанный для решения определённого круга задач. Языки программирования предметной области, дополненные технологиями метапрограммирования, являются

55

эффективным средством автоматизации разработки программного обеспечения и в настоящий момент находят широкое применение в области информационных технологий.

Примерами предметно-ориентированных языков могут служить:

• Адаптивные объектные модели — это модели, которые строятся специально для определенной предметной области на объектно-ориентированных языках моделирования общего назначения.

• Файлы XML, используемые в современных проектах для конфигураций программных каркасов (framework).

2. Структура предметно-ориентированного языка программирования для муниципальных ИС

Процесс создания DSL состоит из следующих этапов:

1. Определение абстрактного синтаксиса.

2. Определение конкретного синтаксиса.

3. Определение правил трансформации.

Абстрактный синтаксис - это пригодный для машинной обработки вид, в котором описываются понятия DSL. В нашем случае в этом качестве будет использоваться строго структурированный XML-файл.

Конкретный синтаксис - это представление понятий абстрактного синтаксиса, которыми может манипулировать пользователь. Представление может быть текстовым, графическим или симбиозом обоих. В нашем случае будет использоваться представление в виде элементов UML (классов, ассоциаций и т.д.).

Правила трансформаций - это правила, по которым абстрактное представление транслируется в исполнимое представление. Так как в качестве абстрактного представления используется XML-файл, то преобразование его содержания в исполняемый код на различных языках программирования может быть реализовано при помощи технологии XSTL.

3. UML-представление информационной системы муниципального образования

Основой описания конкретного синтаксиса являются диаграммы классов, описывающих предметную область. Для того чтобы настроить стандартные элементы модели для выполнения конкретных задач по моделированию ИС для муниципальных образований, был применен механизм UML-профилей. Используемый профиль определяет несколько UML-стереотипов, использующихся для расширения списка свойств элементов модели.

Рис. 1 Фрагмент описания подсистемы "Аренда земельных участков"

На диаграммах классов указываются следующие элементы:

• классы прикладных объектов (класс со стереотипом «Object»),

• классы, описывающие группы свойств прикладных объектов (стереотип «Properties_Grp 1»),

56

• классы, описывающие отчеты (стереотип «Report») и группы отчетов (стереотип «Reports_Grp 1»),

• классы, описывающие поиски (стереотип «Search») и группы поисков (стереотип «Searches»),

• зависимости между классами прикладных объектов.

Пример подобной диаграммы классов представлен на рисунке 1. Здесь изображен упрощённый фрагмент подсистемы «Аренда земельных участков». Основным классом на данной диаграмме является “Договор аренды земельного участка”. У него выделена одна группа свойств, в которой находятся 3 свойства: два обычных (“Номер договора”, “Дата заключения”) и одно ссылочное (“Арендатор”), которое ссылается на класс “Клиент”. Также у “Договора аренды земельного участка” есть одна группа отчетов. В этой группе представлены два отчета, которые можно будет сформировать при работе с ИС.

4. XML-представление информационной системы муниципального образования

Следующим этапом разработки ИС является перевод диаграмм UML в XML-представление. Каждому элементу UML ставится в соответствие фрагмент XML-файла. Классы и ассоциации трансформируются в тэги, а свойства элементов модели в атрибуты этих тэгов. В таблице 1 приведено соответствие между UML-элементами и XML-тэгами.

Таблица 1. Соответствие между UML-элементами и XML-тэгами

UML-элемент XML-тэг

Заголовок модели прикладной подсистемы. Определяет модель конкретной подсистемы и служит началом описания модели. Содержит информацию, необходимую ядру E3Core для правильной интерпретации модели. <E3> I I I I

Категория классов. Определяет заголовок одного модуля прикладной подсистемы внутри модели. |„< <Category>

Класс со стереотипом «Object». Описывает один определенный класс объектов. Предполагается, что «Object» обладает поведением, но сам не содержит описание атрибутов прикладной области. Используется как группирующий элемент для групп атрибутов прикладной области (групп свойств) и реализации поведения этих атрибутов. --<Obj I- - < ects> Object>

Ассоциация между классами со стереотипами «Object». --<AssociationsObject> I

Описание ролей ассоциированных классов. |--<AssociationObjectB>

I--<AssociationObjectA>

Квалификаторы. Квалификатор представляет собой условие, ограничивающее множество допустимых идентификаторов объектов, с которыми устанавливается связь. Если реализация класса объекта предполагает хранение его в БД, то, соответственно, квалификатор реализует запрос на языке SQL для выполнения условия ограничения множества. I--<Qualifiers> I--<Qualifier>

Класс со стереотипом «Properties_Grp1». Описание одной группы свойств (группы атрибутов). Группа свойств (группа атрибутов) - это семантически связанные атрибуты объекта предметной области. --<PropertiesGrps> I--<Properties> I I

Атрибут класса со стереотипом «Properties_Grp1». Соответствует семантике класса за исключением описания поведения. I--<Attributes> I I--<Property> I I

57

Если атрибут используется для описания в качестве ссылки на класс «Object», то в соответствующем тэге <Property Ref> указывается уникальный идентификатор ассоциации с классом, на который указывает ссылка. | | |--<Property Ref> || | | || | |

Операции класса. Используются для описания операций манипуляции данными, допустимых для данной группы свойств. | |--<Operations> | |--<Operation> | |

Аргумент операции класса. | |--<OperationParams> | |--<OperationParam>

Класс со стереотипом «Reports_Grp1». Группа отчетов. Описание группы отчетов, связанных с объектом предметной области как часть представления его атрибутов. Атрибуты данного класса являются ссылками на отдельные отчеты (классы со стереотипами «Reports») |--<ReportsGrps> |--<ReportsGrp> |--<ReportItems> |--<ReportItem>

Класс со стереотипом «Report». Отчет. Описывает любой отчет в системе (как независимый, так и относящийся к какой-либо группе отчетов объекта предметной области) --<Reports> |--<Report> I I

Атрибуты класса со стереотипом «Report». Описание параметров отчета, которые служат условиями выборки данных из хранилища. | --<ReportParams> |--<ReportParam>

Интерфейс. Интерфейсные объекты - это классы, которые ссылаются на классы «Object» других подсистем-северов для получения данных. При этом подсистема-сервер содержит как данные, так и метаданные. Это позволяет создавать распределенные приложения с четко определенными контрактами, разделенными между прикладными подсистемами. --<Interfaces> |--<Interface>

Класс со стереотипом «Search». Данные классы, отвечают за поиск объектов прикладных подсистем. Поиск прикладных объектов - это запросы к хранилищу, возвращающие множество объектов, удовлетворяющих условиям ограничения, описанного в запросе. Например, если хранилище - это RDBMS, то описание содержит в качестве шаблона запроса запрос на языке ANSI SQL. Если данные находятся в виде XML, то шаблон может представлять собой текст запроса на XPath. Реализация модуля, выполняющего запрос, должна допускать разбор шаблона в соответствии с его синтаксисом. l l A ! cn А Я irches> Search> --<SearchQuery>

Атрибуты класса со стереотипом «Search». Атрибуты описывают параметры поиска. --<SearchParams> | --<SearchParam>

5. Генерация исполняемого кода на основе XML-модели

Следующим этапом разработки ИС является генерация исполняемого кода из XML-модели. Так как в качестве источника данных для генерации используется XML-файл модели, то преобразование его содержания в исполняемый код на различных языках программирования может быть реализовано при помощи технологии XSTL. Процесс генерации кода на основе XSLT-преобразований более подробно рассматривается в работе [3]. Для каждого конкретного языка программирования может быть создан специальный шаблон преобразования. В качестве примера и для проверки выполнимости подобной трансформации из XML-представления в исполняемый код были созданы шаблоны для генерации схемы и логики базы данных (БД) для систем управления базами данных (СУБД) Oracle и MySQL.

58

Предполагается, что генератор должен выполнять следующие действия:

1. Генерация таблиц БД.

2. Генерация представлений БД.

3. Генерация хранимых процедур БД или программных модулей, написанных на языках программирования, выполнение которых поддерживает ядро системы.

4. Генерация шаблонов отчётов.

5. Генерация тестовых данных.

Так каждый объект системы (<Object>) транслируется в таблицу базы данных. Связь между объектам предметной области в зависимости от своей мощности переводится в набор внешних ключей или, в случае со связью «многие ко многим», в таблицу, хранящую пары внешних ключей связываемых объектов. Группам свойств (<Properties>), объединяющих сходные характеристики объекта вместе, ставятся в соответствие представления в БД.

Литература

1. Григоров А.С. Объектно-ориентированный подход к созданию типовых информационных систем для муниципальных образований. Объектные системы - 2010: Материалы I Международной научно-практической конференции. Россия, Ростов-на-Дону, 10-12 мая 2010 г / под общ.ред. П.П. Олейника. - Ростов-на-Дону, 2010. - 64-68 с.

2. Сергей Дмитриев. Языково-ориентированное программирование,

http://www.rsdn.ru/article/philosophy/LOP.xml

3. Dodds L. Code generation using XSLT, http://www- 106.ibm.com/developerworks/edu/x-dw-codexslt-i.html

УДК 519.682.4, 371.32

ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ ПОДХОД И ОБЪЕКТНООРИЕНТИРОВАННЫЕ ЯЗЫКИ КАК ПРЕДМЕТ ИЗУЧЕНИЯ1

Штанюк Антон Александрович, к.т.н., доцент, ГОУ ВПО «Нижегородский коммерческий

институт», shtan@land.ru

Существует ряд проблем, связанных с преподаванием объектно-ориентированного подхода (ООП) к разработке программного обеспечения, а также к преподаванию самих объектно-ориентированных языков (ООЯП) в высших учебных заведениях. Необходимо отметить, что рассматриваемый вопрос довольно популярен [1,2] и в этом деле пока рано ставить точку. Цель данной работы - показать, что раздельное преподавание ООП и ООЯП

1 Лауреат номинации "Лучший доклад о методах преподавания объектных технологий в ВУЗе". Автор награждается правом бесплатной публикации одного доклада по данной тематике на следующей конференции

59