Генерирующее и сборочное программирование. Аспекты разработки семейств программных систем
Наведено нові моделі, методи і інструменти, які розроблені в межах фундаментального проекту з генеруючого програмування (ГП). Розроблено теорію об єктно-орієнтованого програмування; теорію взаємодії програм, систем і середовищ; оригінальну технологію конструювання варіабельних і якісних систем та сі...
Gespeichert in:
| 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
|