Формальные основы интероперабельности компонентов в программировании
Досліджено проблему взаємодії різнорідних компонентів і систем — з теоретичної, семантичної і реалізаційної точок зору. Представлено теорію структурної організації типів даних, семантику перетворення нерелевантних типів даних і підходи до реалізації типів даних мов програмування в сучасних середовищ...
Збережено в:
| Опубліковано в: : | Кибернетика и системный анализ |
|---|---|
| Дата: | 2010 |
| Автор: | |
| Формат: | Стаття |
| Мова: | Російська |
| Опубліковано: |
Інститут кібернетики ім. В.М. Глушкова НАН України
2010
|
| Теми: | |
| Онлайн доступ: | https://nasplib.isofts.kiev.ua/handle/123456789/45250 |
| Теги: |
Додати тег
Немає тегів, Будьте першим, хто поставить тег для цього запису!
|
| Назва журналу: | Digital Library of Periodicals of National Academy of Sciences of Ukraine |
| Цитувати: | Формальные основы интероперабельности компонентов в программировании / Е.М. Лаврищева // Кибернетика и системный анализ. — 2010. — № 4. — С. 134-150. — Бібліогр.: 26 назв. — рос |
Репозитарії
Digital Library of Periodicals of National Academy of Sciences of Ukraine| _version_ | 1859665045213937664 |
|---|---|
| author | Лаврищева, Е.М. |
| author_facet | Лаврищева, Е.М. |
| citation_txt | Формальные основы интероперабельности компонентов в программировании / Е.М. Лаврищева // Кибернетика и системный анализ. — 2010. — № 4. — С. 134-150. — Бібліогр.: 26 назв. — рос |
| collection | DSpace DC |
| container_title | Кибернетика и системный анализ |
| description | Досліджено проблему взаємодії різнорідних компонентів і систем — з теоретичної, семантичної і реалізаційної точок зору. Представлено теорію структурної організації типів даних, семантику перетворення нерелевантних типів даних і підходи до реалізації типів даних мов програмування в сучасних середовищах.
The interaction of heterogeneous components and systems is investigated in theoretical, semantic, and implementation perspectives. The theory of data type structuring, semantics of non-relevant data type transformation, and approaches for implementing data types of programming languages in modern environments are discussed.
|
| first_indexed | 2025-11-30T10:26:19Z |
| format | Article |
| fulltext |
Å.Ì. ËÀÂÐÈÙÅÂÀ
ÓÄÊ 681.3.06 ÔÎÐÌÀËÜÍÛÅ ÎÑÍÎÂÛ
ÈÍÒÅÐÎÏÅÐÀÁÅËÜÍÎÑÒÈ ÊÎÌÏÎÍÅÍÒÎÂ
 ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÈ
Êëþ÷åâûå ñëîâà: èíòåðîïåðàáåëüíîñòü, êîìïîíåíò, ïîâòîðíîå èñïîëüçîâàíèå,
êîìïîíåíòíîå ïðîãðàììèðîâàíèå, èçîìîðôèçì, ïðåîáðàçîâàíèå, ôóíäàìåíòàëü-
íûå òèïû äàííûõ, îáùèå òèïû äàííûõ, ãåòåðîãåííàÿ ñðåäà.
ÂÂÅÄÅÍÈÅ
Âîçìîæíîñòü âçàèìîäåéñòâèÿ äâóõ è áîëåå êîìïîíåíòîâ ïðîãðàìì è ñèñòåì â öå-
ëÿõ îáìåíà èíôîðìàöèåé è èñïîëüçîâàíèÿ åå äëÿ îðãàíèçàöèè âû÷èñëåíèé îïðå-
äåëÿåòñÿ êàê èíòåðîïåðàáåëüíîñòü [1, 2]. Ñïîñîáíîñòü ïðîãðàìì ê âçàèìîäåéñòâèþ
çàëîæåíà â ÿçûêàõ ïðîãðàììèðîâàíèÿ (ßÏ), ðåàëèçîâàíà â ñîâðåìåííûõ ñèñòåìàõ
è ñðåäàõ îáùåãî íàçíà÷åíèÿ. Ê ìåõàíèçìàì îáåñïå÷åíèÿ èíòåðîïåðàáåëüíîñòè îòíî-
ñÿòñÿ: àïïàðàò ïîäïðîãðàìì è ôóíêöèé â ßÏ; èíòåðôåéñ â ðàçíîÿçûêîâûõ è ðàç-
íîïëàòôîðìåííûõ ïðîãðàììàõ ÷åðåç èíòåðôåéñíûé-ïîñðåäíèê â ÿçûêàõ òèïà MIL
(Module Interconnection Language), IDL (Interface Definition Language) è äðóãèå;
áðîêåð çàïðîñîâ ïî âçàèìîäåéñòâèþ ðàçíîÿçûêîâûõ ïðîãðàìì â ñèñòåìàõ îáùåãî
íàçíà÷åíèÿ (CORBA, ÑOM, Sun IBM, JAVA è äðóãèå); êîíôèãóðàöèÿ è èíòåãðà-
öèÿ íà óðîâíå âûõîäíîãî êîäà ïðîãðàìì â ñèñòåìàõ Linux, Windows Server,
Microsoft.Net, IBM Web Sphere è ò.ï.
Áàçèñîì âçàèìîäåéñòâèÿ êîìïîíåíòîâ, ïðîãðàìì è ñèñòåì ÿâëÿþòñÿ ôóíäà-
ìåíòàëüíûå òèïû äàííûõ (ÔÒÄ), èñïîëüçóåìûå ïðè îïèñàíèè ïðîñòûõ è ñòðóêòóð-
íûõ äàííûõ ïðîãðàìì, çíà÷åíèÿ êîòîðûõ ïåðåäàþòñÿ ñ ïîìîùüþ îïåðàòîðîâ âûçî-
âà, çàïðîñîâ èëè ñåòåâûõ ïðîòîêîëîâ äðóãèì ïðîãðàììíûì îáúåêòàì. Ïîíÿòèå èí-
òåðîïåðàáåëüíîñòè ïîÿâèëîñü â ñâÿçè ñ íåîáõîäèìîñòüþ ïðàêòè÷åñêîãî
îáúåäèíåíèÿ ìîäóëåé, êîìïîíåíòîâ è ïðîãðàìì. Â íàñòîÿùåå âðåìÿ îíî â áîëüøåé
ñòåïåíè ïðåäïîëàãàåò èñïîëüçîâàíèå ãîòîâûõ ïðîãðàììíûõ îáúåêòîâ â ïðîöåññå
ðàçðàáîòêè íîâûõ ïðîãðàììíûõ ñðåäñòâ (ÏÑ) (îáùåñèñòåìíûõ, ïðèêëàäíûõ, ïðî-
áëåìíûõ, íàó÷íûõ è äðóãèõ), ñ ïîìîùüþ êîòîðûõ ðåøàþòñÿ ðàçíîãî ðîäà çàäà÷è
â âû÷èñëèòåëüíûõ ñðåäàõ. Îáåñïå÷åíèå èíòåðîïåðàáåëüíîñòè ñâÿçàíî ñî ìíîãèìè
ôàêòîðàìè: ñîâìåñòèìîñòüþ ïëàòôîðì êîìïüþòåðîâ, ñòðóêòóð è òèïîâ äàííûõ
ïðîãðàììíûõ îáúåêòîâ, îïèñàííûõ â ßÏ [3–8], è âîçìîæíîñòÿìè ñîâðåìåííûõ
ñðåä. Ýòîò ïðîöåññ îñëîæíÿåòñÿ ðåàëüíî ñóùåñòâóþùèìè ðàçëè÷èÿìè â âûõîäíîì
êîäå ñèñòåì ïðîãðàììèðîâàíèÿ ñ ßÏ, êîíôèãóðàöèîííîì ôàéëå ãîòîâûõ ÏÑ,
à òàêæå â ïðèíöèïàõ îáåñïå÷åíèÿ ìåõàíèçìîâ âçàèìîäåéñòâèÿ â âû÷èñëèòåëüíûõ
èëè ãåòåðîãåííûõ ñðåäàõ.
Ðàçðàáîòêà íîâûõ ôîðìàëèçìîâ âçàèìîäåéñòâèÿ ñòèìóëèðóåòñÿ ðàñøèðåíèåì
ñïåêòðà òåõíè÷åñêèõ ñðåäñòâ (ìåéíôðåéìû, êëàñòåðû, ãðèäû è äðóãèå), ñòðóêòóð
äàííûõ (ãðàôû, ñêðèïòû, ìåäèéíûå îáúåêòû è äðóãèå) [9], ÿçûêîâ îïèñàíèÿ èíôîð-
134 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 4
© Å.Ì. Ëàâðèùåâà, 2010
ìàöèîííûõ ðåñóðñîâ (XML, RDF, OWL è äðóãèå), à òàêæå ñòàíäàðòàìè îïèñàíèÿ
è ãåíåðàöèè îáùèõ òèïîâ äàííûõ (ISO/IEC 11404:2007. General Data Types), êîòî-
ðûå â ïåðñïåêòèâå äîëæíû óëó÷øèòü ïðîöåññ ñïåöèôèêàöèè èíòåðôåéñîâ ðàçíî-
ðîäíûõ îáúåêòîâ è èõ âûïîëíåíèÿ â ãåòåðîãåííûõ ñðåäàõ.
Îñíîâîé îáåñïå÷åíèÿ èíòåðîïåðàáåëüíîñòè ÿâëÿþòñÿ õîðîøî çàðåêîìåíäîâàâ-
øàÿ ñåáÿ òåîðèÿ ñòðóêòóðíîé îðãàíèçàöèè è òèïîâ äàííûõ ßÏ [4–9], ÿçûêè ñïåöè-
ôèêàöèè èíòåðôåéñîâ êîìïîíåíòîâ, ìåòîäû êîìïîçèöèè êîìïîíåíòîâ ñ ïîìîùüþ
ôóíêöèé ðåëåâàíòíîãî îòîáðàæåíèÿ òèïîâ ïåðåäàâàåìûõ äàííûõ ìåæäó êîìïîíåí-
òàìè è íîâûå ïðèíöèïû îðãàíèçàöèè âû÷èñëåíèé â ãåòåðîãåííûõ ñðåäàõ [10–19].
1. ÎÑÍÎÂÍÛÅ ÏÎËÎÆÅÍÈß ÒÅÎÐÈÈ ÑÒÐÓÊÒÓÐÍÎÉ
ÎÐÃÀÍÈÇÀÖÈÈ È ÒÈÏΠÄÀÍÍÛÕ ßÏ
 äàííîé òåîðèè òèï — ìàòåìàòè÷åñêîå ïîíÿòèå, îáîçíà÷àþùåå ìíîæåñòâî çíà÷å-
íèé ýëåìåíòîâ. Áàçîâûé òèï â ïðîãðàììèðîâàíèè — ýëåìåíòàðíûé òèï ïåðåìåííîé
(öåëîå, âåùåñòâåííîå è äðóãèå) â îïèñàíèè êîìïîíåíòà, èñïîëüçóåìûé âíóòðè íåãî.
Òèï ïðèñâàèâàåòñÿ ïåðåìåííîé, îïðåäåëÿþùåé êëàññ çíà÷åíèé, êàæäîå èç êîòîðûõ
ïðèíàäëåæèò îäíîìó è òîëüêî îäíîìó òèïó. Îïåðàöèè íàä çíà÷åíèÿìè òèïà — àê-
ñèîìû, à îïåðàöèè íàä òèïîì äàííûõ — ôóíêöèè óñòàíîâëåíèÿ âçàèìíî îäíîçíà÷-
íîãî ñîîòâåòñòâèÿ ïåðåäàâàåìûõ äàííûõ è íåîáõîäèìîãî ïðåîáðàçîâàíèÿ çíà÷åíèé
îäíîãî òèïà äàííûõ â çíà÷åíèÿ äðóãîãî òèïà ïðè èõ íåñîâïàäåíèè [3–8, 20].
1.1. Ñèíòàêñè÷åñêèå àñïåêòû àêñèîìàòè÷åñêîé ñèñòåìû òèïîâ äàííûõ
Ñèñòåìà âêëþ÷àåò ôóíäàìåíòàëüíûå òèïû äàííûõ (ïðîñòûå, ñòðóêòóðíûå è ñëîæ-
íûå), ìíîæåñòâî îïåðàöèé è çíà÷åíèé òèïîâ äàííûõ, èõ ñâîéñòâà è ñâÿçè ñ äðóãèìè
òèïàìè äàííûõ. Ïðîñòûå òèïû — ïåðå÷èñëèìûå òèïû äàííûõ, ñòðóêòóðíûå — ìàñ-
ñèâû è çàïèñè, ñëîæíûå — ìíîæåñòâà, ñïèñêè, ïîñëåäîâàòåëüíîñòè è äð. [3–8, 20].
Òèïû äàííûõ èñïîëüçóþòñÿ ïðè îïèñàíèè ôóíêöèé, êîìïîíåíòîâ è ïðîãðàìì
â ßÏ. Îíè ðåàëèçóþòñÿ ñèñòåìàìè ïðîãðàììèðîâàíèÿ íà ðàçíûõ ïëàòôîðìàõ êîì-
ïüþòåðîâ êàê âûõîäíîé êîä, êîòîðûé íå òîëüêî ïðåäíàçíà÷åí äëÿ âûïîëíåíèÿ ïðî-
ãðàììû, íî è ñëóæèò èñòî÷íèêîì îáåñïå÷åíèÿ âçàèìîäåéñòâèÿ â ðàçíîîáðàçíûõ,
îòëè÷àþùèõñÿ ìåæäó ñîáîé ñðåäàõ.
Àêñèîìàòèêà ïðîñòûõ òèïîâ äàííûõ. Ê ïðîñòûì òèïàì äàííûõ îòíîñÿòñÿ
ïåðå÷èñëèìûå òèïû, «öåëûé — integer ( )i », «âåùåñòâåííûé — real ( )r », «áóëå-
âûé — boolean ( )b » è «ñèìâîëüíûé — ñharacter ( )c ». Îíè èìåþò âèä
type T X õ õ õn� ( , ,.... )1 2 ,
ãäå Ò — èìÿ òèïà; ( , ,.... , )õ õ õn1 2 — èìåíà çíà÷åíèé èç ìíîæåñòâà çíà÷åíèé X .
Îïåðàöèè íàä ïåðå÷èñëèìûìè òèïàìè ìíîæåñòâà � âêëþ÷àþò áèíàðíûå îïå-
ðàöèè ñîïîñòàâëåíèÿ è óíàðíûå îïåðàöèè pred è succ, çàäàþùèå ñîîòâåòñòâåííî
ïðåäûäóùèé è ïîñëåäóþùèé ýëåìåíòû âî ìíîæåñòâå X . Îïåðàöèè ñîïîñòàâëåíèÿ
( , , , , , )� � � � � � , äàëåå (� ), îïðåäåëÿþò ëèíåéíûé ïîðÿäîê ýëåìåíòîâ ìíîæåñòâà X .
Áóëåâûé òèï îïðåäåëåí íà ìíîæåñòâå çíà÷åíèé Õ b è îïåðàöèé �
b :
Õ b b
� � �{ , }, {&, , , , , }false true V pred succ� .
Ñèìâîëüíûé òèï îïðåäåëåí íà ìíîæåñòâàõ çíà÷åíèé Õ ñ è îïåðàöèé �
c:
Õ À Õñ c
� �{ ,’ ’ ,’ ’ ,’ ’ ,’ ’ , ,’ ’}, { , , ,� � � �0 1 9 � pred succ ord chàr, }� .
Îïåðàöèÿ ord çàäàåò êàæäîìó ñèìâîëó åãî ïîðÿäêîâûé íîìåð, à chàr — çíà÷åíèå.
Àêñèîìû äàííûõ òèïîâ èìåþò âèä
X X X X.min , .max
,
( )&( .max) ( )�
� �
x X x X x Xsucc ,
( )&( .max) ( ) .min�
� � �x X x X x Xsucc ,
ãäå X . min è X . max — ìèíèìàëüíûé è ìàêñèìàëüíûé ýëåìåíòû ìíîæåñòâà X .
ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 4 135
×èñëîâûå òèïû (integer è real) èìåþò îãðàíè÷åíèÿ, ñâÿçàííûå ñ àðõèòåêòóðîé
èëè ÿâíûì îïèñàíèåì ïàðàìåòðîâ êîìïîíåíòîâ. Èì ñîîòâåòñòâóþò áàçîâûå òèïû
êàê îòðåçêè âèäà
typeT X X�
( .min, , .max),
ãäå X . min è X . max — ìèíèìàëüíûé è ìàêñèìàëüíûé ýëåìåíòû îòðåçêà. Äëÿ ëþ-
áîãî õ Õ
âûïîëíÿåòñÿ óñëîâèå õ õ õ.min .max� � . Çíà÷åíèå õ çàâèñèò îò ðåàëèçà-
öèè ýòèõ òèïîâ êîíêðåòíûì òðàíñëÿòîðîì ñ ó÷åòîì àðõèòåêòóðû êîìïüþòåðà.
Íàä ïåðåìåííûìè öåëîãî òèïà âûïîëíÿþòñÿ àíàëîãè÷íûå îïåðàöèè, à òàêæå
îïåðàöèè öåëî÷èñëåííîé àðèôìåòèêè: óíàðíûé ìèíóñ, � � �, , , div è mod . Öåëûé
òèï íà îòðåçêå îïðåäåëÿåòñÿ ñëåäóþùèìè àêñèîìàìè:
X Õ X Õi i i i
� �
{ .min, .max , .max}1 ,
�
i
� � � � �{ , , , , }div ,
typeT X Xi i i
�
( .min, , .max).
Âåùåñòâåííûé òèï îïðåäåëÿåòñÿ ñ ïîìîùüþ îïåðàöèé ñîïîñòàâëåíèÿ è îáû÷-
íûõ àðèôìåòè÷åñêèõ îïåðàöèé (óíàðíûé ìèíóñ, � �, – , , / ). Àêñèîìû âåùåñòâåííî-
ãî òèïà íà îòðåçêå èìåþò ñëåäóþùèé âèä:
Õ x Õ x Õr r r
� � �{ | .min .max},
�
r
� � � � �{ , , /, , },
typeT Õ Õr r r
�
( .min, , .max).
Ëþáûå òèïû äàííûõ ïðèâîäÿòñÿ ê áàçîâîìó òèïó, ïðåîáðàçóþòñÿ ê íåîáõîäè-
ìîìó âèäó, çàäàííîìó â ïðîãðàììå, è ïîñëå ïîëó÷åíèÿ â íåé ðåçóëüòàòà áàçîâûé
òèï ïðèâîäèòñÿ ê èñõîäíîìó ñ ïîìîùüþ ñëåäóþùèõ àêñèîì:
( ) ( ( ))�
� �x X Ò Ò õ õ0 ,
( )&( ) ( ) ( ( ) . ( ))�
�
� � � �x X x X x x T x T x1 2 1 2
0
1
0
2 .
Çäåñü Ò 0 îáîçíà÷àåò áàçîâûé òèï äëÿ òèïà Ò. Îïåðàöèè ïðåîáðàçîâàíèÿ çíà÷å-
íèÿ Ò õ0 ( ) ê Ò õ( ) îïðåäåëÿþò ñîîòâåòñòâóþùèé áàçîâûé òèï ïðè âûïîëíåíèè
àðèôìåòè÷åñêèõ îïåðàöèé � :
( )&( ) ( ) ( ( ) ( ))�
�
� � � �x X x X x x T T x T x1 2 1 2
0
1
0
2 .
Àêñèîìàòèêà ñòðóêòóðíûõ è ñëîæíûõ òèïîâ äàííûõ. Ê ñòðóêòóðíûì òè-
ïàì äàííûõ îòíîñÿòñÿ ìàññèâ è çàïèñü.
Ìàññèâ êîíñòðóèðóåòñÿ èç áàçîâûõ ïåðå÷èñëèìûõ òèïîâ è ïðåäñòàâëÿåòñÿ ìå-
õàíèçìîì îòîáðàæåíèÿ ìíîæåñòâà èíäåêñîâ I ìàññèâà íà ìíîæåñòâî çíà÷åíèé Y
ýëåìåíòîâ ìàññèâà [3]: M I Y: � . Íàä äàííûì òèïîì ìîãóò âûïîëíÿòüñÿ îïåðàöèè:
óïîðÿäî÷åíèå ýëåìåíòîâ ìàññèâîâ; ñëîæåíèå è âû÷èòàíèå ýëåìåíòîâ îäíîòèïíûõ
ìàññèâîâ; óìíîæåíèå äâóìåðíûõ ìàññèâîâ ïî ïðàâèëàì óìíîæåíèÿ ìàòðèö è äð.
Îïåðàöèÿ óìíîæåíèÿ íàêëàäûâàåò îãðàíè÷åíèÿ íà îáëàñòü çíà÷åíèé èíäåêñîâ
ìàññèâîâ, îïðåäåëÿåìûõ ìàòåìàòè÷åñêèìè ïðàâèëàìè óìíîæåíèÿ ìàòðèö. Îïåðà-
öèè ñëîæåíèÿ è âû÷èòàíèÿ âûïîëíÿþòñÿ äëÿ ÷èñëîâûõ ìàññèâîâ, âõîäÿò â ñîñòàâ
ìíîæåñòâà îáùèõ îïåðàöèé íàä ìàññèâàìè è èìåþò âèä
X x x X x X I x� � �
� �
�
� �{ |( )&( ) ( )1 2 1
� � �I x Y x Y x Y Õ( )&( ( ) ( ) ( ))}2 1 2
� , �
�
� �{ },
type àrrày ofÒ Ò I T Ya
� ( ) ( ) ,
ãäå I õ( ) — ìíîæåñòâî èíäåêñîâ õ äëÿ ìàññèâà; Y x( ) — ìíîæåñòâî çíà÷åíèé ýëå-
ìåíòîâ ìàññèâà; Y Õ( )� — ìíîæåñòâî çíà÷åíèé ýëåìåíòîâ äëÿ ëþáûõ òèïîâ ìàñ-
136 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 4
ñèâà; Ò a — òèï äàííûõ ìàññèâ; Ò I( ) — òèï äàííûõ èíäåêñîâ ìàññèâà; T Y( ) —
òèï äàííûõ äëÿ ìíîæåñòâà çíà÷åíèé ýëåìåíòîâ ìàññèâîâ òèïà Ò a .
Ê ýòîìó òèïó îòíîñÿòñÿ òîëüêî òå ìàññèâû, ó êîòîðûõ ìíîæåñòâà èíäåêñîâ ñî-
âïàäàþò, à ìíîæåñòâà çíà÷åíèé èõ ýëåìåíòîâ ïðèíàäëåæàò îäíîìó è òîìó æå ÷èñ-
ëîâîìó ìíîæåñòâó, õàðàêòåðèçóþùåìó äàííûé òèï. Îïåðàöèè âûïîëíÿþòñÿ íàä
ìàññèâàìè êàê íàä åäèíûì çíà÷åíèåì. Äàííûå òèïà Ò Y( ) â îïèñàíèè ìàññèâà Ò a ,
â ñâîþ î÷åðåäü, ìîãóò îïðåäåëÿòüñÿ ðåêóðñèâíî ÷åðåç ìàññèâ ïî ñëåäóþùåé ñõåìå:
type array îfT T I T Ya
� ( ) ( )1 1 ,
type array îfT Y Ò I Ò Y( ) ( ) ( )1 2 2
� ,
÷òî ýêâèâàëåíòíî çàïèñè
type array îfT Ò I I Ò Ya
� �( ) ( )1 2 2 .
Ìíîæåñòâî èíäåêñîâ ìàññèâîâ, ïðèíàäëåæàùèõ òèïó T a , ïðåäñòàâëåíî â âèäå
ïðÿìîãî ïðîèçâåäåíèÿ ìíîæåñòâ çíà÷åíèé äëÿ òèïîâ Ò I( )1 è Ò I( )2 .
Çàïèñü ïðåäñòàâëÿåò ñîáîé êîíêàòåíàöèþ îòäåëüíûõ êîìïîíåíòîâ, êîòîðûå
ìîãóò èìåòü ðàçíûå òèïû. Ìíîæåñòâî åå çíà÷åíèé — ïðÿìîå ïðîèçâåäåíèå çíà÷å-
íèé åå êîìïîíåíòîâ. Ê ìíîæåñòâó îïåðàöèé íàä çàïèñÿìè îòíîñÿòñÿ îïåðàöèè ñî-
ïîñòàâëåíèÿ îäíîòèïíûõ ñòðóêòóð (òèïû êîìïîíåíòîâ ñðàâíèâàåìûõ çàïèñåé è ïî-
ðÿäîê èõ ñëåäîâàíèÿ îäèíàêîâû):
X x x x x x X x Xz n n n z
� � � �
� �{ |( )&( )& &( )}, { }� � � � � �1 1 1
� � � .
Îïåðàöèè âûïîëíÿþòñÿ íàä çàïèñüþ êàê íàä åäèíûì ñòðóêòóðíûì çíà÷åíèåì.
Ê îòäåëüíûì êîìïîíåíòàì çàïèñè ïðèìåíÿåòñÿ îïåðàöèÿ ñåëåêòîðà.
Ê ñëîæíûì òèïàì äàííûõ îòíîñÿòñÿ: ìíîæåñòâî, îáúåäèíåíèå, ñïèñîê, ïîñëå-
äîâàòåëüíîñòü, äåðåâüÿ è äð. Íåêîòîðûå èç ýòèõ òèïîâ — ñòàíäàðòíûå â êîíêðåò-
íûõ ßÏ, äðóãèå ðåàëèçóþòñÿ ÷åðåç ìîäåëèðîâàíèå ñòðóêòóð è îïåðàöèé íàä íèìè.
Ìíîæåñòâî. Îáùàÿ ôîðìà ïðåäñòàâëåíèÿ èìååò âèä
type powersetT T�
0 ,
ãäå Ò — òèï ìíîæåñòâà; Ò 0 — áàçîâûé òèï åãî ýëåìåíòîâ.
Òèï Ò âêëþ÷àåò îïåðàöèè íàä ìíîæåñòâàìè êàê íàä ìàòåìàòè÷åñêèìè òèïàìè —
îáúåäèíåíèå, ïåðåñå÷åíèå, ðàçíîñòü, âêëþ÷åíèå, òîæäåñòâåííîñòü è äð. Ñ ïîìîùüþ
îïåðàöèé ñåëåêòîðà îñóùåñòâëÿåòñÿ âûáîð òèïà Ò 0 èç îáúåêòà òèïà Ò, à çà ñ÷åò îïå-
ðàöèè êîíñòðóèðîâàíèÿ — ôîðìèðîâàíèå èç îäíîãî èëè èç íåñêîëüêèõ ýëåìåíòîâ
òèïà Ò 0 îáúåêòà òèïà Ò.
Îáúåäèíåíèå. Îáùàÿ ôîðìà ïðåäñòàâëåíèÿ èìååò âèä
type unionT T T n� ( , , )
� �1
� ,
ãäå Ò — òèï îáúåäèíåíèÿ; T T n� �1 , ,� — áàçîâûå òèïû.
Ëþáîé îáúåêò òèïà Ò èìååò çíà÷åíèå è ïðèçíàê, ïî êîòîðîìó îïðåäåëÿåòñÿ
îäèí èç òèïîâ T T n� �1 , ,� äëÿ äàííîãî çíà÷åíèÿ. Ìåõàíèçì ðåàëèçàöèè îáúåäèíå-
íèÿ ïîäîáåí ìåõàíèçìó ðåàëèçàöèè âàðèàíòíûõ çàïèñåé.
Ñïèñîê. Êîíñòðóêòèâíûé ýëåìåíò ßÏ Ëèñï, îïèñûâàåòñÿ êàê çàïèñü ñ îäíèì
èëè íåñêîëüêèìè êîìïîíåíòàìè ññûëî÷íîãî òèïà, íàä êîòîðûì âûïîëíÿþòñÿ ñîîò-
âåòñòâóþùèå îïåðàöèè ñ çàïèñÿìè, à òàêæå îïåðàöèè, ïðèìåíÿåìûå ê öåëîìó ñïèñ-
êó: âûáîð íà÷àëüíîãî ýëåìåíòà, ïîëó÷åíèå îñòàòêà ñïèñêà, ñîåäèíåíèå è ñðàâíåíèå,
èíâåðòèðîâàíèå, ïîèñê ýëåìåíòîâ è äð.
Ïîñëåäîâàòåëüíîñòü. Îáùàÿ ôîðìà ïðåäñòàâëåíèÿ èìååò âèä
type sequenceT T�
0,
ãäå Ò — òèï ïîñëåäîâàòåëüíîñòè; T 0 — áàçîâûé òèï.
ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 4 137
Ïîñëåäîâàòåëüíîñòü — îäèí èç âàðèàíòîâ òèïà ñïèñêà, ó êîòîðîãî êàæäûé
ýëåìåíò ñîäåðæèò òîëüêî îäíó ññûëêó äëÿ îáåñïå÷åíèÿ îäíîñòîðîííåé ñâÿçè. Îïå-
ðàöèè íàä ïîñëåäîâàòåëüíîñòÿìè àíàëîãè÷íû îïåðàöèÿì íàä ñïèñêàìè. Ðàçíîâèä-
íîñòü ïîñëåäîâàòåëüíîñòè — ñòðîêà, äëÿ êîòîðîé êàæäûé ýëåìåíò ñîäåðæèò
ýëåìåíò ñèìâîëüíîãî òèïà.
Äåðåâüÿ. Ýòè ñòðóêòóðû èñïîëüçóþòñÿ äëÿ ïðåäñòàâëåíèÿ ãðàôîâ èëè äðóãèõ
ïîäîáíûõ îáúåêòîâ. Ìíîæåñòâî îïåðàöèé íàä äåðåâüÿìè àíàëîãè÷íî ìíîæåñòâó
îïåðàöèé íàä ñïèñêàìè, èõ ðåàëèçàöèÿ çàâèñèò îò êîíêðåòíûõ âèäîâ ïðèëîæåíèé.
Êðîìå îïèñàííûõ òèïîâ äàííûõ, â ïðîãðàììèðîâàíèè èñïîëüçóþòñÿ òàáëèöû,
ôàéëû è âñåâîçìîæíûå êîìáèíàöèè óêàçàííûõ òèïîâ. Äàëåå ðàññìàòðèâàåòñÿ ñå-
ìàíòèêà ôóíäàìåíòàëüíûõ òèïîâ äàííûõ â êîìïîíåíòàõ íà ßÏ.
1.2. Ñåìàíòè÷åñêèå àñïåêòû èíòåðîïåðàáåëüíîñòè ðàçíîðîäíûõ ïðîãðàìì
Ñ ñåìàíòè÷åñêîé òî÷êè çðåíèÿ èíòåðîïåðàáåëüíîñòü — îáåñïå÷åíèå ñîâìåñòèìîñ-
òè òèïîâ äàííûõ ïóòåì ïðåîáðàçîâàíèÿ ôîðì ïðåäñòàâëåíèÿ çíà÷åíèé òèïîâ äàí-
íûõ â ïðîãðàììàõ ßÏ ê ðåëåâàíòíîìó ïðîãðàììíîìó êîäó ñðåäû. Òàêîå ïðåîáðà-
çîâàíèå ñâîäèòñÿ ê óñòàíîâëåíèþ âçàèìíî îäíîçíà÷íîãî ñîîòâåòñòâèÿ (èçîìîðôèç-
ìà) çíà÷åíèé òèïîâ äàííûõ âûçûâàþùåãî è âûçûâàåìîãî êîìïîíåíòîâ â ñðåäå
âûïîëíåíèÿ è âêëþ÷àåò ñëåäóþùèå ñëó÷àè èõ èçîìîðôíîãî îòîáðàæåíèÿ.
1. Èçîìîðôèçì ñóùåñòâóåò ìåæäó ìíîæåñòâàìè çíà÷åíèé òèïîâ äàííûõ ßÏ
è ìíîæåñòâîì îïåðàöèé.
2. Èçîìîðôèçì ñóùåñòâóåò ïðè íåêîòîðûõ îãðàíè÷åíèÿõ ìåæäó ìíîæåñòâàìè
çíà÷åíèé òèïîâ äàííûõ ßÏ è ðàçíûìè îïåðàöèÿìè.
3. Èçîìîðôèçì íå ñóùåñòâóåò ïðè îòîáðàæåíèè ìíîæåñòâà çíà÷åíèé òèïîâ
äàííûõ ðàçíûõ ßÏ.
Èçîìîðôèçì îòîáðàæåíèé ìíîæåñòâà çíà÷åíèé t òèïîâ äàííûõ T ñ ïîìîùüþ
îïåðàöèé � îïðåäåëÿåòñÿ ìîùíîñòüþ ñèñòåìû ïðåîáðàçîâàíèÿ èëè ìîùíîñòüþ
ìíîæåñòâà çíà÷åíèé òèïîâ X t
� [9]. Ýòî ïîëîæåíèå — êðèòåðèé îöåíêè ïðàâèëüíîñ-
òè âçàèìîäåéñòâèÿ ïðîãðàìì äëÿ ñëó÷àÿ, åñëè îäèíàêîâûå òèïû äàííûõ â ðàçíûõ
ßÏ èìåþò ðàçëè÷íûå ìíîæåñòâà çíà÷åíèé èëè åñëè îñóùåñòâëÿåòñÿ àäàïòàöèÿ ðàç-
íîÿçûêîâûõ êîìïîíåíòîâ ñ îäíîãî òèïà êîìïüþòåðà äëÿ äðóãîãî (íàïðèìåð, äèàïà-
çîíû öåëûõ è âåùåñòâåííûõ ÷èñåë ðàçëè÷íû). Ëþáûå äâà ýëåìåíòà ñðàâíèìû, åñëè
èçîìîðôíîå îòîáðàæåíèå ñîõðàíÿåò îòíîøåíèå ëèíåéíîãî ïîðÿäêà.
Ëåììà. Äëÿ ëþáîãî èçîìîðôíîãî îòîáðàæåíèÿ � ìåæäó ñèñòåìàìè îòîáðàæå-
íèé âûïîëíÿþòñÿ ðàâåíñòâà
� �
� � � �
( ) , ( )
.min .min .max .max
X X X Xt q t q
� � .
Äîêàçàòåëüñòâî äàííîé ëåììû ïðîñòîå. Äëÿ âñåõ ïîñòðîåííûõ ñèñòåì ïðåîá-
ðàçîâàíèÿ, îïèñûâàþùèõ ïðîñòûå òèïû äàííûõ, ìíîæåñòâà çíà÷åíèé îãðàíè÷åíû.
Ñòðóêòóðíûå òèïû äàííûõ ñòðîÿòñÿ èç ïðîñòûõ ñ ïîìîùüþ êîíå÷íîãî ÷èñëà îïåðà-
öèé, à èõ ìíîæåñòâà çíà÷åíèé òàêæå êîíå÷íû. Ïîýòîìó X t
�.min
, X t
�.max , X
q
�.min
,
X
q
�.max
ñóùåñòâóþò è ïðèíàäëåæàò ìíîæåñòâàì X t
� è X
q
�
ñîîòâåòñòâåííî. Ñ ó÷å-
òîì ëèíåéíîé óïîðÿäî÷åííîñòè ýòèõ ìíîæåñòâ âûïîëíÿåòñÿ óñëîâèå ëåììû.  ïðî-
òèâíîì ñëó÷àå èçîìîðôíîå îòîáðàæåíèå íå ñîõðàíÿëî áû ëèíåéíûé ïîðÿäîê, ÷òî
ïðîòèâîðå÷èò ñäåëàííîìó ðàíåå âûâîäó. Ëåììà äîêàçàíà.
Ñèñòåìû èçîìîðôíîãî îòîáðàæåíèÿ ìåæäó áàçîâûìè òèïàìè äàííûõ òðèâè-
àëüíû. Äëÿ áîëåå ñëîæíûõ ñòðóêòóð äàííûõ ïðåîáðàçîâàíèå ñâîäèòñÿ ê ïðîñòûì
òèïàì äàííûõ. Ïðè âûïîëíåíèè îïåðàöèé ïðåîáðàçîâàíèÿ ìàññèâîâ è çàïèñåé âîç-
ìîæíû êîìáèíàöèè: ìàññèâ — â ìàññèâ, çàïèñü — â çàïèñü, ìàññèâ — â çàïèñü, çà-
ïèñü — â ìàññèâ. Ýòè ïðåîáðàçîâàíèÿ ñîõðàíÿþò ëèíåéíûé ïîðÿäîê.
138 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 4
Ðàññìîòðèì èçîìîðôèçì òèïà äàííûõ «ìàññèâ — â ìàññèâ». Â íåì âçàèìíî îäíî-
çíà÷íîå îòîáðàæåíèå � ñîõðàíÿåò ëèíåéíûé ïîðÿäîê.  âûðàæåíèè ( ) &�
x Xa a
� �
1
&( ) &( ) ( ) ( )�
� � �x X x x x xa a a a a a
� � � � � �
� �
2 1 2 1 2
îòíîøåíèå � îçíà÷àåò åãî âûïîëíå-
íèå äëÿ âñåõ ýëåìåíòîâ îáëàñòè îïðåäåëåíèÿ. Ôóíêöèè �
�
( )xa
1
è �
�
( )xa
2
îáåñïå÷èâàþò
ïðåîáðàçîâàíèå èíäåêñîâ i è çíà÷åíèé y äëÿ ýëåìåíòîâ ìàññèâà: � � �i
a aI I: � ,
� � �y
a aY X Y X: ( ) ( )� .
Ôóíêöèè �
�
( )xa
1
è �
�
( )xa
2
áóäóò îïðåäåëÿòüñÿ êàê îãðàíè÷åíèÿ îòîáðàæåíèÿ
� ó íà ñîîòâåòñòâóþùåì ïîäìíîæåñòâå è îáîçíà÷àòüñÿ �
�ó
aY x| ( )
1
è �
�ó
aY x| ( )
2
. Íå-
ðàâåíñòâî � �
� �
( ) ( )x xa a
1 2
� áóäåò ýêâèâàëåíòíûì � �
� �ó
a
ó
aY x Y x| ( ) | ( )
1 2
� .
Àíàëîãè÷íóþ êîíöåïöèþ ïðåîáðàçîâàíèÿ èìååò «çàïèñü – â çàïèñü». Ïðåîáðà-
çîâàíèå «çàïèñü – â ìàññèâ» òðåáóåò, ÷òîáû òèïû âñåõ ýëåìåíòîâ çàïèñè áûëè îäè-
íàêîâûìè, à ñàìà çàïèñü ïðåäñòàâëÿëàñü â âèäå ìàññèâà. Ìíîæåñòâî çíà÷åíèé ýëå-
ìåíòîâ çàïèñè îáðàçóåò ìíîæåñòâî çíà÷åíèé ýëåìåíòîâ ìàññèâà Y . Ìíîæåñòâî èí-
äåêñîâ ïåðåóïîðÿäî÷èâàåò êîìïîíåíòû çàïèñè: i-é êîìïîíåíò ñòàâèòñÿ
â ñîîòâåòñòâèå �( )i -ìó ýëåìåíòó âî ìíîæåñòâå J . Ìíîæåñòâî I ÿâëÿåòñÿ ìíîæåñ-
òâîì çíà÷åíèé ïåðå÷èñëèìîãî òèïà.
Ðàññìîòðåííûå òèïû äàííûõ èñïîëüçóþòñÿ â ïðîãðàììàõ è êîìïîíåíòàõ â ßÏ.
Îáåñïå÷åíèå âçàèìîäåéñòâèÿ êîìïîíåíòîâ â ðàçíûõ ñðåäàõ îñóùåñòâëÿåòñÿ ñ ïî-
ìîùüþ èõ èíòåðôåéñîâ, êîòîðûå îïèñûâàþòñÿ ÿçûêàìè MIL, IDL, API, RMI è äð.
 ýòèõ ÿçûêàõ èíòåðôåéñ ÿâëÿåòñÿ ñïåöèàëüíûì ðàçäåëîì îïèñàíèÿ ïàðàìåòðîâ,
ïåðåäàâàåìûõ äðóãèì êîìïîíåíòàì. Äàëåå ðàññìàòðèâàþòñÿ òåîðåòè÷åñêèå è ïðè-
êëàäíûå àñïåêòû ñîçäàíèÿ ÏÑ èç êîìïîíåíòîâ ñ âîçìîæíîñòüþ èõ âçàèìîäåéñòâèÿ
ïðè âûïîëíåíèè â ñîâðåìåííûõ ñðåäàõ.
2. ÔÎÐÌÀËÈÇÀÖÈß ÈÍÒÅÐÔÅÉÑÀ ÊÎÌÏÎÍÅÍÒÎÂ
Îñíîâíîé îñîáåííîñòüþ ñîâðåìåííîãî ïðîãðàììèðîâàíèÿ ÿâëÿåòñÿ èñïîëüçîâàíèå
â íîâûõ ñèñòåìàõ ãîòîâûõ êîìïîíåíòîâ (reuse), êîòîðûõ â èíôîðìàöèîííîì ïðî-
ñòðàíñòâå ðàçðàáîòàíî áîëüøîå êîëè÷åñòâî. Ïðîöåññ îáúåäèíåíèÿ îòäåëüíûõ êîì-
ïîíåíòîâ, êîìïîíåíòîâ ïîâòîðíîãî èñïîëüçîâàíèÿ (ÊÏÈ), êàðêàñîâ, êîíòåéíåðîâ
â áîëåå ñëîæíóþ êîìïîíåíòíóþ ñòðóêòóðó çàäàåòñÿ îïèñàíèåì ñâÿçåé (àññîöèàöèé)
è óòâåðæäåíèÿìè îá èõ âçàèìîäåéñòâèè. Ñáîðêó êîìïîíåíòîâ ìîæíî ôîðìàëèçî-
âàòü òåîðèÿìè ïåðâîãî ïîðÿäêà, ñëîæíûé êàðêàñ — ïðåäèêàòàìè îïèñàíèÿ êëàññîâ,
ñîñòîÿíèé ïåðåìåííûõ, ìåòîäîâ è èõ îòíîøåíèé. Êëàññ è îáúåêò çàäàþòñÿ ñîðòàìè
îáúåêòîâ ïåðâîãî êëàññà, ïðè ýòîì ìîãóò èñïîëüçîâàòüñÿ ñîðòà bool è int.
ÊÏÈ âêëþ÷àåò íåêîòîðûé ìåòîä (èëè èõ ñîâîêóïíîñòü) ñ îïðåäåëåííîé ñèãíà-
òóðîé è òèïàìè äàííûõ, êîòîðûå ïåðåäàþòñÿ äðóãîìó ÊÏÈ è âîçâðàùàþòñÿ ïîñëå
ðåàëèçàöèè ýòîãî ìåòîäà. Ïîâòîðíîå èñïîëüçîâàíèå êîìïîíåíòîâ (reusability) ïðåä-
ñòàâëÿåò ñîáîé ñèñòåìàòè÷åñêóþ äåÿòåëüíîñòü êàê â ïëàíå êëàññèôèêàöèè è èõ êà-
òàëîãèçàöèè â õðàíèëèùàõ (ðåïîçèòàðèÿõ), òàê è ïðèìåíåíèÿ â íîâûõ ðàçðàáîòêàõ
ïðîãðàììíûõ è èíôîðìàöèîííûõ ñèñòåì [10–19].
Ïî ñâîåé ïðèðîäå ïðîãðàììíûé êîìïîíåíò ÿâëÿåòñÿ íåçàâèñèìûì îò ßÏ ñà-
ìîñòîÿòåëüíî ðåàëèçîâàííûì îáúåêòîì, îáåñïå÷èâàþùèì âûïîëíåíèå îïðåäåëåí-
íîé ñîâîêóïíîñòè ïðèêëàäíûõ ñåðâèñîâ, äîñòóï ê êîòîðûì âîçìîæåí ÷åðåç èíòåð-
ôåéñû, óêàçûâàþùèå ôóíêöèè è îïåðàöèè îáðàùåíèÿ ê êîìïîíåíòó. Ïðè ýòîì èí-
òåðôåéñ ñîäåðæèò îïèñàíèå õàðàêòåðèñòèê è àòðèáóòîâ êîìïîíåíòà, êîòîðûé
îáìåíèâàåòñÿ äàííûìè ñ äðóãèìè êîìïîíåíòàìè â êîìïîíåíòíîé èëè èíîé ñðåäå.
Êîìïîíåíòíàÿ ñðåäà — ðàñøèðåíèå êëàññè÷åñêîé ìîäåëè «êëèåíò–ñåðâåð»
ñ ìíîæåñòâîì ñåðâåðîâ êîìïîíåíòîâ (èëè ñåðâåðîâ ïðèëîæåíèé — application
servers). Êîìïîíåíò, ïðåäñòàâëåííûé êàê êîíòåéíåð, ðàçâîðà÷èâàåòñÿ âíóòðè ñåðâå-
ðà. Äëÿ êàæäîãî ñåðâåðà ìîæåò ñóùåñòâîâàòü ïðîèçâîëüíîå êîëè÷åñòâî êîíòåéíå-
ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 4 139
ðîâ. Âçàèìîñâÿçü è âçàèìîäåéñòâèå êîíòåéíåðà ñ ñåðâåðîì ðåãëàìåíòèðîâàíû ñòàí-
äàðòèçèðîâàííûì èíòåðôåéñîì. Êîíòåéíåð óïðàâëÿåò ïîðîæäàåìûìè èì ýêçåìïëÿ-
ðàìè êîìïîíåíòà — ðåàëèçàöèÿìè ñîîòâåòñòâóþùåé ôóíêöèîíàëüíîñòè.
Ñ êàæäûì êîíòåéíåðîì ñâÿçàíî äâà òèïà èíòåðôåéñîâ — èíòåðôåéñ äëÿ âçàè-
ìîäåéñòâèÿ ñ äðóãèìè êîìïîíåíòàìè è èíòåðôåéñ ñèñòåìíûõ ñåðâèñîâ, íåîáõîäè-
ìûõ äëÿ åãî ôóíêöèîíèðîâàíèÿ è ðåàëèçàöèè ñïåöèàëüíûõ ôóíêöèé (íàïðèìåð,
ïîääåðæêà ðàñïðåäåëåííûõ òðàíçàêöèé ñ ó÷àñòèåì íåñêîëüêèõ êîìïîíåíòîâ). Ïåð-
âûé òèï èíòåðôåéñà (Home interface) îáåñïå÷èâàåò óïðàâëåíèå ýêçåìïëÿðàìè êîì-
ïîíåíòà ñ îáÿçàòåëüíûìè ðåàëèçàöèÿìè ìåòîäîâ ïîèñêà, ñîçäàíèÿ è óäàëåíèÿ îò-
äåëüíûõ ýêçåìïëÿðîâ. Êî âòîðîìó òèïó îòíîñÿòñÿ èíòåðôåéñû, êîòîðûå îáåñïå÷è-
âàþò äîñòóï ê ðåàëèçàöèè ôóíêöèîíàëüíîñòè êîìïîíåíòà. Ôàêòè÷åñêè ñ êàæäûì
ýêçåìïëÿðîì ñâÿçàí îïðåäåëåííûé ôóíêöèîíàëüíûé èíòåðôåéñ.
Îïðåäåëèì òðåáîâàíèÿ ê èíòåðôåéñàì.
1. Êîìïîíåíò ñîäåðæèò îäèí èëè áîëüøå èíòåðôåéñîâ, êîòîðûå èìåþò óíè-
êàëüíûå èìåíà, è îïèñàíèå ñòðóêòóðû èíòåðôåéñà.
2. Êàæäûé èíòåðôåéñ ñîñòîèò èç íåñêîëüêèõ îïåðàöèé (ìåòîäîâ) èëè èç îä-
íîé. Êàæäàÿ îïåðàöèÿ èìååò èìÿ, ìíîæåñòâî âõîäíûõ è âûõîäíûõ ïàðàìåòðîâ, òèï
êîòîðûõ îïðåäåëÿåòñÿ íà ìíîæåñòâå ïðîñòûõ è ñòðóêòóðíûõ òèïîâ äàííûõ ßÏ. Ñî-
âîêóïíîñòü ïàðàìåòðîâ è èõ òèïîâ — ñèãíàòóðà îïåðàöèè, à ñîâîêóïíîñòü ñèãíàòóð
âñåõ îïåðàöèé — ñèãíàòóðà èíòåðôåéñà.
3. Êàæäûé êîìïîíåíò ðåàëèçóåò ñõåìó âçàèìîäåéñòâèÿ — ñåðâåð è êëèåíò.
Åñëè ê êîìïîíåíòó îáðàùàþòñÿ äðóãèå êîìïîíåíòû, òî ýòî — ñåðâåð. Äëÿ ïîääåð-
æêè îïðåäåëåííîãî ñåðâèñà êîìïîíåíò îáðàùàåòñÿ ê êëèåíòó. Èíòåðôåéñû äåëÿòñÿ
íà äâà òèïà. Ê ïåðâîìó òèïó îòíîñÿòñÿ èíòåðôåéñû, êîòîðûå íåïîñðåäñòâåííî îïè-
ñûâàþò ñåðâèñíûå âîçìîæíîñòè (ôóíêöèîíàëüíîñòü) êîìïîíåíòà, êî âòîðîìó —
ññûëêè íà èíòåðôåéñû äðóãèõ êîìïîíåíòîâ, îïåðàöèè êîòîðûõ íåîáõîäèìî âûïîë-
íèòü äëÿ ôóíêöèîíèðîâàíèÿ êîìïîíåíòà.
4. Âçàèìîäåéñòâèå ìåæäó êîìïîíåíòàìè îïðåäåëÿåòñÿ èíòåðôåéñàìè. Îáúåê-
òû, ìåæäó êîòîðûìè ìîæåò áûòü ñêðûòîå (hidden) âçàèìîäåéñòâèå, âõîäÿò â ñîñòàâ
îäíîãî êîìïîíåíòà è ðàññìàòðèâàþòñÿ êàê åäèíîå öåëîå. Èíòåðôåéñû êîìïîíåíòîâ
îòêðûòû, çàäàþò èõ âíåøíåå ïîâåäåíèå, â ñåðåäèíå îíè íåäîñòóïíû.
2.1. Òèïû îòíîøåíèé ìåæäó êîìïîíåíòàìè
Íàñëåäîâàíèå. Äàííîå îòíîøåíèå äâóõ êîìïîíåíòîâ õàðàêòåðèçóåò îòíîøåíèå
íàñëåäîâàíèÿ âõîäíûõ èíòåðôåéñîâ.
Ýêçåìïëÿðèçàöèÿ. Âûðàæåíèå CIns IIns IntFunc ImpFunc
k
ij
k
ij i j
� ( , , ) îïèñûâàåò îï-
ðåäåëåííûé ýêçåìïëÿð êîìïîíåíòà Comp, ãäå IIns
k
ij — óíèêàëüíûé èäåíòèôèêàòîð
ýêçåìïëÿðà; IntFunci — ôóíêöèîíàëüíîñòü èíòåðôåéñà CIntI CInti
; ImpFunc j —
ïðîãðàììíûé ýëåìåíò, îáåñïå÷èâàþùèé âûïîëíåíèå ðåàëèçàöèè CImp CImpi
.
Êîíòðàêò. Ìåæäó êîìïîíåíòàìè Comp1 è Comp2 ñóùåñòâóåò îòíîøåíèå êîíòðàê-
òà Cont CInt CInt IMapim è m im
12 1 2 12
� ( , , ), ãäå CInt CIntè
1 1
— èñõîäíûé èíòåðôåéñ ïåðâî-
ãî êîìïîíåíòà, CInt CIntm
2 2
— âõîäíîé èíòåðôåéñ âòîðîãî; IMapim
12
— îòîáðàæåíèå
ñîîòâåòñòâèÿ ìåæäó ìåòîäàìè îáîèõ èíòåðôåéñîâ ñ ó÷åòîì ñèãíàòóð è òèïîâ äàííûõ,
êîòîðûå ïåðåäàþòñÿ, åñëè êîìïîíåíò Comp2 èìååò ðåàëèçàöèþ äëÿ èíòåðôåéñà CInt m
2
,
îáåñïå÷èâàþùóþ âûïîëíåíèå ôóíêöèîíàëüíîñòè IntFuncè
1
èíòåðôåéñà CInt è
1
.
Ñâÿçûâàíèå. Åñëè ìåæäó êîìïîíåíòàìè Comp1 è Comp2 ñóùåñòâóåò îòíîøåíèå êîíò-
ðàêòà Cont im
12 , òî ìåæäó èõ ýêçåìïëÿðàìè CIns IIns IntFunc ImpFunck
ij
k
ij i j
1 1� ( , , ) è CIns
p
mq
2
�
� ( , , )IIns IntFunc ImpFunc
p
mq m q
2
ñóùåñòâóåò îòíîøåíèå ñâÿçûâàíèÿ îòíîñèòåëüíî
êîíòðàêòà Cont im
12
â âèäå Bind IIns IIns Cont
k
ij
p
mq im( , , )
1 2 12
.
140 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 4
Ê ôîðìàëüíûì îñíîâàì êîìïîíåíòíîãî ïðîãðàììèðîâàíèÿ îòíîñÿòñÿ ðàçðàáîòàí-
íûå ôîðìàëüíûå ìîäåëè, êîìïîíåíòíàÿ àëãåáðà ñ îïåðàöèÿìè èçìåíåíèÿ êîìïîíåíòîâ
è èíòåðôåéñîâ, à òàêæå ïîäõîä ê ðåàëèçàöèè èíòåðôåéñà êîìïîíåíòîâ [9, 20–23].
2.2. Ìîäåëè êîìïîíåíòíîãî ïðîãðàììèðîâàíèÿ
Ìîäåëè êîìïîíåíòíîãî ïðîãðàììèðîâàíèÿ îáåñïå÷èâàþò ïåðåõîä îò òåîðèè ê ïðàê-
òèêå (íàïðèìåð, äëÿ òàêèõ ñðåä, êàê CORBA, COM, EJB). Ðÿä ìîäåëåé, ðàçðàáî-
òàííûõ íà åäèíîé ïîíÿòèéíîé, òåðìèíîëîãè÷åñêîé è ìàòåìàòè÷åñêîé îñíîâå,
ïðåäëîæåíû â [9, 10]. Îíè âêëþ÷àþò: ìîäåëü êîìïîíåíòà; ìîäåëü èíòåðôåéñà;
ìîäåëü êîìïîíåíòíîé ñðåäû; êîìïîíåíòíóþ àëãåáðó.
Ìîäåëü êîìïîíåíòà èìååò âèä
Comp CName CInt CFact CImp CServ� ( , , , , ) , (1)
ãäå CName — óíèêàëüíîå èìÿ êîìïîíåíòà; CInt CInt i
� { } — ìíîæåñòâî èíòåð-
ôåéñîâ, ñâÿçàííûõ ñ êîìïîíåíòîì; CFact — èíòåðôåéñ îáåñïå÷åíèÿ ôóíêöèé
óïðàâëåíèÿ ýêçåìïëÿðàìè êîìïîíåíòà; CImp CImp j
� { } — ìíîæåñòâî ðåàëèçàöèé
êîìïîíåíòà; CServ CServr
� { } — ìíîæåñòâî îáùåñèñòåìíûõ ñåðâèñîâ.
Ìíîæåñòâî CInt CInt CInt� �
1 2 ñîñòîèò èç âõîäíûõ CInt1 è âûõîäíûõ CInt 2
èíòåðôåéñîâ. Îòëè÷èå ìåæäó íèìè çàêëþ÷àåòñÿ â òîì, ÷òî äëÿ âûõîäíûõ èíòåð-
ôåéñîâ êîìïîíåíò èìååò ñîáñòâåííûå ðåàëèçàöèè, à äëÿ âõîäíûõ ðåàëèçàöèè íàõî-
äÿòñÿ â äðóãèõ êîìïîíåíòàõ. Êàæäûé CInt CInti
èìååò ìîäåëü
CInt IntName IntFunc IntSpeci i i i
� ( , , ) ,
ãäå IntNamei — èìÿ èíòåðôåéñà; IntFunci — ôóíêöèîíàëüíîñòü (ñîâîêóïíîñòü
ìåòîäîâ); IntSpeci — ñïåöèôèêàöèÿ èíòåðôåéñà: îïèñàíèå òèïîâ, êîíñòàíò, äðó-
ãèõ ýëåìåíòîâ, ñèãíàòóð ìåòîäîâ è ò.ï.
Èíòåðôåéñ CFact îïðåäåëÿåò ìåòîäû, íåîáõîäèìûå äëÿ óïðàâëåíèÿ ýêçåìïëÿ-
ðàìè êîìïîíåíòà (ïîèñê, ñîçäàíèå, óíè÷òîæåíèå è ò.ï.).
Êàæäàÿ ðåàëèçàöèÿ CImp CImpj
èìååò ìîäåëü
CImp ImpName ImpFunc ImpSpecj j j j
� ( , , ) ,
ãäå ImpName j — èäåíòèôèêàòîð ðåàëèçàöèè; ImpFunc j — ïðîãðàììíûé ýëåìåíò,
îáåñïå÷èâàþùèé âûïîëíåíèå ôóíêöèîíàëüíîñòè äëÿ ðåàëèçàöèè; ImpSpec j — ñïåöèôè-
êàöèÿ ðåàëèçàöèè (óñëîâèÿ âûïîëíåíèÿ, çàâèñèìîñòè îò îïðåäåëåííûõ ïëàòôîðì è ò.ï.).
Íåîáõîäèìûì òðåáîâàíèåì ñóùåñòâîâàíèÿ êîìïîíåíòà ÿâëÿåòñÿ óñëîâèå åãî
öåëîñòíîñòè
�
�
�CInt CInt CImp CImp Provide CInt CImpi j i j[ ( ) ] ,
ãäå Provide CInt i( ) — ôóíêöèîíàëüíîñòü, îáåñïå÷èâàþùàÿ ðåàëèçàöèþ ìåòîäîâ
èíòåðôåéñà CInt i . Äëÿ âçàèìîäåéñòâèÿ êîìïîíåíòîâ Comp1 è Comp2 íåîáõîäèìî
âûïîëíåíèå ñëåäóþùåãî óñëîâèÿ: åñëè CInt CInti
1 1
, òî äîëæåí ñóùåñòâîâàòü
CInt CIntk
2 2
òàêîé, ÷òî
Sign CInt Sign CInt Provide CInt CImpi k i j( ) ( )& ( )
1 2 1 2
� � ,
ãäå Sign( )
— ñèãíàòóðà ñîîòâåòñòâóþùåãî èíòåðôåéñà.
Ìîäåëü èíòåðôåéñà êîìïîíåíòà èìååò âèä
CInt IntName IntFunc IntSpeci i i i
� ( , , ) ,
ãäå IntNamei — èìÿ i-ãî èíòåðôåéñà; IntFunci — ôóíêöèîíàëüíîñòü, ðåàëèçî-
âàííàÿ äàííûì èíòåðôåéñîì (ñîâîêóïíîñòü ìåòîäîâ); CInt i — èíòåðôåéñ óïðàâ-
ëåíèÿ ýêçåìïëÿðàìè êîìïîíåíòà; IntSpeci — ñïåöèôèêàöèÿ èíòåðôåéñà (îïèñà-
íèÿ òèïîâ, êîíñòàíò, äðóãèõ ýëåìåíòîâ äàííûõ, ñèãíàòóð ìåòîäîâ è ò.ä.).
ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 4 141
Íåîáõîäèìûì òðåáîâàíèåì ñóùåñòâîâàíèÿ êîìïîíåíòà ÿâëÿåòñÿ óñëîâèå åãî
öåëîñòíîñòè
�
�
�CInt CInt CImp CImp Provide CInt CImpi j i j[ ( ) ] ,
ãäå Provide CInt i( ) — ôóíêöèîíàëüíîñòü, îáåñïå÷èâàþùàÿ ðåàëèçàöèþ ìåòîäîâ
èíòåðôåéñà CInt i .
Íàëè÷èå çíàêà âêëþ÷åíèÿ â äàííîé ôîðìóëå îçíà÷àåò, ÷òî âûáðàííàÿ ðåàëèçà-
öèÿ êîìïîíåíòà ìîæåò îáåñïå÷èòü ïîääåðæêó íå òîëüêî íóæíîãî èíòåðôåéñà, íî
è äðóãèõ. Íàïðèìåð, ïðàêòè÷åñêèå òåõíîëîãèè è ßÏ (CORBA, Java, C++ è äðóãèå)
ñîäåðæàò íåîáõîäèìûå ñðåäñòâà. Äëÿ êàæäîãî èç èíòåðôåéñîâ ìîæåò ñóùåñòâîâàòü
íåñêîëüêî ðåàëèçàöèé, êîòîðûå ðàçëè÷àþòñÿ îñîáåííîñòÿìè ôóíêöèîíèðîâàíèÿ
(íàïðèìåð, îïåðàöèîííîé ñðåäîé, ñðåäñòâàìè ñîõðàíåíèÿ äàííûõ è ò.ä.).
Âçàèìîäåéñòâèå êîìïîíåíòîâ Comp1 è Comp2 îïðåäåëÿåòñÿ óñëîâèåì:
åñëè CInt CInti
1 1
, òî äîëæåí ñóùåñòâîâàòü CInt CIntk
2 2
òàêîé, ÷òî
Sign CInt Sign CInt Provide CInt CImpi k i j( ) ( ) & ( )
1 2 1 2
� � ,
ãäå Sign( )
îçíà÷àåò ñèãíàòóðó ñîîòâåòñòâóþùåãî èíòåðôåéñà.
Ðàññìîòðèì ñâîéñòâà êîìïîíåíòîâ.
1. Äâà êîìïîíåíòà, Comp1 è Comp2 , òîæäåñòâåííû (ðàâíû), åñëè òîæäåñòâåí-
íû èõ ñîîòâåòñòâóþùèå ýëåìåíòû. Êàê ñëåäñòâèå, çàìåíà Comp1 íà Comp2 íå âëèÿ-
åò íà êîìïîíåíòíóþ ïðîãðàììó, ê êîòîðîé ïðèíàäëåæèò Comp1.
2. Äâà êîìïîíåíòà, Comp1 è Comp2 , ýêâèâàëåíòíû, åñëè òîæäåñòâåííû èõ
ìíîæåñòâà èíòåðôåéñîâ è ðåàëèçàöèé. Çàìåíà Comp1 íà Comp2 íå èçìåíÿåò ôóíê-
öèîíàëüíîñòè êîìïîíåíòíîé ïðîãðàììû ïðè óñëîâèè ñîîòâåòñòâèÿ èìåí â ñàìîé
ïðîãðàììå.
3. Äâà êîìïîíåíòà, Comp1 è Comp2 , ïîäîáíû, åñëè òîæäåñòâåííû èõ ìíîæåñ-
òâà èíòåðôåéñîâ. Çàìåíà Comp1 íà Comp2 ñîõðàíÿåò âçàèìîñâÿçè êîìïîíåíòîâ,
ôóíêöèîíàëüíîñòü êîìïîíåíòíîé ïðîãðàììû ìîæåò èçìåíèòüñÿ.
Ìîäåëü êîìïîíåíòíîé ñðåäû èìååò âèä
CE CName IntRep ImpRep CServ CServImp� ( , , , , ) , (2)
ãäå CName CNamem
� { } — ìíîæåñòâî èìåí êîìïîíåíòîâ, êîòîðûå âõîäÿò â ñî-
ñòàâ ñðåäû; IntRep IntRepi
� { } — ðåïîçèòàðèé èíòåðôåéñîâ êîìïîíåíòîâ ñðåäû;
ImpRep ImpRep j
� { } — ðåïîçèòàðèé ðåàëèçàöèé; CServ CServr
� { } — èíòåðôåéñ
ñèñòåìíûõ ñåðâèñîâ; CServImp CServImpr
� { } — ìíîæåñòâî ðåàëèçàöèé ñèñòåì-
íûõ ñåðâèñîâ.
Êàæäûé ýëåìåíò IntRep çàäàåòñÿ ïàðîé ( , )CInt CNamei m , ãäå CInt i — èíòåðôåéñ
êîìïîíåíòà, à CNamem — èìÿ êîìïîíåíòà, ðåàëèçóþùåãî èíòåðôåéñ. Àíàëîãè÷íî çà-
äàåòñÿ ýëåìåíò ImpRep ( , )CImp CNamej m , ãäå CImp j — ðåàëèçàöèÿ êîìïîíåíòà.
Êîìïîíåíòíàÿ ñðåäà — ìíîæåñòâî ñåðâåðîâ ïðèëîæåíèé, ãäå ðàçâîðà÷èâàþòñÿ
êîíòåéíåðû, ýêçåìïëÿðû êîòîðûõ — ðåàëèçàöèÿ ôóíêöèîíàëüíîñòè êîìïîíåíòà.
Âçàèìîñâÿçü êîíòåéíåðà ñ ñåðâåðîì îáåñïå÷èâàåòñÿ ÷åðåç ñòàíäàðòèçèðîâàííûå
èíòåðôåéñû CFact . Ñâÿçü ìåæäó êîìïîíåíòàìè, ðàçâåðíóòûìè â ðàçíûõ ñåðâåðàõ,
îáåñïå÷èâàåòñÿ ðåàëèçàöèÿìè èíòåðôåéñà CServ.
Êàðêàñ êîìïîíåíòíîé ñðåäû îïðåäåëÿåòñÿ òåì, ÷òî CName, IntRep, ImpRep —
ïóñòûå ìíîæåñòâà, ò.å.
FW CServ CServImp� � � �( , , , , ) .
Ïóñòü FW CServ CServImp1 1 1� � � �( , , , , ) è FW CServ CServImp2 2 2� � � �( , , , , ) —
äâà êàðêàñà.
Êàðêàñ FW1 ñîâìåñòèì ñ êàðêàñîì FW2 , åñëè ñóùåñòâóåò îòîáðàæåíèå
SMap CServ CServ: 1 2� òàêîå, ÷òî SMap CServ CServ( )1 2� .
142 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 4
Êîìïîíåíòíàÿ àëãåáðà ñîäåðæèò îïåðàöèè âíåøíåãî è âíóòðåííåãî òèïà.
Âíåøíÿÿ êîìïîíåíòíàÿ àëãåáðà îïðåäåëÿåò ìíîæåñòâî îïåðàöèé íàä êîìïî-
íåíòàìè è êîìïîíåíòíûìè ñðåäàìè è çàäàíà âûðàæåíèåì
� �� { , , }CSet CESet , (3)
ãäå CSet — ìíîæåñòâî êîìïîíåíòîâ, êàæäûé èç êîòîðûõ îïèñûâàåòñÿ âûðàæåíè-
åì (1); CESet — ìíîæåñòâî êîìïîíåíòíûõ ñðåä, êàæäàÿ èç êîòîðûõ îïèñûâàåòñÿ
âûðàæåíèåì (2); � — ìíîæåñòâî îïåðàöèé òèïà
� èíñòàëëÿöèÿ (ðàçâåðòûâàíèå êîìïîíåíòà): CE Comp CE2 1� � ;
� îáúåäèíåíèå êîìïîíåíòíûõ ñðåä: CE CE CE3 1 2� � ;
� óäàëåíèå êîìïîíåíòà èç êîìïîíåíòíîé ñðåäû: CE CE Comp2 1� \ .
Òåîðåìà 1. Êàæäàÿ êîìïîíåíòíàÿ ñðåäà CE — ðåçóëüòàò âûïîëíåíèÿ îïåðàöèé
ðàçâåðòûâàíèÿ êîìïîíåíòîâ èç ñîñòàâà êîìïîíåíòíîãî êàðêàñà:
CE Comp Comp Comp FWn� � � � �1 2 � .
Òåîðåìà 2. Ïîñòðîåíèå êîìïîíåíòíîé ñðåäû íå çàâèñèò îò ïîðÿäêà èíñòàëëÿ-
öèè êîìïîíåíòîâ, êîòîðûå âõîäÿò â åå ñîñòàâ, ò.å.
Comp Comp CE Comp Comp CE1 2 2 1� � � � �( ) ( ) .
Òåîðåìà 3. Îïåðàöèÿ îáúåäèíåíèÿ êîìïîíåíòíûõ ñðåä àññîöèàòèâíà è êîììó-
òàòèâíà:
( ) ( )CE CE CE CE CE CE1 2 3 1 2 3� � � � � ,
CE CE CE CE1 2 2 1� � � .
Òåîðåìà 4. Äëÿ ëþáîé êîìïîíåíòíîé ñðåäû CE FW FW CE CE� � � � .
Òåîðåìà 5. Äëÿ ïðîèçâîëüíûõ êîìïîíåíòíûõ ñðåä CE1, CE2 è êîìïîíåíòà
Comp âñåãäà âûïîëíÿåòñÿ
Comp CE CE Comp CE CE Comp CE CE� � � � � � � �( ) ( ) ( )1 2 1 2 2 1.
Òåîðåìà 6. Äëÿ ëþáîãî êîìïîíåíòà Comp è êîìïîíåíòíîé ñðåäû CE âñåãäà
âûïîëíÿåòñÿ
( ) \Comp CE Comp CE� � .
Ìîäåëü êîìïîíåíòíîé ïðîãðàììû èìååò âèä CP CE Cont Comp� ( , , ). Comp —
ïîäìíîæåñòâî êîìïîíåíòîâ CE , âêëþ÷àþùèõ ðåàëèçàöèè, äëÿ êîòîðûõ îòñóòñòâó-
þò âûõîäíûå èíòåðôåéñû, è îáðàùàþùèõñÿ ê äðóãèì êîìïîíåíòàì ñ ïîìîùüþ
âõîäíûõ èíòåðôåéñîâ.
Åñëè äëÿ êàæäîãî êîìïîíåíòà Comp1 â CE èìååòñÿ âõîäíîé èíòåðôåéñ CInt è
1
,
êîìïîíåíò Comp2 ñ ñîîòâåòñòâóþùèì èíòåðôåéñîì CInt m
2
è êîíòðàêò Cont im
12
�
� ( , , )CInt CInt IMapè m im
1 2 12
â ñîñòàâå ìíîæåñòâà Cont , òî ýòî ÿâëÿåòñÿ óñëîâèåì öå-
ëîñòíîñòè êîìïîíåíòíîé ïðîãðàììû.
Âíóòðåííÿÿ êîìïîíåíòíàÿ àëãåáðà ñîäåðæèò îïåðàöèè, îáåñïå÷èâàþùèå
ðàçëè÷íîãî âèäà ïðåîáðàçîâàíèÿ âíóòðè êîìïîíåíòîâ íåçàâèñèìî îò ñðåäû. Îíè
ïîçâîëÿþò îñóùåñòâëÿòü èçìåíåíèÿ êîìïîíåíòîâ è èõ èíòåðôåéñîâ.
Âíóòðåííÿÿ àëãåáðà � � � �� { , , }1 2 3 âêëþ÷àåò:
�1 � { , }CSet ORefac — ïîäàëãåáðó èç ìíîæåñòâà êîìïîíåíòîâ CSet è îïåðàöèé
ORefac ðåôàêòîðèíãà íàä íèìè;
�
2
� { , }CSet OReing — ïîäàëãåáðó èç ìíîæåñòâà êîìïîíåíòîâ Cset è îïåðàöèé
OReing ðåèíæåíåðèè îòäåëüíûõ êîìïîíåíòîâ;
�
3
� { , }CSet ORever — ïîäàëãåáðó èç ìíîæåñòâà êîìïîíåíòîâ CSet è îïåðàöèé
ORever ðåâåðñíîé èíæåíåðèè.
ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 4 143
Ê îïåðàöèÿì äàííîé àëãåáðû îòíîñÿòñÿ îïåðàöèè èçìåíåíèÿ, äîáàâëåíèÿ èíòåð-
ôåéñîâ èëè ðåàëèçàöèè êîìïîíåíòîâ, à òàêæå ïåðåïðîãðàììèðîâàíèÿ è ðåñòðóêòóðèçà-
öèè ïðè èçìåíåíèè, îáíîâëåíèè èõ ôóíêöèîíàëüíîñòè â öåëÿõ ïîâòîðíîãî ïðèìåíåíèÿ.
Ìíîæåñòâî îïåðàöèé ðåôàêòîðèíãà:
O AddOImp ReplImp AddInt ÑfactRefac � { , , , },
ãäå AddOImp — îïåðàöèÿ äîáàâëåíèÿ îïåðàöèè äëÿ ñóùåñòâóþùåãî èíòåðôåéñà
è íîâîãî; ReplImp — îïåðàöèÿ çàìåùåíèÿ ñóùåñòâóþùåé ðåàëèçàöèè íîâîé;
AddInt — îïåðàöèÿ äîáàâëåíèÿ íîâîãî âõîäíîãî èíòåðôåéñà; Cfact — îïåðàöèÿ
ðàñøèðåíèÿ èíòåðôåéñà.
Îïåðàöèÿ AddOImp äîáàâëÿåò äëÿ ñóùåñòâóþùåãî èíòåðôåéñà íîâûé èíòåð-
ôåéñ: NewComp AddOImp OldComp NewCImp NewCIntOs s
� ( , , ).
Óñëîâèå öåëîñòíîñòè êîìïîíåíòà âûïîëíÿåòñÿ àâòîìàòè÷åñêè, òàê êàê ìíîæåñòâî
âõîäíûõ èíòåðôåéñîâ îñòàåòñÿ ïðåæíèì è èç öåëîñòíîñòè èñõîäíîãî êîìïîíåíòà âû-
òåêàåò öåëîñòíîñòü íîâîãî. Îïåðàöèÿ AddOImp àññîöèàòèâíà è êîììóòàòèâíà.
Îïåðàöèÿ ReplImp çàìåùàåò ñóùåñòâóþùóþ ðåàëèçàöèþ íîâîé ðåàëèçàöèåé:
NewComp ReplImp OldComp NewCImp NewCIntO OldCImps s
� ( , , , r rOldCIntO, ). Â íåé
NewCImps — íîâàÿ ðåàëèçàöèÿ; NewCIntOs — ìíîæåñòâî äîïîëíèòåëüíûõ èñõîä-
íûõ èíòåðôåéñîâ äëÿ äîáàâëåííîé ðåàëèçàöèè; OldCImpr — çàìåùàåìàÿ ðåàëèçàöèÿ;
OldCIntOr — ìíîæåñòâî èñõîäíûõ èíòåðôåéñîâ, ñâÿçàííûõ ñ çàìåùàåìîé ðåàëèçàöèåé.
Ìíîæåñòâî îïåðàöèé ðåèíæåíåðèè:
O rewrite restruc adop supp converReing � { , , , , },
ãäå rewrite — îïåðàöèÿ ïåðåïðîãðàììèðîâàíèÿ òåêñòà êîìïîíåíòà; restruc —
îïåðàöèÿ ðåñòðóêòóðèçàöèè êîìïîíåíòà; adop — îïåðàöèÿ àäàïòàöèè êîìïîíåíòà
ê íîâûì óñëîâèÿì; supp — îïåðàöèÿ äîáàâëåíèÿ íîâûõ ôóíêöèé; conver — îïå-
ðàöèÿ êîíâåðòèðîâàíèÿ äàííûõ êîìïîíåíòîâ.
Ýòè îïåðàöèè èçìåíÿþò òîëüêî êîìïîíåíò, áåç èçìåíåíèÿ èíòåðôåéñà, ïîñêîëüêó
ïðåäïîëàãàåòñÿ, ÷òî â êà÷åñòâå èíòåðôåéñà èñïîëüçóåòñÿ çàïðîñ (request) ê êîìïîíåíòó â
ñðåäå, ãäå îí ðàñïîëàãàåòñÿ è âûïîëíÿåòñÿ. Çàïðîñ ôîðìèðóåòñÿ â ñðåäå êëèåíòà è îò-
ïðàâëÿåòñÿ ÷åðåç ñåòü ñåðâåðó äëÿ âûïîëíåíèÿ â íåì âûçâàííîãî êîìïîíåíòà.
Ïóñòü OldComp OldCName OldCImp� ( , ) îáîçíà÷àåò óíàñëåäîâàííóþ ðåàëèçà-
öèþ êîìïîíåíòà, à NewComp NewCName NewCImp� ( , ) — ðåàëèçàöèþ ïîñëå âûïîë-
íåíèÿ îïåðàöèè ðåèíæåíåðèè ( , , , )OldCInt CFact OldCImp Cserv � � . Â ðåçóëüòàòå
âûïîëíåíèÿ îïåðàöèé ðåèíæåíåðèè ïîëó÷àåòñÿ íàáîð íîâûõ êîìïîíåíòîâ:
NewComp rewrite OldComp NewCImp
NewCîmp restruc
1
2
�
�
( , ),
( , ),
( , ),
OldComp NewCImp
NewCîmp adop OldComp NewCImp
N
3
�
ewCîmp supp OldComp NewCImp
NewCîmp conver OldC
4
5
�
�
( , ),
( omp NewCImp, ).
Îíè îáðàçóþò ìíîæåñòâî êîìïîíåíòîâ Cset NewCompn
� { }, ãäå n � 1 5� . Âñå
îïåðàöèè ðåèíæåíåðèè àññîöèàòèâíû, êîììóòàòèâíû è îáåñïå÷èâàþò öåëîñòíîñòü
íîâîãî êîìïîíåíòà.
Ìíîæåñòâî îïåðàöèé ðåâåðñíîé èíæåíåðèè:
O restruc design rewriteRever � { , , },
ãäå restruc — îïåðàöèÿ ðåñòðóêòóðèçàöèè ñèñòåìû; design — îïåðàöèÿ ïîñòðîå-
íèÿ íîâîãî êîìïîíåíòà ñèñòåìû èç óñòàðåâøåé, óäîâëåòâîðÿþùåãî íîâûì óñëî-
âèÿì; rewrite — îïåðàöèÿ ïåðåâîäà êîìïîíåíòà íà äðóãîé ÿçûê ïðîãðàììèðîâà-
íèÿ ñîîòâåòñòâåííî íîâîé ñòðóêòóðå ñèñòåìû.
144 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 4
Ðàññìîòðåííûé ìåòîä ðåâåðñíîé èíæåíåðèè äàåò âîçìîæíîñòü ðåøàòü çàäà÷è
ýâîëþöèîííîãî ðàçâèòèÿ ïóòåì ïðåîáðàçîâàíèÿ êîäîâ óñòàðåâøèõ ñèñòåì.
Àëãåáðà � êîìïîíåíòíîãî ïðîãðàììèðîâàíèÿ âêëþ÷àåò âíåøíþþ è âíóòðåí-
íþþ àëãåáðû è èìååò îáùèé âèä
� � � � � �� � �{ , , } { , , , , }CSet CESet CSet CESet 1 2 3 .
2.3. Ïîäõîä ê ðåàëèçàöèè èíòåðôåéñà êîìïîíåíòîâ
 ïðîöåññå ïîñòðîåíèÿ êîìïîíåíòíîé ïðîãðàììû èñïîëüçóþòñÿ îïåðàöèè êîì-
ïîíåíòíîé àëãåáðû, ðàçâåðòûâàíèÿ êîìïîíåíòîâ, ñîçäàíèÿ êîìïîíåíòíîé ñðåäû,
îïðåäåëåíèÿ èñõîäíûõ êîìïîíåíòîâ, ôîðìèðîâàíèÿ ìíîæåñòâà êîíòðàêòîâ è äð.
Ôóíêöèîíàëüíîñòü êîìïîíåíòîâ çàäàåòñÿ ñðåäñòâàìè ðàçíûõ ßÏ ñ ñîîòâåò-
ñòâóþùèìè â íèõ ìíîæåñòâàìè òèïîâ äàííûõ. Èíòåãðàöèÿ ðàçíîÿçûêîâûõ êîìïî-
íåíòîâ îñóùåñòâëÿåòñÿ ñ ïîìîùüþ ðàçðàáîòàííûõ ôîðìàëüíûõ ìåõàíèçìîâ ðåëå-
âàíòíîãî ïðåîáðàçîâàíèÿ íåñîâïàäàþùèõ òèïîâ äàííûõ, êîòîðûå ïåðåäàþòñÿ ïðè
âçàèìîäåéñòâèè êîìïîíåíòîâ â èíòåãðèðîâàííîé ðàñïðåäåëåííîé ñðåäå.
Èñòîðè÷åñêè ñôîðìèðîâàëèñü òàêèå ïîäõîäû ê åå ðåàëèçàöèè: 1) ïðåîáðàçîâà-
íèå òèïîâ äàííûõ, ïåðåäàâàåìûõ îò êëèåíòà ê ñåðâåðó è îáðàòíî, îñóùåñòâëÿåòñÿ
ñ ïîìîùüþ ìîäóëÿ ïîñðåäíèêà òèïà stub (íàïðèìåð, â ñèñòåìå CORBA); 2) ïðè êàæ-
äîì âûçîâå êîìïîíåíòà ïðåäâàðèòåëüíî ïîäãîòàâëèâàþòñÿ íåîáõîäèìûå çíà÷åíèÿ
ïåðåäàâàåìûõ òèïîâ äàííûõ â ñîîòâåòñòâóþùåì ôîðìàòå âûçûâàåìîãî êîìïîíåíòà
è íàîáîðîò; 3) ñèñòåìû ïðîãðàììèðîâàíèÿ ñ ßÏ ðàçíûõ êîìïîíåíòîâ ãåíåðèðóþò
ñîâìåñòèìûé ïðîìåæóòî÷íûé èëè âûõîäíîé êîä [9].
 òåîðåòè÷åñêîì ïëàíå ïðèíöèïèàëüíîãî ðàçëè÷èÿ ìåæäó ýòèìè ïîäõîäàìè íå
ñóùåñòâóåò, òàê êàê ãëàâíûì óñëîâèåì èíòåãðàöèè äâóõ ðàçíîÿçûêîâûõ êîìïîíåí-
òîâ ÿâëÿåòñÿ íàëè÷èå ìåæäó ñîîòâåòñòâóþùèìè ßÏ îïèñàíèÿ êîìïîíåíòîâ ôîð-
ìàëüíûõ îòîáðàæåíèé, ïðåäñòàâëåííûõ êàê ñóïåðïîçèöèè áàçîâûõ îòîáðàæåíèé.
Ôîðìàëüíî ìîäåëü èíòåãðàöèè ðàçíîÿçûêîâûõ êîìïîíåíòîâ, çàäàííûõ íà ìíî-
æåñòâå êîìïîíåíòîâ CSet Compi� { }, îáåñïå÷èâàåò âçàèìîäåéñòâèå êîìïîíåíòîâ,
îáìåíèâàþùèõñÿ äàííûìè, êàæäîå èç êîòîðûõ îïðåäåëÿåòñÿ òðîéêîé: èìåíåì ïå-
ðåìåííîé, åå òèïîì äàííûõ è çíà÷åíèåì. Îáìåíèâàåìûå äàííûå êàæäîé ïàðû êîì-
ïîíåíòîâ Compi è Comp j ìîãóò áûòü ýêâèâàëåíòíûìè, åñëè îíè èìåþò îäèíàêî-
âóþ ñåìàíòè÷åñêóþ ñòðóêòóðó è òèïû äàííûõ, èëè íåýêâèâàëåíòíûìè, òîãäà
íåîáõîäèìî èõ ïðåîáðàçîâàíèå ñ ïîìîùüþ ôóíêöèé îòîáðàæåíèé
FN N N FT T T FV V Vij è j ij i j ij i j: , : , :� � � ,
ãäå FN ij óñòàíàâëèâàþò ñîîòâåòñòâèå ìåæäó èìåíàìè ïåðåìåííûõ (íàïðèìåð, âî
ìíîæåñòâàõ ôîðìàëüíûõ è ôàêòè÷åñêèõ ïàðàìåòðîâ); FTij îïèñûâàþò ýêâèâàëåíò-
íûå îòîáðàæåíèÿ äëÿ òèïîâ äàííûõ; FVij ðåàëèçóþò íåîáõîäèìûå ïðåîáðàçîâàíèÿ
çíà÷åíèé äàííûõ äëÿ íåýêâèâàëåíòíûõ òèïîâ äàííûõ.
Çàäà÷à ïîñòðîåíèÿ ïðåîáðàçîâàíèÿ FN ij ðåøàåòñÿ ïóòåì óñòàíîâëåíèÿ
ñîîòâåòñòâèÿ èìåí ïåðåìåííûõ (íàïðèìåð, â îïèñàíèè êîíôèãóðàöèè äëÿ êîìïî-
íåíòîâ, êîòîðûå èíòåãðèðóþòñÿ). Îòîáðàæåíèå ìåæäó òèïàìè äàííûõ FTij áàçèðó-
åòñÿ íà ïðåîáðàçîâàíèÿõ òèïîâ äàííûõ, êàæäûé èç êîòîðûõ ïîäàåòñÿ êàê àáñòðàê-
òíàÿ àëãåáðà èëè àëãåáðàè÷åñêàÿ ñèñòåìà T X� ( , )� , ãäå X — ìíîæåñòâî çíà÷åíèé,
êîòîðûå ìîãóò ïðèíèìàòü çíà÷åíèÿ ýòîãî òèïà, à � — ìíîæåñòâî îïåðàöèé íàä ýòè-
ìè ïåðåìåííûìè. Îòîáðàæåíèÿ FVij ïðèìåíÿþòñÿ ïðè íåýêâèâàëåíòíîñòè òèïîâ Ti
è T j (íàïðèìåð, ïðåîáðàçîâàíèå öåëûõ çíà÷åíèé â äåéñòâèòåëüíûå).
 ñëó÷àÿõ ìíîãîðàçîâûõ âûçîâîâ êîìïîíåíòîâ íåîáõîäèìî âûïîëíåíèå ïðÿ-
ìîãî è îáðàòíîãî ïðåîáðàçîâàíèÿ ìåæäó ôîðìàëüíûìè è ôàêòè÷åñêèìè ïàðàìåòðà-
ìè, ïðè ýòîì âàæíîå óñëîâèå ñîñòîèò â òîì, ÷òîáû îòîáðàæåíèÿ ìåæäó ñîîòâåò-
ñòâóþùèìè òèïàìè áûëè èçîìîðôíû, ò.å. ñóùåñòâîâàëè èçîìîðôèçìû ìåæäó
àëãåáðàè÷åñêèìè ñèñòåìàìè, êîòîðûå îïèñûâàþò ýòè òèïû äàííûõ.
Ïîä ïðåîáðàçîâàíèåì òèïà T Xi i u� ( , )� â òèï T Xj j j� ( , )� ïîíèìàåòñÿ òàêîå
ïðåîáðàçîâàíèå, ïðè êîòîðîì ñåìàíòè÷åñêîå ñîäåðæàíèå îïåðàöèé èç � u ýêâèâàëåíò-
ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 4 145
íî ñîäåðæàíèþ îïåðàöèè èç � j .  îáùåì ñëó÷àå ïðåîáðàçîâàíèå òèïà Ti â òèï T j
ìîæåò áûòü îäíîñòîðîííèì, ò.å. ýêâèâàëåíòíûå ïðåîáðàçîâàíèÿ íå ñóùåñòâóþò.
Çàäà÷à îáåñïå÷åíèÿ âçàèìîñâÿçè ïàðû êîìïîíåíòîâ, ðàçðàáîòêà êîòîðûõ âû-
ïîëíåíà íà ðàçíûõ ßÏ, ñîñòîèò â ïîñòðîåíèè ñîâîêóïíîñòè îòîáðàæåíèé äëÿ âñåõ
âûçîâîâ ìåòîäîâ, êàæäîå èç êîòîðûõ óñòàíàâëèâàåò îäíîçíà÷íîå ñîîòâåòñòâèå
ìåæäó ìíîæåñòâîì ôàêòè÷åñêèõ ïàðàìåòðîâ V k� � �{ , }� � �1 2 � äëÿ âûçûâàåìîãî
êîìïîíåíòà è ìíîæåñòâîì ôîðìàëüíûõ ïàðàìåòðîâ F f f fl� { , , , }1 2 � äëÿ âûçûâà-
þùåãî êîìïîíåíòà.
Äëÿ îñíîâíûõ òèïîâ äàííûõ ßÏ, ïðèìåíÿåìûõ äëÿ îïèñàíèÿ ìîäóëåé èëè
êîìïîíåíòîâ, â ðàáîòàõ [3, 4] îïðåäåëåíû àëãåáðàè÷åñêèå ñèñòåìû, ïîñòðîåíû èçî-
ìîðôíûå îòîáðàæåíèÿ ìåæäó ýòèìè ñèñòåìàìè è ñôîðìèðîâàíû óñëîâèÿ ñóùåñò-
âîâàíèÿ òàêèõ îòîáðàæåíèé.
Ðàññìîòðåííûå ôîðìàëüíûå ñðåäñòâà ÿâëÿþòñÿ îáùèìè è ìîãóò àäàïòèðîâàòü-
ñÿ ê ïðèíöèïàì âçàèìîäåéñòâèÿ êîìïîíåíòîâ â ãåòåðîãåííûõ ñðåäàõ, íàïðèìåð
â ñðåäå Grid [14–16]. Çàäà÷à óñòðàíåíèÿ îòëè÷èé â ïðåäñòàâëåíèè äàííûõ íà ðàç-
íûõ ßÏ è êîìïüþòåðíûõ ïëàòôîðìàõ ãåòåðîãåííîé ñðåäû ìîæåò áûòü ðåàëèçîâàíà
íîâûì ìåòîäîì, îïèñûâàåìûì äàëåå.
3. ÊÎÍÖÅÏÖÈß ÃÅÍÅÐÀÖÈÈ ÎÁÙÈÕ ÒÈÏÎÂ ÄÀÍÍÛÕ
ÊÎÌÏÎÍÅÍÒÎÂ ÄËß ÃÅÒÅÐÎÃÅÍÍÛÕ ÑÐÅÄ
3.1. Ïîäõîä ê îðãàíèçàöèè èíòåðîïåðàáåëüíûõ âû÷èñëåíèé â ãåòåðîãåííîé
ñðåäå Grid
C 2007 ã. íà÷àë äåéñòâîâàòü åâðîïåéñêèé ïðîåêò Grid — ñåòåâàÿ èíôðàñòðóêòóðà
äëÿ îðãàíèçàöèè ðàñïðåäåëåííûõ âû÷èñëåíèé â çàäà÷àõ ïî ðàçíûì íàó÷íûì íà-
ïðàâëåíèÿì (ôèçèêà, ìàòåìàòèêà, ìåäèöèíà, áèîëîãèÿ è äð.) [14–16]. Ýòîò ïðî-
åêò âêëþ÷àåò ðÿä ïîäïðîåêòîâ ñèñòåì: GÑube, ETICS è äð.  ÷àñòíîñòè, ñèñòåìà
ETICS ïðåäíàçíà÷åíà äëÿ àâòîìàòèçèðîâàííîãî ïîñòðîåíèÿ, êîíôèãóðèðîâàíèÿ,
èíòåãðàöèè è òåñòèðîâàíèÿ ðàçíîãî ðîäà ïðîãðàìì è ñèñòåì äëÿ ðåøåíèÿ íà-
ó÷íî-èññëåäîâàòåëüñêèõ çàäà÷. Åå àðõèòåêòóðà áàçèðóåòñÿ íà êàðêàñå FP6 EC,
îðèåíòèðîâàííoì íà ïðîèçâîäñòâî ðàñïðåäåëåííûõ ñèñòåì ïóòåì èíòåãðàöèè ñó-
ùåñòâóþùèõ ïðîöåäóð, èíñòðóìåíòàëüíûõ ñðåäñòâ è ðåñóðñîâ äàííîé èíôðà-
ñòðóêòóðû ñ ïðèìåíåíèåì Âåá-ïîðòàëà äëÿ óïðàâëåíèÿ ìóëüòèïëàòôîðìåííûìè
ðåñóðñàìè ñðåäû Grid.
ETICS ñîäåðæèò òèïîâîé íàáîð õàðàêòåðèñòèê è ïðîöåäóð äëÿ ïîñòðîåíèÿ è òåñ-
òèðîâàíèÿ íîâûõ ïàêåòîâ è óñëóã. Îí áóäåò ðàñøèðÿòüñÿ ïóòåì äîáàâëåíèÿ íîâûõ ïëà-
ãèíîâ (plugins) [14] ñî ñïåöèàëèçèðîâàííûìè óñëóãàìè äëÿ êîíêðåòíîé îáëàñòè çíà-
íèé. Êàæäûé ïëàãèí âêëþ÷àåò ïóáëè÷íûé èíòåðôåéñ ñ îïèñàíèåì óñëóã äëÿ ïîòðåáè-
òåëåé èëè ïîñòàâùèêîâ. Ïåðâîíà÷àëüíî äàííûé íàáîð îõâàòûâàåò ñðåäñòâà
óïðàâëåíèÿ ñ ðàáî÷èõ ìåñò çàäàíèÿìè, ñâÿçàííûìè ñ ÎÑ, àðõèòåêòóðîé CPU è êîìïè-
ëÿòîðàìè â ßÏ. Êðîìå òîãî, â íåãî âõîäèò ìåõàíèçì ñïåöèôèêàöèè çàâèñèìîñòåé ìåæ-
äó ðàçëè÷íûìè ïàêåòàìè è èõ òåñòàìè, êîòîðûå àâòîìàòè÷åñêè óïðàâëÿþò ïîñòðîåíè-
åì, òåñòèðîâàíèåì, êîìïèëèðîâàíèåì èëè ðàçâåðòûâàíèåì. Áàçîâîå ìíîæåñòâî ôóíê-
öèîíàëüíûõ ïëàãèíîâ ïðåäíàçíà÷åíî äëÿ ïðîâåðêè äîãîâîðîâ, òåñòîâ âûïîëíåíèÿ
ðàçíûõ ýëåìåíòîâ ñèñòåì, ãåíåðàöèè äîêóìåíòàöèè è âåäåíèÿ ãîòîâûõ îáúåêòîâ ïðî-
ãðàìì â îïåðàòèâíîì èëè ïîñòîÿííîì ðåïîçèòàðèÿõ ETICS.
Òåõíîëîãèÿ ñîçäàíèÿ áîëüøèõ íàáîðîâ ïàêåòîâ èç èñõîäíûõ èëè êîìáèíàöèé
ïåðåêîìïèëèðîâàííûõ äâîè÷íûõ ýëåìåíòîâ ïîääåðæèâàåòñÿ ïðîöåññîì äîñòóïà
ê ðåïîçèòàðèÿì äëÿ ôîðìèðîâàíèÿ ðàñïðåäåëåííîé âåðñèè è åå ðåïðîäóêöèè. Ñêîì-
ïèëèðîâàííàÿ ñòðóêòóðà àâòîìàòè÷åñêè íàõîäèò è çàãðóæàåò èç ðåïîçèòàðèÿ ïîäõîäÿ-
ùèå äâîè÷íûå ýëåìåíòû. Ïðè ýòîì ñóùåñòâåííûì ïðåïÿòñòâèåì çäåñü, êàê è â äðóãèõ
ðàññìîòðåííûõ ñðåäàõ, ÿâëÿåòñÿ ïðîáëåìà îòîáðàæåíèÿ ýëåìåíòîâ ñèñòåìû íà àëüòåð-
íàòèâíóþ ïëàòôîðìó. Îíà ðåøàåòñÿ ïóòåì ïîñòðîåíèÿ ïåðåêðåñòíûõ ññûëîê (cross
platform) ê òðåáóåìîé ïëàòôîðìå è ãåíåðàöèè ìîäóëåé, ðàññòàâëÿþùèõ íåîáõîäèìûå
ôëàæêè â ñêîìïèëèðîâàííîì êîäå (íàïðèìåð, ïðè âûïîëíåíèè ãîòîâûõ 32-ðàçðÿä-
íûõ äâîè÷íûõ ýëåìåíòîâ íà 64-ðàçðÿäíûõ ïëàòôîðìàõ) ñåòåâîé ñðåäû Grid.
146 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 4
Ñëåäóþùàÿ âàæíàÿ ïðîáëåìà — ñòàíäàðòèçàöèÿ îïèñàíèÿ òèïîâ äàííûõ äëÿ
ñòðîÿùèõñÿ â ñèñòåìå ETICS òðåõ ãëàâíûõ îáúåêòîâ: Ïðîåêò, Ïîäñèñòåìà è Êîìïî-
íåíò. Ïðîåêò ìîæåò ñîñòîÿòü èç Ïîäñèñòåì èëè Êîìïîíåíòîâ. Ïîäñèñòåìà ìîæåò ñî-
äåðæàòü òîëüêî Êîìïîíåíòû. Â ñèñòåìå ïðåäëîæåíà ìîäåëü äàííûõ ñ òèïîâûì ôîð-
ìàòîì CIM äëÿ âçàèìîîòíîøåíèé ìåæäó ðàçëè÷íûìè îáúåêòàìè. Ìîäåëü äàííûõ,
êàê è ìîäåëü CIM, ïîçâîëÿåò ââîäèòü ôîðìàëüíûå ñóùíîñòè â ñòðóêòóðó ïðîåêòîâ
ÏÑ, îïèñûâàòü îáúåêòû è âçàèìîîòíîøåíèÿ ìåæäó íèìè, à òàêæå ïðåäîñòàâëÿòü ðå-
çóëüòàòû âûïîëíåíèÿ ÏÑ. Âíóòðåííåå õðàíåíèå äàííûõ îñíîâûâàåòñÿ íà ìîäåëè
äàííûõ ðåëÿöèîííîãî òèïà, ðåàëèçîâàííîé ñðåäñòâàìè MySQL [19].
Îïèñàíèå ìîäåëè äàííûõ îñíîâàíî íà ñëåäóþùèõ ïîëîæåíèÿõ:
— êàæäûé êîìïîíåíò ñîäåðæèò îïèñàíèå ñâîéñòâ (èìÿ, ëèöåíçèÿ, URL ðåïî-
çèòàðèÿ è ò.ä.) è ãëîáàëüíîãî óíèêàëüíîãî èäåíòèôèêàòîðà — ID (GUID);
— îáúåêò êîíôèãóðàöèè ñîäåðæèò èíôîðìàöèþ î âåðñèè, ñâÿçè ñ ðåïîçèòàðèåì,
GUID, âèäå ïëàòôîðìû è ñâÿçè ñâîåãî èäåíòèôèêàòîðà ñ GUID êîìïîíåíòà;
— oáúåêò ïëàòôîðìû ñîäåðæèò êîìàíäû ïðîâåðêè (checkout) ñêîìïèëèðîâàííîãî
êîìïîíåíòà, òåñòîâûõ êîìàíä è GUIDs, à òàêæå âçàèìîîòíîøåíèÿ ñâÿçè ñ êàæäîé êîí-
ôèãóðàöèåé;
— ïðè îïðåäåëåíèè êîíôèãóðàöèè è ïëàòôîðìû â êàæäîì îáúåêòå îáúÿâëÿþòñÿ
GUID, åãî ñâîéñòâà, ñðåäà âûïîëíåíèÿ è çàâèñèìîñòè, êîòîðûå ìîãóò áûòü ñòàòè÷åñ-
êèìè èëè äèíàìè÷åñêèìè. Ñòàòè÷åñêàÿ çàâèñèìîñòü — âçàèìîîòíîøåíèå ìåæäó äâó-
ìÿ êîíôèãóðàöèÿìè, äèíàìè÷åñêàÿ — ìåæäó êîíôèãóðàöèåé è êîìïîíåíòîì.
3.2. Õàðàêòåðèñòèêà îáùèõ òèïîâ äàííûõ ñòàíäàðòà
Äëÿ îáåñïå÷åíèÿ âçàèìîäåéñòâèÿ ìåæäó ðàçíîðîäíûìè ïðîãðàììíûìè îáúåêòà-
ìè, ðåàëèçîâàííûìè â ßÏ äëÿ ñîâðåìåííûõ è áóäóùèõ ñðåä, ðàçðàáîòàí ñòàí-
äàðò ISO/IEC 11404:2007, ïðåäîñòàâëÿþùèé ôîðìàëüíûé ìàòåìàòè÷åñêèé àïïà-
ðàò ñïåöèôèêàöèè òèïîâ äàííûõ â îáùåì âèäå, êîòîðûé íåçàâèñèì îò ñèíòàêñè-
ñà îïèñàíèÿ ôóíäàìåíòàëüíûõ òèïîâ äàííûõ â ßÏ. Ýòîò ñòàíäàðò ñîäåðæèò
ôîðìàëèçìû äëÿ îïèñàíèÿ ïðèìèòèâíûõ, àãðåãàòíûõ è ãåíåðèðóåìûõ òèïîâ äàí-
íûõ, ìåõàíèçìû èõ àãðåãàöèè è ãåíåðàöèè, à òàêæå ïðîöåäóðû ïðåîáðàçîâàíèÿ
äàííûõ ê âíåøíåìó ßÏ è âíóòðåííåìó ÿçûêó ñòàíäàðòà è îáðàòíî.
Ñòàíäàðò âêëþ÷àåò òàêæå ôîðìàëüíûå ìåõàíèçìû çàäàíèÿ ïàðàìåòðîâ èíòåðôåé-
ñà â ÿçûêàõ (IDL, API, RPC) ïðè âûçîâå èëè îáðàùåíèè ê ïðîöåäóðàì, ñèñòåìàì, êîì-
ïîíåíòàì ïîâòîðíîãî èñïîëüçîâàíèÿ, îòíîñÿùèìñÿ ê ãîòîâîìó ñåðâèñó ñðåäû. Ñòàí-
äàðòíûé èíòåðôåéñ áàçèðóåòñÿ íà ÿçûêîâûõ ïðåîáðàçîâàíèÿõ âèäà: «�ÿçûê� îáðàùå-
íèå �cåðâèñ�». Êàæäûé èíòåðôåéñ ê ñåðâèñó âêëþ÷àåò ïàðàìåòðû, èõ òèïû äàííûõ,
êîòîðûå ïîòðåáóåòñÿ ïðåîáðàçîâûâàòü ê ñòàíäàðòíûì òèïàì äàííûõ è íàîáîðîò.
 ñòàíäàðòå îïèñàíû ïðîöåäóðû ãåíåðàöèè òèïîâ äàííûõ ê ôîðìå XML-äîêó-
ìåíòîâ. Âñå îáùèå òèïû äàííûõ îðèåíòèðîâàíû íà ãåíåðàöèþ äðóãèõ òèïîâ äàí-
íûõ, êîòîðûå ñóùåñòâóþò â ßÏ äëÿ ñîõðàíåíèÿ ïðååìñòâåííîñòè.  ðàçäåëå
«declaration» äàåòñÿ ñèíòàêñèñ è ñåìàíòèêà îïèñàíèÿ GDT — òèïîâ äàííûõ, ïðè-
íöèïû ãåíåðàöèè íîâûõ òèïîâ äàííûõ è èõ àãðåãàöèè. Êàæäûé òèï äàííûõ èìååò
øàáëîí îïèñàíèÿ, ñïåöèôèêàòîð òèïà äàííûõ, åãî çíà÷åíèå â ïðîñòðàíñòâå çíà÷å-
íèé è îïåðàöèè íàä òèïàìè äàííûõ. Îáùèé òèï äàííûõ âêëþ÷àåò:
— êîíöåïòóàëüíîå èëè àáñòðàêòíîå ïîíÿòèå, õàðàêòåðèçóþùåå åãî ïî çíà÷å-
íèþ è ñâîéñòâàì;
— ñòðóêòóðíîå ïîíÿòèå, õàðàêòåðèçóþùåå ýòîò òèï äàííûõ êàê êîíöåïòóàëü-
íûé, ñòàíäàðòíûé èíòåðôåéñ ê ñåðâèñó;
— ðåàëèçàöèîííîå ïîíÿòèå, îïðåäåëÿåìîå ïðàâèëàìè ïðåäñòàâëåíèÿ òèïà äàí-
íûõ â çàäàííîé ñðåäå.
Ê àáñòðàêòíûì íîòàöèÿì îòíîñÿòñÿ ïðèìèòèâíûå è íå ïðèìèòèâíûå òèïû äàí-
íûõ, áàçèðóþùèåñÿ íà ïîíÿòèè ñòðóêòóðíîé îðãàíèçàöèè [4–7], ïðèìåíÿåìîé
â îïèñàíèè ôóíäàìåíòàëüíûõ òèïîâ äàííûõ ßÏ è èíòåðôåéñîâ ïðîãðàìì. Ñòðóê-
òóðíûå íîòàöèè èñïîëüçóþòñÿ äëÿ ñïåöèôèêàöèè ñëîæíûõ òèïîâ äàííûõ è ñëîâà-
ðåé ðåàëèçàöèè òèïîâ äàííûõ, îòëè÷àþùèõñÿ îò êîíöåïòóàëüíûõ ïîíÿòèé ñïîñî-
ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 4 147
áîì èõ èäåíòèôèêàöèè. Ïðåîáðàçîâàíèå îáùèõ òèïîâ äàííûõ â òèïû äàííûõ äðó-
ãèõ ßÏ èëè íîâûõ ÿçûêîâ — îñíîâà ðåàëèçàöèîííîãî ïîíÿòèÿ.
Íîâûå ñèñòåìû îáðàáîòêè èíôîðìàöèè, êîòîðûå ñòðîÿòñÿ ñ ó÷åòîì ýòîãî ñòàí-
äàðòà, áàçèðóþòñÿ íà ïðèíöèïàõ ðåàëèçàöèè òèïîâ äàííûõ, ñïåöèôèêàöèè èíòåð-
ôåéñîâ, ïðîãðàìì îáðàáîòêè è îáìåíà èíôîðìàöèåé, ñ èñïîëüçîâàíèåì ñîîòâåò-
ñòâóþùåé ñèñòåìû íîòàöèé äëÿ òèïîâ äàííûõ. Ââèäó ðàçíîîáðàçèÿ òèïîâ äàííûõ è
èõ íîòàöèé ñèñòåìû äîëæíû îáåñïå÷èâàòü îïèñàíèå è ïðåîáðàçîâàíèå âíóòðåííèõ
òèïîâ äàííûõ ê òèïàì äàííûõ ñòàíäàðòà èëè ßÏ, à èìåííî:
— îïèñàíèå òèïîâ äàííûõ, ìåõàíèçìîâ èõ ãåíåðàöèè, à òàêæå íîòàöèè è çíà-
÷åíèÿ èç ïðîñòðàíñòâà çíà÷åíèé, îïðåäåëåííûõ ñòàíäàðòîì;
— îïåðàöèè íàä îáùèìè òèïàìè äàííûõ, õàðàêòåðèñòè÷åñêèå îïåðàöèè äëÿ
îðãàíèçàöèè ðàáîòû ñ òèïàìè äàííûõ ñòàíäàðòà;
— íàáîð òèïîâ äàííûõ ñòàíäàðòà, äëÿ êîòîðûõ îáåñïå÷èâàþòñÿ ñòàíäàðòíûå
âíóòðåííèå è âíåøíèå ïðåîáðàçîâàíèÿ.
Äàííûé ñòàíäàðò áóäåò ïîääåðæèâàòüñÿ äðóãèìè ñòàíäàðòàìè, ôîðìàëèçóþùèìè
ñðåäñòâà ïðåîáðàçîâàíèÿ òèïîâ äàííûõ â ñòàíäàðòå ÿçûêà ê ïðîìåæóòî÷íûì (ïàðàìåò-
ðèçîâàííûì) òèïàì äàííûõ, â òîì ÷èñëå è ê ßÏ [24]. Äëÿ ýòîãî â íåì èìåþòñÿ ìåõà-
íèçìû ïåðåõîäà îò ïàðàìåòðèçîâàííîãî òèïà ê îáùåìó. Ïàðàìåòðè÷åñêèå çíà÷åíèÿ
îïðåäåëÿþòñÿ ïîëüçîâàòåëÿìè èëè ðàçðàáîò÷èêîì ñòàíäàðòà. Íàïðèìåð, â ñòàíäàðòå
ÿçûêà îïðåäåëÿåòñÿ òèï äàííûõ integer, à ñîîòâåòñòâóþùèé ïðîöåññîð ðåàëèçóåò íåêî-
òîðûé äèàïàçîí ýòîãî òèïà — integer range (min ... max) è çíà÷åíèÿ min è max.
Ïðåäëîæåííûå â ñòàíäàðòå ðåêîìåíäàöèè, à òàêæå ñðåäñòâà îïèñàíèÿ òèïîâ
äàííûõ è ìåòîäîâ èõ ïðåîáðàçîâàíèÿ ÿâëÿþòñÿ îáùèìè. Íîâûé âàðèàíò ñòàíäàðòà
GDT äàåò îáùåå îïèñàíèå òèïîâ äàííûõ, êîòîðûå ìîãóò èñïîëüçîâàòüñÿ â äåéñòâó-
þùèõ è âíîâü ñîçäàâàåìûõ ßÏ, à òàêæå èìåòü äëÿ íèõ ïðîãðàììíóþ ïîääåðæêó.
3.3. Íîâûé ïîäõîä ê îðãàíèçàöèè âçàèìîäåéñòâèÿ êîìïîíåíòîâ íà îñíîâå GDT
Ðåàëèçàöèÿ òðåáîâàíèé ñòàíäàðòà ìîæåò áûòü îñóùåñòâëåíà ñïåöèàëüíûìè ñðåäñò-
âàìè (ðèñ. 1).
148 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 4
Ïðèìèòèâíûå Àãðåãàòíûå Ñãåíåðèðîâàííûå Áèáëèîòåêà
GDT
Áèáëèîòåêà
ôóíêöèé
îòîáðàæåíèÿ
GDT ÔÒÄ
Áèáëèîòåêà
ÔÒÄ
Áèáëèîòåêà
ïðåîáðàçîâàíèé
òèïîâ äàííûõ
(ßÏ1, … ßÏn)
Îáùèå òèïû äàííûõ (GDT)
Ïðîìåæóòî÷íàÿ ñðåäà
ÔÒÄ GDT
Ñ
ð
å
ä
à
â
û
ï
î
ë
í
å
í
è
ÿ
Ïðîñòûå ÑëîæíûåÑòðóêòóðíûå
Ôóíäàìåíòàëüíûå òèïû äàííûõ (ÔÒÄ)
Êîìïîíåíòû ïîâòîðíîãî èñïîëüçîâàíèÿ (ÊÏÈ)
ÊÏÈ â ßÏn. . . . . . .ÊÏÈ â ßÏ1
Ðåïîçèòàðèé ÊÏÈ
Ðèñ. 1. Ñõåìà îáðàáîòêè òèïîâ äàííûõ GDT è ÔÒÄ
Ñóòü ýòèõ ñðåäñòâ çàêëþ÷àåòñÿ â ñëåäóþùåì [25]:
1) ñïåöèôèêàöèÿ âíåøíèõ òèïîâ äàííûõ êîìïîíåíòîâ, ïîäñèñòåì è ñèñòåì
ñðåäñòâàìè ÿçûêà GDT è èõ íàêîïëåíèå â îäíîì èç ðåïîçèòàðèåâ;
2) ñîçäàíèå ðÿäà áèáëèîòåê ôóíêöèé äëÿ ïðåîáðàçîâàíèÿ òèïîâ äàííûõ GDT
(ïðèìèòèâíûõ, àãðåãàòíûõ è ñãåíåðèðîâàííûõ) ê ÔÒÄ (ïðîñòûì, ñòðóêòóðíûì
è ñëîæíûì) ÿçûêîâ ïðîãðàììèðîâàíèÿ, ñ ïîìîùüþ êîòîðûõ áóäåò ãåíåðèðîâàòüñÿ
íåîáõîäèìàÿ ïðîìåæóòî÷íàÿ ñðåäà âçàèìîäåéñòâèÿ ðàçíîÿçûêîâûõ êîìïîíåíòîâ,
ïîäñèñòåì è ïðîåêòîâ;
3) àíàëèç è ðàçðàáîòêà ñèñòåìû óïðàâëåíèÿ àâòîìàòèçèðîâàííîé ãåíåðàöèåé äëÿ
êàæäîé âçàèìîäåéñòâóþùåé ïàðû ýëåìåíòîâ ïðîåêòà, íîâîãî ýëåìåíòà òèïà stub , ñîäåð-
æàùåãî îáðàùåíèå ê ñîîòâåòñòâóþùèì ôóíêöèÿì ïðåîáðàçîâàíèÿ òèïà äàííîãî ê íåîá-
õîäèìîìó âèäó ïðè ïåðåäà÷å èíôîðìàöèè âçàèìîäåéñòâóþùåìó êîìïîíåíòó è îáðàòíî,
àíàëîãè÷íî ïîäõîäó ê ðåàëèçàöèè èíòåðôåéñà â CORBA [22], ÀÏÐÎÏ [9].
Òàêèì îáðàçîì, ïîñòîÿííî âîçíèêàþùóþ ïðîáëåìó èíòåðîïåðàáåëüíîñòè ðàç-
íîðîäíûõ êîìïîíåíòîâ èç-çà ïîÿâëåíèÿ íîâûõ ßÏ, àðõèòåêòóð ïëàòôîðì è ñðåä
ìîæíî ðåøèòü ñ ïîìîùüþ ïðîãðàììíîãî èíñòðóìåíòàðèÿ, îñíîâàííîãî íà GDT,
àäåêâàòíîãî ïî îòíîøåíèþ ê íîâûì âèäàì ðàçíîðîäíûõ ïðîãðàììíûõ îáúåêòîâ.
ÇÀÊËÞ×ÅÍÈÅ
 ðàáîòå îïðåäåëåíî ïîíÿòèå èíòåðîïåðàáåëüíîñòè ðàçíîðîäíûõ êîìïîíåíòîâ
è ñèñòåì è ñâÿçàííîãî ñ íèì áàçèñà îïèñàíèÿ ôóíäàìåíòàëüíûõ òèïîâ äàííûõ ßÏ
ðàçíûõ ïîêîëåíèé. Ðàññìîòðåíà ïðîáëåìà âçàèìîäåéñòâèÿ êîìïîíåíòîâ ñ òåîðåòè-
÷åñêîé, ñåìàíòè÷åñêîé è ðåàëèçàöèîííîé òî÷êè çðåíèÿ. Îñíîâó òåîðèè ñîñòàâëÿåò
ñòðóêòóðíàÿ îðãàíèçàöèè òèïîâ äàííûõ Ê. Õîàðà, èñõîäÿ èç êîòîðîé ïðåäñòàâëåíà
àêñèîìàòèêà ôóíäàìåíòàëüíûõ ïðîñòûõ, ñòðóêòóðíûõ è ñëîæíûõ òèïîâ äàííûõ.
Ñôîðìóëèðîâàíà ñóòü íåñîîòâåòñòâèÿ òèïîâ äàííûõ â ðàçíûõ ßÏ. Ñåìàíòèêà ïðå-
îáðàçîâàíèÿ òèïîâ äàííûõ áàçèðóåòñÿ íà äåéñòâóþùèõ ïîäõîäàõ ê èõ ðåàëèçàöèè
â ñèñòåìàõ ïðîãðàììèðîâàíèÿ ñ ßÏ, âëèÿíèè àðõèòåêòóðû ðàçíûõ ïëàòôîðì è
óñëîâèé ïðåîäîëåíèÿ ðàçëè÷èé, êàê ïðàâèëî, ïóòåì ñîçäàíèÿ ïðîìåæóòî÷íîé ñðå-
äû äëÿ ïîääåðæêè ñâÿçåé ðàçíîÿçûêîâûõ êîìïîíåíòîâ è ñèñòåì.
Èñòî÷íèêîì ôîðìèðîâàíèÿ ðåàëèçàöèîííîé òî÷êè çðåíèÿ â ïðîáëåìàòèêå îáåñïå-
÷åíèÿ âçàèìîäåéñòâèÿ ðàçíûõ ïðîãðàììíûõ îáúåêòîâ ïîñëóæèë àíàëèç äåéñòâóþùèõ
ñèñòåìíûõ ñðåä (COM, CORBA, SUN, MS.NET, JAVA, Grid è äð.) [26]. Îáùèé ïîäõîä
ê ðåàëèçàöèè íàçâàííîé ïðîáëåìû — ïðîìåæóòî÷íàÿ ñðåäà (middleware), áðîêåð çà-
ïðîñîâ â ðàñïðåäåëåííîé ñðåäå, ãåíåðàöèÿ íåîáõîäèìûõ ïîñðåäíèêîâ (stub, skeleton)
â ñèñòåìå CORBA, DCOM, SUN è óíèôèêàöèÿ âûõîäíîãî êîäà â ñèñòåìå MS.NET.
Ñôîðìóëèðîâàíà íîâàÿ êîíöåïöèÿ, îòëè÷àþùàÿñÿ îò ñóùåñòâóþùèõ òåì, ÷òî
îíà îñíîâàíà íà ìåòîäå ãåíåðàöèè îáùèõ òèïîâ äàííûõ GDT ñòàíäàðòà ISO/IEC
11404:2007 ïðèìåíèòåëüíî ê íîâûì ßÏ è ãåòåðîãåííûì ñðåäàì. Ðàññìîòðåíû îñî-
áåííîñòè ñðåäû Grid è ñôîðìóëèðîâàíû ïóòè ïîäêëþ÷åíèÿ íîâûõ ßÏ äëÿ ýòîé ñðå-
äû. Ñîçäàåòñÿ áèáëèîòåêà ôóíêöèé ïðåîáðàçîâàíèÿ GDT òèïîâ äàííûõ ê ñîîòâåò-
ñòâóþùèì ôóíäàìåíòàëüíûì òèïàì äàííûõ ßÏ è áèáëèîòåêà ôóíêöèé äëÿ ïðåîäî-
ëåíèÿ íåñîîòâåòñòâèé èõ ðåàëèçàöèè â ñèñòåìàõ ïðîãðàììèðîâàíèÿ è îòëè÷èé
ïëàòôîðì êîìïüþòåðîâ ïî ôîðìàòàì äàííûõ è ðàçðÿäíîñòè (32, 64) èõ ïàìÿòè.
ÑÏÈÑÎÊ ËÈÒÅÐÀÒÓÐÛ
1. Ï ð î é ä à ê î â Å . Ì . , Ò å ï ë è ö ü ê è é Ë . À . Àíãëî-óêðà¿íñüêèé òëóìà÷íèé ñëîâíèê ç îá÷èñëþ-
âàëüíî¿ òåõí³êè, ²íòåðíåòó ³ ïðîãðàìóâàííÿ. — Ê.: ÑîôòÏðåñ, 2006. — 824 ñ.
2. × à ð í å ö ê è Ê . , À é ç å í å ê å ð Ó . Ïîðîæäàþùåå ïðîãðàììèðîâàíèå. Ìåòîäû, èíñòðóìåíòû, ïðè-
ìåíåíèå. — Ì.; ÑÏá.; Õàðüêîâ: Èçä. äîì «Ïèòåð», 2005. — 730 ñ.
3. Ò ó ð ñ ê è é Â . Ìåòîäîëîãèÿ ïðîãðàììèðîâàíèÿ: Ïåð. ñ àíãë. — Ì.: Ìèð, 1981. — 265 c.
4. À ã à ô î í î â Â . Í . Òèïû è àáñòðàêöèÿ äàííûõ â ÿçûêàõ ïðîãðàììèðîâàíèÿ // Äàííûå â ÿçûêàõ
ïðîãðàììèðîâàíèÿ. — Ì.: Ìèð, 1982. — Ñ. 267–327.
5. Çà ì ó ë è í À . Â . Òèïû äàííûõ â ÿçûêàõ ïðîãðàììèðîâàíèÿ è áàçàõ äàííûõ. — Ì.: Íàóêà, 1987. —
152 ñ.
ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 4 149
6. Ë à â ð è ù å â à Å . Ì . Èíòåðôåéñ â ïðîãðàììèðîâàíèè // Ïðîáëåìè ïðîãðàìóâàííÿ. — 2007. — ¹ 2.
— Ñ. 126–139.
7. Ë à â ð ³ ù å â à Ê . Ì . Ãåíåðóâàëüíå ïðîãðàìóâàííÿ ïðîãðàìíèõ ñèñòåì ³ ñ³ìåéñòâ // Òàì æå. — 2009.
— ¹ 1. — Ñ. 3–16.
8. Ã ð è ù å í ê î Â . Í . Ìåòîä îáúåêòíî-êîìïîíåíòíîãî ïðîåêòèðîâàíèÿ ïðîãðàììíûõ ñèñòåì // Òàì
æå. — 2007. — ¹ 2. — C. 113–125.
9. Ë à â ð è ù å â à Å . Ì . , à ð è ù å í ê î  . Í . Ñáîðî÷íîå ïðîãðàììèðîâàíèå. Îñíîâû èíäóñòðèè ïðîã-
ðàììíûõ ïðîäóêòîâ. — 2-èçä., äîï. è ïåðåðàá. — Êèåâ: Íàóê. äóìêà, 2009. — 370 ñ.
10. à ð è ù å í ê î  . Ì . Òåîðåòè÷í³ òà ïðèêëàäí³ àñïåêòè êîìïîíåíòíîãî ïðîãðàìóâàííÿ: Àâòîðåô. äèñ.
... ä-ðà ô³ç.-ìàò. íàóê. — Êè¿â, 2007. — 35 ñ.
11. Ë à â ð è ù å â à Å . Ì . Ñáîðî÷íîå ïðîãðàììèðîâàíèå. Òåîðèÿ è ïðàêòèêà // Êèáåðíåòèêà è ñèñòåì-
íûé àíàëèç. — 2009. — ¹ 6. — Ñ. 1–12.
12. Ë à â ð è ù å â à Å . Ì . Ìåòîäû ïðîãðàììèðîâàíèÿ. Òåîðèÿ, èíæåíåðèÿ, ïðàêòèêà. — Ê.: Íàóê. äóì-
êà, 2006. — 451 ñ.
13. Ë à â ð è ù å â à Å . Ì . Ñòàíîâëåíèå è ðàçâèòèå ìîäóëüíî-êîìïîíåíòíîé èíæåíåðèè ïðîãðàììèðîâà-
íèÿ â Óêðàèíå. — Êèåâ, 2008. — 33 ñ. — (Ïðåïð. / ÍÀÍÓ. Èí-ò êèáåðíåòèêè èì. Â.Ì. Ãëóøêîâà;
¹ 1).
14. E T I C S : the International software engineering service for the Grid / A. di Meglio, M.-E. B�gin,
P. Couvares et al. // J. Physics: Conf. Series. — 2008. — 119 (http://dx.doi.org/10.1088/1742-6596/
119/4/042010).
15. C a s t e l l i D . , C a n d e l a L . , P a g a n o P . , S i m i M . DILIGENT: A digital library infrastructure
for supporting joint research // Proc. of 2nd IEEE — CS Intern. Symp. on Global Data Interoperability —
Challenges and Technologies, Sardinia, Italy, June, 2005 (http://ieeeplore.ieee.org/Xplore/).
16. Ä Ñ Ò Ó ISO/IEC TR 10000-2:2004 Iíôîðìàöiéíi òåõíîëîãi¿. Îñíîâè òà òàêñîíîìiÿ ìiæíàðîäíèõ ñòàí-
äàðòèçîâàíèõ ïðîôiëiâ. ×. 2. Ïðèíöèïè òà òàêñîíîìiÿ OSI ïðîôiëiâ (ISO/IEC TR 10000-2:1998, IDT).
17. Ñ è ì ê è í Ñ . , Á à ð ë å ò Í . , Ë å ñ ë è À . Ïðîãðàììèðîâàíèå íà Java. Ïóòåâîäèòåëü. — Ê.:
DIASOFT, 1996. — 736 ñ.
18. Á å é È . Âçàèìîäåéñòâèå ðàçíîÿçûêîâûõ ïðîãðàìì. — Ì.; Ñ.-Ïåòåðáóðã; Êèåâ: Èçä. äîì «Âèëü-
ÿìñ», 2005. — 868 ñ.
19. Ø å ë ä î í Ð . , Ì î é å Ä . MySQL: áàçîâûé êóðñ = Beginning MySQL. — Ì.: Äèàëåêòèêà, 2007. —
880 c.
20. Õ î à ð Ê . Î ñòðóêòóðíîé îðãàíèçàöèè äàííûõ // Ñòðóêòóðíîå ïðîãðàììèðîâàíèå. — Ì.: Ìèð, 1975.
— C. 92–197.
21. Ý ë å ê ò ð î í í à ÿ íàóêà. Ñîñòîÿíèå ïðîáëåìû. — Êèåâ: ²ÏÑ ÍÀÍ Óêðà¿íè, 2007. — 94 ñ.
22. Ý ì ì å ð è õ Â . Êîíñòðóèðîâàíèå ðàñïðåäåëåííûõ îáúåêòîâ. Ìåòîäû è ñðåäñòâà ïðîãðàììèðîâàíèÿ
èíòåðîïåðàáåëüíûõ îáúåêòîâ â àðõèòåêòóðàõ OMG/CORBA, Microsoft/COM è Java/RMI. — Ì.:
Ìèð, 2002. — 510 ñ.
23. Ñ # 2 0 0 8 è ïëàòôîðìà .NET 3.5 äëÿ ïðîôåññèîíàëîâ: Ïåð. ñ àíãë. / Ê. Íåéãåë, Á. Èâüåí, Ä. Ãëèíí
è äð. — Ì.: Èçä. äîì «Âèëüÿìñ», 2009. — 1392 ñ.
24. Ô î ì è ÷ å â  . Ñ . , Ï þ ò ÷ ë å ð Ó. Ïðîìåæóòî÷íûå ÿçûêè ñèñòåì ïðîãðàììèðîâàíèÿ // ÝÂÌ â ïðî-
åêòèðîâàíèè è ïðîèçâîäñòâå. — 1987. — Âûï. 3. — C. 251–270.
25. Ë à â ð è ù å â à Å . Ì . Ïðîáëåìà èíòåðîïåðàáåëüíîñòè ðàçíîðîäíûõ îáúåêòîâ, êîìïîíåíòîâ è ñèñ-
òåì. Ïîäõîäû ê ðåøåíèþ // Ïðîáëåìè ïðîãðàìóâàííÿ. — 2010. — ¹ 2–3. — Ñ. 28–42.
26. Ï ð î ã ð à ì í à ³íæåíåð³ÿ: ϳäðó÷íèê. — Ê.: Àêàäåìïåð³îäèêà, 2008. — 319 c.
Ïîñòóïèëà 15.04.2010
150 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2010, ¹ 4
|
| id | nasplib_isofts_kiev_ua-123456789-45250 |
| institution | Digital Library of Periodicals of National Academy of Sciences of Ukraine |
| issn | 0023-1274 |
| language | Russian |
| last_indexed | 2025-11-30T10:26:19Z |
| publishDate | 2010 |
| publisher | Інститут кібернетики ім. В.М. Глушкова НАН України |
| record_format | dspace |
| spelling | Лаврищева, Е.М. 2013-06-10T18:30:47Z 2013-06-10T18:30:47Z 2010 Формальные основы интероперабельности компонентов в программировании / Е.М. Лаврищева // Кибернетика и системный анализ. — 2010. — № 4. — С. 134-150. — Бібліогр.: 26 назв. — рос 0023-1274 https://nasplib.isofts.kiev.ua/handle/123456789/45250 681.3.06 Досліджено проблему взаємодії різнорідних компонентів і систем — з теоретичної, семантичної і реалізаційної точок зору. Представлено теорію структурної організації типів даних, семантику перетворення нерелевантних типів даних і підходи до реалізації типів даних мов програмування в сучасних середовищах. The interaction of heterogeneous components and systems is investigated in theoretical, semantic, and implementation perspectives. The theory of data type structuring, semantics of non-relevant data type transformation, and approaches for implementing data types of programming languages in modern environments are discussed. ru Інститут кібернетики ім. В.М. Глушкова НАН України Кибернетика и системный анализ Программно-технические комплексы Формальные основы интероперабельности компонентов в программировании Формальні основи інтероперабельності компонентів у програмуванні Formal bases of component interoperability in programming Article published earlier |
| spellingShingle | Формальные основы интероперабельности компонентов в программировании Лаврищева, Е.М. Программно-технические комплексы |
| title | Формальные основы интероперабельности компонентов в программировании |
| title_alt | Формальні основи інтероперабельності компонентів у програмуванні Formal bases of component interoperability in programming |
| title_full | Формальные основы интероперабельности компонентов в программировании |
| title_fullStr | Формальные основы интероперабельности компонентов в программировании |
| title_full_unstemmed | Формальные основы интероперабельности компонентов в программировании |
| title_short | Формальные основы интероперабельности компонентов в программировании |
| title_sort | формальные основы интероперабельности компонентов в программировании |
| topic | Программно-технические комплексы |
| topic_facet | Программно-технические комплексы |
| url | https://nasplib.isofts.kiev.ua/handle/123456789/45250 |
| work_keys_str_mv | AT lavriŝevaem formalʹnyeosnovyinteroperabelʹnostikomponentovvprogrammirovanii AT lavriŝevaem formalʹníosnoviínteroperabelʹnostíkomponentívuprogramuvanní AT lavriŝevaem formalbasesofcomponentinteroperabilityinprogramming |