Формальные основы интероперабельности компонентов в программировании

Досліджено проблему взаємодії різнорідних компонентів і систем — з теоретичної, семантичної і реалізаційної точок зору. Представлено теорію структурної організації типів даних, семантику перетворення нерелевантних типів даних і підходи до реалізації типів даних мов програмування в сучасних середовищ...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:Кибернетика и системный анализ
Datum:2010
1. Verfasser: Лаврищева, Е.М.
Format: Artikel
Sprache:Russisch
Veröffentlicht: Інститут кібернетики ім. В.М. Глушкова НАН України 2010
Schlagworte:
Online Zugang:https://nasplib.isofts.kiev.ua/handle/123456789/45250
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
Назва журналу:Digital Library of Periodicals of National Academy of Sciences of Ukraine
Zitieren:Формальные основы интероперабельности компонентов в программировании / Е.М. Лаврищева // Кибернетика и системный анализ. — 2010. — № 4. — С. 134-150. — Бібліогр.: 26 назв. — рос

Institution

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