Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Программные продукты и системы, 2017, том 30, № 4

международный научно-практический журнал
Покупка
Основная коллекция
Артикул: 706089.0001.99
Программные продукты и системы : международный научно-практический журнал. - Тверь : НИИ Центрпрограммсистем, 2017. - Т. 30, № 4. - 796 с. - ISSN 0236-235X. - Текст : электронный. - URL: https://znanium.ru/catalog/product/1016277 (дата обращения: 04.05.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Научно-исследовательский институт

«Центрпрограммсистем»

Программные

продукты и системы

МЕЖДУНАРОДНЫЙ НАУЧНО-ПРАКТИЧЕСКИЙ ЖУРНАЛ

2017, том 30, № 4
(год издания тридцатый)

Главный редактор

С.В. ЕМЕЛЬЯНОВ, академик РАН

Тверь

SOFTWARE & SYSTEMS

(PROGRAMMNYE PRODUKTY I SISTEMY)

International research and practice journal

2017, vol. 30, no. 4

Editor-in-Chief 

S.V. EMELYANOV, Academician of the Russian Academy of Sciences

Tver

Russian Federation

Research Institute CENTERPROGRAMSYSTEM

 ПРОГРАММНЫЕ ПРОДУКТЫ И СИСТЕМЫ

Международный научно-практический журнал 

2017. Т. 30. № 4
DOI: 10.15827/0236-235X.030

Главный редактор 

С.В. ЕМЕЛЬЯНОВ,
академик РАН (г. Москва, Россия)

Научные редакторы:

Н.А. СЕМЕНОВ, д.т.н., профессор ТвГТУ 
(г. Тверь, Россия)

К.А. МАМРОСЕНКО, к.т.н., доцент МАТИ 
(г. Москва, Россия)

Издатель НИИ «Центрпрограммсистем»

(г. Тверь, Россия)

Учредители: МНИИПУ (г. Москва, Россия),
Главная редакция международного журнала 

«Проблемы теории и практики управления» (г. Москва, Россия),

Закрытое акционерное общество 

«Научно-исследовательский институт 

«Центрпрограммсистем» (г. Тверь, Россия)

Журнал зарегистрирован в Комитете Российской Федерации

по печати 26 июня 1995 г.

Регистрационное свидетельство № 013831

Подписной индекс в каталоге

Агентства «Роспечать» 70799

ISSN 0236-235X (печатн.)
ISSN 2311-2735 (онлайн)

МЕЖДУНАРОДНАЯ РЕДАКЦИОННАЯ КОЛЛЕГИЯ

Семенов Н.А. – д.т.н., профессор Тверского государственного технического университета, заместитель главного 
редактора (г. Тверь, Россия)
Решетников В.Н. – д.ф.-м.н., профессор Московского авиационного института 
(национального исследовательского университета), заместитель главного редактора (г. Москва, Россия)
Арефьев И.Б. – д.т.н., профессор Морской академии Польши (г. Щецин, Польша)
Афанасьев А.П. – д.ф.-м.н., профессор Московского физико-технического института (технического университета), 
заведующий Центром распределенных вычислений Института проблем передачи информации РАН (г. Москва, Россия)
Баламетов А.Б. – д.т.н., профессор Азербайджанского научно-исследовательского и проектно-изыскательского института 
энергетики (г. Баку, Азербайджан)
Батыршин И.З. – д.т.н., профессор Мексиканского института нефти (г. Мехико, Мексика)
Вагин В.Н. – д.т.н., профессор Московского энергетического института (технического университета) 
(г. Москва, Россия)
Голенков В.В. – д.т.н., профессор Белорусского государственного университета информатики и радиоэлектроники 
(г. Минск, Беларусь)
Еремеев А.П. – д.т.н., профессор Московского энергетического института (технического университета)
(г. Москва, Россия)
Котов А.С. – кандидат наук, ассистент профессора университета Уэйна (штат Мичиган) (г. Детройт, США)
Кузнецов О.П. – д.т.н., профессор Института проблем управления РАН (г. Москва, Россия)
Курейчик В.М. – д.т.н., профессор Инженерно-технологической академии Южного федерального университета 
(г. Таганрог, Россия)
Лисецкий Ю.М. – к.т.н., генеральный директор «S&T Ukraine» (г. Киев, Украина)
Мамросенко К.А. – к.т.н., доцент Московского авиационного института 
(национального исследовательского университета), руководитель Центра визуализации и спутниковых 
информационных технологий НИИСИ РАН (г. Москва, Россия)
Мейер Б. – доктор наук, профессор, заведующий кафедрой Высшей политехнической школы – ETH (г. Цюрих, Швейцария)
Нгуен Тхань Нги – д.ф.-м.н., профессор, проректор Ханойского открытого университета (г. Ханой, Вьетнам)
Николов Р.В. – доктор наук, профессор Университета библиотековедения и информационных технологий Софии
(г. София, Болгария)
Осипов Г.С. – д.ф.-м.н., профессор, заместитель директора Института системного анализа РАН (г. Москва, Россия)
Палюх Б.В. – д.т.н., профессор Тверского государственного технического университета (г. Тверь, Россия)
Рахманов A.A. – д.т.н., профессор, заместитель генерального директора Концерна «РТИ Системы» (г. Москва, Россия)
Серов В.С. – д.ф.-м.н., профессор Университета прикладных наук Оулу (г. Оулу, Финляндия)
Сотников А.Н. – д.ф.-м.н., профессор, Межведомственный суперкомпьютерный центр РАН (г. Москва, Россия)
Сулейманов Д.Ш. – академик АН Республики Татарстан, д.т.н., профессор Казанского государственного 
технического университета (г. Казань, Республика Татарстан, Россия)
Тарасов В.Б. – к.т.н., доцент Московского государственного технического университета им. Н.Э. Баумана (г. Москва, Россия)
Таратухин В.В. – доктор философии, управляющий директор Европейского исследовательского центра 
в области информационных систем (ERCIS) Вестфальского университета им. Вильгельма (г. Мюнстер, Германия)
Хорошевский В.Ф. – д.т.н., профессор Московского физико-технического института (технического университета) 
(г. Москва, Россия)
Язенин А.В. – д.ф.-м.н., профессор Тверского государственного университета (г. Тверь, Россия)

АССОЦИИРОВАННЫЕ ЧЛЕНЫ РЕДАКЦИИ

Московский энергетический институт (технический университет), г. Москва, Россия
Технологический институт Южного федерального университета, г. Таганрог, Россия
Тверской государственный технический университет, г. Тверь, Россия
Научно-исследовательский институт «Центрпрограммсистем», г. Тверь, Россия

АДРЕС РЕДАКЦИИ
Россия, 170024, г. Тверь, пр. 50 лет Октября, 3а
Телефон (482-2) 39-91-49
Факс (482-2) 39-91-00
E-mail: red@cps.tver.ru
Сайт: www.swsys.ru

Подписано в печать 23.11.2017 г.

Отпечатано ООО ИПП «Фактор и К»

Россия, 170028, г. Тверь, ул. Лукина, д. 4, стр. 1

Выпускается один раз в квартал.

Год издания тридцатый. Формат 6084 1/8. Объем 240 стр.

Заказ № 81. Тираж 1000 экз. Цена 330,00 руб.

Автор статьи отвечает за подбор, оригинальность и точность приводимого фактического материала.
Авторские гонорары не выплачиваются. При перепечатке материалов ссылка на журнал обязательна.

 SOFTWARE & SYSTEMS 
(PROGRAMMNYE PRODUKTY I SISTEMY)

International research and practice journal

2017, vol. 30, no. 4
DOI: 10.15827/0236-235X.030

Editor-in-chief 
S.V. Emelyanov, Academician of the Russian Academy of Sciences
(Mosсow, Russian Federation)

Science editors:
N.A. Semenov, Dr.Sc. (Engineering), Professor TvSTU
(Tver, Russian Federation)

K.А. Mamrosenko, Ph.D. (Engineering), Associate Professor
of Moscow Aviation Institute (National Research University)
(Moscow, Russian Federation)

Publisher Research Institute 
CENTERPROGRAMSYSTEM 

(Tver, Russian Federation)

The Founders: International Scientific 

and Research Institute for Management Issues 

(Moscow, Russian Federation),

the Chief Editorial Board 

of International Magazine Theoretical and practical 

issues of management (Moscow, Russian Federation),

Research Institute CENTERPROGRAMSYSTEM 

(Tver, Russian Federation)
The magazine is on record 

in Russian committee

on press 26th of June 1995

Registration certificate № 013831

ISSN 0236-235X (print)

ISSN 2311-2735 (online)

INTERNATIONAL EDITORIAL BOARD

Semenov N.A. – Dr.Sc. (Engineering), Professor of Tver State Technical University, Deputy Editor-in-Chief
(Tver, Russian Federation)
Reshetnikov V.N. – Dr.Sc. (Physics and Mathematics), Professor of Moscow Aviation Institute (National Research University), 
Deputy Editor-in-Chief (Mosсow, Russian Federation)
Arefev I.B. – Dr.Sc. (Engineering), Professor of Poland Szczecin Maritime Academy (Szczecin, Poland)
Afanasiev A.P. – Dr.Sc. (Physics and Mathematics), Professor of Moscow Institute of Physics and Technology, 
Head of Centre for Distributed Computing of Institute for Information Transmission Problems (Moscow, Russian Federation)
Balametov A.B. – Azerbaijan Scientific-Research & Design-Prospecting Power Engineering Institute (Baku, Azerbaijan)
Batyrshin I.Z. – Dr.Sc. (Engineering), Professor of Mexican Petroleum Institute (Mexico City, Mexico)
Vagin V.N. – Dr.Sc. (Engineering), Professor of Moscow Power Engineering Institute (Technical University) 
(Mosсow, Russian Federation)
Golenkov V.V. – Dr.Sc. (Engineering), Professor of Belarusian State University of Informatics and Radioelectronics 
(Minsk, Republic of Belarus)
Eremeev A.P. – Dr.Sc. (Engineering), Professor of Moscow Power Engineering Institute (Technical University) 
(Moscow, Russian Federation)
Kotov A.S. – Ph.D. (Computer Science), Assistant Professor, Wayne State University (Detroit, MI, USA)
Kuznetsov O.P. – Dr.Sc. (Engineering), Professor of the Institute of Control Sciences of the Russian Academy of Sciences
(Moscow, Russian Federation)
Kureichik V.M. – Dr.Sc. (Engineering), Professor of Academy of Engineering and Technology Southern Federal University 
(Taganrog, Russian Federation)
Lisetskiy Yu.M. – Ph.D.Tech.Sc., CEO of S&T Ukraine (Kiev, Ukraine)
Mamrosenko K.A. – Ph.D. (Engineering), Associate Professor of Moscow Aviation Institute (National Research University), 
Head of Center of Visualization and Satellite Information Technologies SRISA RAS (Moscow, Russian Federation)
Meyer B. – Dr.Sc., Professor, Head of Department in Swiss Federal Institute of Technology in Zurich, ETH 
(Zurich, Switzerland)
Nguyen Thanh Nghi – Dr.Sc. (Physics and Mathematics), Professor, Vice-Principal of Hanoi Open University (Hanoi, Vietnam)
Nikolov R.V. – Full Professor of the University of Library Studies and Information Technology (Sofia, Bulgaria)
Osipov G.S. – Dr.Sc. (Physics and Mathematics), Professor, Deputy of the Principal of Institute of Systems Analysis 
of the Russian Academy of Sciences (Mosсow, Russian Federation)
Palyukh B.V. – Dr.Sc. (Engineering), Professor of Tver State Technical University (Tver, Russian Federation)
Rakhmanov A.A. – Dr.Sc. (Engineering), Professor, Deputy of the CEO of Concern RTI Systems
(Mosсow, Russian Federation)
Serov V.S. – Dr.Sc. (Physics and Mathematics), Professor of the Oulu University of Applied Sciences (Oulu, Finland)
Sotnikov A.N. – Dr.Sc. (Physics and Mathematics), Professor, Joint Supercomputer Center of the Russian Academy 
of Sciences (Moscow, Russian Federation)
Suleimanov D.Sh. – Academician of TAS, Dr.Sc. (Engineering), Professor of Kazan State Technical University
(Kazan, Republic of Tatarstan, Russian Federation)
Tarassov V.B. – Ph.D. (Engineering), Associate Professor of Bauman Moscow State Technical University
(Mosсow, Russian Federation)
Taratoukhine V.V. – Ph.D. (Engineering), Dr.Ph., Managing Director of the Competence Centre ERP and ERCIS Lab
Russia of the ERCIS (Muenster, Germany)
Khoroshevsky V.F. – Dr.Sc. (Engineering), Professor of Moscow Institute of Physics and Technology
(Moscow, Russian Federation)
Yazenin A.V. – Dr.Sc. (Physics and Mathematics), Professor of Tver State University (Tver, Russian Federation)

ASSOCIATED EDITORIAL BOARD MEMBERS

Moscow Power Engineering Institute (Technical University), Moscow, Russian Federation
Technology Institute at Southern Federal University, Taganrog, Russian Federation
Tver State Technical University, Tver, Russian Federation
Research Institute CENTERPROGRAMSYSTEM, Tver, Russian Federation

EDITORIAL OFFICE ADDRESS
50 let Oktyabrya Ave. 3а, Tver, 170024, Russian Federation
Phone: (482-2) 39-91-49  Fax: (482-2) 39-91-00
E-mail: red@cps.tver.ru
Website: www.swsys.ru

Passed for printing 23.11.2017

Printed in printing-office “Faktor i K”

Lukina St. 4/1, Tver, 170028, Russian Federation

Published quarterly. 30th year of publication

Format 6084 1/8. Circulation 1000 copies

Prod. order № 81. Wordage 240 pages. Price 330,00 rub. 

Вниманию авторов

Международный журнал «Программные продукты и системы» публикует материалы научного и научно-практического 

характера по новым информационным технологиям, результаты академических и отраслевых исследований в области использования средств вычислительной техники. Практикуются выпуски тематических номеров по искусственному интеллекту, системам автоматизированного проектирования, по технологиям разработки программных средств и системам защиты, а также специализированные выпуски, посвященные научным исследованиям и разработкам отдельных вузов, 
НИИ, научных организаций. 

Решением Президиума Высшей аттестационной комиссии (ВАК) Министерства образования и науки РФ международ
ный журнал «Программные продукты и системы» внесен в Перечень ведущих рецензируемых научных журналов и изданий, в которых должны быть опубликованы основные научные результаты диссертаций на соискание ученых степеней 
кандидата и доктора наук.

Информация об опубликованных статьях по установленной форме регулярно предоставляется в систему Российского 

индекса научного цитирования (РИНЦ), в CrossRef и в другие базы и электронные библиотеки.

Условия публикации

К рассмотрению принимаются ранее нигде не опубликованные материалы, соответствующие тематике журнала 

(специализация 05.13.ХХ – Информатика, вычислительная техника и управление) и отвечающие редакционным требованиям.

Работа представляется в электронном виде в формате Word. При обилии сложных формул обязательно наличие 

статьи и в формате PDF. Формулы должны быть набраны в редакторе формул Word (Microsoft Equation или MathType). 
Объем статьи вместе с иллюстрациями – не менее 10 000 знаков. Диаграммы, схемы, графики должны быть доступными 
для редактирования (Word, Visio, Excel). Все иллюстрации для полиграфического воспроизведения представляются в 
черно-белом варианте. Цветные, тонированные, отсканированные, не подлежащие редактированию средствами Word рисунки и экранные формы следует присылать в хорошем качестве для их дополнительного размещения на сайте журнала в 
макете статьи с доступом по ссылке. (Публикация материалов с использованием гипертекста, графики, аудио-, видео-, 
программных средств и др. возможна в электронном издании «Программные продукты, системы и алгоритмы», сайт 
www.swsys-web.ru.) Заголовок должен быть информативным; сокращения, а также терминологию узкой тематики желательно в нем не использовать. Количество авторов на одну статью – не более 4, количество статей одного автора в номере, 
включая соавторство, – не более 2. Список литературы, наличие которого обязательно, должен включать не менее 10 пунктов.

Необходимы также содержательная структурированная аннотация (не менее 250 слов), ключевые слова (7–10) и 

индекс УДК. Название статьи, аннотация и ключевые слова должны быть переведены на английский язык (машинный 
перевод недопустим), а фамилии авторов, названия и юридические адреса организаций (если нет официального перевода), 
пристатейные списки литературы – транслитерированы по стандарту BGN/PCGN. 

Вместе со статьей следует прислать сопроводительное письмо-рекомендацию в произвольной форме, экспертное 

заключение, лицензионное соглашение, а также сведения об авторах: фамилия, имя, отчество, название и юридический 
адрес организации, должность, ученые степень и звание (если есть), контактный телефон, электронный адрес, почтовый 
адрес для отправки бесплатного авторского экземпляра журнала. 

Порядок рецензирования

Все статьи, поступающие в редакцию (соответствующие тематике и оформленные согласно требованиям к публи
кации), подлежат обязательному рецензированию в течение месяца с момента поступления. 

В редакции есть устоявшийся коллектив рецензентов, среди которых члены международной редколлегии журнала, 

эксперты из числа крупных специалистов в области информатики и вычислительной техники ведущих вузов страны, а 
также ученые и специалисты НИИ «Центрпрограммсистем» (г. Тверь).

Рецензирование проводится конфиденциально. Автору статьи предоставляется возможность ознакомиться с тек
стом рецензии. При необходимости статья отправляется на доработку.

Рецензии обсуждаются на заседаниях рабочей группы, состоящей из членов научного совета журнала. Заседания 

проводятся раз в месяц в НИИ «Центрпрограммсистем» (г. Тверь), где принимается решение о целесообразности публикации статьи.

Статьи, одобренные редакционным советом, публикуются бесплатно в течение года с момента одобрения, а отправ
ленные на доработку – с момента поступления после устранения замечаний.

Редакция международного журнала «Программные продукты и системы» в своей работе руководствуется сводом 

правил Кодекса этики научных публикаций, разработанным и утвержденным Комитетом по этике научных публикаций 
(Committee on Publication Ethics – COPE).

Программные продукты и системы / Software & Systems
4 (30) 2017

561

УДК 004.896
Дата подачи статьи: 14.09.17

DOI: 10.15827/0236-235X.030.4.561-566
2017. Т. 30. № 4. С. 561–566

СИНТЕЗИРОВАНИЕ ПРОГРАММ НА ОСНОВЕ ОПИСАНИЯ 

ГРАФОАНАЛИТИЧЕСКОЙ МОДЕЛИ

А.Г. Зыков, к.т.н., zykov_a_g@mail.ru;

И.В. Кочетков, аспирант, melmacson@gmail.com;
В.И. Поляков, к.т.н., доцент, v_i_polyakov@mail.ru;

Е.Г. Чистиков, магистрант, frazer@list.ru

(Санкт-Петербургский национальный исследовательский университет 
информационных технологий, механики и оптики (Университет ИТМО), 

Кронверкский просп., 49, г. Санкт-Петербург, 197101, Россия)

Количество и объемы создаваемого ПО растут ежегодно. Это побуждает разработчиков к созданию новых инстру
ментов, позволяющих сократить время на разработку очередного продукта, в том числе средств автоматизации тестирования. Необходимость в новых инструментах автоматизации тестирования растет по причине того, что увеличивается количество систем, использующих различные языки программирования. Актуальность задачи поиска универсальных межязыковых средств тестирования остается высокой до сих пор.

В работе рассматривается верификация вычислительных процессов на основе графоаналитической модели. Ос
новная идея этого подхода заключается в том, что разработанная программа конвертируется в описание графоаналитической модели и сравнивается с эталонным описанием, по которому она и создавалась; далее по результатам сравнения программа либо признается корректной, либо отправляется на доработку. 

Узким местом такого подхода являются сама разработка программы на основе графоаналитической модели и по
тенциальная итеративность процесса. Эту проблему предлагается решить с помощью создания утилиты синтеза программ по эталонным описаниям графоаналитической модели. В данной работе рассматривается алгоритм преобразования объектной модели описания графоаналитической модели в текстовое представление операторов и выражений 
языка C#.

Целью исследования является автоматизация синтеза программ на языке C# по группе описаний графоаналитиче
ской модели вычислительного процесса. В рамках данного исследования было создано средство, позволяющее преобразовывать описания графоаналитической модели в исходные коды программ. 

Разработанная утилита была проверена на описаниях графоаналитической модели программы для обработки мас
сивов (сортировка, поворот). Синтезированный исполняемый модуль успешно протестирован в окружении операционной системы Windows 10. 

В дальнейшем планируется развивать утилиту вместе с новыми версиями языка описания для расширения возмож
ностей синтезируемых программ. 

Ключевые слова: графоаналитическая модель, Roslyn, генерация программ, синтезирование программ, автома
тизация, тестирование, верификация. 

Верификация вычислительных процессов (ВП) 

включает в себя анализ всех путей управляющего 
графа программы [1, 2]. Одной из моделей, на основе которой возможно производить верификацию 
ВП, является графоаналитическая модель (ГАМ).

Данная модель представляет собой концентри
рованное описание проектируемого программного 
продукта и служит основой для разработки программы и анализа ВП. Для ГАМ разработан формальный язык описания (версия 1) [3], который 
содержит библиотеку примитивных вершин и правила их соединения для описания алгоритмов любой сложности. Более сложные конструкции языка 
(например, циклы или switch-case-конструкции) 
представляются в виде комбинации простейших. 

Анализ программы на основе ГАМ осуществля
ется в несколько этапов.

1. Описание ВП в формате ГАМ и составление 

его формального описания на языке описания ГАМ
(ЯОГ).

2. Проектирование программы на языке C#.
3. Конвертация исходного кода программы 

в ЯОГ.

4. Сравнение формального (эталонного) и 

сконвертированного (реального) описаний; в случае расхождения в структурах описаний программа 
отправляется на доработку (повторяются этапы 
2–4); в случае совпадения можно утверждать, что 
разработанная программа соответствует ГАМ и 
формальная верификация прошла успешно, на основе чего можно осуществлять приемку исполняемого модуля.

Схема анализа программы с использованием 

ЯОГ представлена на рисунке 1.

Очевидно, что при таком подходе большая 

часть времени уходит на процесс разработки программы, которая удовлетворяла бы эталонному 
описанию ГАМ. Это происходит по нескольким 
причинам. Во-первых, программа разрабатывается 
человеком. Во-вторых, процесс разработки может 
включать более одной итерации. Поэтому возникает потребность в автоматизации процесса 
создания исполнимых модулей. Это возможно 
ввиду наличия эталонного описания ГАМ, которое
является исходным для синтезирования программы. 

Программные продукты и системы / Software & Systems
4 (30) 2017

562

Разработка подобной утилиты позволит:

экономить время на создание исполнимых 

модулей;


создавать на базе ГАМ системы, которые 

дают возможность специалистам без знания языков 
программирования разрабатывать программы и тестировать их в реальной среде;


избегать появления в программе недеклари
рованных возможностей и «мертвого кода».

Предполагается получать исходный код про
граммы на языке C# из группы описаний ГАМ в два 
этапа: преобразование объектных моделей описаний в текстовое представление выражений и конструкций языка C# [4] и дополнительная модификация (запаковка текстового представления в сущность класса, добавление используемых библиотек 
и другое) полученного исходного кода средствами 
синтаксического анализатора Roslyn [5].

Модифицированная схема синтеза программы 

на основе ГАМ ВП с использованием разработанной утилиты представлена на рисунке 2.

Целью данного исследования является автома
тизация создания программ на языке C# на основе 
описания ГАМ. Разработанная утилита была проверена на описаниях программы обработки массивов (сортировка, поворот). Проверка включала в 
себя конвертацию описаний ГАМ в исходный код 
программы, компиляцию этого исходного кода 
средствами Visual Studio и MSBuild и тестирование 
программы в окружении операционной системы 
Windows 10.

В дальнейшем для расширения возможностей 

синтезируемых программ планируется развивать 
утилиту вместе с новыми версиями языка описания. Наряду с этим планируется развивать экосистему ГАМ в рамках учебно-исследовательской 

САПР верификации ВП, разрабатываемой на кафедре информатики и прикладной математики 
Университета ИТМО.

Формализация описания ГАМ

ЯОГ предназначен для универсального пред
ставления алгоритма программы в виде последовательности вершин трех типов: условной, линейной 
и объединяющей. Описание также содержит набор 
правил именования вершин и передачи управления. В таблице 1 приведены примеры изображения 
и описания вершин ГАМ.

Таблица 1

Примеры изображения и описания вершин ГАМ

Table 1

Examples of GAM tops representation and description

Вершина
Пример изображения
Описание

Линейная

LV1(-100; 2) 
{int x = a + b;}

Объединяющая

UV2(1,6; 3)

Условная

CV1(-100; 
2:3) {x > y}

Вызов 
функции
LVF5 (4; 6) 
{BubbleSort(array)}

Базовые блоки (циклы, множественный выбор 

и др.) представляются в виде комбинации простей
int x = a + b
LV1

UV2
LV1, UV6

CV1
x > y
False
True

LVF5 
BubbleSort(array)

Исполняемый модуль

ТЗ
ГАМ

Описание ГАМ на ЯОГ

Утилита синтеза программ

Рис. 2. Схема синтеза программы
с использованием описания ГАМ ВП

Fig. 2. The scheme of the program synthesis using

the description of GAM of a computing process

Рис. 1. Анализ программы с использованием ГАМ

Fig. 1. The analysis of the program using GAM

Нет

Сравнение описаний

Коррекция 

Конвертор в ЯОГ
Исходный 

модуль на С#

Проектирование 

программы
Описание ГАМ 

ТЗ  
ГАМ

Да

Исполняемый модуль

=

Программные продукты и системы / Software & Systems
4 (30) 2017

563

ших вершин. В таблице 2 приведен пример изображения и описания цикла со счетчиком, решающего 
задачу вычисления факториала числа N.

Необходимо отметить, что вход в ВП и выход 

из него несколько отличаются от обычной линейной вершины, что начальной и конечной вершинами являются такие вершины, номера которых –
отрицательные числа. Вершина вызова функции 
используется в том случае, когда для этой функции
существует описание ГАМ. Для функций из стандартных библиотек используется обычная линейная функция. При описании ГАМ в круглых скобках указываются номера входных и выходных вершин.

Таблица 2

Пример изображения и описания цикла 

со счетчиком

Table 2

The example of counting loop representation 

and description

Пример изображения
Описание

LV1(-100;2) 
{int i = 1, Х = 1;}
UV2(1,4;3)
CV3(2;4:5) 
{i  N}
LV4(3;2) 
{X = X * i; i++;}

ЯОГ может быть расширен: например, добав
лен частный случай условной вершины – ждущая 
вершина [6].

Алгоритм преобразования

Синтезирование программ на основе описаний 

ГАМ будем производить по следующему алгоритму.

1. Последовательное чтение каждого описания 

ГАМ из указанной директории.

2. Преобразование описания ГАМ в отдельный 

метод программы [7]: 


получение объектной модели описания 

ГАМ; 


последовательное преобразование объект
ной модели в конструкции целевого языка программирования; 


дополнение 
обязательными 
атрибутами 

(имя, модификаторы доступа, возвращаемый результат, аргументы и др.).

3. Объединение всех полученных методов в 

единый файл.

4. Дополнение обязательными атрибутами по
лученного файла (инструкции включения, наименование класса и др.).

5. Компиляция полученного файла в исполняе
мый файл или библиотеку [8].

Прохождение путей исполнения начинается с 

начальной вершины. Прохождение конкретного 
пути прерывается в случаях достижения объединяющей вершины, достижения конца, обнаружения 
рекурсивного фрагмента.

При отсутствии вершины с требуемым иденти
фикатором процесс преобразования прекращается. 

Ввиду того, что конструкции в теле линейной 

вершины и условиях в текущей версии описания 
представляют свободный текст без семантики, синтез программы можно производить только на основании текстового представления, а не объектов [9]. 
Базовые управляющие вершины преобразовываются следующим образом:


к линейной вершине добавляется тело ли
нейного блока к представлению родительского 
блока без дополнительных преобразований;


условная и объединяющая вершины не пре
образовываются для языка C# и используются 
только в составе базовых блоков.

Основную сложность при преобразовании 

представляют базовые блоки, являющиеся совокупностью управляющих и линейных вершин, но 
представляющие единое целое. Как было отмечено 
ранее, существует всего несколько базовых блоков. 
Вершину, управление которой передается из базового блока, можно проследить по условной вершине, отвечающей за условие цикла (либо в конце 
блока, либо после первой вершины). После определения списка вершин и пути передачи управления 
можно произвести свертку базового блока в стандартную линейную вершину и вставить в ее тело 
текстовое представление блока [10]. На рисунке 3 
представлена схема свертки при преобразовании.

CV3
i  N

LV1
int i = 1, Х=1;

UV2 
LV1, LV4

False

True

LV4 
X = X * i;

i++;

Рис. 3. Свертка базового блока

Fig. 3. A base unit fold

LV5
Внешние 

инструкции

LV1
Внешние 

инструкции

LV2-4
Инструкции 

базового блока
CV3 Предикат 

цикла

LV1
Внешние 

инструкции

UV2
LV1, LV4

Нет

Да

LV4 Тело цикла

LV5
Внешние 

инструкции

Программные продукты и системы / Software & Systems
4 (30) 2017

564

Результаты тестирования

Для проверки утилиты синтеза программ вос
пользуемся описаниями ГАМ для программы обработки массивов. Этот вычислительный процесс содержит два описания.

Описание ГАМ методом Main: static void 

Main(string[ ] args).

LV1(-100; 2) { var option = int.Parse(args[0]); var array 

= args[1].Split(new[] { "." }, StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray(); }

CV2 (1; 3:4) { option == 0 }
LV3 (2; 7) { array = array.Reverse().ToArray() }
CV4 (2; 5:6) { option == 1 }
LVF5 (4; 6) { BubbleSort(array) }
UV6 (4,5; 7)
UV7 (3,6; 8)
LV8 (7; 9) { var enumerator = array.GetEnumerator() }
UV9 (8,11;10)
CV10 (9; 11:12) { enumerator.MoveNext() }
LV11 (10; 9) { var element = enumerator.Current; Con
sole.Write(element + " "); }

LV12 (10; -10) { Console.ReadKey() }

Описание ГАМ методом BubbleSort: private 

static void BubbleSort(int[ ] arr).

LV1(-100; 2) { int temp = 0; int write = 0; }
UV2(1,11; 3) 
CV3 (2; 4:-10) { write < arr.Length }
LV4 (3; 5) { int sort = 0 }
UV5 (4,10; 6)
CV6 (5; 7:11) { sort < arr.Length - 1 }
CV7 (6; 8:9) { arr[sort] > arr[sort + 1] }
LV8 (7; 9) { temp = arr[sort + 1]; arr[sort + 1] = 

arr[sort]; arr[sort] = temp; }

UV9 (7,8; 10)
LV10 (9; 5) { sort++ }
LV11 (6; 2) { write++ }

Синтезированная программа компилируется и 

выполняется корректно:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Linq;
namespace SynthesizedProgram
{

class Program
{

static void Main(string[] args)
{

var option = int.Parse(args[0]);
var array = args[1].Split(new[] { "." }, String
SplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray();

if (option = = 0)
{

array = array.Reverse().ToArray();

}
else 
{

if (option == 1)

{

BubbleSort(array);

}

}
var enumerator = array.GetEnumerator();
while (enumerator.MoveNext())
{

var element = enumerator.Current;
Console.Write(element + " ");

}
Console.ReadKey();

}

private static void BubbleSort(int[] arr)
{

int temp = 0;
int write = 0;
while (write < arr.Length)
{

int sort = 0;
while (sort < arr.Length – 1)
{

if (arr[sort] > arr[sort + 1])
{

temp = arr[sort + 1];
arr[sort + 1] = arr[sort];
arr[sort] = temp;

}
sort++;

}
write++;

}

}

}

}

Исполнимый модуль был протестирован с по
мощью средств, описанных в [11].

Недостатки описания ГАМ

В ходе исследования было выявлено несколько 

проблем описания ГАМ, затрудняющих синтез более сложных программ.

1. Свободная форма содержания линейных 

блоков и условий. По этой причине невозможно 
производить преобразование на основе синтаксических деревьев двух языков (описания ГАМ и целевого). Требуется наличие стандартных понятий 
любого языка программирования (система типов, 
операторы, выражения и др.).

2. Отсутствие данных о зависимостях получае
мой программы (выражения Using). На текущем 
этапе их можно заполнить определенным набором, 
покрывающим требуемый спектр возможностей, 
или пытаться автоматически определить по исходному коду, как это делается в современных интегрированных 
средах 
разработки 
(Integrated 

Development Environment). 

3. Отсутствие сигнатуры описываемого ме
тода. На текущем этапе ее можно определить 
только по названию файла, содержащего описание, 
что является неустойчивым решением и может 
приводить к сбоям.