Разработка программного комплекса для конвертации конфигурации платформы "1С:Предприятие" в UML-модель
Автор: Балюк Александр Сергеевич, Попова Виктория Алексеевна
Рубрика: Информатика и вычислительная техника
Статья в выпуске: 4, 2021 года.
Бесплатный доступ
Применение средств для повышения удобства создания программного обеспечения является важным аспектом при организации процесса разработки. В данной работе определяются причины применения механизмов для наглядного представления структуры современных программных систем в графическом виде. Анализируется структура прикладных решений на платформе «1С:Предприятие». Описывается формат «Дерево типов конфигурации». Приводятся этапы разработки программного комплекса для преобразования конфигураций «1С:Предприятие» в объектную модель UML с целью дальнейшей визуализации в виде диаграмм классов.
Конфигурация, система типов, диаграмма классов, структура системы, объектная модель
Короткий адрес: https://sciup.org/148323193
IDR: 148323193 | УДК: 004.043 | DOI: 10.18137/RNU.V9187.21.04.P.137
Development of a software package for conversion configuration of the 1C: Enterprise platform to UML model
The use of tools to improve the convenience of creating software is an important aspect in the organization of the development process. The article defines the reasons for the use of mechanisms for the visual representation of the structure of modern software systems in a graphical form. The structure of applied solutions on the “1C:Enterprise” platform is analyzed. The “Configuration Type Tree” format is described. The stages of developing a software package for converting “1C:Enterprise” configurations into an object model of UML for the purpose of further visualization in the form of class diagrams are given.
Текст научной статьи Разработка программного комплекса для конвертации конфигурации платформы "1С:Предприятие" в UML-модель
Непрерывное развитие современных информационных систем, использующихся в различных сферах деятельности, влечет за собой усложнение программ ввиду внедрения новых функциональных возможностей, которые необходимы из-за введения законодательством новых стандартов, а также возникновений требований от заказчиков и пользователей.
Расширение функциональности программ вызывает трудности поддержки программного кода, так как сложно отследить взаимосвязь объектов и то, в каком контексте они могут быть использованы.
Чтобы оптимизировать процесс создания программ, разработчики могут применять механизмы для визуального представления структуры информационной системы [4; 8].
В настоящее время в качестве одного из инструментов для визуализации и документирования структуры программного обеспечения используется язык UML [9], который позволяет при помощи диаграмм наглядно представить компоненты системы, как они связаны и взаимодействуют друг с другом и с окружением.
Для программ, написанных на таких языках программирования, как C++, Java, Javascript, Python, существуют средства, например, Star UML и Visual Paradigm, позволяющие выполнять автоматическое конвертирование программного кода в диаграмму классов UML. Та кой процесс называется реверс-инжинирингом программн ого обеспечения [2].
Балюк Александр Сергеевич кандидат физико-математических наук, доцент, доцент кафедры алгебраических и информационных систем института математики и информационных технологий. Иркутский государственный университет, город Иркутск. Сфера научных интересов: сложность вычислений, конечные поля, верификация компьютерных программ. Автор более 20 опубликованных научных работ.
Несмотря на распространенное использование языка UML в процессах разработки программного обеспечения, на текущий момент в открытом доступе не существует средств, позволяющих визуально представлять структуру систем, разработанных на платформе «1С:Предприятие» [1]. В связи с этим возникла идея создания программного комплекса для конвертации конфигурации платформы «1С:Предприятие» в UML-модель для визуализации структурного аспекта системы.
Структура прикладных решений на базе «1С:Предприятие»
В конфигурациях платформы «1С:Предприятие» каждый созданный разработчиком объект относится к одному из типов метаданных:
-
1. «Подсистема», «Общий модуль», «Роль» и др., которые входят в группу «Общие объекты».
-
2. «Справочник», «Документ», «Перечисление», «Регистр сведений», «План видов характеристик» и др., входящих в группу «Прикладные объекты».
Каждый тип метаданных обладает базовой функциональностью, которая определена на платформе «1С:Предприятие». При создании конфигурации разработчики создают общие и прикладные объекты, наследующие всю функциональность соответствующих типов метаданных. Эту функциональность можно переопределить под потребности бизнес-процессов создающейся системы. Важно отметить, что прикладные объекты наследуют функциональность от нескольких типов, которые определены на платформе «1С:Предприятие». Например, прикладной объект метаданных «Справочник» наследует функциональность следующих типов платформы [7]: «СправочникОбъект», «СправочникСсылка», «СправочникВыборка», «СправочникСписок» и «Справоч-никМенеджер».
Все объекты конфигурации имеют свойства, типами которых могут выступать как прикладные объекты конфигурации, так и типы данных встроенного языка платформы «1С:Предприятие». Информация о таких типах содержится во встроенной справке 1С, называющейся «СинтаксисПомощник».
Разработка программного комплекса для конвертации конфигурации платформы ...
Представление конфигурации «1С:Предприятие» в формате XML
Любая конфигурация, разработанная на платформе «1С:Предприятие», может быть выгружена в файлы XML-формата в виде файловой структуры.
После выгрузки конфигурации платформы структура XML-файлов каждого объекта конфигурации различается ввиду их специфики. Например, для объектов типов метаданных «Справочник», «Документ», «Обработка» и «Отчет» определены реквизиты и табличные части, а у всех регистров (сведений, накопления, бухгалтерии и расчета) помимо реквизитов существуют измерения и ресурсы.
К примеру, в XML-файле выгрузки прикладного объекта типа метаданных «Справочник» информация представлена так, как показано на Рисунке 1.
-
1 cMetaDataObject xmlns="..." xmlns:xr="...">
-
2 ccatalog>
-
3 clnternal info
-
4 cxr:GeneratedType name="CatalogObject.Пользователи" category="object"/>
-
5 cxr:GeneratedType name="CatalogRef.Пользователи" category="Ref" />
-
6 . . .
-
7 c/lnternal Info
-
8 cproperties>
-
9 <мате>пользователис/мате>
-
10
-
11
-
12 cxr:standardAttribute name="code"/>
-
13 . . .
-
14 c/standardAttributes>
-
15 c/properties>
-
16 cehi1dobjects>
-
17
-
18 cproperties>
-
19 <мате>датарождениж/мате>
-
20 cType>
-
21 cv8:Type>xs:dateTimec/v8:туре>
-
22 туре>
-
23
-
24
-
25 . . .
-
26
-
27 clnternalInfo>
-
28 . . .
-
29
-
30
... -
31
... -
32
-
33
-
34
-
35
Рисунок 1. XML-описание справочника «Пользователи»
Элементы на рисунке обозначают следующее:
-
• Internal Info – содержит перечисление типов, которые были созданы на платформе «1С:Предприятие» для данного объекта конфигурации;
-
• Properties – определяет стандартные свойства объекта конфигурации, в данном случае Name (наименование) и Standard Attributes (стандартные реквизиты);
-
• Child Objects – перечисляет реквизиты, табличные части, формы, макеты и команды, которые содержит объект конфигурации;
-
• Attribute – обозначает реквизит объекта конфигурации, допустимые типы реквизита перечисляются в элементе Type;
-
• Tabular Section – описывает данные табличной части объекта конфигурации.
Формат XMI
Для графического представления структуры программ в UML наиболее распространенными являются диаграммы классов.
Для хранения UML-моделей и для обмена ими или их частями существует международный стандарт XMI [10], который поддерживается многими графическими редакторами UML.
Элементы UML-модели упаковываются в файл XMI для последующей загрузки в другую UML-модель. В частности, элементы диаграммы классов упаковываются следующим образом.
-
1. Описание класса помещается в элемент packaged Element , атрибутами которого являются xmi:id (идентификатор класса) и name (наименование класса). Атрибуты и операции класса перечисляются во вложенных в packaged Element элементах owned Attribute и owned Operation соответственно.
-
2. Отношение наследования между классами определяется в виде элементов generalization . В таких элементах в атрибуте specific указывается идентификатор класса, наследующего функциональность от класса, значение xmi:id которого записывается в general .
Поскольку XML-файлы выгрузки конфигурации платформы «1С:Предприятие» содержат исчерпывающее описание всех объектов конфигурации, можно выполнить преобразование из этих XML-файлов в XMI-представление, а после этого при помощи UML-редактора отобразить графически структуру конфигурации.
Определение этапов конвертации конфигурации в XMI
XML-файлы выгрузки конфигурации имеют довольно сложную и избыточную структуру для задачи данной работы, поскольку в них присутствуют помимо основных свойств настройки поведения и отображения данных объектов конфигурации, которые не несут информации для графического представления структуры. Сложная структура также обуславливается возможностью полностью восстановить всю конфигурацию из выгруженных файлов.
Поэтому сначала конфигурация была представлена в упрощенном формате [3], а затем было выполнено преобразование промежуточного документа в XMI.
Упрощенный формат для описания объектов конфигурации и типов платформы в рамках данной работы назван «Дерево типов конфигурации» (далее – ДТК).
Таким образом, файл формата ДТК должен состоять:
-
• из типов платформы («ветки дерева») – служат основанием для объектов конфигурации;
-
• объектов конфигурации («листья дерева») – наследуют функциональность типов платформы.
Представление конфигурации в формате дерева типов конфигурации
Для представления конфигурации платформы «1С:Предприятие» в формате ДТК был выбран формат XML [5]. Правила формирования XML-файла с данными конфигурации содержатся в созданной авторами схеме XSD, описание которой приведено далее.
Все объекты конфигурации, а также относящиеся к ним табличные части, формы, макеты и команды представляются в виде элемента context , обязательными атрибутами которого являются наименование ( name ) и идентификатор ( id ), а в качестве необязательного атрибута значится extends – идентификатор элемента context , от которого наследуется функциональность.
Каждое свойство объекта конфигурации описывается в элементе property , а наименование этого свойства указывается в атрибуте name . Свойство может иметь значения нескольких типов, поэтому каждый возможный тип перечисляется внутри property в отдель-
Разработка программного комплекса для конвертации конфигурации платформы ...
ном элементе type , где в одноименном атрибуте type указывается идентификатор элемента context . Элементы type можно назвать множеством допустимых типов свойства.
Табличные части объектов конфигурации являются самостоятельными сущностями, но разработчик может обращаться к ним, как к свойствам объекта конфигурации. Поэтому имя табличной части добавляется к элементу context в качестве свойства ( property ). При этом сама табличная часть определяется как отдельный элемент context .
Методы и события объекта конфигурации могут содержать как обязательные, так и необязательные параметры, которые, как и свойства, могут принимать разные типы значений. В данном случае было решено воспользоваться определением перегрузки методов, что допускает при отличии в количестве или типах параметров создавать разные методы с одним и тем же наименованием. Ввиду этого для каждого возможного набора типов параметров создается элемент param Set , внутри которого перечислены параметры ( param ), где атрибутами каждого из них являются наименование ( name ) и тип ( type ). Поскольку некоторые параметры могут быть необязательными и, соответственно, в них передается пустое значение из места вызова, то в таком случае элемент param указывается без атрибутов. Некоторые методы могут иметь возвращаемое значение, для них в каждый param Set добавляется элемент returnSet , обозначающий множество допустимых типов возвращаемых значений, в котором перечислены элементы return с атрибутом type . Все param Set помещаются в элемент method , у которого имеется атрибут name , обозначающий наименование метода или события.
Согласно определенным выше правилам формируется документ XML, содержащий информацию об объектах конфигурации в таком виде, как показано на Рисунке 2.
-
1 ccontexts>
-
2 ccontext пате="справочникссылка.пользователи" id="СправочникСсылка.Пользователи" ехгепд$="справочникссылка.&1t;имя справочника&дг;"
-
3 cproperty пате="Ссылка">
-
4 ctype туре="справочникссылка.пользователи"/>
-
5 с/р roperty>
б cproperty пате="Код">
-
7 сгуре туре="строка"/>
-
8
-
9 . . .
-
10 c/context>
-
11 ccontext пате="СправочникОбъект.Пользователи" 1^="справочникобъект.пользователи" extends="CnpaBO4HHKO6beKT.&!t;Имя справочника&д1;"
-
12 . . .
-
13 c/context>
-
14 ccontext пате="справочникссылка.&1т;имя справочника&дт;" id="CnpaBO4никСсылка.&1t;Имя справочника&дТ;"
-
15 cproperty пате="код" enName="code">
-
16 ctype Туре="Число"/>
-
17 ctype 1уре="строка"/>
-
18 с/р roperty>
-
19 . . .
-
20 cmethod пате="принадлежитэлементу">
-
21 cparamSet>
22 cparam пате="элемент" 1уре="справочникссылка.&11;имя справочника&д1;"/>
23 creturnSet>
-
24 creturn 1уре="Булево"/>
-
25 c/returnSet>
-
26 c/paramSet>
-
27 c/method>
-
28 . . .
-
29 c/context>
-
30 . . .
-
31 c/contexts>
Рисунок 2. XML-описание справочника «Пользователи» в формате ДТК
Для автоматического формирования XML-описания конфигурации в формате ДТК написана программа на языке программирования «1С:Предприятие». Разбор исходных XML-файлов с данными конфигурации выполнен при помощи запросов языка XPath, а формирование XML-описания в формате ДТК реализовано с использованием механизма XDTO.
Таким образом, все типы, определенные в конфигурации, помещаются в файл формата ДТК. Также был создан файл того же формата, в который были добавлены все типы из справочной информации платформы «1С:Предприятие».
Преобразование формата ДТК в XMI
Преобразование конфигурации из формата ДТК в XMI сделано с помощью правил языка XSLT. Процесс конвертации из XML в XMI выполняется следующим образом.
Каждый элемент context соответствует классу в UML и поэтому определяется в XMI как packaged Element . Свойства элемента ( property ) преобразуются в owned Attribute . Так как у property может быть несколько элементов type , а в нотации UML каждому атрибуту соответствует только один тип, было решено сделать вспомогательный параметризованный тип и представлять его в виде отдельного класса. Например, если в элементе property содержится два элемента type , обозначающие типы «Число» и «Строка», то будет создан класс « Сложный Тип<Число, Строка> », который является типом для этого элемента property . Все элементы method промежуточного формата преобразуются в UML в качестве операций класса. Поскольку в method перечислены всевозможные наборы параметров в виде param Set , в XMI количество операций класса ( owned Operation ) соответствует количеству элементов param Set .
После формирования всех packaged Element , выполняется установка связей между классами. Сначала определяется, какие типы без учета повторений есть в каждом классе у атрибутов и параметров операций. Затем для класса устанавливается отношение зависимости с каждым из классов, наименование которого соответствует определенным на предыдущем этапе типам. Если у элемента context присутствует атрибут extends , то класс packaged Element связывается с классом, имя которого указано в extends , отношением наследования ( generalization ). Связь класса с табличными частями, а также с относящимися к нему формами, командами и макетами определяет отношение агрегации.
Фрагмент разработанных правил XSLT представлен на Рисунке 3.
Запуск преобразования на языке XSLT осуществляется средствами платформы «1С:Предприятие» при помощи объекта «ПреобразованиеXSL».
Тестирование программного комплекса
Чтобы выполнить тестирование разработанного программного комплекса, использовалась свободно распространяемая конфигурация «Библиотека стандартных подсистем».
На Рисунке 4 представлен фрагмент конфигурации в формате UML. Для визуализации применялась программа StarUML, в которую был импортирован сгенерированный файл XMI, описывающий структуру конфигурации.
Разработанный программный комплекс, а также инструкция по его установке, доступны в репозитории проекта [6].
Заключение
В результате работы был создан программный комплекс, позволяющий выполнять преобразование любой конфигурации, разработанной на платформе «1С:Предприятие», в UML-модель с целью графического представления ее структуры. Полученную объект-
Разработка программного комплекса для конвертации конфигурации платформы ...
ную модель можно визуализировать в любом графическом редакторе UML, который поддерживает импорт XMI.
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8 . . .
-
9
... -
10
... -
11 . . .
-
12
-
13
-
14
-
15
-
16
:xmi xmlns:uml="..." xmlns:xmi="..."> -
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
... -
30
-
31
-
32
-
33 . . .
-
34
-
35
Рисунок 3. XSLT-преобразование XML
Рисунок 4. Представление фрагмента БСП
Программный комплекс может стать полезным инструментом в процессе разработки конфигураций платформы «1С:Предприятие», так как его использование позволит экономить время на изучение структуры программной системы.
Список литературы Разработка программного комплекса для конвертации конфигурации платформы "1С:Предприятие" в UML-модель
- С:Предприятие 8.3.17. Документация [Электронный ресурс]. URL: https://its.1c.ru/db/v8317doc (дата обращения: 10.03.2021).
- Ахапкин А.С. Получение архитектуры программного продукта по его исходному тексту // Научно-технический вестник Санкт-Петербургского государственного университета информационных технологий, механики и оптики. 2005. № 29. С. 183-185.
- Балюк А.С., Попова В.А. Преобразование конфигурации 1С:Предприятия в UML-модель // Информационные технологии: материалы 59-й Международной научной студенческой конференции (Новосибирск, 12-23 апреля 2021 г.). Новосибирск: ИПЦ НГУ, 2021. С. 30.
- Зверева В.А., Кознов Д.В., Бережной А.С. Обзор подходов управления согласованностью артефактов разработки ПО при использовании UML // Системное программирование. 2006. № 1 (2). С. 240-267.
- Попова В.А., Балюк А.С. Статическая проверка типов для программ, разработанных на платформе "1С:Предприятие" // Вестник Иркутского университета. 2020. № 23. С. 54-55.
- Попова В.А. Программный комплекс для преобразования конфигурации 1С:Предприятия в UML-модель [Электронный ресурс]. URL: https://gitlab.com/converting-1c-to-uml/software-package (дата обращения: 17.05.2021).
- Работа с прикладными объектами средствами встроенного языка [Электронный ресурс]. URL: https://its.1c.ru/db/metod8dev/content/2698/hdoc (дата обращения: 11.03.2021).
- Романов В.Ю. Моделирование свободно-распространяемого программного обеспечения с помощью языка UML // International Journal of open information technologies. 2013. № 27 (1). С. 11-15.
- About the Unified Modeling Language Specification Version 2.5.1. Available at: https://www.omg.org/spec/UML/About-UML/(date of the application: 08.03.2021).
- About the XML Metadata Interchange Specification Version 2.5.1. Available at: https://www.omg.org/spec/XMI/About-XMI/(date of the application: 10.03.2021).