Генерирующее и сборочное программирование. Аспекты разработки семейств программных систем

Наведено нові моделі, методи і інструменти, які розроблені в межах фундаментального проекту з генеруючого програмування (ГП). Розроблено теорію об єктно-орієнтованого програмування; теорію взаємодії програм, систем і середовищ; оригінальну технологію конструювання варіабельних і якісних систем та сі...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:Кибернетика и системный анализ
Datum:2013
1. Verfasser: Лаврищева, Е.М.
Format: Artikel
Sprache:Russian
Veröffentlicht: Інститут кібернетики ім. В.М. Глушкова НАН України 2013
Schlagworte:
Online Zugang:https://nasplib.isofts.kiev.ua/handle/123456789/86172
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:Генерирующее и сборочное программирование. Аспекты разработки семейств программных систем / Е.М. Лаврищева // Кибернетика и системный анализ. — 2013. — Т. 49, № 1. — С. 129-144. — Бібліогр.: 32 назв. — рос.

Institution

Digital Library of Periodicals of National Academy of Sciences of Ukraine
id nasplib_isofts_kiev_ua-123456789-86172
record_format dspace
spelling Лаврищева, Е.М.
2015-09-08T18:20:18Z
2015-09-08T18:20:18Z
2013
Генерирующее и сборочное программирование. Аспекты разработки семейств программных систем / Е.М. Лаврищева // Кибернетика и системный анализ. — 2013. — Т. 49, № 1. — С. 129-144. — Бібліогр.: 32 назв. — рос.
0023-1274
https://nasplib.isofts.kiev.ua/handle/123456789/86172
681.03.06
Наведено нові моделі, методи і інструменти, які розроблені в межах фундаментального проекту з генеруючого програмування (ГП). Розроблено теорію об єктно-орієнтованого програмування; теорію взаємодії програм, систем і середовищ; оригінальну технологію конструювання варіабельних і якісних систем та сімейств систем з компонентів повторного використання; засоби інструментального комплексу для підтримки спектра простих технологій розробки окремих елементів сімейств програмних систем і їхнього складання, а також забезпечення взаємодії програм, систем і середовищ; інструментально-технічного комплексу ГП для е-навчання мовам C#, Java і курсу університетів «Програмна інженерія».
The paper presents new models, methods, and tools developed as a part of the fundamental generating programming project GP. These are the theory of object-component programming; theory of the interaction of programs, systems, and environments; the original technology to design variable and qua and families of systems from ready reusable components; funds to support a range of simple technologies for the development of individual elements of system families and their assembly; interoperability of programs, systems, and environments, ITC for e-learning of C# and Java languages and university course in software engineering.
ru
Інститут кібернетики ім. В.М. Глушкова НАН України
Кибернетика и системный анализ
Программно-технические комплексы
Генерирующее и сборочное программирование. Аспекты разработки семейств программных систем
Генеруюче і композиційне програмування. Аспекти розробки сімейств програмних систем
Generating and composition programming. Aspects of the development of software system families
Article
published earlier
institution Digital Library of Periodicals of National Academy of Sciences of Ukraine
collection DSpace DC
title Генерирующее и сборочное программирование. Аспекты разработки семейств программных систем
spellingShingle Генерирующее и сборочное программирование. Аспекты разработки семейств программных систем
Лаврищева, Е.М.
Программно-технические комплексы
title_short Генерирующее и сборочное программирование. Аспекты разработки семейств программных систем
title_full Генерирующее и сборочное программирование. Аспекты разработки семейств программных систем
title_fullStr Генерирующее и сборочное программирование. Аспекты разработки семейств программных систем
title_full_unstemmed Генерирующее и сборочное программирование. Аспекты разработки семейств программных систем
title_sort генерирующее и сборочное программирование. аспекты разработки семейств программных систем
author Лаврищева, Е.М.
author_facet Лаврищева, Е.М.
topic Программно-технические комплексы
topic_facet Программно-технические комплексы
publishDate 2013
language Russian
container_title Кибернетика и системный анализ
publisher Інститут кібернетики ім. В.М. Глушкова НАН України
format Article
title_alt Генеруюче і композиційне програмування. Аспекти розробки сімейств програмних систем
Generating and composition programming. Aspects of the development of software system families
description Наведено нові моделі, методи і інструменти, які розроблені в межах фундаментального проекту з генеруючого програмування (ГП). Розроблено теорію об єктно-орієнтованого програмування; теорію взаємодії програм, систем і середовищ; оригінальну технологію конструювання варіабельних і якісних систем та сімейств систем з компонентів повторного використання; засоби інструментального комплексу для підтримки спектра простих технологій розробки окремих елементів сімейств програмних систем і їхнього складання, а також забезпечення взаємодії програм, систем і середовищ; інструментально-технічного комплексу ГП для е-навчання мовам C#, Java і курсу університетів «Програмна інженерія». The paper presents new models, methods, and tools developed as a part of the fundamental generating programming project GP. These are the theory of object-component programming; theory of the interaction of programs, systems, and environments; the original technology to design variable and qua and families of systems from ready reusable components; funds to support a range of simple technologies for the development of individual elements of system families and their assembly; interoperability of programs, systems, and environments, ITC for e-learning of C# and Java languages and university course in software engineering.
issn 0023-1274
url https://nasplib.isofts.kiev.ua/handle/123456789/86172
citation_txt Генерирующее и сборочное программирование. Аспекты разработки семейств программных систем / Е.М. Лаврищева // Кибернетика и системный анализ. — 2013. — Т. 49, № 1. — С. 129-144. — Бібліогр.: 32 назв. — рос.
work_keys_str_mv AT lavriŝevaem generiruûŝeeisboročnoeprogrammirovanieaspektyrazrabotkisemeistvprogrammnyhsistem
AT lavriŝevaem generuûčeíkompozicíineprogramuvannâaspektirozrobkisímeistvprogramnihsistem
AT lavriŝevaem generatingandcompositionprogrammingaspectsofthedevelopmentofsoftwaresystemfamilies
first_indexed 2025-11-25T22:42:35Z
last_indexed 2025-11-25T22:42:35Z
_version_ 1850572440047976448
fulltext Å.Ì. ËÀÂÐÈÙÅÂÀ ÓÄÊ 681.03.06 ÃÅÍÅÐÈÐÓÞÙÅÅ È ÑÁÎÐÎ×ÍÎÅ ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ. ÀÑÏÅÊÒÛ ÐÀÇÐÀÁÎÒÊÈ ÑÅÌÅÉÑÒ ÏÐÎÃÐÀÌÌÍÛÕ ÑÈÑÒÅÌ Êëþ÷åâûå ñëîâà: ãåíåðèðóþùåå ïðîãðàììèðîâàíèå, êîìïîíåíòíîå, îáúåêò- íî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå, ñåìåéñòâî ïðîãðàììíûõ ñèñòåì, êîì- ïîíåíòû ïîâòîðíîãî èñïîëüçîâàíèÿ, âçàèìîäåéñòâèå, âàðèàáåëüíîñòü, èíñòðó- ìåíòàëüíî-òåõíîëîãè÷åñêèé êîìïëåêñ. ÂÂÅÄÅÍÈÅ Â íà÷àëå 70-õ ãîäîâ ïðîøëîãî âåêà Å. Äåéêñòðà ââåë ïîíÿòèå ñåìåéñòâà ïðî- ãðàìì ñ îáùåé «ñåìåéíîé» ïîñòàíîâêîé çàäà÷è, ñ êîòîðîé îíè ïîðîæäàþòñÿ êàê ïðîãðàììû, è íåêîòîðûå èç íèõ èçìåíÿþòñÿ â ñâÿçè ñ íåäîñòàòî÷íî çàäàííîé ôóíêöèîíàëüíîñòüþ èëè óòî÷íåíèåì ïîñòàíîâêè çàäà÷ ñåìåéñòâà. Ïîçäíåå ïîÿ- âèëñÿ òåðìèí ñåìåéñòâî ñèñòåì (â Product Lines SEI), ñåìåéñòâî ïðîãðàììíûõ ñèñòåì (ÑÏÑ) â ñáîðî÷íîì ïðîãðàììèðîâàíèè è íà ôàáðèêàõ èçãîòîâëåíèÿ ïðî- ãðàìì èç ãîòîâûõ êîìïîíåíòîâ ïîâòîðíîãî èñïîëüçîâàíèÿ (ÊÏÈ), êîòîðûõ íàêîï- ëåíî îãðîìíîå êîëè÷åñòâî â ðàçëè÷íûõ âñåìèðíûõ áèáëèîòåêàõ è ðåïîçèòîðèÿõ. Ïîä ñåìåéñòâîì ïðîãðàììíûõ ñèñòåì ïîíèìàåòñÿ ñîâîêóïíîñòü ïðîãðàììíûõ ñèñòåì (÷ëåíîâ ñåìåéñòâà), ñâÿçàííûõ ìåæäó ñîáîé îáùèì ìíîæåñòâîì ïîíÿòèé ïðåäìåòíîé îáëàñòè (ÏðÎ), èõ îáùèìè õàðàêòåðèñòèêàìè, ãîòîâûìè ÊÏÈ, ïðåäèêà- òàìè èõ îòáîðà äëÿ óòî÷íåíèÿ ôóíêöèîíàëüíîñòè ïðîèçâîäíûõ âàðèàíòîâ ÷ëåíîâ ñåìåéñòâà, îïåðàöèÿìè ñáîðêè (êîíôèãóðèðîâàíèÿ) è èçìåíåíèÿ ÷ëåíîâ ÑÏÑ. Ê. ×åðíåöêè â ðàáîòå «Ãåíåðèðóþùåå ïðîãðàììèðîâàíèå» (ÃÏ) [1] ðàññìàò- ðèâàåò ÑÏÑ êàê öåëåâóþ ôóíêöèþ òåõíîëîãèè ðàçðàáîòêè ïðîãðàììíûõ ïðîäóê- òîâ (ÏÏ) ïîä äåâèçîì «îò ðó÷íîãî òðóäà ê êîíâåéåðíîé ñáîðêå» ÑÏÑ. Ýëåìåíòû ÑÏÑ íå ñòðîÿòñÿ ñ íóëÿ, à ãåíåðèðóþòñÿ íà îñíîâå ìîäåëè GDM (Generative Domain Model) — ìîäåëè ÷ëåíîâ ñåìåéñòâà ñèñòåì. Îíà çàäàåòñÿ òðåìÿ ýëåìåíòà- ìè: ÷ëåíàìè ñåìåéñòâà; êîìïîíåíòàìè ðåàëèçàöèè, èç êîòîðûõ ñîáèðàþòñÿ ÷ëåíû ñåìåéñòâà; êîíôèãóðàöèîííûìè çíàíèÿìè (configuration knowledge) î ñïåöèôèêà- öèè ÷ëåíîâ ñåìåéñòâà äëÿ ïîëó÷åíèÿ êîððåêòíîãî è êà÷åñòâåííîãî êîíå÷íîãî ÏÏ. Îáúåêòû êîíâåéåðíîé ñáîðêè â ÃÏ — ãîòîâûå ðåñóðñû (reuses, assets, servises) èëè ÊÏÈ, êîòîðûå ïðåäñòàâëåíû â ñîâðåìåííûõ ÿçûêàõ ïðîãðàììèðîâà- íèÿ (ßÏ), DSL (Domain Spesific Languages) èëè exe ñ èíòåðôåéñàìè â IDL, API, RDF è äð. ÊÏÈ ìîãóò âûáèðàòüñÿ èç ñóùåñòâóþùèõ õðàíèëèù è èñïîëüçîâàòüñÿ ïðè ðåàëèçàöèè çàäà÷ êîíêðåòíîãî ÷ëåíà ñåìåéñòâà, à òàêæå ó÷àñòâîâàòü â êîíâå- éåðíîé ñáîðêå íà ïðîäóêòîâûõ ëèíèÿõ (Product lines — PL) ÑÏÑ. ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2013, ¹ 1 129 © Å.Ì. Ëàâðèùåâà, 2013 Äëÿ ïîñòðîåíèÿ ìîäåëè GDM è îïðåäåëåíèÿ ÷ëåíîâ ñåìåéñòâà Ê. ×åðíåöêè ââîäèò áàçîâûå ïîíÿòèÿ: ïðîñòðàíñòâî çàäà÷ (problem space), ïðîñòðàíñòâî ðåøå- íèé (solution space) è áàçó êîíôèãóðàöèè (configuration base) ÑÏÑ. Ïðîñòðàíñòâî çàäà÷ îòîáðàæàåò ïîíÿòèÿ ÑÏÑ, ÷ëåíîâ ÑÏÑ è èõ õàðàêòåðèñòèêè â FM (Feature Model) ìîäåëè, à òàêæå ôóíêöèè è çàäà÷è, êîòîðûå îïèñûâàþòñÿ PL èëè ïðåä- ìåòíî-îðèåíòèðîâàííûìè ÿçûêàìè òèïà DSL, UML2. Ïðîñòðàíñòâî ðåøåíèé — ýòî êîìïîíåíòû, êàðêàñû, øàáëîíû è ÊÏÈ ðåàëèçàöèè çàäà÷ ÷ëåíîâ ñåìåéñòâà ÑÏÑ. Ìåõàíèçìû, ïðàâèëà îïèñàíèÿ, ãåíåðàöèè êîìïîíåíòîâ è ïîäáîðà ÊÏÈ äëÿ îòäåëüíûõ çàäà÷ ÑÏÑ — îñíîâíûå ñðåäñòâà áàçû êîíôèãóðàöèè.  ÃÏ îïèñàíà ìåòîäîëîãèÿ ïðîåêòèðîâàíèÿ ìîäåëåé ÏðÎ â òåðìèíàõ è ïîíÿ- òèÿõ, êîòîðûå çàäàþòñÿ ôîðìàëüíûìè ìåõàíèçìàìè è ñðåäñòâàìè ìîäåëèðîâàíèÿ áàçîâûõ õàðàêòåðèñòèê ìîäåëè FM äëÿ ÷ëåíîâ ñåìåéñòâà ÑÏÑ ÏðÎ â çàâèñèìîñòè îò âîçìîæíîñòåé ñðåäû ðàçðàáîòêè è ìåòîäîâ òðàíñôîðìàöèè îïèñàíèé ýëåìåíòîâ ñèñòåì ê ïëàòôîðìàì, ãäå îíè áóäóò ðàñïîëàãàòüñÿ è âûïîëíÿòüñÿ. Ìîäåëè GDM è õàðàêòåðèñòèê FM ïîçâîëÿþò ïðåäñòàâëÿòü îáùèå ïîíÿòèÿ è ñâîéñòâà îáúåêòîâ ÏðÎ, èõ âçàèìîñâÿçè, à òàêæå çíàíèÿ î êîíôèãóðàöèè ÊÏÈ â ÑÏÑ. Ïðè ðåàëèçà- öèè ÊÏÈ ìîãóò ïðèìåíÿòüñÿ òàêèå âèäû ïðîãðàììèðîâàíèÿ: ÎÎÏ, êîìïîíåíòíîå, ñåðâèñíîå, àñïåêòíîå, UML, èíæåíåðèÿ ñåìåéñòâ ñèñòåì è ÏðÎ. Êîíöåïöèÿ ïðî- äóêòîâûõ ëèíèé èíñòèòóòà SE ÑØÀ (www.sei.com) èñïîëüçóåòñÿ äëÿ ñîçäàíèÿ êîììåð÷åñêèõ ÏÏ ìàññîâîãî ïîòðåáëåíèÿ. Àíàëîãè÷íûé ïîäõîä ê òåõíîëîãèè èíäóñòðèàëüíîãî èçãîòîâëåíèÿ ïðîãðàì- ìíûõ ñèñòåì (ÏÑ), ÷ëåíîâ ñåìåéñòâà è ÑÏÑ èç ãîòîâûõ ÊÏÈ [2–4] íà òåõíîëîãè÷åñ- êèõ ëèíèÿõ (ÒË) ñáîðî÷íîãî êîíâåéåðà Ãëóøêîâà ðàçðàáîòàí â îòå÷åñòâåííîì ñáî- ðî÷íîì ïðîãðàììèðîâàíèè (ÑáÏ), íà÷èíàÿ ñ 80–õ ãîäîâ ïðîøëîãî ñòîëåòèÿ [2–7]. Ýòà òåõíîëîãèÿ àêòèâíî ðàçâèâàåòñÿ êàê ñáîðî÷íûé êîíâåéåð (Ì. Ôëàóåð), ÅÏÀÌ (Áåëîðóññèÿ), ôàáðèêè ïðîãðàìì â Óêðàèíå (http://programsfactory.univ.kiev.ua) è çà ðóáåæîì (Äæ. Ãðèíôèëüä, È. Áåé, Ã. Ëåíö) [8–10], êîòîðûå ðàçâèâàþò èíäóñ- òðèþ ÏÏ â ñîâðåìåííîì èíôîðìàöèîííîì ìèðå. Âîïðîñàì ñáîðêè ÑÏÑ ïî òåõíî- ëîãè÷åñêèì ëèíèÿì ôàáðè÷íîãî òèïà ïîñâÿùåíà äàííàÿ ñòàòüÿ. 1. ÎÁÙÈÅ ÖÅËÈ È ÎÚÅÊÒÛ ÀÂÒÎÌÀÒÈÇÀÖÈÈ ËÈÍÈÉ ÏÐÎÈÇÂÎÄÑÒÂÀ ÑÏÑ Èäåÿ ñáîðî÷íîãî êîíâåéåðà èçãîòîâëåíèÿ ÏÑ, ÷ëåíîâ ÑÏÑ èç ãîòîâûõ ÊÏÈ èññëå- äîâàëàñü è ðàçðàáàòûâàëàñü â îòäåëå ïðîãðàììíîé èíæåíåðèè ÈÏÑ ÍÀÍ Óêðàèíû â ðàìêàõ ôóíäàìåíòàëüíûõ ïðîåêòîâ (1998–2011 ãã.), â òîì ÷èñëå ïîñëåäíåãî èç íèõ, ñâÿçàííîãî ñ ÃÏ. Íà ðèñ. 1 ïðèâåäåíà áàçîâàÿ ñòðóêòóðà ïðîåêòà ÃÏ â ÈÏÑ. 130 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2013, ¹ 1 Ïàðàäèãìà ÎÎÏ Ïàðàäèãìà êîìïîíåíòíîãî ïðîãðàììè- ðîâàíèÿ ÎÊÌ = (Ci , Ik , Oj) Îáúåêòíî- êîìïîíåíòíûé ìåòîä Êîíöåïöèÿ èíòåðôåéñîâ ðàçíîÿçûêîâûõ êîìïîíåíòîâ Ãîòîâûå ðåñóðñû --- ÊÏÈ, àêòèâû, ñåðâèñû Ãåíåðèðóþùåå ïðîãðàììèðîâàíèå (ÃÏ) Ìîäåëè Ìîäåëè ïðîãðàìì, èíòåðôåéñà, ñðåäû. Àëãåáðà îïåðàöèé Ìîäåëè ÏðÎ, GDM, õàðàêòåðèñòèê ÏÑ, àðõèòåêòóðè ÏÑ. Ìîäåëè êà÷åñòâà, âàðèàíòíîñòè, âçàèìîäåéñòâèÿ Ãåíåðàòîðû, Êîíôèãóðàòîðû Ãåíåðàòîðû òèïîâ äàííûõ Ãåíåðàòîðû ïðîãðàìì Ñåìåéñòâî ïðîãðàììíèõ ñèñòåì (ÑÏÑ) ÏÑ --- ÷ëåí ñåìåéñòâà Ðåïîçèòîðèé ÑÏÑ Èíñòðóìåíòû è ñðåäñòâà ßÏ è DSL Ñòðàòåãèè ðåëåâàíòíîãî ïîèñêà ðåñóðñîâ Òåõíîëîãèè ãåíåðàöèè, ñáîðêà Ðèñ. 1. Áàçîâàÿ ñòðóêòóðà ïðîåêòà ÃÏ Îñíîâíîé öåëåâîé îáúåêò èññëåäîâàíèÿ â ïðîåêòå ÃÏ — ñåìåéñòâî ïðîãðàì- ìíûõ ñèñòåì. Äëÿ åãî ðàçðàáîòêè èçó÷àëèñü ïàðàäèãìû ÃÏ è ÊÏ, îáúåêòíî-êîì- ïîíåíòíûé ïîäõîä, ÊÏÈ, èíòåðôåéñû, ìåòîäû ïðîåêòèðîâàíèÿ è âåäåíèÿ ïðî- öåññà ðàçðàáîòêè ÑÏÑ â ðåïîçèòîðèè è äð. Ôîðìèðîâàëàñü íàó÷íàÿ êîíöåïöèÿ ìåòîäîëîãèè ðàçðàáîòêè ÑÏÑ, èíñòðóìåíòàëüíîé ñðåäû è ñðåäñòâ òåõíîëîãèè ðàçðàáîòêè ÷ëåíîâ ñåìåéñòâà, ÊÏÈ.  ðåçóëüòàòå ñîçäàíû îðèãèíàëüíûå ïî ñâî- åé ñóòè îòäåëüíûå òåîðåòè÷åñêèå è ïðèêëàäíûå àñïåêòû ðàçðàáîòêè ÑÏÑ, êîòî- ðûå ðàñøèðÿþò ìåòîäîëîãèþ ÃÏ Ê. ×åðíåöêè è ñáîðî÷íîå ïðîãðàììèðîâàíèÿ â ÷àñòíîñòè. Íà îñíîâå ïðàêòè÷åñêèõ ýêñïåðèìåíòîâ ñ ÊÏÈ è ÷ëåíàìè ÑÏÑ â èí- òåãðîâàííîé ñðåäå ÃÏ (VS.Net, Corba, IBM, Eclipse, Prot�g� è äð.) áûëè îïðåäåëå- íû íîâûå ìîäåëè âçàèìîäåéñòâèÿ è âàðèàáåëüíîñòè, òåõíîëîãè÷åñêèå ëèíèè ÊÏÈ è ðåàëèçîâàí èíñòðóìåíòàëüíî-òåõíîëîãè÷åñêèé êîìïëåêñ (ÈÒÊ). Ðåçóëü- òàòû òåîðèè è ïðàêòèêè ðàçðàáîòêè ÑÏÑ èçëîæåíû â ðÿäå íàó÷íûõ ñòàòåé è â ýëåêòðîííîé ìîíîãðàôèè â êîíòåêñòå èäåé ÃÏ [11].  ðàìêàõ ïðîåêòà ÃÏ ðàçðà- áîòàíî ñëåäóþùåå: — òåîðèÿ îáúåêòíî-êîìïîíåíòíîãî ïðîãðàììèðîâàíèÿ [4–8] ðàçíîðîäíûõ ÊÏÈ è ìåòîä ñáîðêè èõ ïî ÒË ñ îáåñïå÷åíèåì îáìåíà äàííûõ ìåæäó íèìè ÷åðåç ïðèìèòèâíûå ôóíêöèè ïðåîáðàçîâàíèÿ òèïîâ äàííûõ GDT ñòàíäàðòà ISO/IEC 11404–2007 ê ôóíäàìåíòàëüíûì òèïàì FDT; — ìîäåëè âçàèìîäåéñòâèÿ (Interconnection) ïðîãðàìì, ñèñòåì è ñðåä, îñíî- âàííûõ íà îáùèõ èíòåðôåéñàõ è ñðåäñòâàõ àäàïòàöèè äëÿ ìèãðàöèè (ïåðåíîñà) èõ çà ïðåäåëû öåëåâîé ñðåäû èçãîòîâëåíèÿ ñèñòåì â äðóãóþ ñðåäó, â òîì ÷èñëå â MS.Net, Grid, Vshpere, Cloud Computing, êîòîðûå âêëþ÷àþò ìåõàíèçìû äîñòó- ïà ê ãëîáàëüíûì äàííûì [10]; — îðèãèíàëüíàÿ òåõíîëîãèÿ êîíñòðóèðîâàíèÿ âàðèàáåëüíûõ (variability) ñèñòåì è ÑÏÑ ñ èñïîëüçîâàíèåì ãîòîâûõ ÊÏÈ, êîòîðûå îöåíèâàþòñÿ íà êà÷åñ- òâî, ìîãóò çàìåíÿòüñÿ íîâûìè, áîëåå ôóíêöèîíàëüíûìè è íàäåæíûìè [12–15]; — èíñòðóìåíòàëüíàÿ ñðåäà ÈÒÊ ÃÏ ñ íîâûìè ñðåäñòâàìè è èíñòðóìåíòàìè ïîääåðæêè òåõíîëîãèè ñáîðî÷íîãî ïðîèçâîäñòâà ÑÏÑ èç ÊÏÈ, ïðåäñòàâëåííîãî ñïåêòðîì ÒË, à èìåííî — ðàçðàáîòêà è îáñëóæèâàíèå ÊÏÈ â ðåïîçèòîðèÿõ, îïè- ñàíèå ñïåöèôèêè äîìåíîâ DSL-ÿçûêàìè, ãåíåðàöèÿ ÷ëåíîâ ñåìåéñòâà, îáåñïå÷å- íèå âçàèìîäåéñòâèÿ ÊÏÈ ìåæäó ñîáîé è îöåíêà èõ êà÷åñòâà [16–18, 21]; — ïîäõîä ê ýëåêòðîííîìó îáó÷åíèþ ïðîãðàììèðîâàíèÿ â ñîâðåìåííûõ ßÏ (C#, Java, C++, VBasic) è äèñöèïëèíàì ïðîãðàììíîé èíæåíåðèè [16–20]. Ýòè èäåè, êîíöåïöèè è èíñòðóìåíòû äîïîëíÿþò ÃÏ ñðåäñòâàìè ñîçäàíèÿ èíäóñòðèàëüíûõ ìåòîäîâ èçãîòîâëåíèÿ ÑÏÑ èç ÊÏÈ ïî òåõíîëîãè÷åñêèì è ïðî- äóêòîâûì ëèíèÿì â ñîâðåìåííûõ îïåðàöèîííûõ ñðåäàõ è Èíòåðíåòå [9–18]. Áàçîâûå îïðåäåëåíèÿ îáúåêòîâ ÃÏ: Product family — «ãðóïïà ïðîäóêòîâ èëè óñëóã, êîòîðûå èìåþò îáùåå óïðàâëÿåìîå ìíîæåñòâî ñâîéñòâ, êîòîðûå óäîâëåòâî- ðÿþò ïîòðåáíîñòè îïðåäåëåííîãî ñåãìåíòó ðûíêà èëè âèäà äåÿòåëüíîñòè» («product family/product line — group of products or services sharing a common, managed set of features that satisfy specific needs of a selected market or mission», www.sei.com); ìîäåëü ÊÏÈ � ( , , , , )T I F R S , ãäå T — òèï êîìïîíåíòà, I — èíòåðôåéñ êîì- ïîíåíòà, F — ôóíêöèîíàëüíîñòü; R — ðåàëèçàöèÿ; S — ñåðâèñ âçàèìîñâÿçåé ñ äðóãèìè êîìïîíåíòàìè è ñðåäîé [18–20]; èíòåðôåéñ — ñïåöèôèêàöèÿ ïðîãðàìì è äàííûõ ÊÏÈ â ÿçûêàõ IDL, ÀÐI, WSDL è äðóãèõ äëÿ îáìåíà äàííûìè ñ äðóãèìè ÊÏÈ è ïðîãðàììàìè, â òîì ÷èñ- ëå è ÷ëåíàìè ÑÏÑ [21–23]; ñáîðêà êîìïîíåíòîâ è ãîòîâûõ ÊÏÈ ïî ëèíèÿì ïîäîáíî èíæåíåðèè ïðèëî- æåíèé, äîìåíîâ, ñåìåéñòâ ñèñòåì è ÑÏÑ â ÃÏ [3–5]; ðåïîçèòîðèé — ñåðâèñ ïðåäñòàâëåíèÿ, íàêîïëåíèÿ ÊÏÈ â ýëåêòðîííîì è ñòàíäàðòíîì ïðåäñòàâëåíèÿõ äëÿ èñïîëüçîâàíèÿ èõ ïðè èçãîòîâëåíèè íîâûõ ñèñ- òåì ñåìåéñòâ èç ãîòîâûõ ÊÏÈ äëÿ ðàçíûõ ÏðÎ [20]. ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2013, ¹ 1 131 2. ÐÀÇÂÈÒÈÅ ÎÁÚÅÊÒÍÎ-ÊÎÌÏÎÍÅÍÒÍÎÃÎ ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈß Êîìïîíåíòíîå ïðîåêòèðîâàíèå ÑÏÑ èç ãîòîâûõ ÊÏÈ — íàèáîëåå ïðîäóêòèâíûé ïóòü ðàçðàáîòêè ñëîæíûõ ÏÑ.  íåì îáúåêòû ðàññìàòðèâàþòñÿ íà ëîãè÷åñêîì óðîâíå ïðîåêòèðîâàíèÿ ìîäåëè ÏðÎ è ÏÑ, ñ ïåðåõîäîì ê êîìïîíåíòàì ïðè ôè- çè÷åñêîé ðåàëèçàöèè ìåòîäîâ îáúåêòîâ. Ïðîãðàììíûé êîìïîíåíò — íåêîòîðàÿ àáñòðàêöèÿ, êîòîðàÿ âêëþ÷àåò èíôîðìàöèîííûé ðàçäåë (íàçíà÷åíèå, äàòà èçãî- òîâëåíèÿ, óñëîâèÿ ïðèìåíåíèÿ è ò.ï.) è ñîáñòâåííî àðòåôàêò â âèäå ðåàëèçàöèè (implementation), èíòåðôåéñà (interface) è ñõåìû ðàçâåðòûâàíèÿ (deployment). Êîìïîíåíò îïèñûâàåòñÿ â ëþáîì ßÏ, íå çàâèñÿùåì îò îïåðàöèîííîé ñðåäû è îò ðåàëüíîé ïëàòôîðìû, ìîæåò èìåòü íåñêîëüêî ðåàëèçàöèé è èíòåðôåñîâ èñõî- äÿ èç ñóùíîñòè ìåòîäà è óñëîâèé îïåðàöèîííîé ñðåäû. Èíòåðôåéñ îïðåäåëÿåò äàííûå äëÿ ñâÿçè îäíîãî êîìïîíåíòà ñ äðóãèìè. Ðàçâåðòûâàíèå — ýòî âûïîë- íåíèå ôèçè÷åñêîãî ôàéëà êîìïîíåíòà ñîîòâåòñòâåííî êîíôèãóðàöèè [5–8]. Ïîíÿòèå êîìïîíåíòà ðàñøèðåíî è âêëþ÷àåò øàáëîí, êàðêàñ, êîíòåéíåð. Îíè èñïîëüçóþòñÿ äëÿ ïðåäñòàâëåíèÿ îáùåé ñòðóêòóðû ñëîæíîãî îáúåêòà èëè äëÿ ïîãðóæåíèÿ â íèõ ãîòîâûõ ÊÏÈ. Âñå òèïû êîìïîíåíòîâ çàïîìèíàþòñÿ â ðåïîçè- òîðèè êîìïîíåíòîâ, à èõ èíòåðôåéñû — â ðåïîçèòîðèè èíòåðôåéñîâ. Ñóùíîñòü òåîðèè îáúåêòíî-êîìïîíåíòíîãî ïðîãðàììèðîâàíèÿ. Îñíîâó òå- îðèè ñîñòàâëÿåò ìåòîä êîìïëåêñíîãî àíàëèçà ÏðÎ è êîìïîíåíòíîãî ïîñòðîåíèÿ ÏÑ. Îáúåêòíî-êîìïîíåíòíûé ìåòîä (ÎÊÌ) [6, 7] îáîáùàåò ïîíÿòèå îáúåêòà ñ ïîìîùüþ ìàòåìàòè÷åñêèõ ôîðìàëèçìîâ è òåîðèè Ôðåãå. Îí óñòàíàâëèâàåò òåîðåòè÷åñêóþ è ïðàêòè÷åñêóþ ñâÿçü ìåæäó îáúåêòíûì àíàëèçîì è êîìïîíåíòíûì ìåòîäîì ñîçäàíèÿ ÏÑ. ÎÊÌ ïðåäñòàâëåí àëãåáðîé îáúåêòíîãî àíàëèçà, âíåøíåé è âíóòðåííåé êîìïî- íåíòíîé àëãåáðîé è àëãåáðàè÷åñêîé ñèñòåìîé ïðåîáðàçîâàíèÿ íåýêâèâàëåíòíûõ òèïîâ äàííûõ, ñîáèðàåìûõ èç ðàçíîÿçûêîâûõ ÊÏÈ â ñëîæíûå ñòðóêòóðû ÏÑ [5, 7]. Àëãåáðà îáúåêòíîãî àíàëèçà — ýòî ìíîæåñòâî áàçîâûõ ôóíêöèé îáúåêòíîãî àíàëèçà äëÿ èçìåíåíèÿ äåíîòàò è êîíöåïòîâ îáúåêòîâ (Î) ÏðÎ: � �� �( , )Î , ãäå Î Î Î În� �( , , , )1 2 — ìíîæåñòâî îáúåêòîâ ÏðÎ; Î Îi i i i i� ( , , )Name Den Con — ñîîòâåòñòâåííî çíàê (èìÿ), äåíîòàò è êîíöåïò îáúåêòà; êîíöåïò Con i � � �( , , , )P P Pi i is1 2 ; P P P Pr� �( , , , )1 2 — ìíîæåñòâî ïðåäèêàòîâ. Ðàññìîòðèì áàçîâûå îïåðàöèè îáúåêòíîãî àíàëèçà: — èçìåíåíèå äåíîòàòà ïóòåì äåêîìïîçèöèè îäíîðîäíûõ îáúåêòîâ decds ( )Îi : Î Î Îi i ik� �( , )1 , ãäå Î Îij ij ij ij ij� ( , , )Name Den Con ; �j Con Conij i� ; Den i � � Den Deni ik1 ... è íåîäíîðîäíûõ îáúåêòîâ decdn ( ) : ( , , )Î Î Î Îi i i ik� �1 , ãäå Î Îij ij ij ij ij� ( , , )Name Den Con ; � � j ijCon ; Den Den Deni i ik� 1 ... .; — èçìåíåíèå äåíîòàòîâ ïóòåì êîìïîçèöèè îäíîðîäíûõ îáúåêòîâ comds ( , , ) :Î Îi ik1 � ( , )Î Î Îi ik i1 � � , ãäå Î Îi i i i i� ( , , )Name Den Con ; �j Con i � Con ij ; Den Den Deni ik i1 �... è íåîäíîðîäíûõ îáúåêòîâ comdn ( , , ) : ( , , )Î Î Î Î Îi ik i ik i1 1� � � , ãäå Î Îi i i i i� ( , , )Name Den Con ; Con i � ; Den Den Deni ik i1 �... . Àêñèîìà 1. Åñëè ïðåäèêàò P Pt � , Pt i�Con è P Ît i( ) ïðèíèìàåò çíà÷åíèå èñòèíû, òî conexp( , :)Î P Î Îi t i i� � , ãäå � � � �Î Îi i i i i( , , )Name Den Con ; Con i tP � � �Con i ÿâëÿåòñÿ ðàñøèðåíèåì êîíöåïòà ñóùåñòâóþùåãî îáúåêòà. Àêñèîìà 2. Åñëè ïðåäèêàò Pt i�Con , òî connar( , ) :Î P Î Îi t i i� � , ãäå � � � �Î Îi i i i i( , , )Name Den Con ; Con Con� �i i tP\ , ÿâëÿåòñÿ ñóæåíèåì êîíöåïòà ñó- ùåñòâóþùåãî îáúåêòà. Êàæäàÿ èç îïåðàöèé èìååò îïðåäåëåííûé ïðèîðèòåò è àðíîñòü, à òàêæå ñâÿ- çàíà ñ ñîîòâåòñòâóþùèìè èçìåíåíèÿìè äåíîòàòîâ è êîíöåïòîâ. Óòâåðæäåíèå. Ìíîæåñòâî îïåðàöèé � àëãåáðû � ÿâëÿåòñÿ ïîëíîé ñèñòåìîé îïåðàöèé äëÿ ôóíêöèé îáúåêòíîãî àíàëèçà, îáåñïå÷èâàåò àäåêâàòíîñòü ïåðåõîäà îò ôóíêöèé ê îïåðàöèÿì àëãåáðû îáúåêòíîãî àíàëèçà. 132 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2013, ¹ 1 Òåîðèÿ êîìïîíåíòíîãî ïðîãðàììèðîâàíèÿ âêëþ÷àåò ìîäåëü êîìïîíåíòà, èíòåðôåéñà, êîìïîíåíòíîé ñðåäû è êîìïîíåíòíóþ àëãåáðó ïîñòðîåíèÿ ñëîæíûõ ïðîãðàìì èç ÊÏÈ ñ ïðåîáðàçîâàíèåì òèïîâ äàííûõ, ïåðåäàâàåìûõ ìåæäó íèìè [7]. Ìîäåëü êîìïîíåíòà: Comp CName CInt CFact CImp CServ� ( , , , , ) , ãäå CName — óíèêàëüíîå èìÿ êîìïîíåíòà; CInt CInt� i — ìíîæåñòâî èíòåðôåéñîâ êîìïîíåíòîâ; CFact — óïðàâëåíèå ýêçåìïëÿðàìè êîìïîíåíòà; CImp CImp� j — ìíîæåñòâî ðåàëè- çàöèé êîìïîíåíòà; CServ CServ� r — ìíîæåñòâî ñèñòåìíûõ ñåðâèñîâ. Ìîäåëü èíòåðôåéñà: CInt IntName IntFunc IntSpeci i i i� ( , , ), ãäå IntName i — èìÿ èíòåðôåéñà, IntFunc i — èíòåðôåéñ ôóíêöèè, IntSpec i — ñïåöèôèêàöèÿ èíòåðôåéñà. Ìîäåëü êîìïîíåíòíîé ñðåäû: CE � ( , , , , )NameSpace IntRep ImpRep CServ CServImp , ãäå NameSpace CName� m — ìíîæåñòâî èìåí êîìïîíåíòîâ; IntRep IntRep� i — ðå- ïîçèòoðèé èíòåðôåéñîâ êîìïîíåíòîâ; ImpRep ImpRep� j — ðåïîçèòoðèé ðåàëèçà- öèé; CServ CServ� r — èíòåðôåéñ ìíîæåñòâà ñåðâèñîâ; CServImp CServImp� r — ìíîæåñòâî ðåàëèçàöèé ñåðâèñîâ. Ìîäåëü îáúåäèíåíèÿ êîìïîíåíòîâ. Ñâîéñòâà è õàðàêòåðèñòèêè îáúåêòîâ ìîäåëè FM îòîáðàæàþòñÿ â îïèñàíèè èíòåðôåéñà êîìïîíåíòîâ IDL (ïàðàìåòðû In, Out) è îïåðàöèÿõ ïðèíàäëåæíîñòè: O O Ok k� , ( )In — ìíîæåñòâî âõîäíûõ (In) èíòåðôåéñíûõ îáúåêòîâ; O O Ok k� , ( )Out — ìíîæåñòâî âûõîäíûõ (Out) èíòåðôåéñíûõ îáúåêòîâ. Ðåçóëüòàòîì îáúåäèíåíèÿ äâóõ îáúåêòîâ áóäåò êîìïîíåíòíûé îáúåêò, ó êî- òîðîãî ìíîæåñòâî âõîäíûõ èíòåðôåéñîâ ( )O Ok l� ñîâïàäàåò ño ìíîæåñò- âîì âûõîäíûõ èíòåðôåéñîâ îáúåêòà-ïðèåìíèêà, à ìíîæåñòâî âûõîäíûõ èíòåð- ôåéñîâ ñîâïàäàåò ño ìíîæåñòâîì âûõîäíûõ èíòåðôåéñîâ îáúåêòà–ïåðåäàò÷èêà: O O Ok k k� ( ( ), ( ))Out In , O O Ol l l� ( ( ), ( ))Out In , O O O Ok l k l� � ( ( ), ( ))Out In . Àêñèîìà 3. Êîìïîçèöèÿ îáúåêòîâ O Ok l� êîððåêòíà, åñëè îáúåêò-ïåðåäàò- ÷èê ïîëíîñòüþ îáåñïå÷èâàåò ñåðâèñ, íåîáõîäèìûé îáúåêòó-ïðèåìíèêó, ò.å. èìå- åì � � � � � � �I O I O I Im k n l m nIn Out( ) ( ) . Êîìïîíåíòíûå îáúåêòû ìîãóò èìåòü íåñêîëüêî èíòåðôåéñîâ, íàñëåäóþùèõ èí- òåðôåéñû äðóãèõ îáúåêòîâ ( )O Ok l� , òîãäà ïîñëåäíèå ïðåäîñòàâëÿþò ñåðâèñ äëÿ âñåãî ìíîæåñòâà âûõîäíûõ èíòåðôåéñîâ: O O O Ok l k l� � �Out Out( ) ( ). Åñëè îáúåêò íàñëåäóåò äðóãîé îáúåêò, ó êîòîðîãî ìíîæåñòâî âõîäíûõ èíòåð- ôåéñîâ ñîäåðæèò âñå åãî èíòåðôåéñû, à ìíîæåñòâî âûõîäíûõ èíòåðôåéñîâ ñîäåð- æèò òîëüêî èíòåðôåéñû, êîòîðûå íåîáõîäèìû äëÿ çàäàíèÿ ñåðâèñà, òî ïîëó÷àåì: O O O O I I O O I k l k l m m k l n � � � �� � Out Out In In O ( ) ( ), { : ( ( ) ( )) ut exec( ) : ( , )}O O I Ik l n m� � � �� � � �� . Îáúåêò, êîòîðûé íàñëåäóåòñÿ, ïåðåäàåò âñå èíòåðôåéñû è èìååò ñâîéñòâà: òðàíçèòèâíîñòè � � � � � �O O O O O O O O1 2 3 1 2 2 3 1 3, , : , ; ñèììåòðè÷íîñòè � � � �O O O Ok k k . Êîìïîíåíòíàÿ àëãåáðà: � � { , , }� � �1 2 3 , ãäå �1 — âíåøíÿÿ àëãåáðà, �2 2�{ , , }CSet CESet � — âíóòðåííÿÿ àëãåáðà êîìïîíåíòîâ, �3 3�{ , , }Set CESet � — àëãåáðà ñáîðêè êîìïîíåíòîâ. Âíåøíÿÿ àëãåáðà: �1 1� { , , }CSet CESet � , ãäå�1 1 2 3 4� { , , , }CE CE CE CE , ñî- äåðæèò îïåðàöèè: èíñòàëëÿöèè, îáúåäèíåíèÿ êîìïîíåíòíûõ ñðåä, óäàëåíèÿ êîì- ïîíåíòà èç êîìïîíåíòíîé ñðåäû, çàìåùåíèÿ êîìïîíåíòà â ÏÑ (PS). Âíóòðåííÿÿ àëãåáðà: �� � { , , }CSet CESet � 2 , ãäå � 2 � { , , }Î O Orefac Reing Rever ñîäåðæèò îïåðàöèè ðåôàêòîðèíãà, ðåèíæåíåðèè è ðåâåðñíîé èíæåíåðèè êîìïîíåíòîâ. Àëãåáðà ñáîðêè: �3 3� { , , }CSet CESet � , ãäå� 3 � { , , ,incon redev linkconf makeaw add insert redo}, , , — îïåðàöèè ñáîðêè è âçàèìîäåéñòâèÿ ÊÏ ñ äàííûìè, îáðàáîòêà êîòîðûõ ïðîâîäèòñÿ ñ ïîìîùüþ àëãåáðàè÷åñêèõ ñèñòåì ïðåîáðàçîâàíèÿ òè- ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2013, ¹ 1 133 ïîâ è ôîðìàòîâ äàííûõ, ïåðåäàâàåìûõ ìåæäó ÊÏÈ, ñ ïîìîùüþ ïðèìèòèâíûõ ôóíêöèé ãåíåðàöèè òèïîâ GDT ê FDT è îáðàòíî. Ê îïåðàöèÿì ñáîðêè îòíåñåíû ñëåäóþùèå: Interconnect (incon), program system — PS A B C À  Ñ( , , , , , )Int Int Int — îïå- ðàöèè âçàèìîäåéñòâèÿ ïðîãðàìì, êîìïîíåíòîâ A, B, C è èõ èíòåðôåéñîâ Int À , Int  , IntÑ ; redev (Int IntPS À Â, ) — îïåðàöèè òðàíñôîðìàöèè òèïîâ äàííûõ êîìïîíåí- òîâ A , B ; linkconf Int Int IntIDL IDL IDLPS A B C( , , , ( , , ) — îïåðàöèè ñáîðêè ïóòåì êîí- ôèãóðèðîâàíèÿ ïðîãðàìì A, B , C â îäíîì ÿçûêå L è ïàðàìåòðàìè èíòåðôåéñà â ÿçûêå IDL; linkconf Int Int Int )IDL IDL ÀPISPF A B CL L L( , , , ( , ,1 2 3 — îïåðàöèè ñáîðêè ðàç- íîÿçû÷íûõ êîìïîíåíòîâ, êîòîðûå ïðåäñòàâëåíû ßÏ ( , , )L L L1 2 3 ñ ñîîòâåòñòâóþ- ùèìè èíòåðôåéñàìè â ÿçûêàõ IDL è API; makeaw AS A( ) — îïåðàöèè óäàëåíèÿ êîìïîíåíòà À èç ñèñòåìû AS; add AS A C( , ) — îïåðàöèè äîáàâëåíèÿ êîìïîíåíòîâ À Ñ, ê ñèñòåìå AS; insert F AS� — îïåðàöèÿ âñòàâêè êîìïîíåíòà F â ñèñòåìó AS; rename A B� — îïåðàöèÿ èçìåíåíèÿ èìåíè êîìïîíåíòà; redo x y BD, � — îïåðàöèè ïåðåäà÷è äàííûå x y, â ÁÄ ñ ñîîòâåòñòâóþùèì ôîðìàòîì. Òåîðèÿ ïðåîáðàçîâàíèÿ äàííûõ.  ðàìêàõ ÊÏ è ÎÊÌ ðàçðàáîòàíà òåîðèÿ ïðåîáðàçîâàíèÿ ñëîæíûõ FDT ê ïðîñòûì â ðàçíûõ ßÏ, êîòîðàÿ èçëîæåíà â [3–5].  íåé îáðàçîâàíû àëãåáðàè÷åñêèå ñèñòåìû äëÿ ïðîñòûõ è ñòðóêòóðíûõ òèïîâ äàí- íûõ è ôóíêöèè ïðåîáðàçîâàíèÿ ñòðóêòóðíûõ òèïîâ ê ïðîñòûì. Åñëè èìååò ìåñòî íåðåëåâàíòíîñòü â ïåðåäà÷å äàííûõ îò îäíîãî ßÏ ê äðóãîìó, òî èñïîëüçóþòñÿ ïðè- ìèòèâíûå ôóíêöèè ïðåîáðàçîâàíèÿ (íàïðèìåð, òèï integer ê character è íàîáîðîò). Ýòà òåîðèÿ ðàçâèòà íàìè äëÿ îáùèõ òèïîâ äàííûõ GDT. Îíè îòîáðàæàþòñÿ â òèïû äàííûõ ñîâðåìåííûõ ßÏ ïóòåì ãåíåðàöèè GDT � FDT [24, 25]. Ãåíåðà- öèÿ áàçèðóåòñÿ íà íàáîðå ôóíêöèé (ïðîöåäóð) ñî ñëåäóþùèì ñîäåðæàíèåì: — ïðåîáðàçîâàíèå òèïîâ äàííûõ äëÿ ïîñëåäîâàòåëüíîñòè ÿçûêîâ ßÏ ßÏ1, ,� n ; — ôîðìàëüíîå ïðåäñòàâëåíèå îïèñàíèÿ òèïîâ äàííûõ FDT; — ïðåäñòàâëåíèå GDT â ôîðìàò FDT äëÿ îáðàáîòêè; — îòîáðàæåíèå òèïîâ äàííûõ GDT FDT� . Äëÿ ðåàëèçàöèè íàáîðà ôóíêöèé ðàçðàáàòûâàþòñÿ: — áèáëèîòåêà ôóíêöèé ïðåîáðàçîâàíèÿ òèïîâ äàííûõ GDT (ïðèìèòèâíûõ, àãðåãàòíûõ è ãåíåðèðîâàííûõ) ê FDT (ïðîñòûì, ñòðóêòóðíûì è ñëîæíûì); — ñïåöèôèêàöèÿ âíåøíèõ òèïîâ äàííûõ êîìïîíåíòîâ, ïîäñèñòåì è ñèñòåì ñ èñïîëüçîâàíèåì GDT è íàêîïëåíèå èõ â îäíîì èç ðåïîçèòoðèåâ èíòåãðèðîâàí- íîé ñðåäû ÈÒÊ ÃÏ [21]; — ôîðìàòèðîâàíèå äàííûõ äëÿ íîâûõ ïîñðåäíèêîâ, ïîäîáíûõ stub, ñ îïåðà- öèÿìè îáðàùåíèÿ ê ñîîòâåòñòâóþùèì ôóíêöèÿì GDT FDT� . Äàííàÿ òåîðèÿ ïðåîáðàçîâàíèÿ òèïîâ äàííûõ ìîæåò ïðèìåíÿòüñÿ ïðè âû- ÷èñëåíèè êîìïîíåíòîâ â ñðåäå Cloud Computing. Âàðèàíò ðåàëèçàöèè îòäåëüíûõ àñïåêòîâ òåîðèè ÊÏ âûïîëíåí íà âåá-ñàéòå http://sestudy.edu-ua.net.  íåì ïðåäñòàâëåí ñïåêòð ïðîñòûõ ëèíèé òåõíîëîãèè ðàçðàáîòêè è âçàèìîäåéñòâèÿ ïðîãðàìì, ñèñòåì è ÊÏÈ, à òàêæå íà ëèíèè ðàçðà- áîòêè ÊÏÈ, ïîèñêà ÊÏÈ â ðåïîçèòîðèè, ïðîãðàììèðîâàíèÿ ÊÏÈ â ÿçûêàõ C#, Java è å-îáó÷åíèÿ äèñöèïëèíå — ïðîãðàììíàÿ èíæåíåðèÿ. 3. ÀÑÏÅÊÒÛ ÒÅÎÐÈÈ ÂÇÀÈÌÎÄÅÉÑÒÂÈß ÏÐÎÃÐÀÌÌ, ÑÈÑÒÅÌ È ÑÐÅÄ Ñóùíîñòü òåîðèè. Ïðîáëåìà âçàèìîäåéñòâèÿ ñèñòåì ðåàëèçîâàíà â ñòàíäàðò- íîé ìîäåëè OSI (Open System Interconnection) îòêðûòûõ ñèñòåì. Îíà îïðåäå- 134 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2013, ¹ 1 ëÿåò ðàçëè÷íûå óðîâíè âçàèìîäåéñòâèÿ ñèñòåì â êîìïüþòåðíûõ ñåòÿõ. Ñðåä- ñòâà âçàèìîñâÿçåé îïðåäåëåíû íà ñåìè óðîâíÿõ: ïðèêëàäíîé, ïðåäñòàâèòåëü- íûé, ñåàíñîâûé, òðàíñïîðòíûé, ñåòåâîé, êàíàëüíûé è ôèçè÷åñêèé. Îíè îáåñïå÷èâàþò ñèñòåìíûå ñðåäñòâà âçàèìîäåéñòâèÿ, ðåàëèçóåìûå îïåðàöèîííîé ñèñòåìîé è àïïàðàòíûìè ñðåäñòâàìè. Ìîäåëü OSI íå âêëþ÷àåò ñðåäñòâà âçàè- ìîäåéñòâèÿ ïðèëîæåíèé â ðàçíûõ ñðåäàõ. Äëÿ âçàèìîäåéñòâèÿ ïðèëîæåíèé èñïîëüçóþòñÿ ìåõàíèçìû òèïà RPC/RMI, êîòîðûå ðåàëèçóþò ñâÿçü ìåæäó êîìïîíåíòàìè ïðèëîæåíèÿ è ìîãóò îáðàùàòüñÿ ñ çàïðîñîì ê ïðèêëàäíîìó óðîâíþ ìîäåëè OSI. Òàêèå ìåõàíèçìû âçàèìîäåéñòâèÿ ðåàëèçîâàíû â ñîâðåìåííûõ îïåðàöèîííûõ ñðåäàõ (VS.Net, Corba, Eclipse, Java è äð.) è ïîýòîìó ïðèëîæåíèÿ, èçãîòîâëåííûå â îäíîé èç ñðåä, íå ìîãóò ïåðåíîñèòüñÿ â äðóãóþ ñðåäó [9–11, 26–32].  ñâÿçè ñ ýòèì ïðåäëîæåí ïîäõîä ê âçàèìîäåéñòâèþ ÷ëåíîâ ñåìåéñòâà ìåæäó ñîáîé, åñëè îíè ðàñïîëàãàþòñÿ â ðàçíûõ ñðåäàõ (ðèñ. 2). Ìîäåëü âçàèìîäåéñòâèÿ Ì inter èìååò òàêîé âèä: Ì Ì Ì Ìinter pro sys env� { , , }, ãäå Ì pro Com Int, Pr, Pro� { , } — ìîäåëü ïðî- ãðàììû èëè ÏÑ; Com— êîìïîíåíò, Int — èíòåðôåéñ, Pr — ïðîãðàììà, Pro — òèï çàïðîñà ( , , )RPC RMI Icontract ; Ì env Env Int Pro� { , , } — ìîäåëü ñðåäû, â êîòîðîé Int Pro Icontract / IP, , çàäà- þò ñîâîêóïíîñòü âíåøíèõ èíòåðôåéñîâ, ïðîãðàìì ñ ïîìîùüþ ïðîòîêîëà Icontract / IP, ÷åðåç êîòîðûé ïåðåäàþòñÿ äàííûå ìåæäó ðàñïðåäåëåííûìè ïðî- ãðàììàìè è ñðåäàìè. ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2013, ¹ 1 135 Ðèñ. 2. Âçàèìîäåéñòâèå ìåæäó ñîâðåìåííûìè ñðåäàìè MS Visual Studio Programming Language (C, VC++, VC#, Java) Program Libraries (DLL): CLR, CTS, CLS JAVA RMI Broker JavaBeans Program Libraries ECLIPSE Plug-ins for Instruments & Tools Program Libraries CORBA ORB Programming Language (C, VC++, VC#, SmallTalk, Java, Cobol, Visual Basic, Ada-96) RPC, Program Libraries IBM Class Sphere Programming Language (ALGOL, PL/1, Cobol FORTRAN, Assembler) Program Libraries Ìîäåëü ñðåäû Ì inter ïî îòíîøåíèþ ê ñòàíäàðòíîé ìîäåëè OSI — ìîäåëü âåðõíåãî óðîâíÿ, âêëþ÷àåò ïðîãðàììíûå ýëåìåíòû, èíòåðôåéñ è ñðåäó. Ïðîãðàììíûé ýëåìåíò ñïåöèôèöèðóþòñÿ ßÏ, DSL, IDL, API è ñåòåâûìè ÿçûêàìè XDL, RDF è ò.ï. Ýëåìåíòû ñîõðàíÿþòñÿ â áèáëèîòåêàõ è ðåïîçèòîðèÿõ ñðåäû ÈÒÊ ÃÏ [21] è èñïîëüçóþòñÿ ïðè âûïîëíåíèè ðàçíûõ ôóíêöèé òåõíîëîãèè îáúåäèíåíèÿ è âçàèìîäåéñòâèÿ ÊÏÈ, ïðîãðàìì è ñèñòåì. Èíòåðôåéñ [22, 23] êàê îáúåêò ìîäåëè âçàèìîäåéñòâèÿ âêëþ÷àåò ïàðàìåòðû, íà- áîð îïåðàöèé è ïðåäèêàòîâ, êîòîðûå îïðåäåëÿþò íåîáõîäèìûå äåéñòâèÿ ïî îáðà- áîòêå äàííûõ, ïåðåäàííûõ îò îäíîãî ïðîãðàììíîãî ýëåìåíòà ê äðóãîìó. Îí èãðàåò ðîëü ïîñðåäíèêà ìåæäó ïðîãðàììàìè, êîòîðûå îáìåíèâàþòñÿ ìåæäó ñîáîé äàííû- ìè. Åñëè òèïû äàííûõ îêàçûâàëèñü íåðåëåâàíòíûìè, âûïîëíÿëîñü èõ ïðÿìîå è îá- ðàòíîå ïðåîáðàçîâàíèÿ. Ïðîáëåìó âçàèìîäåéñòâèÿ ìåæäó êëèåíòíûìè è ñåðâåðíû- ìè ïðîãðàììàìè âûïîëíÿþò Service consumer è Service provider ÷åðåç ïðîòîêîë Icontract â ñèñòåìå WCF (http://127.0.01:4000/icontract). Ïðè âçàèìîäåéñòâèè ïîëüçî- âàòåëåé è ïðîâàéäåðîâ ñ ïîìîùüþ ïðîòîêîëà Icontract ìîãóò âîçíèêíóòü «êîíôëèê- òíûå ñèòóàöèè», ñâÿçàííûå ñ íåðåëåâàíòíîñòüþ òèïîâ è ôîðìàòîâ äàííûõ. Äëÿ ïîääåðæêè ïðîöåññîâ ðàçðàáîòêè ïðîãðàìì â ßÏ (MS.Net, CORBA, Java) è ñáîðêè èõ â ÷ëåíû ÑÏÑ â ÈÒÊ ÃÏ âêëþ÷åíà ñèñòåìà Eclipse, íà áàçå êî- òîðîé ðàçðàáîòàíû ñïåöèàëüíûå ìåõàíèçìû âçàèìîäåéñòâèÿ äëÿ ñëåäóþùèõ ïàð ñðåä: Visual Studio� Eclipse, CORBA� VS.Net, IBM VSphere� Eclipse. Ðåàëèçàöèÿ ìîäåëåé âçàèìîäåéñòâèÿ â ÈÒÊ. Ìîäåëè âçàèìîäåéñòâèÿ ïðîãðàìì, ñèñòåì è ñðåä ïðàêòè÷åñêè ðåàëèçîâàíû ñòóäåíòàìè ÊÍÓ èìåíè Òàðà- ñà Øåâ÷åíêî è ÌÔÒÈ [26–28] â îïåðàöèîííûõ ñðåäàõ Visual Studio, CORBA, VSphere, Eclipse. Íà ïðèìåðå ýòèõ ñðåä ïðîäåìîíñòðèðîâàíû ìåõàíèçìû âçàèìî- äåéñòâèÿ ïðîãðàìì è ñèñòåì, à òàêæå ïåðåíîñ ïðîãðàììû èç îäíîé ñðåäû â äðó- ãóþ. Ïðèíöèïû ðåàëèçàöèè äàííûõ ìîäåëåé ïðèâåäåíû íèæå. Ìîäåëü âçàèìîäåéñòâèÿ ñèñòåì Visual Studio � Eclipse ðåàëèçîâàíà íà ïðè- ìåðå ïîñòðîåíèÿ ïðîãðàìì â ÿçûêå C# Visual Studio, ðàçìåùåíèÿ èõ â ðåïîçèòî- ðèè Eclipse è âûïîëíåíèè ñðåäñòâàìè ïëàãèíà Emonic è êîìïîíåíòà NAnt ïëàò- ôîðìû VS.Net. Äëÿ ýòèõ ïðîãðàìì ñîçäàåòñÿ ñîîòâåòñòâóþùèé àðõèâ, êîòîðûé ðàçàðõèâèðóåòñÿ ïðè èíòåãðàöèè â àíàëîãè÷íûå ïàïêè ñðåäû Eclipse. Äëÿ âûïîë- íåíèÿ ïðîãðàìì â ñðåäå Eclipse ñîçäàåòñÿ ïðîåêò, äëÿ êîòîðîãî èç êîíòåêñòíîãî ìåíþ âûáèðàåòñÿ ïóíêò Import FileSystem� è èç ôàéëîâîé ñèñòåìû èìïîðòèðó- åòñÿ âûáðàííûé ïðîåêò.  êîíôèãóðàöèîííîì ôàéëå ïðîåêòà (.build) èçìåíÿåòñÿ åãî ñîäåðæàíèå ïóòåì çàäàíèÿ èìåí èñõîäíûõ ôàéëîâ, áèáëèîòåê è ôàéëîâ ðå- ñóðñîâ. Ïðè ïåðåõîäå â ñðåäó Eclipse èñïîëüçóþòñÿ èñõîäíûå ôàéëû ïðîãðàììû, dll-áèáëèîòåêè VS.Net è ôàéëû ðåñóðñîâ (.resx). Ïåðåõîä èç ýòîé ñðåäû â Visual Studio èñïîëüçóåò èìïîðò ïðîåêòà â ñðåäó Eclipse. Ìîäåëü âçàèìîäåéñòâèÿ ñðåä CORBA � VS.Net ðåàëèçîâàíà íà ïðèìåðå ïðîãðàììû â ÿçûêå Java ñèñòåìû CORBA, êîòîðàÿ ïîñëå ñîîòâåòñòâóþùåé êîì- ïèëÿöèè è IDL-îïèñàíèÿ èíòåðôåéñà ïåðåäàåòñÿ áðîêåðó ORB. Ïåðåíîñ ýòîé ïðîãðàììû íà ïëàòôîðìó MS.Net ïðîâåäåí ñ ïîìîùüþ ïàêåòà IIOPNet. Ðåàëèçà- öèÿ çàäà÷è âçàèìîäåéñòâèÿ êîìïîíåíòîâ, ðàçðàáîòàííûõ â MS.Net (êëèåíòñêàÿ ÷àñòü) è Java (ñåðâåðíàÿ ÷àñòü), âûïîëíåíî ñèñòåìîé CORBA. Âû÷èñëåííûå çíà- ÷åíèÿ äàííûõ íà ïëàòôîðìå MS.Net ÷åðåç ìàðøàëèíã MarshalByRefObject âîç- âðàùàþòñÿ èñõîäíîìó îáúåêòó. Âçàèìîäåéñòâèå ïðîãðàìì ìåæäó äâóìÿ ñðåäàìè Java è MS.Net âûïîëíåíî ïðîöåäóðàìè: êîìïèëÿöèÿ ñåðâåðíîé ÷àñòè ïðèëîæå- íèÿ; ñîçäàíèå ñåðâåðíîãî Skeleton è îïèñàíèå èíòåðôåéñíîãî îáúåêòà â ÿçûêå IDL ÷åðåç óòèëèòû rmic; ïðåîáðàçîâàíèå ïàðàìåòðîâ IDL-îïèñàíèÿ ñðåäñòâàìè CLS-áèáëèîòåêè è ïàêåòà IIOPNet, ïðèñîåäèíÿþùåãî êëèåíòñêóþ ÷àñòü ê áèáëè- îòåêå ñîîòâåòñòâóþùèì ñåðâèñîì. Ìîäåëü âçàèìîäåéñòâèÿ VSphere� Eclipse èçó÷àåòñÿ äëÿ äàëüíåéøåé åå ðåàëè- çàöèè â çàäàííîé ñðåäå VSphere. Äëÿ ýêñïåðèìåíòà òàêæå ðàçðàáàòûâàåòñÿ ïðîãðàì- 136 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2013, ¹ 1 ìà â ßÏ, à îïèñàíèå èíòåðôåéñà — â Àв. Ðåàëèçîâàííàÿ ïðîãðàììà áóäåò âûïîë- íÿòüñÿ ñíà÷àëà â âèðòóàëüíîé ñðåäå VSphere è Eclipse �VS.Net. 4. ÎÐÈÃÈÍÀËÜÍÛÉ ÏÎÄÕÎÄ Ê ÊÎÍÑÒÐÓÈÐÎÂÀÍÈÞ ÂÀÐÈÀÁÅËÜÍ²Õ ÑÏÑ Ïðîáëåìà èçìåíåíèÿ ôóíêöèîíàëüíîñòè ÷ëåíà ÑÏÑ èëè ÊÏÈ ñâÿçàíà ñ èçìå- íåíèåì òðåáîâàíèé çàêàç÷èêà, íåîáõîäèìîñòüþ ïåðåíîñà ÑÏÑ â íîâóþ ñðåäó ôóíêöèîíèðîâàíèÿ èëè çàìåíû íåêîòîðîãî ÊÏÈ íà äðóãîé (íàïðèìåð, ñ áîëåå ëó÷øèìè ïîêàçàòåëÿìè êà÷åñòâà è ò.ï.). Ïîýòîìó èññëåäîâàíèå ïðîáëåìû âà- ðèàáåëüíîñòè ñèñòåì è ñåìåéñòâ ÑÏÑ, îðèåíòèðîâàííîé íà ïðîèçâîäñòâî âà- ðèàíòîâ ÷ëåíà ñåìåéñòâà, ïðîâîäèëîñü â ðàìêàõ ïðîåêòà ÃÏ. Ñîçäàíà òåîðèÿ ìîäåëèðîâàíèÿ ðàçíûõ âàðèàíòîâ ÷ëåíîâ ÑÏÑ â èíæåíåðèè ÏðÎ. Ðåçóëüòàòû òåîðèè è ïðàêòèêè îïóáëèêîâàíû â ðÿäå íàó÷íûõ ïóáëèêàöèé [11–14, 32, 33], ýëåêòðîííîé ìîíîãðàôèè [15], à òàêæå ïðåäñòàâëåíû â ÈÒÊ ÃÏ. Îïðåäåëåíèå âàðèàáåëüíûõ ñèñòåì. Âàðèàáåëüíîñòü — ñïîñîáíîñòü ñåìåé- ñòâà ñèñòåì, îòäåëüíîé ñèñòåì ÑÏÑ èëè àðòåôàêòîâ ê ðàñøèðåíèþ, çàìåíå è êîí- ôèãóðàöèè èõ äëÿ ðåøåíèÿ çàäà÷ êîíêðåòíîé ÏðÎ [32]. Èäåÿ âàðèàáåëüíîñòè ÑÏÑ ïîÿâèëàñü â ðàìêàõ ðàáîò, ñâÿçàííûõ ñ Product Lines SEI, êàê ìåõàíèçì ïîä- äåðæêè âàðèàíòîâ ñèñòåì ñåìåéñòâà, èçãîòîâëåííûõ èç ÏÏ (êîìïîíåíòîâ, àñåòîâ, ÊÏÈ, ñåðâèñîâ) ïî òðåáîâàíèþ çàêàç÷èêà. Âàðèàíòû ÑÏÑ îáåñïå÷èâàþòñÿ «èç- âëå÷åíèåì» èç íåãî îòäåëüíûõ ÊÏÈ ëèáî çàìåíîé, âñòàâêîé â îïðåäåëåííûå òî÷- êè íîâûõ ôóíêöèé ÊÏÈ äëÿ óäîâëåòâîðåíèÿ òðåáîâàíèé çàêàç÷èêà (ðèñ. 3). Ñåìåéñòâî ÑÏÑ (SPS) — ýòî êîðòåæ èç ñîâîêóïíîñòè ìîäåëåé: Ì M KPV PRG RPC M M M MFMSPS PrO var Config ref� { , , , , , , , }, ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2013, ¹ 1 137 Ðåïîçèòîðèé ðåñóðñîâ ÑÏÑ Òðåáîâàíèÿ ê ÏÑ è ÷ëåíàì ÑÏÑ Àðõèòåêòóðû, ìîäåëè ÏÑ è ÷ëåíîâ ÑÏÑ Ãîòîâûå ðåñóðñû (ÊÏÈ, àñåòû, àðòåôàêòû) ÑÏÑ Öåíòðàëèçîâàííàÿ áàçà äàííûõ äëÿ îáðàáîòêè ÊÏÈ, ÏÑ è ÷ëåíîâ ÑÏÑ Óíèôèöèðîâàííûé ïàñïîðò ðåñóðñà Ôîðìàëüíîå îïèñàíèå äîìåíà äëÿ ÑÏÑ Ôóíêöèîíàëüíûé ðàçðåç 1 Îáúåêò 2 Îáúåêò 4 Îáúåêò 3 Îáúåêò 6 Îáúåêò 1 Ôðåéìâîðê Êîìïîíåíòû äëÿ ôóíêöèé îáúåêòîâ ÊÏÈ, àðòåôàêòû èç áèáëèîòåêè, ðåïîçèòîðèÿ Íàéòè, çàïèñàòü - ýëåìåíòû Ñïèñîê ïîèñêîì, õðàíåíèåì ïîòðåáíîñòÿìè, Óïðàâëåíèå - êîìïîíåíòîâ, - ðåøåíèé - Óñëóã, ñåðâèñîâ Óïîðÿäî÷åííûé ñïèñîê Ïîèñê ñåðâèñîâ Óñëóãè çàêàç÷èêîâ Ïîòðåáíîñòè Òàáëèöà äàííûõ 1 Òàáëèöà äàííûõ 6 Òàáëèöà äàííûõ 5 Òàáëèöà äàííûõ 2 Ðèñ. 3. Ñòðóêòóðà ìîäåëè ïðîåêòèðîâàíèÿ ÑÏÑ â âàðèàíòàõ ãäå M PrO — ìîäåëü ÏðÎ; M FM — ìîäåëü õàðàêòåðèñòèê ÷ëåíîâ ñåìåéñòâà ÑÏÑ; KPV — ìíîæåñòâî ÊÏÈ; PRG — ïðåäèêàò ïðèíàäëåæíîñòè ê KPV ; RPC — ñáîðî÷íûé ïðåäèêàò, îïðåäåëÿþùèé îïåðàöèè ñáîðêè ÊÏÈ â îò- äåëüíûå ÷ëåíû ñåìåéñòâà ÑÏÑ; M var — ìîäåëü âàðèàáåëüíîñòè ÏÑ, ÑÏÑ; M Config — ìîäåëü ïðîöåññà ñáîðêè (êîíôèãóðàöèè); M ref — ìîäåëü ðåôàêòîðèíãà. Ìîäåëü M var îïðåäåëèì ñ ïîìîùüþ äâóõ ñâÿçàííûõ ìåæäó ñîáîé ìîäåëåé: îáú- åêòíîé (ÎÌ) è êîìïîíåíòíîé (ÊÌ). Èõ ïðåäñòàâëåíèå ïðîâåäåíî êàê óñîâåðøåíñòâî- âàíèå ìîäåëüíîé ñðåäû è êîìïîíåíòíîé àëãåáðû ÏÑ, îïèñàííûõ â òåîðèè ÊÏ [4]. Ñîñòàâëÿþùèå ýëåìåíòû ìîäåëüíîé ñðåäû ÊÏ ÈÒÊ — îáúåêòíàÿ, êîìïîíåíò- íàÿ âàðèàíòíàÿ ìîäåëè ÑÏÑ, çàäàâàåìûå íà ÷åòûðåõ óðîâíÿõ ïðîåêòèðîâàíèÿ. Îáúåêòíàÿ ìîäåëü èìååò âèä: OÌ � � �G G G Gt t t t 1 2 3 4 ; , , , ãäåGt 1 — ãðàô îáúåê- òîâ ÏðÎ, ñîçäàâàåìûé íà îáùåì óðîâíå ïðîåêòèðîâàíèÿ ( )t �1 ; G 2 2 — FM õàðàê- òåðèñòè÷åñêîãî óðîâíÿ ( )t � 2 ; G 3 3 — àðõèòåêòóðíî-êîìïîíåíòíàÿ ìîäåëü ñòðóê- òóðíîãî óðîâíÿ ( )t � 3 ; G t 4 — èíòåðôåéñíàÿ ìîäåëü âçàèìîäåéñòâèÿ êîìïîíåíòîâ ÑÏÑ íà ïîâåäåí÷åñêîì óðîâíå ( )t � 4 . Îáúåêòàì ôóíêöèé G t 1 è èõ õàðàêòåðèñòèêàì ñîîòâåòñòâóþò ìåòîäû è äàí- íûå (óðîâíÿ 2, 3), íåîáõîäèìûå äëÿ èõ ðåàëèçàöèè â ÑÏÑ è îáåñïå÷åíèÿ èõ âçàèìîäåéñòâèÿ. Êîìïîíåíòíàÿ ìîäåëü ÑÏÑ — ðàçâèòèå OÌ, ìåòîäû îáúåêòîâ êîòîðîé ðåà- ëèçóþòñÿ ÊÏÈ äëÿ îäíîãî è òîëüêî îäíîãî åå îáúåêòà è ñîîòâåòñòâåííî èíòåð- ôåéñîâ ìåæäó íèìè. Ìîäåëü èìååò ñëåäóþùèé âèä: ÊÌ RC, In, ImC, Fim� � � , ãäå RC — áàçîâûå êîìïîíåíòû ìíîæåñòâà êîìïîíåíòîâ Ñ, êîòîðûå ñîîòâåòñòâó- þò áàçîâûì îáúåêòàì ìîäåëè ÎÌ; In — èíòåðôåéñ êîìïîíåíòîâ, ñðåäè ïàðàìåò- ðîâ êîòîðîãî çàäàåòñÿ èìÿ òî÷êè âàðèàíòíîñòè; ImC — ðåàëèçàöèÿ áàçîâîãî êîì- ïîíåíòà â çàäàííîé ñðåäå; Fim ( )� — ôóíêöèè ïðåîáðàçîâàíèÿ âõîäíûõ è âûõîä- íûõ ïàðàìåòðîâ èíòåðôåéñà âî ìíîæåñòâå äàííûõ ñèãíàòóðû èíòåðôåéñà. Êîìïîíåíòíàÿ ìîäåëü îðèåíòèðîâàíà íà îáåñïå÷åíèå âàðèàíòíîñòè ñèñòåì ñåìåéñòâà íà ðàçíûõ óðîâíÿõ ìîäåëè è ïëàòôîðì âûõîäíîãî êîäà, à òàêæå îöåí- êè ïîëó÷åííîãî óðîâíÿ âàðèàáåëüíîñòè ïîòðåáíîñòÿì çàêàç÷èêà. Ðàçðàáîòêà âàðèàáåëüíûõ ÑÏÑ ñîñòîèò â ðåàëèçàöèè âàðèàíòîâ ÷ëåíîâ ÑÏÑ, à òàêæå ïðîöåññîâ êîíôèãóðèðîâàíèÿ è ðåôàêòîðèíãà ÊÏÈ èëè ÷ëåíîâ ÑÏÑ. Îñíîâíóþ ðîëü â ýòèõ ïðîöåññàõ âûïîëíÿåò êîíôèãóðàòîð â ñðåäå ÈÒÊ ÃÏ. Îí îáåñïå÷èâàåò îáúåäèíåíèå ÊÏÈ è èõ èíòåðôåéñîâ ñ âàðèàíòàìè îòäåëüíûõ ðàáî- ÷èõ ïðîäóêòîâ ÏÑ, êîòîðûå íàõîäÿòñÿ â ðåïîçèòîðèè è ðåàëèçóþò ëîãè÷åñêóþ âàðèàíòíîñòü. ÑÏÑ ñ ìåõàíèçìàìè âàðèàíòîâ ñòàíîâèòñÿ ñïîñîáíûì ê ðàñøèðåíèþ, èçìå- íåíèþ è íàñòðîéêè íà íîâóþ ñðåäó ðåàëèçàöèè. Äëÿ óïðàâëåíèÿ êîíôèãóðàöèåé ÑÏÑ èç ÊÏÈ ðåïîçèòîðèé ÈÒÊ ÃÏ äîïîëíåí ìåõàíèçìàìè õðàíåíèÿ, ââåäåíèÿ (èçúÿòèÿ) âàðèàíòîâ ÊÏÈ è ñîïîñòàâëåíèÿ èõ ìåæäó ñîáîé, à òàêæå ïðèíÿòèÿ ðåøåíèé ïî ñáîðêå, îáúåäèíåíèþ ðàçíûõ âàðèàí- òîâ ÊÏÈ è ñ ó÷åòîì òðåáîâàíèé ê ïîêàçàòåëÿì êà÷åñòâà ÏÑ, ñòîèìîñòè è äð. Óïðàâëåíèå êîíôèãóðàöèåé ÑÏÑ íà÷èíàåòñÿ ñ îáñëóæèâàíèÿ ÊÏÈ (ïîäáîð, ïîèñê, âûáîð) â ðåïîçèòîðèè, ïðîâåäåíèÿ ñáîðêè ÊÏÈ è ñîçäàíèÿ êîíôèãóðàöè- îííîãî ôàéëà äëÿ âûïîëíåíèÿ ÏÑ èëè ÑÏÑ â ñðåäå ÈÒÊ ÃÏ. 138 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2013, ¹ 1 5. ÎÐÈÃÈÍÀËÜÍÛÉ ÏÎÄÕÎÄ Ê ÈÍÆÅÍÅÐÈÈ ÊÀ×ÅÑÒÂÀ ÑÏÑ Ñóùíîñòü äàííîãî ïîäõîäà ñîñòîèò â îáîñíîâàíèè ïðîöåññà êîíñòðóèðîâàíèÿ êà÷åñòâåííûõ ÷ëåíîâ ñåìåéñòâ ÏÑ è ãåíåðàöèè íîâûõ ÏÑ ñ ðåãóëèðîâàíèåì ïîêàçàòåëåé êà÷åñòâà ÑÏÑ èç ãîòîâûõ ÊÏÈ è îáÿçàòåëüíûìè îöåíêàìè ïîêàçà- òåëåé êà÷åñòâà [12, 13]. Äàííûé ïîäõîä îòñóòñòâóåò â ÃÏ. Èíæåíåðèÿ êà÷åñòâà ÑÏÑ îñíîâûâàåòñÿ íà îïðåäåëåíèè çàäà÷ äëÿ äàííîé ÏðÎ ñ òî÷êè çðåíèÿ êà- ÷åñòâà. Ê èíæåíåðèè êà÷åñòâà ÑÏÑ îòíåñåíû [14, 15]: — èçìåðÿåìûå àòðèáóòû àðòåôàêòîâ ñåìåéñòâà ÏÑ, ïîêàçàòåëè êà÷åñòâà êî- òîðûõ íåîáõîäèìî îöåíèâàòü; — èçìåðÿåìûå àòðèáóòû ðàáî÷èõ ïðîäóêòîâ ÑÏÑ ñ ïðîãíîçèðîâàííûìè ïî- êàçàòåëÿìè êà÷åñòâà äëÿ ðàçðàáîòêè ÷ëåíà ñåìåéñòâà; — ìåòðèêè, ìîäåëè è ìåòîäèêè äëÿ ïðèíÿòèÿ è îáîñíîâàíèÿ ðåøåíèé ðàçðà- áîò÷èêîâ ñåìåéñòâà ÏÑ è ÑÏÑ ïî îòíîøåíèþ ê çàäàííûì ïîêàçàòåëÿì êà÷åñòâà; — ýëåìåíòû ïîääåðæêè ìåòðèê, ìîäåëåé è ìåòîäîâ ðàçðàáîòêè ñåìåéñòâ ÏÑ â ñðåäå ÈÒÊ ÃÏ.  èíæåíåðèè êà÷åñòâà ÑÏÑ ðåøàþòñÿ òàêèå çàäà÷è: 1) ìîäåëèðîâàíèå êà÷åñòâà ñåìåéñòâà ÏÑ è îöåíèâàíèå êà÷åñòâà ñãåíåðèðî- âàííûõ àðòåôàêòîâ íà êàæäîì ïðîöåññå èíæåíåðèè ÏðÎ; 2) ïîäáîð êîìïîíåíòîâ èç ðåïîçèòîðèÿ, êîòîðûå óäîâëåòâîðÿþò òðåáîâàíè- ÿì ÏÑ; 3) âåðèôèêàöèÿ ÊÏÈ, êîòîðûå ïîìåùåíû â ðåïîçèòîðèé ÈÒÊ è èñïîëüçóþò- ñÿ â ðàçðàáàòûâàåìîé ÑÏÑ; 4) òåñòèðîâàíèÿ êîìïîíåíòîâ è ñîáðàííûõ â ÏÑ èëè ÑÏÑ, âûáðàííûõ èç ðå- ïîçèòîðèÿ ÊÏÈ; 5) ïðîâåðêà êà÷åñòâà ÷ëåíîâ ÏÑ ñ òî÷êè çðåíèÿ ðåàëèçàöèè ôóíêöèîíàëüíûõ òðåáîâàíèé ê ÑÏÑ. Èíæåíåðèÿ ðàçðàáîòêè êà÷åñòâåííûõ ÑÏÑ ïðåäñòàâëåíà ñëåäóþùèìè îáðàçîì. Çàäà÷à 1. Ìîäåëèðîâàíèå íàáîðà ñîâìåñòíûõ íåôóíêöèîíàëüíûõ òðåáîâà- íèé ê ñåìåéñòâó ÏÑ è èõ ñïåöèôèêàöèÿ. Îíè ìîãóò êîíôëèêòîâàòü ñ çàäàííûìè ïîêàçàòåëÿìè êà÷åñòâà (íàïðèìåð: âûñîêàÿ íàäåæíîñòü � íèçêàÿ ýôôåêòèâ- íîñòü, âûñîêàÿ ýôôåêòèâíîñòü � íèçêàÿ ìîäèôèêàöèÿ, âûñîêîå êà÷åñòâî � âû- ñîêèå çàòðàòû). Äëÿ ñïåöèôèêàöèè êîíôëèêòíûõ òðåáîâàíèé ê êà÷åñòâó ñòðîèòñÿ «ìàòðèöà êîíôëèêòîâ», èñïîëüçóåòñÿ ìåòîä àíàëèçà èåðàðõèé äëÿ ïðèâåäåíèÿ â ïîðÿäîê, âçâåøèâàíèÿ õàðàêòåðèñòèê è îïòèìèçàöèè èõ öåëåâûõ çíà÷åíèé. Çàäà÷à 2. Îöåíèâàíèå ñïåöèôèêàöèè ÏðÎ ìîæíî âûïîëíÿòü ìåòîäîì ôîð- ìàëüíîé èíñïåêöèè, ïðîòîòèïèðîâàíèÿ, ïîñòðîåíèÿ ñöåíàðèåâ òåñòîâ è ò.ï. Èíñïåêöèÿ ïðîâîäèòñÿ âðó÷íóþ îïûòíûì ýêñïåðòîì (èëè ýêñïåðòàìè) ñ èñïîëü- çîâàíèåì îïðîñíûõ êàðò è ôîðì äàííûõ èçìåðåíèé. Ðåçóëüòàòû àíàëèçà ìîæíî ìîäåëèðîâàòü ñðåäñòâàìè XML-link. Çàäà÷à 3. Ïðèíÿòèå ðåøåíèé ïðè óïðàâëåíèè âàðèàíòàìè ÏÑ è îáåñïå÷åíèÿ êà÷åñòâà ðàçðàáàòûâàåìîé ÑÏÑ èç ÊÏÈ è ÏÑ â ñðåäå ÈÒÊ ÃÏ. Îöåíêà êà÷åñòâà ÏÑ.  ðàìêàõ ðàáîò ïî èíæåíåðèè êà÷åñòâà ñîçäàíû íî- âûå ôîðìàëüíûå ìåòîäèêè êîëè÷åñòâåííîãî èçìåðåíèÿ è îöåíêè ïîêàçàòåëåé êà÷åñòâà ïðîãðàìì â êëàññå çàäà÷ ÑÎÄ äëÿ ÌÎ Óêðàèíû [12, 15]. Ïîëó÷åíû òà- êèå îðèãèíàëüíûå ðåçóëüòàòû: — ìîäåëü êà÷åñòâà ñ îðèåíòàöèåé íà îöåíêó íàäåæíîñòè ÏÏ; — êîíöåïòóàëüíàÿ ìîäåëü ïðèíÿòèÿ ðåøåíèé ñ óïðàâëåíèÿ êà÷åñòâîì, âêëþ÷àÿ áàéåñîâñêèå ìåòîäû, ìåòîäû ñèñòåìíîãî êîíòðîëÿ íàäåæíîñòè íà ðàí- íèõ ïðîöåññàõ ÆÖ, êîëè÷åñòâåííîãî èçìåðåíèÿ òðåáîâàíèé ê íàäåæíîñòè è ïðîãíîçèðîâàíèÿ äåôåêòîâ; ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2013, ¹ 1 139 — ìîäåëü ðàñïðåäåëåíèÿ íàäåæíîñòè ñèñòåìû èç êîìïîíåíòîâ íà îñíîâå ôóíê- öèè ïîëåçíîñòè ÏÏ Qnc � � � �w rs s m s * 1 â çàâèñèìîñòè îò ïðèîðèòåòîâ ws * è íàäåæíîñòè q rj n n E j � � îòäåëüíûõ êîìïîíåíòîâ. Îöåíêà êà÷åñòâà âêëþ÷åíà â ëèíèþ ÈÒÊ ÃÏ äëÿ îáåñïå÷åíèÿ ðàñ÷åòà ïîêà- çàòåëåé êà÷åñòâà è çàòðàò íà ðàçðàáîòêó ÏÑ. 6. ÐÅÀËÈÇÀÖÈß ÒÅÎÐÅÒÈ×ÅÑÊÈÕ ÀÑÏÅÊÒΠÑÎÇÄÀÍÈß ÑÏÑ Â ÑÐÅÄÅ ÈÒÊ ÃÏ Ìåòîäîëîãèÿ èçãîòîâëåíèÿ ÑÏÑ èç ãîòîâûõ ÊÏÈ âêëþ÷àåò: òåîðèþ êîìïîíåíòíîãî ïðîãðàììèðîâàíèÿ; ìîäåëè âçàèìîäåéñòâèÿ è âàðèàáåëüíîñòè; êîìïëåêñ òåõíîëîãè÷åñ- êèõ ëèíèé äëÿ ïîñòðîåíèÿ ðàçíûõ ýëåìåíòîâ ÑÏÑ; ñðåäñòâà îáó÷åíèÿ ôóíäàìåíòàëü- íûì îñíîâàì ïðîãðàììíîé èíæåíåðèè. Ïðåäëîæåííàÿ ìåòîäîëîãèÿ îòîáðàæàåò íîâûå òåîðåòè÷åñêèå è ïðèêëàäíûå àñïåêòû òåõíîëîãèè èçãîòîâëåíèÿ ïðîãðàììíûõ ïðîäóê- òîâ ñ ó÷åòîì ÿäðà SWEBOK (www.swebok.com) [11–14], ÆÖ ñòàíäàðòà ISO/IEC 12207, ïðîöåññû êîòîðîãî àäàïòèðîâàíû ê îòäåëüíûì ÒË, âêëþ÷åííûõ â ÈÒÊ ÃÏ (ðèñ. 4), êàê èíñòðóìåíòîâ ðåãëàìåíòèðîâàííîãî ïðîèçâîäñòâà ÑÏÑ [18, 24]. Îñíîâíûìè çàäà÷àìè ìåòîäîëîãèè èçãîòîâëåíèÿ ÑÏÑ â ñðåäå ÈÒÊ ÃÏ ÿâëÿþòñÿ: — ðàçðàáîòêà ìîäåëè ÏðÎ è åå õàðàêòåðèñòèê äëÿ îñíîâíûõ ïîíÿòèé äîìå- íà, àðõèòåêòóðû ÑÏÑ èç ãîòîâûõ ÊÏÈ; — ñïåöèôèêàöèÿ ðàçíîðîäíûõ ïðîãðàììíûõ ðåñóðñîâ â ßÏ èëè DSL ñðåä- ñòâàìè èíñòðóìåíòà Eclipse-DSL, DSL Tool Microsoft, òðàíñôîðìàöèÿ ýòèõ îïè- ñàíèé ê XML, ôîðìèðîâàíèå ïîëó÷åííîãî îïèñàíèÿ ê ñòàíäàðòíîìó âèäó è çàïèñü â ðåïîçèòîðèé ÈÒÊ ÃÏ; — ïîèñê è îòáîð èç ðåïîçèòîðèÿ íåîáõîäèìûõ ÊÏÈ; — èñïîëüçîâàíèå ìîäåëè âçàèìîäåéñòâèÿ ÊÏÈ è ÏÑ äëÿ àäàïòàöèè â äðó- ãîé ñðåäå îáðàáîòêè; — ìåòîäèêà ïðèìåíåíèÿ ÿçûêà DSL äëÿ ïðåäñòàâëåíèÿ ÷ëåíà ñåìåéñòâà; 140 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2013, ¹ 1 Òåîðèÿ ðàçðàáîòêè è îáåñïå÷åíèÿ ìîáèëüíîñòè ÏÑ Ìîäåëèðîâàíèå êà÷åñòâåííûõ ÏÑ Àäàïòàöèÿ ìîäåëåé: -- âçàèìîäåéñòâèÿ ÊÏÈ, -- âàðèàíòíîñòè ÊÏÈ, ÏÑ, ÑÏÑ, -- æèçíåñïîñîáíîñòè ÏÑ Ìåòîäû: -- ýêñïåðòèçû, -- òåñòèðîâàíèÿ, -- îöåíêè ïðîäóêòîâ Òåõíîëîãè÷åñêèå ëèíèè ïîñòðîåíèÿ ÊÏÈ, ÏÑ Ðàçðàáîòêà ÊÏÈ Ðàçðàáîòêà ÏÑ èç ðàçíîÿçûêîâûõ ÊÏÈ Îáñëóæèâàíèå ðåïîçèòîðèÿ ÊÏÈ Ïðåäñòàâëåíèå äîìåíîâ â ÿçûêå DSL Ñáîðêà ÏÑ èç ÊÏÈ Êîíôèãóðèðîâàíèå ÏÑ Îöåíèâàíèå êà÷åñòâà è çàòðàò Òåõíîëîãèè ýëåêòðîííîãî îáó÷åíèÿ C# VS.Net Java Ïðåäìåò ïðîãðàììíîé èíæåíåðèè Ýëåêòðîííàÿ ìîíîãðàôèÿ, ÃÍÒÁ, ÐÆ «Äåïîíèðîâàííûå íàó÷ûå ðàáîòû», ¹ 1, 2, 2011 Ôàáðèêè - http://programsfactory. univ.kiev.ua, www.intuit.ru Ìåòîäîëîãèÿ ïðîåêòè- ðîâàíèÿ ÏÑ ïî: -- ÆÖ, -- ìîäåëÿì MDA, MDD, GDM… -- ãåíåðàöèè DSL Èíñòðóìåíòàëüíî-òåõíîëîãè÷åñêèé êîìïëåêñ (ÈÒÊ) Îíòîëîãèÿ (Protege) Ðèñ. 4. Ñòðóêòóðà ÈÒÊ ÃÏ — ãåíåðàöèÿ ïðîåêòíûõ ðåøåíèé èëè àðòåôàêòîâ ê âûõîäíîìó êîäó è àäàï- òàöèÿ ê êîíêðåòíûì öåëÿì ÏÑ; — îöåíêà ïîêàçàòåëåé êà÷åñòâà ñ èñïîëüçîâàíèåì ñîîòâåòñòâóþùèõ ìåòðèê ïðîãðàììíîãî ïðîäóêòà; — ñîõðàíåíèå ðåçóëüòàòîâ ïðîåêòèðîâàíèÿ â ðåïîçèòîðèè êîìïîíåíòîâ äëÿ àïðîáàöèè è âûáîðó ÊÏÈ ïîëüçîâàòåëÿìè; — äîêóìåíòèðîâàíèå ïðîãðàìì è êîìïîíåíòîâ, âõîäÿùèõ â ñîñòàâ ÑÏÑ.  äàííîé ìåòîäîëîãèè èñïîëüçóåòñÿ èíæåíåðèÿ ÏðÎ, â êîòîðîé èíæåíåðíàÿ äåÿòåëüíîñòü îñíîâûâàåòñÿ íà ìîäåëÿõ ïðîåêòèðîâàíèÿ (DDD, DSL, MDA, GDM è äð.) ÑÏÑ.  ïàðàäèãìå ÃÏ îñíîâíûì àñïåêòîì ïðîèçâîäñòâà ïðîãðàìì ÿâëÿåò- ñÿ ãåíåðàöèÿ, áàçèðóþùàÿñÿ íà ïðåäñòàâëåíèè çíàíèé î ñïåöèôèêå ÏðÎ è çíà- íèé, íàêîïëåííûõ î ìåòîäàõ, ñðåäñòâàõ è èíñòðóìåíòàõ ïðîãðàììíîé èíæåíå- ðèè, êîòîðûå íåîáõîäèìû äëÿ ëèíèé àâòîìàòèçèðîâàííîãî ïðîèçâîäñòâà ÑÏÑ èç ÊÏÈ.  äàííîé ìåòîäîëîãèè ÊÏ ÷ëåíû ÑÏÑ îïèñûâàþòñÿ ßÏ è ïðåäìåòíî-îðè- åíòèðîâàííûìè ÿçûêàìè DSL. Ïðîöåññ ãåíåðàöèè ýòèõ îïèñàíèé ðàññìàòðèâàåò- ñÿ êàê ïîñëåäîâàòåëüíàÿ èõ òðàíñôîðìàöèÿ îò îäíîãî èñõîäíîãî ßÏ äî ïðîìåæóòî÷íîãî è òàê äî ïîëó÷åíèÿ ãîòîâîãî ïðîäóêòà. Ïðîöåññ ãåíåðàöèè êîìïîíåíòîâ íà÷èíàåòñÿ èç ïîèñêà ãîòîâûõ ÊÏÈ ñîãëàñíî òðåáîâàíèÿì çàêàç÷èêà ê èõ ôóíêöèÿì è ïðèíÿòèÿ ðåøåíèÿ î äîñòàòî÷íîñòè ðåà- ëèçîâàííûõ ñâîéñòâ ÊÏÈ äëÿ ñáîðêè (êîíôèãóðàöèè) èõ â ñèñòåìû èëè ÑÏÑ. Ðåàëèçàöèÿ íîâûõ òåîðåòè÷åñêèõ îñíîâ ÃÏ â ÈÒÊ. Èíäóñòðèÿ ïðîèçâîä- ñòâà ÏÑ íà îñíîâå ÒË ðàçðàáîòàíà â [17, 41] äëÿ èçãîòîâëåíèÿ êëàññà ïðîãðàìì îáðàáîòêè äàííûõ â èíôîðìàöèîííîé ñèñòåìå ÀÈÑ «Þïèòåð» äëÿ âîåííî-ìîð- ñêîãî ôëîòà ÑÐÑÐ. Âíà÷àëå áûëà ïðîâåäåíà òåõíîëîãè÷åñêàÿ ïîäãîòîâêà ðàçðà- áîòêè ëèíèé, òåõíîëîãè÷åñêèõ ìàðøðóòîâ è ãîòîâûõ ïðîãðàììíûõ ýëåìåíòîâ, à òàêæå ñîçäàíî ìåòîäè÷åñêîå è ïðîãðàììíîå îáåñïå÷åíèå, ðåãëàìåíòèðóþùåå èí- æåíåðíóþ, ýêîíîìè÷åñêóþ è ïðîèçâîäñòâåííóþ äåÿòåëüíîñòü íà ëèíèè.  äàëü- íåéøåì ýòà èäåÿ ðàçâèâàëàñü äî ñîçäàíèÿ ôàáðèêè ïðîãðàìì, êîòîðûå ïîääåðæè- âàþò äèñöèïëèíû ïî ïðîèçâîäñòâó ÏÏ íà ëèíèÿõ [24, 29, 30]. Êîìïëåêñ ÈÒÊ ÃÏ âêëþ÷àåò ëèíèè: ðàçðàáîòêè ÊÏÈ è èõ ñåðâèñíîãî îáñëó- æèâàíèÿ â ðåïîçèòîðèè; ïðåäñòàâëåíèÿ îïèñàíèÿ ÊÏÈ è èíòåðôåéñîâ â ñòàí- äàðòíîì âèäå (WSDL, IDL); ñáîðêè èëè êîíôèãóðàöèè ðàçíîÿçû÷íûõ ÊÏÈ â ÷ëå- íû ñåìåéñòâà èëè ÑÏÑ; îöåíêó êà÷åñòâà ÊÏÈ è çàòðàò íà èõ ðàçðàáîòêó; ïðåîá- ðàçîâàíèÿ GDT â FDT; èñïîëüçîâàíèÿ âåá-ñåðâèñà, îáó÷åíèÿ ñòóäåíòîâ òåîðåòè÷åñêèì è ïðèêëàäíûì àñïåêòàì ïðîèçâîäñòâà ÏÏ. ÈÒÊ ÃÏ ïîñòðîåí êàê ñàéò http://sestudy.edu-ua.net â Èíòåðíåòå (ðèñ. 5). Íà ãëàâíîé ñòðàíèöå ñàéòà â ëåâîé ÷àñòè äàí ïåðå÷åíü ôóíêöèé ÈÒÊ, â öåí- òðå — ñõåìû èõ ðåàëèçàöèè ñ ó÷åòîì íàó÷íûõ è ïðîåêòíûõ ðåøåíèé ìåòîäîëî- ãèè ïðîèçâîäñòâà ïðîãðàìì, âêëþ÷àÿ îáñëóæèâàíèå ðåïîçèòîðèÿ, ìåòîäèêó ðåà- ëèçàöèè ëèíèé ñáîðî÷íîãî ïðîèçâîäñòâà, âçàèìîäåéñòâèÿ ïðîãðàìì, ñèñòåì è òåõíîëîãèè ïðåäñòàâëåíèÿ íåêîòîðûõ äîìåíîâ ñðåäñòâàìè ñèñòåì ñðåäû ÃÏ è ÊÏÈ. Äàëåå äàåòñÿ îïèñàíèå ðàçäåëîâ è ïîäðàçäåëîâ äàííîãî ñàéòà. Òåõíîëîãèè — ôàáðèêà ïðîãðàìì ÊÍÓ, ðåïîçèòîðèé ÊÏÈ, ðàçðàáîòêà ÊÏÈ, ñáîðêà ÊÏÈ, êîíôèãóðèðîâàíèå ÊÏÈ, ãåíåðàöèÿ îïèñàíèÿ ïðîãðàìì â ÿçûêå DSL, îíòî- ëîãèÿ âû÷èñëèòåëüíîé ãåîìåòðèè, îöåíêà çàòðàò, âåá-ñåðâèñû, ãåíåðàöèÿ òèïîâ äàííûõ. Âçàèìîäåéñòâèå ïðîãðàìì, ñèñòåì è ñðåä ïî ìîäåëÿì èíòåðîïåðàáåëüíîñ- òè ýòèõ öåëåâûõ îáúåêòîâ: Corba–Eclipse–Java; VS.Net C#–Eclipse; Basic–C++. Èíñòðóìåíòû — Eclipse, Prot�g� è òåõíîëîãèÿ èõ èñïîëüçîâàíèÿ. Ïðåçåíòàöèè — ïðèêëàäíàÿ ñèñòåìà âåäåíèÿ çàðóáåæíûõ êîìàíäèðîâîê, ñëàéäû äîêëàäîâ íà ìåæäóíàðîäíûõ êîíãðåññàõ. Îáó÷åíèå — òåõíîëîãèè ðàçðàáîòêè ïðîãðàìì â ÿçûêå Ñ# VS.Net, Java è ýëåêòðîííîãî ó÷åáíèêà «Ïðîãðàììíàÿ èíæåíåðèÿ», âûïîëíåííûõ íà ñàéòå ÊÍÓ http://programsfactory.univ.kiev.ua. ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2013, ¹ 1 141 Âñå ðàçäåëû (ïîäðàçäåëû) ñàéòà ïîñòðîåíû ïî îäíîé ðàìî÷íîé ñõåìå äëÿ íàæàòèÿ â íèõ òåêñòà, êîòîðûé äåìîíñòðèðóåò: — îïèñàíèå ñìûñëà òåõíîëîãèè íà êîíêðåòíîé ëèíèè; — ìåòîä ðåàëèçàöèè íà ïðèìåðàõ ïðîãðàìì; — çàãðóçêó åõå-êîäà äëÿ âûïîëíåíèÿ íà ðàáî÷åì ñòîëå; — âîçâðàò â ñàéò. Òåõíîëîãèè è âçàèìîäåéñòâèå íà ñàéòå ðåàëèçîâàíû ïî îäíîé ñõåìå — îïè- ñàíèå, ïðèìåð, âûïîëíåíèå, çàêðûòèå.  ðåàëèçàöèè ïðîñòûõ ëèíèé òåõíîëîãèè ïðîèçâîäñòâà ïðîãðàìì â ÈÒÊ ó÷àñòâîâàëè ñòóäåíòû ÊÍÓ èìåíè Òàðàñà Øåâ÷åíêî è ÌÔÒÈ, îñîáåííî â ÷àñòè ñîçäàíèÿ ýêñïåðèìåíòàëüíîé ôàáðèêè ïðîãðàìì [27–30] è ïðîãðàììíûõ ñðåäñòâ ïîääåðæêè ìîäåëåé âçàèìîäåéñòâèÿ ïðîãðàìì è ñèñòåì [11, 26–28] è âàðèàáåëü- íîñòè ÏÑ [14, 15]. Ê ëèíèÿì îòíîñÿòñÿ: — ôàáðèêà ïðîãðàìì (http://programsfactory.univ.kiev.ua) — ñïåöèôèêàöèÿ ÊÏÈ è èõ ïàñïîðòîâ, ïðîãðàììèðîâàíèå VS.Net è îáó÷åíèå ïðîãðàììíîé èíæåíåðèè; — îáñëóæèâàíèå ðåïîçèòîðèÿ êîìïîíåíòîâ, ÊÏÈ è àðòåôàêòîâ; — ñáîðêà ðàçíîÿçû÷íûõ ïðîãðàìì è êîìïîíåíòîâ â ÏÑ ñ âîçìîæíûì êîí- âåðòèðîâàíèåì íåñîâìåñòèìûõ òèïîâ äàííûõ èíòåðôåéñîâ; — êîíôèãóðàöèÿ ÊÏÈ â ñëîæíóþ ñòðóêòóðó ÏÑ ïî òî÷êàì âàðèàíòíîñòè [31, 32]; — îïèñàíèå äîìåíà (íà ïðèìåðå äîìåíà ÆÖ) â ÿçûêå DSL è ðåàëèçàöèÿ íà ïëàòôîðìå Eclipse-DSL; — îïèñàíèå âåá-ñåðâèñîâ; — îöåíèâàíèå êà÷åñòâà è çàòðàò íà ðàçðàáîòêó ÏÑ è äð. Ýêñïåðèìåíòàëüíàÿ ôàáðèêà ïðîãðàìì â ÊÍÓ áàçèðóþòñÿ íà îáúåêòíîì àíàëèçå ÏðÎ è êîìïîíåíòíîì ìåòîäå ðåàëèçàöèè îáúåêòîâ è ÊÏÈ ñ èíòåðôåéñà- ìè, íåîáõîäèìûìè ïðè ñáîðêè êîìïîíåíòîâ è âçàèìîäåéñòâèè ÊÏÈ â ñðåäàõ VS.Net, Java, CORBA, Eclipse. Äàííàÿ ñòóäåí÷åñêàÿ ôàáðèêà ïðîãðàìì îðèåíòè- 142 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2013, ¹ 1 Ðèñ. 5. Ãëàâíàÿ ñòðàíèöà âåá-ñàéòà ÈÒÊ ÃÏ ðîâàíà íà ðàçðàáîòêó ñòóäåíòàìè íàó÷íûõ àðòåôàêòîâ è ïðîãðàìì ïðè âûïîëíå- íèè ëàáîðàòîðíûõ è äèïëîìíûõ ðàáîò ñ ïîìîùüþ ñïåöèàëüíûõ ëèíèé ïðîäóê- òîâ, ðàçðàáîòàííûõ ïî ìåòîäèêå ÒË. Íà äàííûé ìîìåíò ê ôàáðèêå îáðàùàëèñü áîëüøå ÷åòûðåõ òûñÿ÷ ñòóäåíòîâ, ïðåïîäàâàòåëåé è íàó÷íûõ ñîòðóäíèêîâ. ÇÀÊËÞ×ÅÍÈÅ Â ðàìêàõ ïðîåêòà ÃÏ ïîëó÷åíî: — òåîðèþ îáúåêòíî-êîìïîíåíòíîãî ïðîãðàììèðîâàíèÿ ðàçíîðîäíûõ ÊÏÈ è èõ ñáîðêó â ñðåäàõ (VS.Net, IBM, CORBA, Eclipse è äð.); — òåîðèþ âçàèìîäåéñòâèÿ ñèñòåì è ñðåä, êîòîðàÿ âêëþ÷àåò ðàçâèòûé àïïà- ðàò èíòåðôåéñîâ è ìåõàíèçìû îáðàáîòêè äàííûõ, êîòîðûå ïåðåäàþòüñÿ ïî ñåòè â îáùèå è ãëîáàëüíûå õðàíèëèùà, äëÿ èíòåðîïåðàáåëüíîñòè è ìèãðàöèè ñèñòåì èç îäíîé ñðåäû â äðóãóþ; — òåîðèþ êîíñòðóèðóâàíèÿ âàðèàíòîâ ÑÏÑ, óïðàâëåíèÿ êîíôèãóðàöèÿìè ÑÏÑ, íà÷èíàÿ ñ òðåáîâàíèé è êîí÷àÿ ïðîäóêòîì ÑÏÑ, à òàêæå èíæåíåðèþ êà÷åñ- òâà ÑÏÑ â ïðîöåññå ñîçäàíèÿ ñèñòåì ñåìåéñòâà èç ãîòîâûõ ÊÏÈ è îöåíêè êà÷åñ- òâåííûõ ïîêàçàòåëåé, ñòîèìîñòè è çàòðàò íà ðàçðàáîòêó; — íîâóþ ìåòîäîëîãèþ ïðîèçâîäñòâà ÑÏÑ, ïðåäñòàâëåííîé ñïåêòðîì ïðî- ñòûõ òåõíîëîãè÷åñêèõ ëèíèé ïî èçãîòîâëåíèþ è îáñëóæèâàíèþ ÊÏÈ, ñáîðêè èëè êîíôèãóðàöèè ðàçíîÿçûêîâûõ ÊÏÈ, òåñòèðîâàíèÿ, îöåíêè êà÷åñòâà è çàòðàò íà ðàçðàáîòêó; — âåá-ñàéò (http://sestudy.edu-ua.net) äëÿ ïðîèçâîäñòâà ÑÏÑ èç ãîòîâûõ ÊÏÈ â ñðåäå ÃÏ (VS.Net, CORBA, Java, Eclipse) è îáó÷åíèå èíäóñòðèàëüíûì ìåòîäîì. Ïðåäñòàâëåííûå â ðàáîòå íîâûå òåîðèè è ìåòîäû ðàñøèðÿþò òåõíîëîãèþ ïðîãðàììèðîâàíèÿ è ñïîñîáñòâóþò ðàçâèòèþ èíäóñòðèè ÏÑ è ÑÏÑ èç ãîòîâûõ ÊÏÈ â ñîâðåìåííûõ îïåðàöèîííûõ ñðåäàõ. ÑÏÈÑÎÊ ËÈÒÅÐÀÒÓÐÛ 1. × å ð í å ö ê è Ê . , À é ç å í å ê å ð Ó . Ïîðîæäàþùåå ïðîãðàììèðîâàíèå. Ìåòîäû, èíñòðóìåí- òû, ïðèìåíåíèå. — Ì.; ÑÏá.; Õàðüêîâ: Ìèíñê: Èçäàòåëüñêèé äîì «Ïèòåð», 2005. — 730 ñ. 2. Ë à â ð ³ ù å â à Ê . Ì . Ãåíåðóâàëüíå ïðîãðàìóâàííÿ ïðîãðàìíèõ ñèñòåì ³ ñ³ìåéñòâ // Ïðîáëå- ìè ïðîãðàìóâàííÿ. — 2009. — ¹ 1. — Ñ. 3–16. 3. Ë à â ð è ù å â à Å . Ì . , à ð è ù å í ê î  . Í . Ñáîðî÷íîå ïðîãðàììèðîâàíèå. — Êèåâ: Íàóê. äóìêà, 1991. — 213 ñ. 4. Ë à â ð è ù å â à Å . Ì . , à ð è ù å í ê î  . Í . Ñáîðî÷íîå ïðîãðàììèðîâàíèå. Îñíîâû èíäóñò- ðèè ïðîãðàììíûõ ïðîäóêòîâ: Âòîðîå èçä. — Êèåâ: Íàóê. äóìêà, 2009. — 371 ñ. 5. Ë à â ð è ù å â à Å . Ì . Ñáîðî÷íîå ïðîãðàììèðîâàíèå. Òåîðèÿ è ïðàêòèêà // Êèáåðíåòèêà è ñèñòåìíûé àíàëèç. — 2009. — ¹ 6. — Ñ. 3–12. 6. à ð è ù å í ê î  . Í . , Ë à â ð è ù å â à Å . Ì . Ìåòîäû è ñðåäñòâà êîìïîíåíòíîãî ïðîãðàììè- ðîâàíèÿ // Òàì æå. — 2003. — ¹ 1. — Ñ. 39–55. 7. à ð è ù å í ê î  . Ì . Ìåòîä îá’ºêòíî-êîìïîíåíòíîãî ïðîåêòóâàííÿ ïðîãðàìíèõ ñèñòåì // Ïðîáëåìè ïðîãðàìóâàííÿ. — 2007. — ¹ 2. — Ñ. 113–125. 8. à ð è í ô è ë ü ä Ä æ . Ôàáðèêè ðàçðàáîòêè ïðîãðàì. — Ì.; ÑÏá.; Ê.: Èçä. äîì «Âèëüÿìñ», 2007. — 591 ñ. 9. Á å é È . Âçàèìîäåéñòâèå ðàçíîÿçûêîâûõ ïðîãðàìì. — Ì.; ÑÏá.; Ê.: Èçä. äîì «Âèëüÿìñ», 2005. — 868 ñ. 10. Ë à â ð ³ ø å â à Ê . Ì . Âçàºìîä³ÿ ïðîãðàì, ñèñòåì é îïåðàö³éíèõ ñåðåäîâèù // Ïðîáëåìè ïðîãðàìóâàííÿ. — 2011. — ¹ 3. — Ñ. 13–24. 11. Ò å î ð å ò è ÷ í ³ àñïåêòè êåðóâàííÿ âàð³àáåëüí³ñòþ â ñ³ìåéñòâàõ ïðîãðàìíèõ ñèñòåì / Ê.Ì. Ëàâ- ð³ùåâà, Î.Î. Ñëàáîñïèöüêà, Ã.². Êîâàëü, À.Î. Êîëåñíèê // ³ñí. ÊÍÓ. Ñåð. ô³ç.-ìàò.íàóê. — 2011. — ¹ 1. — Ñ. 151–158. ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2013, ¹ 1 143 12. Î ñ í î â û èíæåíåðèè êà÷åñòâà ïðîãðàììíûõ ñèñòåì / Ô.È. Àíäîí, Ã.È. Êîâàëü, Ò.Ì. Êî- ðîòóí, Å.Ì. Ëàâðèùåâà, Â.Þ. Ñóñëîâ: 2-å èçä. — Êèåâ: Àêàäåìïåðèîäèêà, 2007. — 672 ñ. 13. Ê î â à ë ü à . ² . ϳäõ³ä äî ìîäåëþâàííÿ ÿêîñò³ ñ³ìåéñòâ ïðîãðàìíèõ ñèñòåì // Ïðîáëåìè ïðîãðàìóâàííÿ. — 2009. — C. 49–58. 14. Ó ä î ñ ê î í à ë å í í ÿ ïðîöåñó ðîçðîáëåííÿ ñ³ìåéñòâ ïðîãðàìíèõ ñèñòåì åëåìåíòàìè ãíó÷êèõ ìåòîäîëîã³é / Ã.². Êîâàëü, À.Ë. Êîëåñíèê, Ê.Ì. Ëàâð³ùåâà, Î.Î. Ñëàáîñïèöüêà // Òàì æå. — 2010. — ¹ 23. — C. 261–270. 15. Í î â ³ òåîðåòè÷í³ çàñàäè òåõíîëî㳿 âèðîáíèöòâà ñ³ìåéñòâ ïðîãðàìíèõ ñèñòåì ó êîíòåêñò³ ÃÏ / Ê.Ì. Ëàâð³ùåâà, Ã.². Êîâàëü, Ë.Ï. Áàáåíêî, Î.Î. Ñëàáîñïèöüêà, Ï.Ï. ²ãíàòåíêî. — ÄÐÍÒ². ¹ 67ÓÊ2011 â³ä 5.10.11. — 377 ñ. 16. Ë à â ð ³ ù å â à Ê . Ì . Ñòàíîâëåííÿ ³ ðîçâèòîê ìîäóëüíî-êîìïîíåíòíîãî ïðîãðàìóâàííÿ // Ñòàí òà ïåðñïåêòèâè ðîçâèòêó ³íôîðìàòèêè â Óêðà¿íè (Ðîçä. 4.4). — Êè¿â: Íàóê. äóìêà, 2010. — 1006 ñ. 17. Ë à â ð è ù å â à Å . Ì . Îñíîâû òåõíîëîãè÷åñêîé ïîäãîòîâêè ðàçðàáîòêè ïðèêëàäíûõ ïðîã- ðàìì ÑÎÄ. — Êèåâ: Èí-ò êèáåðíåòèêè, 1987. — 30 ñ. 18. Ë à ð è ù å â à Å . Ì . Ìåòîäû ïðîãðàììèðîâàíèÿ. Òåîðèÿ, èíæåíåðèÿ, ïðàêòèêà. — Êèåâ: Íàóê. äóìêà, 2006. — 451ñ. 19. Ë à â ð è ù å â à Å . Ì . , Ï å ò ð ó õ è í  . À . Ìåòîäû è ñðåäñòâà èíæåíåðèè ïðîãðàììíîãî îáåñïå÷åíèÿ. — Ó÷. ïîñîáèå. — Ì.: ÌÎÍ Ðîññèéñêîé ôåäåðàöèè, 2007. — 415 ñ. 20. Ë à â ð ³ ù å â à Ê . Ì . Ïðîãðàìíà ³íæåíåð³ÿ. — Êè¿â: Àêàäåìïåð³îäèêà, 2008. — 319 ñ. 21. Ë à â ð ³ ù å â à Ê . Ì . ²íñòðóìåíòàëüíî-òåõíîëîã³÷íèé êîìïëåêñ äëÿ âèðîáíèöòâà ïðîãðàìíèõ ñèñòåì // ³ñí. ÍÀÍ Óêðà¿íè. — 2012. — ¹ 1. — C. 15–41 22. Ë à â ð è ù å â à Å . Ì . Èíòåðôåéñ â ïðîãðàììèðîâàíèè // Ïðîáëåìè ïðîãðàìóâàííÿ. — 2007. — ¹ 2. — Ñ. 126–139. 23. Ë à â ð è ù å â à Å . Ì . Ïðîáëåìû èíòåðîïåðàáåëüíîñòè ðàçíîðîäíèõ îáúåêòîâ, êîìïîíåíòîâ è ñèñòåì. Ïîäõîäû äî åå ðåøåíèÿ // Ñïåö. âûïóñê ìåæäóíàð. êîíô. «ÓÊÐÏðÎ – 2010», Ïðîá- ëåìè ïðîãðàìóâàííÿ. — 2010. — ¹ 2–3. — Ñ. 28–41. 24. À í ä î í Ï . È . , Ë à â ð è ù å â à Ê . Ì . Ðîçâèòîê ôàáðèê ïðîãðàì â ³íôîðìàö³éíîìó ñâ³ò³ // ³ñí. ÍÀÍ Óêðà¿íè. — 2010. — ¹ 10. — C. 15–41 25. Ë à â ð è ù å â à Å . Ì . Òåîðèÿ è ïðàêòèêà ôàáðèê ïðîãðàììíûõ ïðîäóêòîâ // Êèáåðíåòèêà è ñèñòåìíûé àíàëèç. — 2011. — ¹ 6. — Ñ. 145–158. 26. Ë à â ð è ù å â à Å . Ì . Êîíöåïö³ÿ ³íäóñò𳿠íàóêîâîãî ñîôòâåðà ³ ï³äõ³ä äî îá÷èñëåííÿ íàóêî- âèõ çàäà÷ // Ïðîáëåìè ïðîãðàìóâàííÿ. — 2011. — ¹ 1. — Ñ. 3–17. 27. Î ñ ò ð î â ñ ü ê è é À . È . Ïîäõîä ê îáåñïå÷åíèþ âçàèìîäåéñòâèÿ ïðîãðàììíûõ ñðåä JAVA è Ms.Net. // Òàì æå. — 2011. — ¹ 2. — C. 37–44. 28. Ð à ä å ö ü ê è é ² . Î . Îäèí ç ï³äõîä³â äî çàáåçïå÷åííÿ âçàºìî䳿 ñåðåäîâèù MS.Net ³ Eclipse // Òàì æå. — 2011. — ¹ 2. — C. 45–52. 29. À í ³ ñ ³ ì î â À .  . , Ë à â ð ³ ù å â à Ê . Ì . , Ø å â ÷ å í ê î  . Ï . Ïðî ³íäóñòð³þ íàóêîâîãî ñîôòâåðà // Conf. Theoretical and Appl. Aspects of Cybernetics. — Kiev, 2011. — Ð. 7–9. 30. À ð î í î â À . Î . , Ä ç þ á å í ê î À . ² . ϳäõ³ä äî ñòâîðåííÿ ñòóäåíòñüêî¿ ôàáðèêè ïðîãðàìì // Ïðîáëåìè ïðîãðàìóâàííÿ. — 2011. — ¹ 3. — C. 42–49. 31. Ê î ë å ñ í è ê À . ϳäõ³ä äî êîíô³ãóðîâàííÿ êîìïîíåíò³â ïîâòîðíîãî âèêîðèñòàííÿ // Òàì æå. — 2011. — ¹ 4. — C. 57–66. 32. Ê î ë å ñ í è ê À . Ë . Ìåõàí³çìè çàáåçïå÷åííÿ âàð³àáåëüíîñò³ â ñ³ìåéñòâàõ ïðîãðàìíèõ ñèñòåì // Òàì æå. — 2010. — ¹ 1. — C. 35–44. Ïîñòóïèëà 10.01.2012 144 ISSN 0023-1274. Êèáåðíåòèêà è ñèñòåìíûé àíàëèç, 2013, ¹ 1