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

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

Повний опис

Збережено в:
Бібліографічні деталі
Опубліковано в: :Кибернетика и системный анализ
Дата:2013
Автор: Лаврищева, Е.М.
Формат: Стаття
Мова:Російська
Опубліковано: Інститут кібернетики ім. В.М. Глушкова НАН України 2013
Теми:
Онлайн доступ:https://nasplib.isofts.kiev.ua/handle/123456789/86172
Теги: Додати тег
Немає тегів, Будьте першим, хто поставить тег для цього запису!
Назва журналу:Digital Library of Periodicals of National Academy of Sciences of Ukraine
Цитувати:Генерирующее и сборочное программирование. Аспекты разработки семейств программных систем / Е.М. Лаврищева // Кибернетика и системный анализ. — 2013. — Т. 49, № 1. — С. 129-144. — Бібліогр.: 32 назв. — рос.

Репозитарії

Digital Library of Periodicals of National Academy of Sciences of Ukraine
_version_ 1859530250721951744
author Лаврищева, Е.М.
author_facet Лаврищева, Е.М.
citation_txt Генерирующее и сборочное программирование. Аспекты разработки семейств программных систем / Е.М. Лаврищева // Кибернетика и системный анализ. — 2013. — Т. 49, № 1. — С. 129-144. — Бібліогр.: 32 назв. — рос.
collection DSpace DC
container_title Кибернетика и системный анализ
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.
first_indexed 2025-11-25T22:42:35Z
format Article
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
id nasplib_isofts_kiev_ua-123456789-86172
institution Digital Library of Periodicals of National Academy of Sciences of Ukraine
issn 0023-1274
language Russian
last_indexed 2025-11-25T22:42:35Z
publishDate 2013
publisher Інститут кібернетики ім. В.М. Глушкова НАН України
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
spellingShingle Генерирующее и сборочное программирование. Аспекты разработки семейств программных систем
Лаврищева, Е.М.
Программно-технические комплексы
title Генерирующее и сборочное программирование. Аспекты разработки семейств программных систем
title_alt Генеруюче і композиційне програмування. Аспекти розробки сімейств програмних систем
Generating and composition programming. Aspects of the development of software system families
title_full Генерирующее и сборочное программирование. Аспекты разработки семейств программных систем
title_fullStr Генерирующее и сборочное программирование. Аспекты разработки семейств программных систем
title_full_unstemmed Генерирующее и сборочное программирование. Аспекты разработки семейств программных систем
title_short Генерирующее и сборочное программирование. Аспекты разработки семейств программных систем
title_sort генерирующее и сборочное программирование. аспекты разработки семейств программных систем
topic Программно-технические комплексы
topic_facet Программно-технические комплексы
url https://nasplib.isofts.kiev.ua/handle/123456789/86172
work_keys_str_mv AT lavriŝevaem generiruûŝeeisboročnoeprogrammirovanieaspektyrazrabotkisemeistvprogrammnyhsistem
AT lavriŝevaem generuûčeíkompozicíineprogramuvannâaspektirozrobkisímeistvprogramnihsistem
AT lavriŝevaem generatingandcompositionprogrammingaspectsofthedevelopmentofsoftwaresystemfamilies