Модели и алгоритмы семантической интероперабельности элементов объектно-ориентированных систем тема диссертации и автореферата по ВАК РФ 05.13.01, кандидат наук Захаров Александр Сергеевич

  • Захаров Александр Сергеевич
  • кандидат науккандидат наук
  • 2022, ФГБОУ ВО «Нижегородский государственный технический университет им. Р.Е. Алексеева»
  • Специальность ВАК РФ05.13.01
  • Количество страниц 155
Захаров Александр Сергеевич. Модели и алгоритмы семантической интероперабельности элементов объектно-ориентированных систем: дис. кандидат наук: 05.13.01 - Системный анализ, управление и обработка информации (по отраслям). ФГБОУ ВО «Нижегородский государственный технический университет им. Р.Е. Алексеева». 2022. 155 с.

Оглавление диссертации кандидат наук Захаров Александр Сергеевич

1.1.4 Промежуточная трансляция

1.1.5 Спецификация Common Language Infrastructure (CLI)

1.2 Метапрограммирование

1.2.1 Cамомодифицирующийся код

1.2.2 Генерация программных блоков на основе графической нотации UML

1.2.3 Генерация программных блоков

1.3 Проблемы генерации программных блоков в настоящее время

1.4 Понятие онтологии в технических науках

1.5 Принцип внедрения зависимостей

1.6 Принципы SOLID

1.7 Открытые информационные системы

1.8 Структура системы программного блока

1.8.1 Использование рефактор-генераторов в жизненном цикле программной системы

1.8.2 Анализ структуры системы программного кода

1.9 Цель и задачи диссертации

1.10 Выводы по главе

Глава 2 Алгебраическая модель процессов низкоуровневой структурной модификации объектно-ориентированных систем

2.1 Краткие сведения теории категорий

2.1.1 Введение в теорию категорий

2.1.2 Основные определения теории категорий

2.2 Дизъюнкт Хорна

2.3 Свойства архитектуры информационных систем

2.4 Теоретическое представление модели низкоуровневой структурной модифицируемости объектно-ориентированных систем

2.4.1 Множества формализующие объектно-ориентированную систему

2.4.2 Операции сопряжения блоков

2.4.3 Операции удаления блоков и связей между блоками из яблочных ООС

2.5 Пространственное сопряжение компонентов ООС

2.6 Элементарные операции модификации объектно-ориентированных систем

2.7 Особенности реализации принципа инверсии контроля в самоорганизующихся объектно-ориентированных системах

2.7.1 Структурный компонент «Атрибуты класса»

2.7.2 Структурный компонент «Функция»

2.7.3 Структурный компонент «Интерфейс»

2.7.4 Структурный компонент «Класс»

2.7.5 Обобщение механизма внедрения зависимостей

2.7.6 Концептуальная схема системы управления внедрением зависимостей на уровнях атрибут, алгоритм, метод, класс, модуль

2.7.7 Организация акторов

2.8 Объектно-ориентированная система как алгебраическая структура

2.9 Генераторы программных компонентов как адаптивная информационная система

2.10 Анализ корректности использования шаблонов проектирования ООС

2.11 Выводы по главе

Глава 3 Обобщенный дискретно-событийный алгоритм модификации

объектно-ориентированных систем

3.1 Анализ этапов конфигурирования и шаблонизации в рамках автоматизированной системы генерации программных компонентов

3.2 Общая схема модифицируемости объектно-ориентированной системы

3.3 Семантическая модель генератора программных компонентов

3.4 Обобщенный алгоритм модификации объектно-ориентированной системы

3.5 Прикладные алгоритмы модификации объектно-ориентированной системы

3.6 Система абстрактных агентов

3.6.1 Фильтрующая система

3.6.2 Модифицируемость многокомпонентной структуры

3.7 Выводы по главе

Глава 4 Практическая реализация

4.1 Пример структурирования программной системы

4.2 Блочная структура программного кода объектно-ориентированной системы

4.3 Анализ корректности использования некоторых шаблонов объектно-ориентированного проектирования в программных системах

4.4 Семантическое моделирование генераторов программного кода

4.5 Построение пользовательского интерфейса на основе компонентного представления элементов

4.6 Реорганизации подсистемы сопряжения микросервисов

4.7 Реализация акторной системы поддержки семантической интероперабельности объектно-ориентированных систем

4.7.1 Система управления модификацией объектно-ориентированной системы на основе конечного автомата

4.7.2 Схема взаимодействия акторов в акторной системе модификации объектно-ориентированных систем

4.8 База данных шаблонов и настроек генераторов программного кода

4.9 Исследование производительности акторной системы поддержки семантической интероперабельности

4.10 Перспективы развития результатов диссертации

4.11 Выводы по главе

Заключение

Список сокращений

Список литературы

Приложение А

Приложение Б

Приложение B

Введение

Рекомендованный список диссертаций по специальности «Системный анализ, управление и обработка информации (по отраслям)», 05.13.01 шифр ВАК

Введение диссертации (часть автореферата) на тему «Модели и алгоритмы семантической интероперабельности элементов объектно-ориентированных систем»

Актуальность исследования.

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

Ключевым, принципом построения гетерогенных интегрированных аппаратно-программных комплексов, на которых строится любая IT-инфраструктура, выступает интероперабельность, заключающаяся в «способности двух или более информационных систем или компонентов к обмену информацией и к использованию информации, полученной в результате обмена», при этом под семантической интероперабельностью[1] понимают «способность взаимодействующих систем одинаковым образом интерпретировать смысл информации, которой они обмениваются». Обеспечение интероперабельности позволяет сократить затраты на модификацию и реконфи-гурирование информационных систем различного назначения.

Известно, что в подавляющем большинстве случаев при проектировании сложных IT- инфраструктур применяют объектно-ориентированный подход и подход, который исследуется в данной работе. Под объектно-ориентированной системой (ООС) будем понимать систему, полученную в результате объектно-ориентированного проектирования. Многочисленные работы, развивающие принципы MDA (Model Driven Architecture), IoC (Inversion of Control), а также реализующие их средства интеллектуальной поддержки создания ООС, на практике представлены модулями расширения интегрированных сред разработки, включающими генераторы программных компонентов (ГПК). Такие инструменты используют код в качестве инварианта ООС, но они либо ориентированы на типовые частные случаи в пределах заранее известного стека технологий, используемого при построении программной системы, и не могут применяться в автономном режиме, либо применяются для первичного синтеза ООС. Также существуют общепринятые ограничения, обусловленные известным принципом «открытости-закрытости»[2] объектно-ориентированного проектирования, не позволяющие в настоящее время реализовывать эффективные инструментальные средства поддержки процессов внесения изменений в объектно-ориентированных программных системах на уровне алгоритмов и структур данных.

В разное время вопросами построения архитектур ООС и интеллектуализации процессов синтеза объектно-ориентированных систем занимались отечественные и зарубежные учёные, среди

которых А.Я. Олейников, Е.Е. Журавлев, В.А. Сухомлин, А.В. Бойченко, А.В. Леоненков, А.Ю. Молчанов, Martin Fowler, David Schreiber, Thomas Allen Akin, Perry L. Miller, E. Gamma, R. Helm, R. Johnson, J. Vlissides и др.

Несмотря на то, что применение ГПК позволяет автоматизировать ряд задач, связанных с построением объектно-ориентированных систем, по-прежнему степень участия человека-эксперта, архитектора, разработчика остается высокой. Как правило, в основе процесса формирования целевого программного компонента лежит система заранее подготовленных спецификаций, и человек должен самостоятельно выбирать нужные ему ГПК для различных задач.

Это определяет постановку актуальной научной задачи, связанной с дальнейшим развитием принципов IoC и средств интеллектуальной поддержки структурной организации объектно-ориентированных систем.

Целью работы является повышение семантической интероперабельности взаимодействия элементов объектно-ориентированных систем при внесении структурных изменений на всех этапах жизненного цикла ООС.

Для достижения цели требуется решить следующие задачи:

1. Анализ научно-технической литературы, нормативно-технической документации и других материалов по вопросам синтеза, модификации и обеспечения адаптивности объектно- ориентированных систем.

2. Разработка модели объектно-ориентированной системы как открытой информационной системы.

3. Разработка комплекса прикладных алгоритмов синтеза и модификации объектно- ориентированных систем.

4. Разработка прототипа программного обеспечения, проведение экспериментальной проверки полученных результатов.

Объектом исследований являются объектно-ориентированные системы.

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

Методы исследования. Теоретическая часть работы основана на использовании теории системного анализа, классической теории множеств и абстрактной алгебре. При разработке алгоритмического обеспечения применялся аппарат семантического моделирования, дескрипционной логики, методы разработки баз знаний онтологического типа.

Достоверность и обоснованность результатов результатов определяется использованием методов системного анализа, объектно-ориентированного моделирования, онтологического, авто-

матного моделирования и мультиагентного моделирования, структурно-параметрического синтеза открытых информационных систем.

Область исследования соответствует паспорту специальности 05.13.01. - «Системный анализ, управление и обработка информации (в науке и промышленности)», а именно: п.4 - разработка методов и алгоритмов решения задач системного анализа, оптимизации, управления, принятия решений и обработки информации; п.5 - разработка специального математического и алгоритмического обеспечения систем анализа, оптимизации, управления, принятия решений и обработки информации; п.8 - теоретико-множественный и теоретико-информационный анализ сложных систем; п.10 - методы и алгоритмы интеллектуальной поддержки при принятии управленческих решений в технических системах.

По итогам диссертационного исследования получены следующие результаты, обладающие научной новизной и являющиеся предметом защиты:

1. Предложена алгебраическая модель объектно-ориентированной системы, отличающаяся от известных представлением в виде многокомпонентной интероперабельной структуры на основе операций пространственного и семантического сопряжения, позволяющая выразить процессы сборки и низкоуровневой структурной модификации ООС посредством дизъюнкта Хорна, предназначенная для построения открытой системы управления сборкой и модификацией ООС (соответствует п. 4, 8).

2. На основе предложенной модели разработан обобщенный дискретно-событийный алгоритм модификации ООС, отличающийся онтологическим представлением генераторов компонентов ООС, позволивший минимизировать связность между правилами сборки и модификации гетерогенных ООС и процессами управления синтезом ООС, предназначенный для формализации и реализации распределенных алгоритмов управления сборкой и модификацией ООС (соответствует п. 5).

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

Основные положения, выносимые на защиту:

1. Алгебраическая модель объектно-ориентированной системы как открытой информационной системы.

2. Онтологическая модель генератора компонентов объектно-ориентированной системы.

3. Обобщенный дискретно-событийный алгоритм модификации ООС

4. Прикладные алгоритмы сборки и модификации объектно-ориентированных систем.

Практическая значимость результатов диссертационной работы.

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

Реализация и внедрение работы.

Теоретические и прикладные результаты диссертационной работы внедрены:

1. В ООО «Харман» при разработке программного обеспечения для звукового оборудования

2. В учебном процессе ФГБОУ ВО Нижегородского государственного технического университета им. Р.Е. Алексеева при проведении учебного курса «Открытые информационные системы» при подготовке магистров по направлению 09.04.01 «Информатика и вычислительная техника», магистерские программы «Теоретическая информатика» и «Диагностические и информационно-поисковые системы».

Апробация работы. Основные положения и результаты диссертационной работы докладывались и обсуждались на следующих конференциях: «Congresson Coastal and Marine Sciences, Engineering, Management and Conservation MEDCOAST» (XIV international scientific congress, Marmaris, Turkey, 2019) «Информационные технологии в науке, управлении, социальной сфере и медицине» (V междунар. науч. конф. г.Томск, 2018), «Инновационные технологии в образовательной деятельности» (всеросс. науч.-метод. Конф. г. Н.Новгород, 2019, 2020), «Информационные системы и технологии» (XXV, XXVI междунар. науч.-техн. конф., г. Нижний Новгород, 2019, 2020),«Конгресс по интеллектуальным системам и информационным технологиям IS&IT» (г. Новороссийск, Дивноморское 2019, 2020), «Новые информационные технологии и системы» (XVI междунар. науч.-техн. конф., г.Пенза, 2019).

Публикации. Основное содержание диссертационной работы отражено в 15 печатных работах, в том числе 4 представлены в научных изданиях, рекомендуемых ВАК Министерства образования и науки РФ, 2 в издании Scopus; 4 работы в сборниках трудов международных конференций, 4 свидетельства о регистрации программы для ЭВМ.

Личный вклад. Все выносимые на защиту результаты и положения, составляющие основное содержание диссертации, разработаны и получены лично автором или при его непосредственном участии. В работах, опубликованных в соавторстве, лично автору принадлежат: в [1] - уточненные модели стандартизированных профилей на основе онтологического каркаса; в [2] - аналитический обзор методов и средств генерации программных компонентов, концептуальная схема ГПК, методика синтеза программных компонентов; в [4] - правила логического вывода, описывающие

процесс модификации ООС; в [5] - семантическая модель ГПК; в [6] - подсистема, обеспечивающая информационное взаимодействие между управляющими агентами и онтологией программных компонентов; в [7, 8] - аналитический обзор интероперабельности систем мониторинга, методика самотестирования программных систем; в [9, 10] - обзор научных задач, связанных с синтезом и модификацией ООС как открытых информационных систем и путей их решения; в [11] - результаты применения моделей и алгоритмов низкоуровневой структурной модификации ООС в задачах объектно-ориентированного рефакторинга на основе шаблонов воЕ

Структура и объем диссертации. Структура и объем работы. Диссертация изложена на 142 страницах машинописного текста (155 с. с приложениями). Работа иллюстрирована 44-мя рисункая (50-ю с учетом приложений), 8-ю таблицами (8-ю с учетом приложений), снабжена 3-мя приложениями. Библиография включает 65 отечественных, 36 иностранных источников, 13 нормативных и иных документов.

Глава 1. Теоретические аспекты интероперабельности объектно- ориентированных систем

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

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

1.1 Анализ исторических аспектов проблемы разработки ООС

Появление компьютеров, снабженных внутренней памятью и схемами обработки двоичных данных, вплотную подвело вычислительную науку к осознанию огромных возможностей [3; 4]. Однако Алан Тьюринг и другие специалисты ясно понимали, что для большинства программистов общение с машиной на языке цепочек нулей и единиц (т. е. с помощью так называемого машинного кода, который является базовым языком компьютера) окажется достаточно трудным делом. Тьюринг разработал систему сокращенного кодирования, в которой набору букв, соответствовали комбинации из нулей и единиц. Считывая комбинации из нулей и единиц, машина переводила их в соответствующие последовательности импульсов высокого и низкого напряжения.

Использование такого подхода явилось продвижением вперед, но по мнению самого Тьюринга было далеко от идеала. Он писал: «Для упрощения работы необходимо сделать кодирование более понятным. Системы обозначений, используемые в настоящее время, имеют много недостатков. Все они непонятны для начинающего, отличаются друг от друга (каждая система ориентирована на конкретную машину) и трудны для чтения. Расшифровка программного кода крайне сложна и при наличии примечаний, даже если это ваша собственная программа, написанная несколько месяцев назад» [5, p. 55].

Такого же мнения придерживался американский инженер, один из создателей первого в мире электронного компьютера ENIAC(1946) Джон Моучли(Мокли, англ. John William Mauchly). Он

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

Вдохновились идеями Моучли двое математиков Нил Цирлер и Дж. Халкомби Лэнинг-мл. Они создали язык высокого уровня (человеческий код) и транслирующую программу. Такой системой разработчики смогли воплотить мечты Моучли в жизнь. Теперь для того чтобы записать уравнение x=y, необходимо так и записать в программе, в отличии от кодов которые были у Моучли.

Созданная система Моучли сильно повлияла на одного из программистов его группы. Грейс Мюррей Хоппер вместе уже со своей группой ученых занялась разработкой системы, которая могла бы транслировать программы написанные на "человеческом"языке в "машинные"программы. Хоппер назвала эту программу компилятором. Компилятор Хоппер получил широкую известность благодаря инновационным на тот момент методам. В ее компиляторе преобразовывался весь код сразу, в отличии от аналогов (таких как например "Краткий код") где происходила построчная компиляция.

Кроме того, немало важным является тот факт, что у Хоппер получилась именно компилирующая, а не интерпретирующая программа. Последняя должна находится в памяти постоянно во время выполнения основной программы. Т.е. программы должны работать параллельно находясь в одной памяти (и естественно занимая ее). Для компилирующей программы нахождение в памяти не нужно. Один раз откомпилированная программа может запускаться сама без присутствия сторонних программ.

Работа над компиляторами продолжалась. Развилась компьютерная техника, росли потребности пользователей и разработчиков. Хоппер и ее группа задалась новой целью: создать такой язык программирования который был бы похож на английский. Таким образом, разрабатывать программы смогли бы люди, далекие от программирования и создания компьютерных программ. Через несколько месяцев работы были созданы первые 30 команд и компилятора для этих слов. Чтобы упростить алгоритмы компиляции, все эти 30 команд были подобраны таким образом, что первая и третья буква в каждой из команд были различными. Компилятор считывал только эти две буквы, а на остальные не обращал никакого внимания.

1.1.1 История отечественных компиляторов

Основоположником информатики в СССР, в частности раздела автоматизации программирования, является Алексей Андреевич Ляпунов, первым предложивший рассматривать программу

как последовательность чередующихся этапов, на которых выполняется некая обработка данных. Этап Ляпунов предложил назвать оператором, а схемой счета — совокупность операторов и логических условий. Схема и совокупность спецификаций каждого оператора — это программа [6]. Такой взгляд на программу в 50-х был революционным и сразу стал основой первых трансляторов (компиляторов) или программирующих программ, как их тогда называли.

Первым отечественным транслятором стала программирующая программа ПП-1, созданная молодыми специалистами С. С. Камыниным и Э. З. Любимским в 1954 году в Институте прикладной математики АН СССР (в то время — Отделении прикладной математики МИАН АН СССР), руководимом Мстиславом Всеволодовичем Келдышем [7].

1.1.2 Методология процедурно-ориентированного программирования

После создания первых компиляторов (50-е годы) проходит немного времени, а программы уже становятся все сложнее и сложнее. Алгоритмы приложений становятся запутанней, сами приложения выполняют более сложные задачи, появляются приложения состоящие из нескольких компонентов [6].

Большинство современных теоретических разработок и методов для конструирования компиляторов возникло в конце 1960-х. В то же время развитие языков программирования постоянно ставило перед создателями компиляторов новые задачи: от определения языка ALGOL 60 (ранние работы Наура в Дании, а также Ренделла (Randell) и Рассела (Russell) в Великобритании) до удовлетворения потребностей возникших позже языка Ada и языков объектно-ориентированного программирования. Современные требования Java к сетевой безопасности, эффективности и переносимости вновь ставят перед создателями компиляторов новые проблемы. В то же время появление Java Virtual Machine дает пример промежуточного языка, позволяющего проиллюстрировать различные аспекты генерации програмных модулей и распределения памяти.

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

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

Появление первых электронных вычислительных машин или компьютеров ознаменовало новый этап в развитии техники вычислений [5]. Казалось, достаточно разработать последовательность

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

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

Разработка больших систем потребовала декомпозиции процедур на более мелкие фрагменты. Отдельные части крупных процедур, автономно оформленные как единицы компиляции, были названы модулями. Модули, в свою очередь, содержали более мелкие процедуры и функции - особого вида небольшие процедуры со своим способом вызова и обязательным возвратом значения (результата выполнения процедуры). Были разработаны методы структурного программирования, которые помогали в процедурно-ориентированной методологии осуществлять разбиение всей программы на модули и более мелкие фрагменты - процедуры и функции (70-80е годы).

Со временем ситуация существенно изменилась. Реальная трудоемкость начальных этапов проектирования новой программы и программирования стала все больше превосходить плановую. Сроки разработки всё более сложного программного обеспечения стали затягиваться. Коллективные разработки стали сложным процессом, возникли серьезные трудности управления проектами в условиях динамически меняющихся требований заказчиков. Языки спецификаций программ были сложны и мало понятны обычному заказчику непрограммисту. Возникла настоятельная необходимость в изменении самой методологии программирования и проектирования. Основные принципы нового подхода к разработке программного обеспечения были сформулированы в середине 80-х в виде объектно-ориентированного программирования (ООП) [9].

1.1.3 Методология объектно-ориентированного программирования

Фундаментальными понятиями ООП являются понятия класса и объекта.

• Класс- некоторая абстракция совокупности объектов, имеющих общий набор свойств и обладающей одинаковым поведением.

• Объект- экземпляр соответствующего класса с конкретными значениями свойств. Класс образуется операцией обобщения, каждый объект является (ISA) частным примером своего класса. Классы могут быть организованы в иерархическую структуру, напоминающую по своему виду схему классификации. Среди классов может быть выделен самый общий (верхний)

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

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

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

В соответствии c разделением ООС на логические блоки и совокупности объектов объеденные в классы на процесс генерации блоков можно взглянуть под другим углом. Можно генерировать не только код который будет выполняться на машине, но и код который может быть вставлен в «человеческий код», т.е. код на высокоуровневом языке программирования. В дальнейшем этот блок может быть добавлен к блокам написанным разработчиком, модифицирован и скомпилирован, так же как и любой другой блок.

1.1.4 Промежуточная трансляция

23 мая 1995 года Джеймсом Гослингом был разработан язык для программирования бытовых электронных устройств который был назван Oak ("Дуб"). В дальнейшем язык был переименован в Java и стал использоваться для написания как клиентских приложений так и серверного программного обеспечения. Такое название было дано в честь марки кофе, именно поэтому на логотипе изображена чашка с кофе [11].

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

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

существенные изменения, был накоплен большой опыт по их созданию. Усовершенствовались и средства написания таких интерпретаторов.

До недавнего времени исполняемый на JVM код должен был быть написан на высокоуровневом языке программирования Java. Но в последнее время возникло много переосмыслений этого факта. Разработчикам необходима была гибкость в процессе разработки программного обеспечения. Компания JetBrains после пятилетней работы выпустила первый релиз языка Kotlin (Котлин — это небольшой остров в Финском заливе недалеко от Санкт-Петербурга)[12]. Особое влияние на новый язык и принцип его работы испытал от спецификации CLI.

Похожие диссертационные работы по специальности «Системный анализ, управление и обработка информации (по отраслям)», 05.13.01 шифр ВАК

Список литературы диссертационного исследования кандидат наук Захаров Александр Сергеевич, 2022 год

Список литературы

1. Информационные технологии (ИТ). Системы промышленной автоматизации и их интеграция. Интероперабель-ность. Основные положения.ГОСТ Р 55062-2012. — М.: Стандартинформ, 2014. — 12 с.

2. Буч Г., Максимчук Р., Энгл М. Объектно-ориентированный анализ и проектирование с примерами приложений: [пер. с англ.] — Вильямс, 2008. — (Объектные технологии). — ISBN 9785845914019. — URL: https://books. google.ru/books?id=eR-tOAAACAAJ.

3. Криницкий Н. А., Миронов Г. А., Фролов Г. Д. Программирование / под ред. М. Р. Шура-Бура. — М.: Государственное издательство физико-математической литературы, 1963.

4. Захаров А. С., Жевнерчук Д. В., Родионов П. А. Методика самотестирования исполняемого кода. — 2014.

5. Schafer S. B. Exploring the Collective Unconscious in the Age of Digital Media. — IGI Global, 2016. — (Advances in Psychology, Mental Health, and Behavioral Studies). — ISBN 9781466698925.

6. Захаров В. Н., Подловченко Р. И. История информатики в России. — Наука, 2003. — (Информатика- неограниченные возможности и возможные ограничения). — ISBN 9785020130623.

7. Давыдова Т. Т. Русский неореализм. Идеология, поэтика, творческая эволюция. Учебное пособие. — Флинта, 2017. — ISBN 9785457086593.

8. Леоненков А. В. Самоучитель UML 2. — БХВ-Петербург, 2007.

9. Васильев А. Н. Java: объектно-ориентированное программирование : для магистров и бакалавров : базовый курс по объектно-ориентированному программированию. — Питер, 2011. — (Учебное пособие). — ISBN 9785498079486.

10. Седякин В. П. Вопросы изучения философии и методологии информатики. — ЛитРес, 2017. — ISBN 9785040248056.

11. Эккель Б. Философия Java. — Питер, 2001. — (Серия Библиотека программиста). — ISBN 9785272002501.

12. Leiva A. Kotlin for Android Developers: Learn Kotlin the Easy Way While Developing an Android App. — CreateSpace Independent Publishing Platform, 2016. — ISBN 9781530075614.

13. Dino E. Programming Microsoft ASP.NET MVC. — Pearson Education, 2017. — (Developer Reference). — ISBN 9780735681118.

14. Агуров П. В. ASP.NET. Сборник рецептов. — БХВ-Петербург, 2010. — (Профессиональное программирование). — ISBN 9785977505215.

15. Википедия — свободная энциклопедия. — 2020. — URL: https://ru.wikipedia.org/wiki/.

16. Никольский В. С., Рябчун Н. П., Фролова Е. В. История философии / под ред. С. Никольский В. — Изд-во МГИУ, 2008. — ISBN 9785276012377.

17. Кутырев В. А. Философия постмодернизма. — 2014.

18. Yeoman: The web's scaffolding tool for modern webapps.—2018.—URL: http://yeoman.io/.

19. Жевнерчук Д. В., Захаров А. С. Семантическое моделирование генераторов программного кода распределенных автоматизированных систем : Сборник материалов II Международной научно-практической конференции //. Программная инженерия: методы и технологии разработки информационновычислительных систем (ПИИВС— 2018). —2018.

20. Гуляев Ю. В., Олейников А. Я., Батоврин В. К. Обеспечение интероперабельности - основная тенденцияв развитии открытых систем // Информационные технологии и вычислительные системы: №5. - Москва: Отделения нанотехнологий и информационных технологий Российской академии наук. — 2009. — № 5. — С. 7—15.

21. ISO/IEC 7498:1996, Information processing systems: Open Systems Interconnection-Basic Reference Model. — USA: New York, 1994.

22. Gruber T.R. A translation approach to portable ontologies [Электронный ресурс] / T.R. Gruber // Knowledge Acquisition. - № 5(2). - С. 199-220. — 1993. — URL: http : //wwwksl . stanford . edu/kst/what - is -an-ontology.html.

23. Corcho O, Gomez-Perez A. A. Roadmap to Ontology Specification Languages //Knowledge Engineering andKnowledge Management. Methods, Models and Tools. — 2000. — С. 80—96.

24. Жевнерчук Д. В. Обобщенный метод синтеза многокомпонентных интероперабельных структур на основе онтологии и недетерминированного конечного автомата // Информационные технологии. — 2019. — № 2. — С. 67—74.

25. Жевнерчук Д. В. Принципы технической самоорганизации и структурно-параметрический синтез открытых информационных систем // Труды Конгресса по интеллектуальным системам и информационным технологиям "ISIT'17 ". — 2017. — № 2. — С. 28—34.

26. Липаев В. В., Филинов Е. Н. Мобильность программ и данных в открытых информационных системах. — Научная книга, 1997.

27. 1003.0-1995 - IEEE Guide to the POSIX Open System Environment (OSE). — 2020. — URL: https://ieeexplore. ieee.org/document/552903.

28. Гарсия Х., Голдшмидт Г., «Разработка составных бизнес-сервисов на базе сервисно-ориентированной архитектуры». — 2020. — URL:http://www.ibm.com/developerworks/ru/library/ws-soa- composite/.

29. Жевнерчук Д. В., Захаров А. С. Семантическое моделирование генераторов программного кода распределенных автоматизированных систем // Журнал "Труды НГТУ им. Р.Е. Алексеева"Нижний Новгород. — 2018. — № 1. — С. 23—31.

30. Курейчик В. М., Курейчик Л. В. Построение онтологии для поиска нетривиальных знаний // Информатика, вычислительная техника и инженерное образование. — 2015. — № 4. — С. 1—13.

31. Олейник П. Корпоративные информационные системы. — СПб.: Питер, 2012. — С. 176.

32. Погружение в паттерны проектирования. — 2020. — URL: https : //refactoring . guru/ru/design -patterns.

33. Жевнерчук Д. В., Ломакина Л. С. Синтез открытых информационных систем с использованием алгебраических структур как моделей // Фундаментальные исследования. — Москва, 2017. — № 8. — С. 218—224.

34. Шмуллер Д. Освой самостоятельно UML за 24 часа, 3-е издание. — Издательский дом Вильямс. — ISBN 9785845908551.

35. Манин Ю. И. Вычислимое и невычислимое. — Советское Радио, 1980.

36. Информационные технологии (ИТ). Системная и программная инженерия. Требования и оценка качества систем и программного обеспечения (SQuaRE). Модели качества систем и программных продуктов: ГОСТ Р ИСО/МЭК 25010-2015. — М.: Стандартинформ, 2018. — 18 с. — (Межгосударственный стандарт).

37. ISO/IEC 8613/1:1994, Information technology Open Document Architecture (ODA) and Interchange Format -Introduction and general principles.ITU-T Rec. — USA : New York, 1993.

38. ISO/IEC 10746-3:1995, Reference Model for Open Distributed Processing : Reference Model: Architecture. — USA : New York, 1994.

39. Качество программных средств. Термины и определения : ГОСТ 28806-90. — М. : Стандартинформ, 2005. — 18 с. — (Межгосударственный стандарт).

40. Guarino N. Formal ontology in information systems. — 1998.

41. Integration Definition for Function Modeling (IDEF0). Software Standard, Modeling Techniques.National Institute of Standards and Technology. — USA : New York, 1993.

42. ISO 9001:1994 Quality systems - Model for quality assurance in design, development, production, installation and servicing.ITU-T Rec. — USA : New York, 1993.

43. ISO 9002:1994 Quality systems - Model for quality assurance in production, installation and servicing.ITU-T Rec. — USA : New York, 1993.

44. Eilenberg S., MacLane. S. A general theory of natural equivalences. // Trans. Amer. Math. Soc. — 1945. — № 58. — С. 231—294.

45. Horrocks I., Sattler U., Tobies S. Practical reasoning for expressive Description Logics. — 1999.

46. Ricardo C. Logic for Computer Science and Artificial Intelligence. — John Wiley, Sons, 2013. — С. 537. — ISBN 978-1-118-60426-7.

47. Jaffar J., Lassez J. Constraint logic programming // Principles of programming languages. — 2018. — С. 111—119.

48. Жевнерчук Д. В., Захаров А. С. Модель и лингвистическое обеспечение низкоуровневой структурной модификации объектно-ориентированных систем // Труды НГТУ им. Р.Е. Алексеева. — 2022. — № 2. — С. 7— 16.

49. Молчанов А. Ю. Системное программное обеспечение: Учебник для вузов. 3-е изд. — Питер, 2009. — (Учебник для вузов). — ISBN 9785498071534.

50. IEEE Std 610.12-1990 Standard Glossary of Software Engineering Terminology.The Institute of Electrical and Electronics Engineers. — USA : Fundamental termsk, 1993.

51. Жевнерчук Д. В., Захаров А. С., Романов М. К. Особенности реализации принципа инверсии контроля в самоорганизующихся программных системах. // Труды Конгресса по интеллектуальным системам и информационным технологиям "ISIT'20 ". — 2020. — № 2. — С. 28—34.

52. Информационная технология. Основы и таксономия международных функциональных стандартов : ГОСТ Р ИСО/МЭК ТО 10000-1-99. — М.: Стандартинформ, 2000. — (Межгосударственный стандарт).

53. Грошев А. В. Стратегия алгоритмического повышения точностных характеристик и информационной надежности инерциально-спутниковых навигационных систем в составе беспилотных летательных аппаратов // Труды МАИ. — 2019. — № 104. — С. 1—27.

54. Korneev D., Boichenko A., Kazakov V. Warehouse development of ontology for providing semantic interoperability //. XXII International Conference "Enterprise Engineering and Knowledge Management" Moscow, Russia. — 2019.

55. Логинов В. П. Информационные технологии управления. — М.: КноРус, 2008. — ISBN 978-5-390-00176-9.

56. Кулясов П. С. Обобщенный алгоритм компонентной сборки образовательных программ высшего образования // Научно-технический вестник Поволжья. Казань. — 2019. — № 11. — С. 24—27.

57. ISO/IEC 2382-1:1993. Information technology : Vocabulary. — USA : New York, 1990.

58. Гуляев Ю. В., Журавлев Е. Е., Олейников А. Я. Методология стандартизации для обеспечения интеропера-бельности информационных систем широкого класса. Аналитический обзор. // Журнал радиоэлектроники. — 2013. —№3.—С. 23—31.

59. Zhevnerchuk D. V., Kondratiev V. V. Application of Methods of Self-Organization Theory to Problems of Profiling and Configuring Computational Systems. — 2014.

60. Semantic modeling and structural synthesis of onboard electronics protection means as open information system / V. Zhevnerchuk D. [и др.] // Journal of Physics: Conference Series. — 2018. — № 3.

61. Kusek M. Self-organized Multi-agent System for Service Managment in the Next Generation Networks. — 2011.

62. Кулясов П. С., Жевнерчук Д. В. Моделирование и оптимизация адаптивных многокомпонентных систем на базе алгебраических структур // Моделирование, оптимизация и информационные технологии. Воронеж. — 2020. — 1(8). —С. 30—37.

63. Гуляев Ю. В., Олейников А. Я. Открытые системы: от принципов к технологии // Информационные технологии и вычислительные системы. — 2003. — № 3. — С. 4—12.

64. Mamei M., Vasirani M, Zambonelli F. Self-organizing spatial shapes in mobile particles: The tota approach. — 2004.

65. ISO/IEC 9241. Ergonomic Standards for Computer Products. — 2018.

66. ISO/IEC DTR 11017: 1995, Information Technology - Framework for internationalization. — 2018.

67. Appel A. W. Semantics-directed code generation // Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages - POPL '85. — 1985. — DOI: 10 . 1145/318593 . 318661. — URL: http://dx.doi.org/10.1145/318593.318661.

68. Visualization of parallel program execution for software behavior analysis and defect detection / A. Polovtcev [и др.] // Proceedings of the 10th Central and Eastern European Software Engineering Conference in Russia. — 2014. — DOI: 10.1145/2687233.2687250. — URL: http://dx.doi.org/10.1145/2687233.2687250.

69. Restful сервис обработки текстов / В. Жевнерчук Д. [и др.] // Информационные системы и технологии. ИСТ -2017: тезисы докл. XXIII междунар. науч.-техн. конф. / НГТУ . — 2017. — С. 348—352.

70. Батоврин В. К. Построение профиля информационных, вычислительных и телекоммуникационных ресурсов для обеспечения фундаментальных исследований // Журнал радиоэлектроники: №11. - Москва: ИРЭ им. Ко-тельникова РАН. — 2001. — С. 7.

71. Бойченко А. В. Основы открытых информационных систем. — М.:Издательский центр АНО«ЕОАИ», 2004. — С. 128.

72. Вашкевич Н. П., Бикташев Р. А. Недетерминированные автоматы и их использование для реализации систем параллельной обработки информации: Монография. — Пенза: Изд-во ПГУ., 2016. — С. 394.

73. Коберн А. Современные методы описания функциональных требований к системам. — М.: Изд-во «Лори», 2002. —С. 263.

74. Identification or result processing systems for ecosystem monitoring / S. Zakharov A. [и др.] // Proceedings of the Fourteenth International MEDCOAST Congress on Coastal and Marine Sciences, Engineering, Management and Conservation (MEDCOAST'19). — 2019. — Т. 1, № 4. — С. 101—112.

75. Леффингуелл Д., Уидриг Д. Принципы работы с требованиями к программному обеспечению. — М.: Изд-во Вильямс, 2002. — С. 448.

76. Лукин М. А., Шалыто А. А. Разработка и автоматическая верификация параллельных автоматных программ // Информационно-управляющие системы. — 2013. — С. 43—50.

77. Стивенс У. Unix. Профессиональное программирование. — Изд-во Символ-Плюс, 2007. — С. 1104.

78. Сухомлин В. А. Методологический базис открытых систем // Открытые системы:№4. — 1996. — С. 48—51.

79. Тай М. Л. Динамика процессов самосборки. — Н. Новгород: Изд-во ННГУ, 2000. — С. 178.

80. Радченко Г. И. Распределенные вычислительные системы. — Издат-во Южно-Уральского государственного университета, 2011. — С. 176.

81. Лапшин В. А. Онтологии в компьютерных системах. — М.: Научный мир, 2010. — С. 247.

82. Когаловский М. Р., Калиниченко Л. А. Концептуальное моделирование в технологиях баз данных и онтологические модели // Труды симпозиума «Онтологическое моделирование», г. Звенигород, — 2008. — С. 303.

83. Зелковиц М., Пратт Т. Языки программирования.Разработка и реализация. — Нитер, 2002. — С. 353.

84. Исаев Г. Н. Проектирование информационных систем. — М.: Изд-во «Омега-Л», 2013. — С. 424.

85. Закревский А. Д. Алгоритмы синтеза дискретных автоматов. — М.: Наука, 1971. — С. 624.

86. Кулясов П. С. Классификация интерфейсов многокомпонентной системы на основе алгебраического подхода // Информационные системы и технологии. ИСТ-2020: сборник материалов XXVI международной научно-технической конференции - Н.Новгород - ФГБОУ ВО НГТУ им. Р.Е. Алексеева. — 2020. — С. 419—423.

87. Кулясов П. С., Жевнерчук Д. В. Онтологическое проектирование адаптивных образовательных программ // Конгресс по интеллектуальным системам и информационным технологиям «IS IT'19» - Таганрог. — 2019. — С. 31—38.

88. РозенбергГ. С. Искусство - наука: возможности «перевода».—.—DOI: 10.24855/biosfera.v8i2.246.

89. Jelasity M, Babaoglu O. T-Man: Gossip-Based Overlay Topology Management. — 2006.

90. Kosanke K. ISO Standards for Interoperability: a comparison in konstantas. — 2006.

91. Kwiatkowska M, Norman G. D. Analysis of a Gossip Protocol in PRISM. — 2008.

92. Жевнерчук Д. В., Аристов А. В., Чепкасов В. Л. Web-онтологии окружения открытой системы поддержки диалоговых сервисов. — 2013.

93. Лабоцкий В. В. Управление знаниями: технологии, методы и средства представления, извлечения и измерения знаний. — 2006.

94. Захаров А. С., Жевнерчук Д. В., Родионов П. А. Исследование интероперабельности систем мониторинга вычислительных процессов и ресурсов. — 2014.

95. Захаров А. С., Жевнерчук Д. В., Ломакина Л. С. Проблемы открытых информационных систем. Пути их решения. — 2018.

96

97

98

99

100

101

102

103

104

105

106

107

108

109

Бартлетт Д. Искусство метапрограммирования. — developerWorks, 2005.

Клименко О. А. Информационная система математических Интернет-ресурсов MathTree. — ЛитРес, 2017. — ISBN 9785040400959.

Fein L. The Role of the University in Computers, Data Processing, and Related Fields // Communications of the ACM. — 1959.

Свидетельство РФ на программу для ЭВМ Открытый программный комплекс самотестирования вычислительных процессов : Жевнерчук Д.В., Родионов П.А., Захаров А.С., Лопатин Д.А. — Россия, 2014.

Kruijf M. de, Sankaralingam K. Idempotent code generation: Implementation, analysis, and evaluation // Proceedings of the 2013 IEEE/ACM International Symposium on Code Generation and Optimization (CGO). — 2013. — DOI: 10.1109/cgo.2013.6495002. — URL: http://dx.doi.org/10.1109/CGO.2013.6495002.

Eriksson M., Kessler C. Integrated Code Generation for Loops // ACM Transactions on Embedded Computing Systems.—2012. —Т. 11S,№ 1. —С. 1—24.—ISSN 1558-3465.— DOI: 10.1145/2180887.2180896. —URL: http://dx.doi.org/10.1145/2180887.2180896.

High performance stencil code generation with Lift / B. Hagedorn [и др.] // Proceedings of the 2018 International Symposium on Code Generation and Optimization. — 2018. — DOI: 10. 1145/3168824. — URL: http: //dx. doi.org/10.1145/3168824.

Constraint-based code generation / R. C. Lozano [и др.] // Proceedings of the 16th International Workshop on Software and Compilers for Embedded Systems - M-SCOPES '13. — 2013. — DOI: 10. 1145/2463596. 2486155. — URL: http://dx.doi.org/10.1145/2463596.2486155.

Yiyuan H. Creation Methodology of Interactive Art Installation Based on Philosophy-Understanding Projection // Proceedings of the 2015 Virtual Reality International Conference. — 2015. —DOI: 10.1145/2806173.2806179. — URL:http://dx.doi.org/10.1145/2806173.2806179.

Experiences with technical debt and management strategies in production systems engineering / L. Waltersdorfer [и др.] // Proceedings of the 3rd International Conference on Technical Debt. — 2020. — DOI: 10. 1145/3387906. 3388627. — URL: http://dx.doi.org/10.1145/3387906.3388627.

Verdecchia R., Malavolta I., Lago P. Architectural technical debt identification // Proceedings of the 2018 International Conference on Technical Debt. — 2018. — DOI: 10.1145/3194164.3194176. — URL: http://dx.doi.org/10. 1145/3194164.3194176.

Strantz A. Globalizing technical communication research through digital mapping // Proceedings of the 33rd Annual International Conference on the Design of Communication. — 2015. — DOI: 10.1145/2775441.2775449. — URL: http://dx.doi.org/10.1145/2775441.2775449.

Accessibility research at the Czech Technical University / A. J. Sporka [и др.] // ACM SIGACCESS Accessibility and Computing. — 2007. — № 88. — С. 29—35. — ISSN 1558-1187. — DOI: 10. 1145/1278234. 1278239. — URL: http://dx.doi.org/10.1145/1278234.1278239.

Shi Y., Huang S. Research on Software Testing Technical Ability Training based on e-learning // Proceedings of the 2019 4th International Conference on Distance Education and Learning. — 2019. — DOI: 10.1145/3338147.3338173. — URL:http://dx.doi.org/10.1145/3338147.3338173.

110. Yuriev Y. Y., Tipisova E. V. Computer simulation of age changes endocrine status in men of European North // Proceedings of the International Conference on Applications of Computer and Information Sciences to Nature Research - ACISNR '10. — 2010. — DOI: 10.1145/1868013.1868020. — URL: http://dx.doi.org/10.1145/1868013.1868020.

111. Vorobtsov I., Igumnov L, Ipatov A. Porting the boundary elements modeling of poroelastic dynamic application to distributed memory system // Proceedings of the 10th Central and Eastern European Software Engineering Conference in Russia. — 2014. — DOI: 10 . 1145/2687233. 2687237. — URL: http: //dx. doi . org/10 . 1145/2687233. 2687237.

112. Terekhov A., Litvinov Y., Bryksin T. QReal:Robots an environment for teaching computer science and robotics in schools // Proceedings of the 9th Central and Eastern European Software Engineering Conference in Russia. — 2014.— DOI: 10.1145/2556610.2591506. — URL: http://dx.doi.org/10.1145/2556610.2591506.

113. Bexiga M, Garbatov S., Seco J. C. Closing the gap between designers and developers in a low code ecosystem // Proceedings of the 23rd ACM/IEEE International Conference on Model Driven Engineering Languages and Systems: Companion Proceedings. — 2020. — DOI: 10 . 1145/3417990. 3420195. — URL: http : //dx. doi . org/10. 1145/3417990.3420195.

114. Cabot J. Positioning of the low-code movement within the field of model-driven engineering // Proceedings of the 23rd ACM/IEEE International Conference on Model Driven Engineering Languages and Systems: Companion Proceedings. — 2020. — DOI: 10. 1145/3417990. 3420210. — URL: http: //dx. doi. org/10. 1145/3417990. 3420210.

Рис. 45: Свидетельство о регистрации программы для ЭВМ "Открытый программный комплекс самотестирования вычислительных процессов"

Рис. 46: Свидетельство о регистрации программы для ЭВМ "Программный комплекс для решения задач аналитического конструирования оптимальных регуляторов по инженерным критериям качества"

Рис. 47: Свидетельство о регистрации программы для ЭВМ "Модуль синтеза дискретных математических моделей систем управления с произвольным запаздыванием"

Рис. 48: Свидетельство о регистрации программы для ЭВМ "Система поддержки модификации объектно-ориентированных систем на основе акторного подхода"

Рис. 49: Акт о внедрении в учебный процесс "НГТУ им. Р.Е. Алексеева"

НАНММ!

ООО "ХАРМАН"

601105, г. Нижний Новгород.ул.Салганекая, 24 Т>Л. ■.7(831) 257 72 Факс: »7 [В31) 257 72 30 кп>№.1нгппап.£от

НАЙМАМ

Акт

внедрения результатов диссертации ЗАХАРОВА АЛЕКСАНДРА СЕРГЕЕВИЧА

Комиссия в составе:

!. Карпуннн И,Г, (Директор направления разработки к тестирования программного обеспечения)

2. Эппель А.Э. (Начальник отдела обучения, к.г н.)

3, Денисов А- В- (Руководитель подразделения)

рассмотрела диссертацию Захарова А, С. и установила, что рекомендации н прикладные результаты, представленные в работе, были использованы в ООО "Харман" в рамках работ по созданию технологий разработки адаптивного Программного обеспечения.

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

Технический эффект от внедрения результатов диссертации Захарова А.С-эаключастсл в существенном повышении уровня систематизации и стандартизации разрабатываемого программного обеспечения, за счет чего, сокращается время, затрачиваемое на:

- координацию действий групп разработчиков;

- модернизацию про [рам мл ого кода

- конфигурационных файлов при изменении функциональных и нефункциональных требований

- и апис ли не тестов для дна гност ики разрабаты ваем ы х систем

Рис. 50: Акт о внедрении в производственный процесс ООО "Харман"

Председатель комиссии:

К

Фрагменты исходного кода классов "Системы модификации ООС на основе акторного подхода" Фрагмент исходного кода: ComponentBuilder.java

package vst . science . recalgorithm . generator ;

import java . util . ArrayList ;

import java .util. HashMap ;

import java .util .List;

import java .util. Map ;

import vst . science recalgorithm App ;

import vst . science recalgorithm entities .Accesspoint;

import vst . science recalgorithm entities Argument ;

import vst . science recalgorithm entities BuiltComponent ;

import vst . science recalgorithm entities Component ;

import vst . science recalgorithm enums. AccessType ;

import vst . science recalgorithm enums. ComponentParams ;

import vst . science recalgorithm u t i l s . U t i l s ;

public class ComponentBuilder {

public static String buildTargetComponent ( Component target , Collection < Component > components) {

String result = " " ;

for (Accesspoint point: target . getlnterfaces ()) { if ( point . getType (). equals ( AccessType . IN) && !point . getId (). equals( ComponentParams .VALUE. toString())) { List < Component > match = point . findMatchingComponents (

target . getFilterlnterface (). getContent() , components ) ; if (match . size () == 0) BuiltComponent res = buildComponent ( match . get (0) , components, point); if (res != null ) {

result += res.getResult() + "\n";

}

}

}

return result ;

}

private static BuiltComponent buildComponent (

Component component , Collection < Component > components , Accesspoint parentInterface ) { Map < String , Object > data = new HashMap < String , Object > (); List < Argument > parentArgs = new ArrayList < Argument > (); if ( parentlnterface != null ) {

parentArgs = parentInterface . getContent ();

}

for (Accesspoint point: component. getlnterfaces ()) { if ( point . getType (). equals ( AccessType . IN) &&

!point.getId().equals( ComponentParams .VALUE. toString())) { List < Component > match = point . findMatching Component s (

component. getFilterInterface (). getContent() , components ); if (match. size () == 0) { return null ;

}

Component foundComp = match . get ( 0 ) ; if ( point . getMultiple () == true) { for ( Accesspoint child : parentInterface . getChildrenById(point . getId ())) { BuiltComponent result = buildComponent ( foundComp , components ,

Object res = data . get ( point . getId ( ) );

ls.add(result);

data . put ( point . getId () , ls);

}

}

else if ( p arentInterf ace . getChildById ( point . getId () ) != null ) { ls = Utils . convertObjectToList ( res ) ; data . putIf Absent ( point . getId () , buildComponent ( foundComp , components ,

parentInterface.getChildById(point.getId())

)

);

}

} else if (point.getType().equals( AccessType. IN )) { if ( point . getMultiple () == true ) { for (Argument arg: parentArgs) { List < Object > ls ;

if ( data . containsKey ( arg . getName ())) { ls = Utils . convertObjectToList ( data.get(arg. getName ())

);

l s . add ( arg . get Value ());

}

}

} else {

for (Argument arg: point . getContent ()) { for ( Argument pArg : parentArgs ) {

if ( arg . getName (). equals (pArg . getName ())) {}

}

ls . add (arg . get Value ()); data.putIfAbsent(arg. getName () , ls ); data.putlfAbsent (pArg . getName () , pArg .getValue());

}

}

}

}

return new BuiltComponent ( data . get ("name" ) , data.get("type"), MustacheGenerator . compileTemplate ( App.projectPath + App.resourcesPath + component. getComponentPath () ,

data ));

}

}

Фрагмент исходного кода: MustacheGenerator.java

package vst . science . recalgorithm . generator ;

import java . io . File ;

import java . io . FilelnputStream ;

import java . io . IOException ;

import java . io . Writer ;

import java . util .Map;

import com. samskivert . mustache . * ;

import vst . science . recalgorithm . utils . Utils ;

public class MustacheGenerator {

static MustacheGenerator instance = new MustacheGenerator () ; private static Mustache . Compiler compiler; private static Mustache. Lambda uppercase; public MustacheGenerator () {

compiler = Mustache . compiler ( ). escapeHTML( false ). defaultValue ( " " ) ; uppercase = new Mustache .Lambda( ) {

public void execute ( Template. Fragment frag, Writer out) throws IOException { String result = frag.execute();

out. write ( result . substring (0 , 1 ). toUpperCase () + result . substring ( 1 )) ;

}

};

}

public static String compileTemplate ( S tring path, Map < String, Object > data) { StringWriter writer = new StringWriter (); data.put("uppercase", uppercase); try {

File file = new File (path);

FileInputS tream inputStream = new FileInputS tream ( f ile ) ;

compiler . compile (Utils . readFromInputStream (inputStream )). execute(data , writer ) ; } catch ( MustacheException I IOException e) { e. printStackTrace ();

}

return writer . toString (). trim (). replaceAll ( " +" , " " ). replaceAll ( "\n+" , "\n");

}

}

Фрагмент исходного кода: Component.java

package vst . science . recalgorithm . entities ; import java . util .HashMap ; import java . util . List ; import java . util .Map;

import vst . science . recalgorithm . enums. Access Type ; import vst . science . recalgorithm . enums. ComponentType ; import vst . science . recalgorithm . enums .LocationParams ; public class Component { private String id ;

private String location ; private ComponentType type ; private List < Accesspoint > interfaces ; public Component( String id , String location , ComponentType type , List < Accesspoint > interfaces ) { this . id = id ; this .location = location; this . type = type ; this . interfaces = interfaces ;

}

public String getId () { return id ;

}

public String getLocation () { return location ;

}

public ComponentType getType() { return type ;

}

public List < Accesspoint > getInterfaces () { return interfaces ;

}

public Accesspoint getFilterInterface () { for ( Accesspoint point : interfaces ) {

if ( point . getType () == AccessType .FILTER) { return point ;

}

}

return null ;

}

public String getComponentPath () { String location = getLocation (); if (location == null II location . length () < 3) {

return null ; } else {

Map < String , String > args =

new HashMap < String , String > ();

String [] split =

location . trim (). replaceAll (" +" , " ").split(" " ); for (String str: split) {

String [] argument = str . split (" = " ); if (argument. length == 2) {

args . put ( argument [0] , argument [ 1 ]. replace ("\" " , ""));

}

}

location = args

. get ( LocationParams .PACKAGE. toString ()) .replace ( ' . ' , ' / ') .concat("/") +

args

. get ( LocationParams .NAME. toString ()) .concat(".") +

args

. get ( LocationParams .EXTENSION. toString ()); return location ;

}

}

if ( f i 11 er . getName (). equals ( arg . getName ()) && filter .getValue().equals(arg.getValue())) { found = true; break;

}

}

public Boolean doFiltersMatch (List < Argument > filters) { List < Argument > compFilter =

getFilterlnterface (). getContent (); if (compFilter != null &&

compFilter . size () > 0) { for (Argument filter : filters ) { Boolean found = false ; for (Argument arg: compFilter) { return true ;

}

}

}

}

}

Фрагмент исходного кода: Scanner.java

package vst . science . recalgorithm . actors ;

import java . io . File ;

import java . util . List ;

import akka . actor. typed. Actor Ref;

import akka .actor . typed . Behavior ;

import akka .actor.typed.javadsl. * ;

import vst . science . recalgorithm . utils . Utils ;

public class Scanner extends AbstractBehavior < Scanner.Command > {

private ActorRef < Supervisor .Command > parent; private int parserCount;

public interface Command {}

@Override

public Receive < Command > createReceive () {

return newReceiveBuilder (). onMessage ( Scan . class , this ::onScan)

. onMessage( ParserTerminated . class , this :: onParserTerminated ). build ();

}

private Behavior < Command > onScan(Scan command) { parserCount = command. sendTo . size (); List < File > files = Util s . fi ndFil es (command. path ); int count = 0; for (File file : files ) {

command. sendTo .get(count). tell (new Parser.Parse(file , command. reply To )); count ++;

}

return this ;

}

private Behavior < Command > onParserTerminated (ParserTerminated command) { parserCount --; i f ( parserCount == 0) {

parent . tell (new Supervisor.ParsedAll ());

}

return this ;

}

}

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