Упрощенная инфраструктура для трансформации XML-моделей

Запропоновано варіант полегшеної інфраструктури для моделе-орієнтованої розробки великих програмних систем. Основою є первинне представлення моделі у вигляді предметно-залежного XML-формату. Модель має максимально компактне уявлення, дозволяє застосовувати розвинені засоби зміни та розширення, легко...

Full description

Saved in:
Bibliographic Details
Published in:Кибернетика и системный анализ
Date:2010
Main Authors: Глибовец, Н.Н., Федорченко, В.М.
Format: Article
Language:Russian
Published: Інститут кібернетики ім. В.М. Глушкова НАН України 2010
Subjects:
Online Access:https://nasplib.isofts.kiev.ua/handle/123456789/45130
Tags: Add Tag
No Tags, Be the first to tag this record!
Journal Title:Digital Library of Periodicals of National Academy of Sciences of Ukraine
Cite this:Упрощенная инфраструктура для трансформации XML-моделей / Н.Н. Глибовец, В.М. Федорченко // Кибернетика и системный анализ. — 2010. — № 1. — С. 105–110. — Бібліогр.: 13 назв. — рос.

Institution

Digital Library of Periodicals of National Academy of Sciences of Ukraine
_version_ 1860254229529100288
author Глибовец, Н.Н.
Федорченко, В.М.
author_facet Глибовец, Н.Н.
Федорченко, В.М.
citation_txt Упрощенная инфраструктура для трансформации XML-моделей / Н.Н. Глибовец, В.М. Федорченко // Кибернетика и системный анализ. — 2010. — № 1. — С. 105–110. — Бібліогр.: 13 назв. — рос.
collection DSpace DC
container_title Кибернетика и системный анализ
description Запропоновано варіант полегшеної інфраструктури для моделе-орієнтованої розробки великих програмних систем. Основою є первинне представлення моделі у вигляді предметно-залежного XML-формату. Модель має максимально компактне уявлення, дозволяє застосовувати розвинені засоби зміни та розширення, легко визначати трансформації для перетворення створених предметно-залежних моделей в будь-які інші моделі. Використання XSL для опису трансформацій дозволяє ефективно організовувати як вертикальні трансформації з довільною кількістю шарів абстракції, так і горизонтальні. An approach is proposed to the construction of a lightweight infrastructure for the model-oriented development of complex software systems. It is based on the use of a domain-dependent XML format for primary models. A model has a compact representation, allows for the use of advanced tools for changing and extending it, and makes it possible to easily determine transformations for converting domain-dependent XML models into any other models. The use of XSL for describing transformations allows one to organize both vertical and horizontal transformations (with any number of abstraction layers) and provides optimum conditions for collaboration.
first_indexed 2025-12-07T18:46:56Z
format Article
fulltext ÓÄÊ 004.4’242 Í.Í. ÃËÈÁÎÂÅÖ, Â.Ì. ÔÅÄÎÐ×ÅÍÊÎ ÓÏÐÎÙÅÍÍÀß ÈÍÔÐÀÑÒÐÓÊÒÓÐÀ ÄËß ÒÐÀÍÑÔÎÐÌÀÖÈÈ XML-ÌÎÄÅËÅÉ Êëþ÷åâûå ñëîâà: ìîäåëå-îðèåíòèðîâàííàÿ ðàçðàáîòêà, ïðåäìåòíî-çàâèñèìàÿ ìîäåëü, òðàíñôîðìàöèÿ ìîäåëåé, IoC-êîíòåéíåð. ÂÂÅÄÅÍÈÅ Ïðîãðàììèðîâàíèå, êàê ñïîñîá ôîðìàëèçàöèè îïèñàíèÿ ðàçíîîáðàçíûõ ïðîöåñ- ñîâ, çàâèñèò îò êîíêðåòíûõ òåõíè÷åñêèõ îãðàíè÷åíèé è èíôðàñòðóêòóðû, â ðàì- êàõ êîòîðîé ýòà ôîðìàëèçàöèÿ ïðîâîäèòñÿ. Áëàãîäàðÿ ïðîãðåññó â ýòîé îáëàñòè ïðèîðèòåò â ïðîãðàììèðîâàíèè äëÿ ìíîãèõ òèïîâ çàäà÷ ñìåñòèëñÿ c ìàêñèìàëü- íî ýôôåêòèâíîãî (â êîíòåêñòå èñïîëüçóåìûõ òåõíè÷åñêèõ ðåñóðñîâ) êîäèðîâàíèÿ íà ìàêñèìàëüíî áûñòðóþ (â êîíòåêñòå ÷åëîâå÷åñêèõ ðåñóðñîâ) è îäíîâðåìåííî êà÷åñòâåííóþ (quality) ðàçðàáîòêó [1–4]. ÌÎÄÅËÅ-ÎÐÈÅÍÒÈÐÎÂÀÍÍÀß ÐÀÇÐÀÁÎÒÊÀ Êëþ÷åâûå êîíöåïöèè MDD (Model Driven Development) — ïðåäìåòíî-çàâèñè- ìûé ÿçûê ìîäåëèðîâàíèÿ è òðàíñôîðìàöèÿ ìîäåëåé [5, 6].  êîíòåêñòå MDD ìîäåëü ïðåäñòàâëÿåò àáñòðàêöèþ ïðîãðàììíîé ñèñòåìû èëè/è îêðóæåíèÿ íàä åå ïðîãðàììíîé ðåàëèçàöèåé. Òàê, ñîãëàñíî ýòîìó îïðåäåëåíèþ ïðîãðàììíûé êîä òàêæå ïðåäñòàâëÿåò ìîäåëü, ïîñêîëüêó ÿâëÿåòñÿ àáñòðàêöèåé íàä ìàøèííûì êî- äîì, ãåíåðèðóåìûì êîìïèëÿòîðîì. Ìåòàìîäåëü (metamodel) îïèñûâàåò ñèíòàê- ñèñ è ñåìàíòèêó DSM-ÿçûêà ÷åðåç îïðåäåëåíèå ïîíÿòèé è èõ îòíîøåíèé â êîí- êðåòíîé ïðåäìåòíîé îáëàñòè (ïðîöåññ ñîçäàíèÿ DSML íàçûâàþò ìåòàìîäåëèðîâàíèåì). Òðàíñôîðìàöèÿ ìîäåëåé (Model Transformations) èãðàåò êëþ÷åâóþ ðîëü â MDD è îòâå÷àåò çà ïðåîáðàçîâàíèå ìîäåëåé, îïðåäåëåííûõ ñ ïîìîùüþ DSML, â äðóãèå ïðîãðàììíûå àðòåôàêòû è ôîðìû ïðåäñòàâëåíèÿ. Íàïðèìåð, ìîäåëü ìîæåò áûòü òðàíñôîðìèðîâàíà â êîìáèíàöèþ èñõîäíûõ òåêñòîâ, ðåñóðñîâ è XML-êîíôèãóðàöèé (ïîñêîëüêó â êîíòåêñòå MDA (Model Driven Architecture) ïðîãðàììà â ëþáîé ôîðìå ÿâëÿåòñÿ ñîáñòâåííî ìîäåëüþ). Êîíñîðöèóì OMG (Object Management Group) ïðåä- ëîæèë ñîáñòâåííûé âàðèàíò òàêîé òåõíîëîãèè ïîä íàçâàíèåì ìîäåëå-îðèåíòèðî- âàííàÿ àðõèòåêòóðà (MDA) â âèäå ðÿäà ñïåöèôèêàöèé è ñòàíäàðòîâ [7]. Ñóùåñòâóþùèå ïîäõîäû ê òðàíñôîðìàöèè âõîäíîé ìîäåëè óñëîâíî ðàçäåëÿþò íà òå, êîòîðûå ãåíåðèðóþò èñõîäíóþ ìîäåëü â âèäå òåêñòà (îáû÷íî ýòî òåêñò ïðîãðàì- ìû íà îïðåäåëåííîì ÿçûêå ïðîãðàììèðîâàíèÿ îáùåãî íàçíà÷åíèÿ, íàïðèìåð Java, C++), è òå, êîòîðûå ãåíåðèðóþò èñõîäíóþ ìîäåëü â áîëåå ñòðóêòóðèðîâàííîì âèäå (íàïðèìåð, XML), êîòîðàÿ îòâå÷àåò íåêîòîðîé ìåòàìîäåëè. Ïîñêîëüêó ïðîãðàììíûé êîä ÿâëÿåòñÿ òàêæå ìîäåëüþ, òî ïîäõîäû îòëè÷àþòñÿ ëèøü ñïîñîáîì èñïîëüçîâàíèÿ èñõîäíîé ìåòàìîäåëè.  ñëó÷àå, êîãäà ãåíåðèðóåòñÿ òåêñò, òðàíñôîðìàòîðó íå îáÿçà- òåëüíî îïåðèðîâàòü ñòðóêòóðîé ìåòàìîäåëè ÿçûêà ïðîãðàììèðîâàíèÿ (ïîáî÷íûì ýô- ôåêòîì òàêîãî óïðîùåíèÿ ÿâëÿåòñÿ âåðîÿòíîñòü ãåíåðàöèè íåêîððåêòíîãî êîäà). Äîñòàòî÷íî ðàñïðîñòðàíåíà ïðàêòèêà îïðåäåëåíèÿ òðàíñôîðìàòîðîâ, êîòîðûå áàçèðóþòñÿ íà ñî÷åòàíèè íåñêîëüêèõ ïîäõîäîâ. Òèïè÷íûì ïðèìåðîì ÿâëÿåòñÿ ñòàíäàðò QVT, íà îñíîâå êîòîðîãî ìîæíî îïðåäåëÿòü òðàíñôîðìàöèè â MDA [7]. Äðóãèì îáùåäîñòóïíûì è ìîùíûì òðàíñôîðìàòîðîì ÿâëÿåòñÿ ðåàëèçàöèÿ ñòàí- äàðòà XSLT, ïîñêîëüêó ëþáàÿ ìîäåëü ìîæåò áûòü ïðåäñòàâëåíà â âèäå XML ñ ïî- ìîùüþ ôîðìàòà XMI (XML Metadata Interchange [8]). Îäíàêî ïðè ýòîì èìååòñÿ ñó- ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 1 105 © Í.Í. Ãëèáîâåö, Â.Ì. Ôåäîð÷åíêî, 2010 ùåñòâåííûé íåäîñòàòîê: ôîðìàò XMI äîñòàòî÷íî ãðîìîçäîê (äëÿ ðàçðàáîò÷èêà òðàíñôîðìàöèè), ÷òî ïðèâîäèò ê ñîçäàíèþ ñëîæíûõ äëÿ ðàçðàáîòêè è ïîääåðæêè XSL-ïðàâèë. Äëÿ óñïåøíîãî âíåäðåíèÿ MDD ïðè ðàçðàáîòêå ïðîãðàììíûõ ïðîäóêòîâ íåîá- õîäèìà èíôðàñòðóêòóðà, êîòîðàÿ ïîääåðæèâàåò ìîäåëå-îðèåíòèðîâàííóþ ðàçðàáîòêó è äîëæíà óäîâëåòâîðÿòü ñëåäóþùèì òðåáîâàíèÿì: âîçìîæíîñòü ãèáêîãî ìàíèïóëè- ðîâàíèÿ ïàðàìåòðàìè æèçíåííîãî öèêëà, îïðåäåëåíèå è ðàñøèðåíèå ìîäåëåé ïî íå- îáõîäèìîñòè (by demand), âîçìîæíîñòü îäíîâðåìåííîãî èñïîëüçîâàíèÿ ìîäåëåé ðàç- íîãî óðîâíÿ àáñòðàêöèè, èíòåãðàöèÿ ñ óæå ñóùåñòâóþùèìè ïðîãðàììíûìè ñèñòåìà- ìè, ìèíèìèçàöèÿ ðàñõîäîâ íà èíòåãðàöèþ è ïîääåðæêó èíôðàñòðóêòóðû äëÿ MDD. ÓÏÐÎÙÅÍÍÀß ÈÍÔÐÀÑÒÐÓÊÒÓÐÀ Ðàññìîòðèì âàðèàíò òàêîé óïðîùåííîé èíôðàñòðóêòóðû äëÿ ìîäåëå-îðèåíòèðî- âàííîé ðàçðàáîòêè, êîòîðàÿ óäîâëåòâîðÿåò îïèñàííûì âûøå òðåáîâàíèÿì. Ñóòü çàêëþ÷àåòñÿ â âîçâðàùåíèè ê ïåðâè÷íîìó ïðåäñòàâëåíèþ ìîäåëè â âèäå ïðåä- ìåòíî-çàâèñèìîãî XML-ôîðìàòà, êîòîðûé ïîçâîëèò èçáàâèòüñÿ îò íåäîñòàòêîâ âàðèàíòà XMI+XSL. Ìîäåëü áóäåò èìåòü ìàêñèìàëüíî êîìïàêòíîå ïðåäñòàâëå- íèå, ïðè ýòîì ÷òåíèå è èçìåíåíèå ìîäåëè ïðîãðàììèñòàìè âîçìîæíî áåç èñ- ïîëüçîâàíèÿ êàêèõ-ëèáî ñïåöèàëèçèðîâàííûõ èíñòðóìåíòîâ (ðåäàêòîðîâ, âèçóà- ëèçàòîðîâ). Ýòî ñâîéñòâî ïðèîáðåòàåò ïåðâîî÷åðåäíîå çíà÷åíèå â ñëó÷àÿõ, êîãäà â ïðåäìåòíî-çàâèñèìóþ ìåòàìîäåëü âíîñÿòñÿ èçìåíåíèÿ â ïðîöåññå ðàçðàáîòêè. Ïðè ýòîì ñîõðàíÿåòñÿ âîçìîæíîñòü áûñòðî èçìåíÿòü è ðàñøèðÿòü ìåòàìîäåëü, à â ñëó÷àå ñòàáèëèçàöèè ïðåäìåòíî-çàâèñèìîé ìåòàìîäåëè — îïðåäåëÿòü òðàíñ- ôîðìàöèè äëÿ ñîçäàííûõ ïðåäìåòíî-çàâèñèìûõ ìîäåëåé â ëþáûå äðóãèå (ñòàí- äàðòèçèðîâàííûå) ìîäåëè (íàïðèìåð, UML). Íà ïðàêòèêå äîïóñòèìî ñâåñòè îïðåäåëåíèå ìåòàìîäåëè ê ñîçäàíèþ XML-ñõå- ìû (XSD) ïðåäìåòíî-çàâèñèìîé ìîäåëè. Ýòîò ÿçûê õîðîøî èçâåñòåí ïðîãðàììè- ñòàì è èìååò èíñòðóìåíòàëüíóþ ïîääåðæêó â ëþáîé ñîâðåìåííîé ïëàòôîðìå. Ïðè ýòîì ìîæíî îáåñïå÷èòü ïðèåìëåìûé íà ïðàêòèêå óðîâåíü âàëèäàöèè ìîäåëåé ñ ìè- íèìàëüíûìè ðàñõîäàìè âðåìåíè íà ðàñøèðåíèå ìåòàìîäåëè. Åñòåñòâåííî, XSD èìååò äîñòàòî÷íî îãðàíè÷åííûå âîçìîæíîñòè äëÿ îïèñàíèÿ ìåòàìîäåëè, íî â ñëó- ÷àå ìàêñèìàëüíî óïðîùåííîé èíôðàñòðóêòóðû ýòîò âàðèàíò ÿâëÿåòñÿ ïðèåìëåìûì êîìïðîìèññîì, ïîñêîëüêó ïðè íåîáõîäèìîñòè åñòü âîçìîæíîñòü äîáàâëÿòü ñîá- ñòâåííûå ìåòàäàííûå ê XML-ñõåìå. Åñëè è ýòîãî áóäåò íåäîñòàòî÷íî, äîïîëíèòü ìåòàìîäåëè ìîæíî ñ ïîìîùüþ ñòàíäàðòà MOF (MetaObject Facility [7]), ïîñêîëüêó ýòà ñïåöèôèêàöèÿ äîïóñêàåò îïðåäåëåíèå ëþáîé ìåòàìîäåëè.  äàííîì ñëó÷àå èñïîëüçîâàíèå XSL äëÿ îïèñàíèÿ òðàíñôîðìàöèé ïðåäñòàâëÿ- åòñÿ íàèáîëåå ïðèåìëåìûì âàðèàíòîì, ïîñêîëüêó ýòîò ÿçûê ÿâëÿåòñÿ ìîùíûì èíñòðóìåíòîì (ñîäåðæèò òüþðèíã-ïîëíûé íàáîð ôóíêöèé), îñîáåííî êîãäà âûõîä- íàÿ ìîäåëü òàêæå ìîæåò áûòü ïðåäñòàâëåíà â ôîðìàòå XML. Ýòî ïîçâîëèò îðãàíèçî- âûâàòü êàê âåðòèêàëüíûå òðàíñôîðìàöèè ñ ïðîèçâîëüíûì êîëè÷åñòâîì ñëîåâ àáñòðàêöèè, òàê è ãîðèçîíòàëüíûå. Øèðîêàÿ ðàñïðîñòðàíåííîñòü è îáùåèçâåñòíîñòü òàêîãî ÿçûêà ñîçäàåò íåîáõîäèìûå óñëîâèÿ äëÿ êîìàíäíîé ðàáîòû, êîãäà îïðåäåëå- íèå ìåòàìîäåëè è îäíîâðåìåííîå ñîçäàíèå ìîäåëåé íà îñíîâå ýòîé ìåòàìîäåëè âû- ïîëíÿåòñÿ îäíîé ãðóïïîé ðàçðàáîò÷èêîâ. Ýòîò ôàêòîð ÷ðåçâû÷àéíî âàæåí äëÿ ñîâðå- ìåííîãî ïðîöåññà ðàçðàáîòêè, êîãäà íåîáõîäèìî îáåñïå÷èòü ìèíèìàëüíûé ïðîìåæó- òîê âðåìåíè ìåæäó íà÷àëîì ðàçðàáîòêè è ïåðâûìè ðåçóëüòàòàìè. Ïîñëåäíèì ýòàïîì â ôîðìèðîâàíèè óïðîùåííîé èíôðàñòðóêòóðû äëÿ ìîäåëå-îðè- åíòèðîâàííîé ðàçðàáîòêè ÿâëÿåòñÿ îïðåäåëåíèå ôîðìàòà ìîäåëè ñàìîãî íèçêîãî óðîâíÿ, äîñòóïíîãî â ðàìêàõ èñïîëüçóåìîé èíôðàñòðóêòóðû. Êàê îòìå÷åíî âûøå, öåëåñîîáðàç- íî, ÷òîáû ýòà ìîäåëü èìåëà åñòåñòâåííîå ïðåäñòàâëåíèå â ôîðìàòå XML, ïðè ýòîì áûëà äîñòàòî÷íî ïðîñòîé äëÿ òðèâèàëüíîãî ïðåîáðàçîâàíèÿ â ìàøèííûé êîä è îäíîâðåìåííî äîñòàòî÷íî óäîáíîé äëÿ âûðàæåíèÿ êîíöåïöèé èç ìîäåëåé áîëåå âûñîêèõ óðîâíåé àáñòðàêöèè (õîòÿ ýòè äâà óñëîâèÿ ÿâëÿþòñÿ íåñêîëüêî ïðîòèâîðå÷èâûìè). 106 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 1  ïîñëåäíèå ãîäû øèðîêî èñïîëüçóþòñÿ IoC-êîíòåéíåðû, êîíôèãóðàöèÿ êîòî- ðûõ îáû÷íî èìååò XML-ïðåäñòàâëåíèå (SpringFramework [9], Winter.NET [10]). IoC-êîíòåéíåðû ÿâëÿþòñÿ ðåàëèçàöèåé ïàòòåðíà ïðîãðàììèðîâàíèÿ «èíâåðñèÿ óïðàâëåíèÿ» (inversion of control), òàêæå èçâåñòíîãî ïîä íàçâàíèåì «èíñòàíöèàöèÿ çàâèñèìîñòåé» (dependency injection), êîòîðûé ñòàë îñîáåííî ïîïóëÿðíûì ïîñëå ñòàòüè Ìàðòèíà Ôàóëåðà [11]. Ñóòü ýòîãî ïàòòåðíà çàêëþ÷àåòñÿ â àáñòðàãèðîâàíèè ñîçäàíèÿ è èíèöèàëèçàöèè îäíèõ îáúåêòîâ äðóãèìè ïóòåì äåëåãèðîâàíèÿ îïðåäå- ëåííûõ äåéñòâèé îñîáûì òèïàì îáúåêòîâ (IoC-êîíòåéíåðàì). Ïðè ýòîì âñå äðóãèå îáúåêòû ëèøü äåêëàðèðóþò ìèíèìàëüíî íåîáõîäèìûå äëÿ ôóíêöèîíèðîâàíèÿ çà- âèñèìîñòè (÷åðåç èíòåðôåéñû). Ñîçäàíèå ãðàôà îáúåêòîâ è ñîîòâåòñòâåííî îïðåäå- ëåíèå çàâèñèìîñòåé â âèäå êîíêðåòíûõ ýêçåìïëÿðîâ îáúåêòîâ, êîòîðûå ðåàëèçóþò íóæíûå èíòåðôåéñû, ïîëàãàåòñÿ òàêæå íà IoC-êîíòåéíåð.  êîíòåêñòå MDD ýòà ñïåöèôèêà äàåò óíèêàëüíóþ âîçìîæíîñòü óäîâëåòâîðèòü îáà óñëîâèÿ äëÿ ìîäåëè ñàìîãî íèçêîãî óðîâíÿ, ïîñêîëüêó ñïîñîá ñâÿçûâàíèÿ îáúåêòîâ ÿâëÿåòñÿ ôèêñèðîâàííûì (è ÷ðåçâû÷àéíî ïðîñòûì), à ñàìè îáúåêòû ìîãóò ðåàëèçîâûâàòü äîñòàòî÷íî ñëîæíûå êîíöåïòû. Ñîçäàíèå òàêîãî ãðàôà ïî XML-êîíôèãóðàöèè ÿâëÿåòñÿ äîñòàòî÷íî áûñòðîé è òðèâèàëüíîé çàäà÷åé [9, 10].  òåðìèíàõ MDA IoC-êîíôèãóðàöèÿ — ýòî ìîäåëü PSM (Platform Specific Model), çàâèñèìàÿ îò ïëàòôîðìû ñàìîãî íèçêîãî óðîâíÿ (ïîñêîëüêó âêëþ÷àåò ññûë- êè íà êëàññû è ñâîéñòâà âïîëíå êîíêðåòíîé ïëàòôîðìû), à ïðåäìåòíî-çàâèñèìûå XML-ìîäåëè, åñëè îíè íå èìåþò ïðèâÿçêè ê îñîáåííîñòÿì ïëàòôîðìû, îòíîñÿòñÿ ê PIM. Åñòåñòâåííî, ýòî äîñòàòî÷íî óñëîâíîå äåëåíèå.  ïðåäëîæåííîì âàðèàíòå èí- ôðàñòðóêòóðû èìååòñÿ âîçìîæíîñòü ðåãóëèðîâàòü ñòåïåíü àáñòðàêöèè PSM â çàâèñè- ìîñòè îò êîíêðåòíîé ñèòóàöèè. ÏÐÈÌÅÐ ÑÎÇÄÀÍÈß ÓÏÐÎÙÅÍÍÎÉ MDD ÈÍÔÐÀÑÒÐÓÊÒÓÐÛ Äëÿ èëëþñòðàöèè îïèñàííîãî ïîäõîäà ðàññìîòðèì ñîçäàíèå óïðîùåííîé MDD èí- ôðàñòðóêòóðû äëÿ òðàíñôîðìàöèè ìîäåëåé â ñôåðå àâòîìàòèçàöèè áèçíåñ-ïðîöåññîâ. Îïðåäåëåíèå áàçîâûõ ïîíÿòèé äëÿ òàêîé ìîäåëè ìîæíî ïîçàèìñòâîâàòü èç ìíîãî÷èñëåííûõ âàðèàíòîâ êîðïîðàòèâíûõ îíòîëîãèé (enterprise ontology), íàïðè- ìåð CEO (Core Enterprise Ontology [12]), êàê îäíîé èç ñàìûõ ïðîñòûõ.  ðåçóëüòàòå òðàíñôîðìàöèè ïîëó÷èì êîíôèãóðàöèþ Winter IoC-êîíòåéíåðà [10] äëÿ ïðèìåíåíèÿ íà ïëàòôîðìå Microsoft .NET. CEO ïðåäíàçà÷åíà äëÿ îïèñàíèÿ áèçíåñ-ïðîöåññîâ è ìîäåëèðîâàíèÿ â âèäå èí- ôîðìàöèîííîé ñèñòåìû (ÈÑ).  óïðîùåííîì âèäå (ìèíèìàëüíî íåîáõîäèìîì äëÿ ïî- ñòðîåíèÿ ìåòàìîäåëè) ýòà îíòîëîãèÿ ñîñòîèò èç òàêèõ áàçîâûõ ïîíÿòèé [12]. • Ïàññèâíûå ñóùíîñòè (passive entity) — ïðåäñòàâëÿþò áèçíåñ-îáúåêòû, ïàññèâ- íûå ýëåìåíòû êîðïîðàòèâíîé ñðåäû, êîòîðûå ñîçäàþòñÿ, èçìåíÿþòñÿ, ïåðåñìàòðèâà- þòñÿ ñ öåëüþ ïîëó÷åíèÿ êàêîé-òî èíôîðìàöèè. Âàæíûì ñâîéñòâîì ïàññèâíûõ ñóù- íîñòåé ÿâëÿåòñÿ èäåíòèôèöèðóåìîñòü, ÷òî ÿâëÿåòñÿ íåîáõîäèìûì óñëîâèåì äëÿ âêëþ- ÷åíèÿ ïàññèâíûõ ñóùíîñòåé ê îïðåäåëåíèþ ñõåìû äàííûõ èíôîðìàöèîííîé ñèñòåìû. • Àêòèâíûå ñóùíîñòè (active entity) — ýòî àêòèâíûå ýëåìåíòû èç êîðïîðàòèâ- íîé ñðåäû, êîòîðûå èìåþò âîçìîæíîñòü ïðèíèìàòü ðåøåíèÿ è èíèöèèðîâàòü îïðåäåëåííûå äåéñòâèÿ. Èìè ìîãóò áûòü êàê ëþäè, òàê è îðãàíèçàöèè (îôèñ, äå- ïàðòàìåíò, îòäåë). Èìåííî ïî îòíîøåíèþ ê àêòèâíûì ñóùíîñòÿì îïðåäåëÿþòñÿ îáÿçàííîñòè, ïðàâà äîñòóïà è ò.ä. • Òðàíñôîðìàöèè (transformation) — ýòî ëþáûå äåéñòâèÿ, îïåðàöèè è ïðîöåñ- ñû, êîòîðûå ñóùåñòâóþò â êîðïîðàòèâíîé ñðåäå è èìåþò îòîáðàæåíèå â ÈÑ. Îáû÷- íî â òðàíñôîðìàöèÿõ ïðèíèìàþò ó÷àñòèå êàê ïàññèâíûå, òàê è àêòèâíûå ñóùíîñòè. • Óñëîâèÿ — ýòî ïðåäèêàòû, êîòîðûå ìîãóò áûòü âû÷èñëåíû ñ öåëüþ îïðåäå- ëåíèÿ èõ èñòèííîñòè. Íà ýòîì áàçîâîì êîíöåïòå îñíîâàíû òàêèå ïîíÿòèÿ, êàê öåëü, ïðàâèëî, îãðàíè÷åíèå, ñîñòîÿíèå. Äåòàëüíûé àíàëèç CEO âûõîäèò çà ðàìêè äàííîé ñòàòüè. Ìåòàìîäåëü íà îñíî- âå ýòèõ ïîíÿòèé ïîçâîëÿåò îïèñûâàòü ðàçíîîáðàçíûå áèçíåñ-ïðîöåññû. Îòìåòèì, ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 1 107 ÷òî äàæå ñàìîå ïðîñòîå îïèñàíèå òàêèõ ïîíÿòèé äîñòàòî÷íî îáúåìíî, ïîýòîìó äëÿ èëëþñòðàöèè óïðîùåííîãî ïîäõîäà ê òðàíñôîðìàöèè ìîäåëåé â äåòàëÿõ ðàññìîò- ðèì ëèøü îïðåäåëåíèå ïîíÿòèÿ «ñóùíîñòü». Îïèøåì ìåòàìîäåëü, êîòîðàÿ â ðàìêàõ óïðîùåííîé èíôðàñòðóêòðû ïðåäñòàâ- ëÿåòñÿ â âèäå XML-ñõåìû: <xsd:element name="entity"> <xsd:complexType> <xsd:sequence maxOccurs="unbounded"> <xsd:element name="storage"> <xsd:complexType> <xsd:sequence maxOccurs="unbounded"> <xsd:element name="sourcename" type="xsd:string" minOccurs="1"/> </xsd:sequence> <xsd:attribute name="versions" type="xsd:boolean" use="optional" default="false" /> </xsd:complexType> </xsd:element> <xsd:element name="schema"> <xsd:complexType> <xsd:sequence maxOccurs="unbounded"> <xsd:element name="field" minOccurs="1"> <xsd:complexType> <xsd:attribute name="uid" type="xsd:boolean" use="optional" default="false" /> <xsd:attribute name="name" type="xsd:string" use="required"/> <xsd:attribute name="type" type="xsd:string" use="required"/> <xsd:attribute name="nullable" type="xsd:boolean" use="optional" default="false" /> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> Íà îñíîâå ýòîé ìåòàìîäåëè ìîäåëü íåêîé ñóùíîñòè, íàïðèìåð «çàêàç», áóäåò èìåòü òàêîé âèä: <entity name="purchaseOrder"> <storage versions="true"> <sourcename>purchase_orders</sourcename> </storage> <schema> <field uid="true" name="id" type="int"/> <field name="contact_id" type="int"/> <field name="sum" type="decimal"/> <field name="delta" type="decimal"/> <field name="expired_date" type="dateTime" nullable="true"/> </schema> </entity> Òàêèì îáðàçîì, èíôîðìàöèîííóþ ñèñòåìó ïîïîëíÿåò åùå îäíà ïàññèâíàÿ ñóùíîñòü «purchaseOrder» ñ õàðàêòåðèñòèêàìè «id» (óíèêàëüíûé èäåíòèôèêàòîð), «contact_id», «sum», «delta» è «expired_date». Ýòè õàðàêòåðèñòèêè äîëæíû ñîõðà- íÿòüñÿ â õðàíèëèùå äàííûõ (íàïðèìåð, ÁÄ) ïîä èìåíåì «purchase_orders». Ýòà ñóùíîñòü ïî îïðåäåëåíèþ äîëæíà òàêæå èìåòü âîçìîæíîñòü ñîõðàíÿòüñÿ, èçìå- íÿòüñÿ è çàãðóæàòüñÿ èç õðàíèëèùà äàííûõ. Áîëåå òîãî, ìàðêèðîâêà versions=«true» îáÿçûâàåò ÈÑ õðàíèòü âñå âåðñèè ýòîé ñóùíîñòè, êîòîðûå ñîõðàíÿëèñü â õðàíèëè- ùå äàííûõ. Äëÿ îïðåäåëåíèÿ òðàíñôîðìàöèè ýòîé ìîäåëè ê êîíôèãóðàöèè êîìïîíåíòîâ IoC-êîíòåéíåðà íåîáõîäèìî èìåòü âîçìîæíîñòü ïðåäñòàâèòü êîíöåïò ïàññèâíîé ñóùíîñòè ñ îïèñàííûì âûøå íàáîðîì ñâîéñòâ ñ ïîìîùüþ îäíîãî èëè êîìïîçèöèè íåñêîëüêèõ îáúåêòîâ. Ïðåäïîëîæèì, ÷òî ñóùåñòâóåò íåêîòîðûé êëàññ, â êîòîðîì â ñîîòâåòñòâèè ñ ïàòòåðíîì «àêòèâíàÿ çàïèñü» (Active Record [13]) ðåàëèçîâàíû ñâîéñòâà õðàíåíèÿ, çàãðóçêè è èçìåíåíèÿ çàïèñè â õðàíèëèùå äàííûõ (C#): 108 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 1 public interface IActiveRecord { string XmlSchema { get; set; } string SourceName { get; set; } bool VersionsEnabled { get; set; } bool IsPersisted { get; } object[] Uid {get; set;} object this[string fieldName] { get; set; } void Save(); void Load(object[] uid); void Delete(); void Disconnect(); } Äîïóñòèì òàêæå, ÷òî èìååòñÿ êëàññ DbActiveRecord (ðåàëèçóþùèé èíòåðôåéñ IActiveRecord), äëÿ ôóíêöèîíèðîâàíèÿ êîòîðîãî íåîáõîäèìî èíèöèàëèçèðîâàòü ñâîéñòâà XmlSchema, SourceName è VersionsEnabled, ïðè÷åì ñâîéñòâî XmlSchema äîëæíî áûòü ïðåäñòàâëåíî â ôîðìàòå, êîòîðûé íåîáõîäèì ìåòîäó ReadXmlSchema êëàññà System.Data.DataSet. Òîãäà òðàíñôîðìàöèÿ ìîäåëè ñóùíîñòè ê IoC-êîíôèãó- ðàöèè êëàñà ActiveRecord áóäåò èìåòü âèä (XSL) <xsl:template match=’entity’> <component name="{@name}" type="LightweightTransformSample.DbActiveRecord" singleton="false"> <property name="XmlSchema"> <xml> <xsl:apply-templates select="schema"/> </xml> </property> <property name="SourceName"> <value> <xsl:value-of select="storage/sourcename"/> </value> </property> <property name="VersionsEnabled"> <value> <xsl:value-of select="storage/@versions"/> </value> </property> </component> </xsl:template> Ïîñëåäíèé ýòàï — ýòî îïðåäåëåíèå êîíôèãóðàöèè IoC-êîíòåéíåðà òàêèì îá- ðàçîì, ÷òîáû òðàíñôîðìàöèÿ âûïîëíÿëàñü àâòîìàòè÷åñêè ïðè çàãðóçêå êîíôèãóðà- öèè êîíòåéíåðà (ìîäåëè ñóùíîñòåé ñîõðàíåíû â ôàéëå entityModel.xml.config, à îïèñàíèå XSL-òðàíñôîðìàöèè — â ôàéëå entityModelToIoCTransform.xsl): <components> <import file="config/entityModel.xml.config" xsl-file="config/xslt/entityModelToIoCTransform.xsl"/> </components>  ðåçóëüòàòå îïðåäåëåíèå «çàêàç» äîñòóïíî äëÿ ñâÿçûâàíèÿ ñ äðóãèìè êîìïî- íåíòàìè. Ýòîò ïðèìåð èëëþñòðèðóåò ïðîñòåéøèé ñëó÷àé ïðåîáðàçîâàíèÿ ìîäåëè PIM (êîòîðàÿ îïèñûâàåò àáñòðàêòíóþ ïàññèâíóþ ñóùíîñòü «çàêàç») â PSM â âèäå êîíôèãóðàöèè Winter IoC-êîíòåéíåðà. Àíàëîãè÷íûì îáðàçîì ñòðîÿòñÿ è çíà÷èòåëüíî áîëåå ñëîæíûå ïðåîáðàçîâàíèÿ. Òàê, åñëè êëàññ DbActiveRecord íå èìååò ñâîéñòâà VersionsEnabled, òî ýòîò àñïåêò íå- îáõîäèìî îòîáðàçèòü ÷åðåç îïðåäåëåíèå åùå îäíîé ñóùíîñòè äëÿ ñîõðàíåíèÿ âåðñèé è ãåíåðàöèè êîíôèãóðàöèè äëÿ ñîîòâåòñòâóþùåãî òðèããåðà, êîòîðûé áû ñîçäàâàë íîâóþ âåðñèþ ïðè êàæäîì èçìåíåíèè ñóùíîñòè purchaseOrder. Èíûìè ñëîâàìè, îáùàÿ ñòðà- òåãèÿ çàêëþ÷àåòñÿ â êîíôèãóðàöèè ñëîæíûõ êîíöåïòîâ èç ìåòàìîäåëè PIM â âèäå êîìïîçèöèè áîëåå ïðèìèòèâíûõ êîíöåïòîâ, êîòîðûå äîñòóïíû â PSM. ÇÀÊËÞ×ÅÍÈÅ Ðàññìîòðåííûé âàðèàíò óïðîùåííîé èíôðàñòðóêòóðû äëÿ ìîäåëå-îðèåíòèðîâàííîé ðàçðàáîòêè óäîâëåòâîðÿåò ñîâðåìåííûì òðåáîâàíèÿì ñîçäàíèÿ áîëüøèõ ïðîãðàì- ìíûõ ñèñòåì. Ñëåäóåò îòìåòèòü, ÷òî ïåðâè÷íîå ïðåäñòàâëåíèå ìîäåëåé â âèäå ïðåäìåòíî-çàâèñèìîãî XML-ôîðìàòà èçáàâëåíî îò íåäîñòàòêîâ âàðèàíòà XMI+XSL. ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 1 109 Ìîäåëü èìååò ìàêñèìàëüíî êîìïàêòíîå ïðåäñòàâëåíèå, ïðè ýòîì ïðîñìîòð è åå èçìåíåíèå äîñòóïíû ïðîãðàììèñòàì áåç èñïîëüçîâàíèÿ êàêèõ-ëèáî ñïåöèàëèçè- ðîâàííûõ èíñòðóìåíòîâ. Ñîõðàíÿåòñÿ âîçìîæíîñòü áûñòðî èçìåíÿòü è ðàñøè- ðÿòü ìåòàìîäåëü. Ïîñëå ñòàáèëèçàöèè ïðåäìåòíî-çàâèñèìîé ìåòàìîäåëè ìîæíî îïðåäåëèòü òðàíñôîðìàöèè äëÿ ïðåîáðàçîâàíèÿ èñïîëüçóåìûõ ïðåäìåòíî-çàâèñè- ìûõ ìîäåëåé â ëþáûå äðóãèå ìîäåëè (íàïðèìåð, UML). Èñïîëüçîâàíèå XSL äëÿ îïèñàíèÿ òðàíñôîðìàöèé ïðèåìëåìî, ïîñêîëüêó ýòîò ÿçûê ÿâëÿåòñÿ ìîùíûì èíñòðóìåíòîì (ñîäåðæèò òüþðèíã-ïîëíûé íàáîð ôóíêöèé). Òàêîé ïîäõîä îñîáåííî ýôôåêòèâåí â ñëó÷àå, êîãäà âûõîäíàÿ ìîäåëü ìîæåò áûòü ïðåäñòàâëåíà â ôîðìàòå XML. Ýòî ïîçâîëÿåò îðãàíèçîâûâàòü êàê âåðòèêàëüíûå òðàíñ- ôîðìàöèè ñ ïðîèçâîëüíûì êîëè÷åñòâîì ñëîåâ àáñòðàêöèè, òàê è ãîðèçîíòàëüíûå.  óñëîâèÿõ ñîâðåìåííîãî ïðîöåññà ðàçðàáîòêè, êîãäà íåîáõîäèìî îáåñïå÷èòü ìèíèìàëüíûé ïðîìåæóòîê âðåìåíè ìåæäó íà÷àëîì ðàçðàáîòêè è ïåðâûìè ðåçóëü- òàòàìè (feedback), èñïîëüçîâàíèå óïðîùåííîé èíôðàñòðóêòóðû (íà îñíîâå ñòàíäàð- òîâ XML) ïîçâîëÿåò ñîçäàòü îïòèìàëüíûå óñëîâèÿ äëÿ ýôôåêòèâíîé êîìàíäíîé ðà- áîòû ïðîãðàììèñòîâ. Ïðåäëîæåííûé ïîäõîä ê âíåäðåíèþ ïðîöåññà ìîäåëå-îðèåíòèðîâàííîé ðàçðà- áîòêè áûë àïðîáèðîâàí â ôèðìå «NewtonIdeas» (http://www.newtonideas.com), êîòî- ðàÿ ñïåöèàëèçèðóåòñÿ íà ñîçäàíèè áîëüøîãî êîëè÷åñòâà îäíîðîäíûõ âåá-ïðîåêòîâ â îáëàñòè ñèñòåì óïðàâëåíèÿ áèçíåñ-ïðîöåññàìè (BPMS, Business Process Management Systems). Ïîçèòèâíûé ýôôåêò ïîëó÷åí óæå ïîñëå ïåðâûõ äâóõ ìåñÿöåâ âíåäðåíèÿ, â òå÷åíèå êîòîðûõ ôîðìèðîâàëèñü îñíîâíûå ìåòàìîäåëè è òðàíñôîðìà- öèè (íà äàííûé ìîìåíò îïðåäåëåíî îêîëî 900 ïîíÿòèé, êîòîðûå ïîâòîðíî èñïîëü- çóþòñÿ â ðàçëè÷íûõ ïðîåêòàõ; áèáëèîòåêà èç áîëåå 1000 êëàññîâ èñïîëüçóåòñÿ äëÿ ðåàëèçàöèè ýòèõ ïîíÿòèé). Ìåíåå ÷åì çà äâà ãîäà ïîñëå íà÷àëà âíåäðåíèÿ âûøå- îïèñàííûé ïîäõîä ïîëíîñòüþ ïîäòâåðäèë ñâîþ ýôôåêòèâíîñòü: áåç êàêèõ-ëèáî ñó- ùåñòâåííûõ çàòðàò íà âíåäðåíèå ñòåïåíü ïîâòîðíîãî èñïîëüçîâàíèÿ êîäà (è òðàíñ- ôîðìàöèé) óâåëè÷èëàñü íà ïîðÿäîê. ÑÏÈÑÎÊ ËÈÒÅÐÀÒÓÐÛ 1. D i j k s t r a E . W . On the role of scientific thought // Selected Writings on Computing: A Personal Per- spective. — N.-Y.: Springer-Verlag, 1982. — 362 p. 2. Ï å ð å â î ç ÷ è ê î â à Î . Ë . Îñíîâè ñèñòåìíîãî àíàë³çó îá’ºêò³â ³ ïðîöåñ³â êîìï’þòåðèçàö³¿. — Ê.: Âèäàâíè÷èé ä³ì «ÊÌ Àêàäåì³ÿ», 2003. — 432 ñ. 3. H u n t A . , T h o m a s D . Pragmatic programmer, The: From journeyman to master. — Addison Wesley, 1999. — 352 p. 4. I S O / I E C 1 2 2 0 7 : 1 9 9 5 Information technology — Software life cycle processes (ÄÑÒÓ 3918-99 - ²íôîðìàö³éí³ òåõíîëî㳿. Ïðîöåñè æèòòºâîãî öèêëó ïðîãðàìíîãî çàáåçïå÷åííÿ). 5. C z a r n e c k i K . , S t a h l T . , V o l t e r M . Model-driven software development: Technology, engi- neering, management. — John Wiley&Sons, 2006 — 444 p. 6. G a s e v i c D . , D j u r i c D . , D e v e d z i c V . Model driven architecture and ontology development. — N.-Y.: Springer, 2006. — 312 p. 7. K l e p p e A . , W a r m e r J . , B a s t W . MDA explained: The model driven architecture™: Practice and promise. — Addison-Wesley Professional. — 2003. — 192 p. 8. I S O / I E C 1 9 5 0 3 : 2 0 0 5 Information technology — XML Metadata Interchange (XMI) (standard). 9. W a l l s C . , B r e i d e n b a c h R . Spring in action. — Manning Publications; 2 ed. — 2007. — 650 p. 10. L i g h t w e i g h t . N E T . Inversion of Control container — Winter4Net (http://www.winter4.net) 11. F o w l e r M . Inversion of control containers and the dependency injection pattern, 2004 (http://martinfowler.com/articles/injection.html) 12. B e r t o l a z z i P . , K r u s i c h C . , M i s s i k o f f M . An approach to the definition of a core enterprise ontology: CEO / Intern. Workshop on Open Enterprise Solutions: Systems, Experiences, and Organizations (OES-SEO 2001). — Luiss Publications, 2001. — 175 p. 13. F o w l e r M . a t e l . Patterns of enterprise application architecture. — Addison-Wesley Professional, 2002. — 560 p. Ïîñòóïèëà 22.12.2008 110 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 1
id nasplib_isofts_kiev_ua-123456789-45130
institution Digital Library of Periodicals of National Academy of Sciences of Ukraine
issn 0023-1274
language Russian
last_indexed 2025-12-07T18:46:56Z
publishDate 2010
publisher Інститут кібернетики ім. В.М. Глушкова НАН України
record_format dspace
spelling Глибовец, Н.Н.
Федорченко, В.М.
2013-06-07T19:38:06Z
2013-06-07T19:38:06Z
2010
Упрощенная инфраструктура для трансформации XML-моделей / Н.Н. Глибовец, В.М. Федорченко // Кибернетика и системный анализ. — 2010. — № 1. — С. 105–110. — Бібліогр.: 13 назв. — рос.
0023-1274
https://nasplib.isofts.kiev.ua/handle/123456789/45130
004.4’242
Запропоновано варіант полегшеної інфраструктури для моделе-орієнтованої розробки великих програмних систем. Основою є первинне представлення моделі у вигляді предметно-залежного XML-формату. Модель має максимально компактне уявлення, дозволяє застосовувати розвинені засоби зміни та розширення, легко визначати трансформації для перетворення створених предметно-залежних моделей в будь-які інші моделі. Використання XSL для опису трансформацій дозволяє ефективно організовувати як вертикальні трансформації з довільною кількістю шарів абстракції, так і горизонтальні.
An approach is proposed to the construction of a lightweight infrastructure for the model-oriented development of complex software systems. It is based on the use of a domain-dependent XML format for primary models. A model has a compact representation, allows for the use of advanced tools for changing and extending it, and makes it possible to easily determine transformations for converting domain-dependent XML models into any other models. The use of XSL for describing transformations allows one to organize both vertical and horizontal transformations (with any number of abstraction layers) and provides optimum conditions for collaboration.
ru
Інститут кібернетики ім. В.М. Глушкова НАН України
Кибернетика и системный анализ
Системный анализ
Упрощенная инфраструктура для трансформации XML-моделей
Спрощена інфраструктура для трансформації XML-моделей
Lightweight infrastructure for XML models transformation
Article
published earlier
spellingShingle Упрощенная инфраструктура для трансформации XML-моделей
Глибовец, Н.Н.
Федорченко, В.М.
Системный анализ
title Упрощенная инфраструктура для трансформации XML-моделей
title_alt Спрощена інфраструктура для трансформації XML-моделей
Lightweight infrastructure for XML models transformation
title_full Упрощенная инфраструктура для трансформации XML-моделей
title_fullStr Упрощенная инфраструктура для трансформации XML-моделей
title_full_unstemmed Упрощенная инфраструктура для трансформации XML-моделей
title_short Упрощенная инфраструктура для трансформации XML-моделей
title_sort упрощенная инфраструктура для трансформации xml-моделей
topic Системный анализ
topic_facet Системный анализ
url https://nasplib.isofts.kiev.ua/handle/123456789/45130
work_keys_str_mv AT glibovecnn uproŝennaâinfrastrukturadlâtransformaciixmlmodelei
AT fedorčenkovm uproŝennaâinfrastrukturadlâtransformaciixmlmodelei
AT glibovecnn sproŝenaínfrastrukturadlâtransformacííxmlmodelei
AT fedorčenkovm sproŝenaínfrastrukturadlâtransformacííxmlmodelei
AT glibovecnn lightweightinfrastructureforxmlmodelstransformation
AT fedorčenkovm lightweightinfrastructureforxmlmodelstransformation