Разработка подсистемы модулей расширения системы лингвистических исследований
Обзор способов интеграции и коммуникации между языками программирования. Проведение исследования инструментов для Python, Java, C# и web программирования. Проектирование API, web-API и интерфейса. Особенность разработки подсистемы модулей расширения.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 17.07.2020 |
Размер файла | 2,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Рисунок 4.18 - ASP.NET функция, создающая объект
Алгоритм работы функций, написанных на языке C#, остаётся таким же, как и на Java. Основное отличие кода состоит в том, что на C# не было найдено удобного, встроенного в фреймворк способа конвертировать из JSON сложные объекты в их изначальные типы. Поэтому и была использована библиотека Newtonsoft.Json - с её помощью можно конвертировать любой JSON в обычный объект имеющий тип dynamic. Это специальный тип, который очень хорошо подходит для случаев, когда структура объекта может быть не известна, или если создавать специальную структуру данных для объектов не имеет смысла. На рисунках Рисунок 4.18 и Рисунок 4.19. представлены серверные функции, в которых используется превращение JSON объектов в C# объекты.
Рисунок 4.19 - ASP.NET функция, вызывающая метод
Класс Registrator в C# работает так же, как и в Java, и он также реализует паттерн Singleton, но в этом случае не при помощи метода, а при помощи свойства, защищённого от присваивания.
Для клиентской части библиотеки были написаны две функции: Call и New, представленные на рисунках Рисунок 4.20 и Рисунок 4.21. Поскольку типы данных, передаваемые в эти функции известны заранее, можно воспользоваться стандартным JSON конвертером, встроенным в C#.
Рисунок 4.20 - Клиентская функция, создающая объект
Рисунок 4.21 - Клиентская функция, вызывающая метод
Таким образом, как серверная, так и клиентская часть подсистемы была реализована на всех трёх языках и можно приступить к реализации интерфейса.
Реализация интерфейса
Интерфейс системы был реализован на языке TypeScript при помощи фреймворка Angular. Его преимущество по сравнению с некоторыми другими фреймворками состоит в том, что компоненты не только имеют свои файлы для TypeScript и Html, но и для CSS. Это помогает при разработке, потому что не нужно искать все стили в одном большом файле, что при наличии большого количества стилей становится трудно.
Также при написании шаблонов страниц для контроля показа или повтора элементов используются тэги, добавленные к элементам, а также синтаксис Handlebars. Благодаря этим орудиям шаблон остаётся похожим на Html, что позволяет сохранить вид обычного Html документа, что редко можно сказать о других фреймворках.
По сравнению с JavaScript разрабатывать на TypeScript гораздо удобнее. Единственное отличие этих языков друг от друга состоит в более строгой типизации переменных, что влечёт за собой типизацию аргументов, передаваемых в функции, значений, возвращаемых из функций, и так далее. Поскольку написанный для браузера код всё равно будет «скомпилирован» в JavaScript, эти типы будут стёрты. Также в любой момент можно использовать обычные фигурные скобки для объявления объекта TypeScript, что может быть и не сильно лучше, но их постоянное наличие подталкивает к их использованию и добавлению.
Единственной проблемой, с которой пришлось разбираться, оказался запрет на использование URL в свойствах iframe, так как фреймворк считает их опасными. С этим справился тип компонента pipe, превращающий один тип значений в другой. С помощью него обычный URL был помечен как безопасный, что позволило встроить его.
Интерфейс подсистемы представлен на рисунках Рисунок 4.22 - Рисунок 4.24. Он состоит из нескольких компонентов - список вкладок, содержимое вкладки, боковая панель. Так как подсистема предназначена для интеграции других подсистем, а во время разработки ни одна из них не была готова, содержимое вкладок представлено как пример.
Рисунок 4.22 - Интерфейс при открытии системы
Рисунок 4.23 - Интерфейс при выборе одной из вкладок
Рисунок 4.24 - Интерфейс при выборе из боковой панели
Текущая показываемая вкладка контролируется при помощи свойства selectedTab в классе AppComponent. Она меняется при помощи событий, посылаемых при выборе из списка вкладок и из боковой панели при выборе в них элемента. Также, поскольку Angular отслеживает изменения в свойствах класса, список вкладок обновляется только при выборе из боковой панели.
Рисунок 4.25 - Код, контролирующий выбранную вкладку
В результате выполненной работы была написана подсистема модулей расширения лингвистических исследований. В процессе разработки Web API тестировался при помощи программы Insomnia[32], но так как не было проведено полноценных автоматизированных испытаний, показывающих корректную работу системы со абсолютной точностью, описание процесса тестирования было опущено.
Заключение
В результате написания выпускной квалификационной работы были выполнены перечисленные ниже задачи:
Был проведён анализ предметной области - интеграции языков программирования:
Проведён анализ технологий и паттернов интеграции систем на различных языках, в результате которого были выявлены и описаны различные способы интеграции языков программирования.
В результате этого обзора был выбран способ интеграции, наиболее подходящий для решения поставленной задачи. Этим способом были микросервисы.
Были сформированы функциональные требования к системе
В соответствии со сформированными требованиями были выбраны инструменты для проведения разработки на языках Python, Java, C# и JavaScript. Были выбраны Flask, Spring, ASP.NET и Angular соответственно.
Было проведено проектирование алгоритмов системы и её интерфейса.
Был разработан API для добавления новых модулей.
Проведена реализация Web API и интерфейса системы.
Разработанная подсистема позволяет интегрировать между собой языки программирования путём передачи между ними данных. Данная работа может быть интересна программистам, которые хотят работать на нескольких языках и интегрировать их. Разработанная подсистема будет использована в портале лингвистических исследований для коммуникации между другими подсистемами.
Библиографический список
1. J. Hamilton, «Language Integration in the Common Language Runtime», ACM SIGPLAN Notices, Association for Computing Machinery, 2003.
2. T. Ekman, P. Mechlenborg, U. P. Schultz, «Flexible Language Interoperability», Journal of Object Technology, ETH Zurich, 2007.
3. M. Grimmer, «Cross-Language Interoperability in a Multi-Language Runtime», ACM Transactions on Programming Languages and Systems, Association for Computing Machinery, 2018.
4. F. Niephaus, T. Felgentref, «Live Multi-language Development and Runtime Environments», The Art, Science, and Engineering of Programming, 2018.
5. Grinberg M. Flask Web Development. Developing web applications with Python -- O'Reilly Media, 2014.
6. Copperwaite M., Leifer C. Learning Flask Framework. Build dynamic, data driven websites and modern web applications with Flask. -- Packt Publishing, 2015.
Аннотация
Данная выпускная квалификационная работа «Разработка подсистемы модулей расширения системы лингвистических исследований» выполнена Ивановым М. В.,В работе содержатся четыре главы: «Анализ предметной области», «Выбор инструментов разработки», «Проектирование подсистемы модулей расширения» и «Разработка подсистемы модулей расширения». В первой главе описывается система лингвистических исследований и проводится обзор разных способов интеграции языков программирования, среди которых будет выбран тот, который будет использован в реализации, а также определяются требования к разработке. Во второй главе представлено сравнение нескольких популярных фреймворков для разработки Web API в языках программирования Python, Java и C# и для разработки интерфейса веб-приложения на JavaScript и для каждого языка выбран оптимальный инструмент для выполнения разработки. В третьей главе проводится проектирование, основанное на выбранном в предыдущей главе методе реализации. В ней описаны программные интерфейсы и алгоритмы, которые будут выполнять действия, предполагаемые интерфейсами. В четвертой главе описывается что необходимо сделать, чтобы опубликовать библиотеку в официальный репозиторий библиотек для каждого языка, а также о процессе реализации и о трудностях, возникших в этом процессе. Приложения содержат техническое задание, руководство пользователя и программиста, а также программу и методику испытаний. Работа содержит 40 страниц, 29 рисунков. Разработанная система будет необходима сотрудникам научно-учебной лаборатории учебных корпусов для обеспечения единого доступа ко всем модулям системы лингвистических исследований, а также программистам, которые будут создавать новые модули для готовой системы.
Размещено на Allbest.ru
...Подобные документы
Общая характеристика языков программирования. Краткий обзор C, C++, Java, PHP, Python, Delphi и Visual Basic. Процесс разработки программы игра "Крестики и нолики" с помощью AppWizard. Компиляция и компоновка модулей, определение интерфейса приложения.
курсовая работа [2,5 M], добавлен 27.05.2014Этапы развития, особенности и возможности языка программирования Java; происхождение названия. Приложения Sun Microsystems: идеи, примитивные типы. Python - высокоуровневый язык программирования общего назначения: структуры данных, синтаксис и семантика.
реферат [79,0 K], добавлен 23.06.2012Программное обеспечение Python и ее основные характеристики, как программной среды. Общие сведения о языке программирования Python. Особенности применения ППП Python (x,y) с использованием его различных вычислительных модулей в учебном процессе.
дипломная работа [2,9 M], добавлен 07.04.2019Анализ технических средств, разработка структуры подсистемы. Создание программного приложения в среде InduSoft Web Studio. Информационный расчет аналогового ввода сигналов. Адресация каналов модулей. Экспериментальная проверка подсистемы в составе стенда.
дипломная работа [1,7 M], добавлен 16.05.2017Язык Java как простой, обьектно-ориентированный, многопоточный язык программирования, разработанный компанией Sun Microsystems для расширения возможностей сети Internet. Типы данных, лексика и управляющие структуры данного языка программирования.
презентация [46,1 K], добавлен 25.04.2014Проектирование структуры программы, принцип ее работы, сферы практического использования и оценка возможностей. Выбор и обоснование среды программирования. Разработка пользовательского интерфейса и модулей приложения. Проведение тестирования программы.
курсовая работа [637,7 K], добавлен 14.01.2015Разработка графического редактора для рисования двухмерной и трехмерной графики, используя язык программирования Java и интерфейсы прикладного программирования Java 2D и Java 3D. Создание графического редактора 3D Paint. Основные методы класса Graphics.
курсовая работа [197,5 K], добавлен 19.11.2009Принцип работы Java. Аплеты как особенность Java-технологии, характеристика методов их защиты. Модель безопасности JDK1.2 и концепция "песочницы". Иерархия криптографических сервисов, алгоритмов. Объектная организация криптографической подсистемы Java.
реферат [54,8 K], добавлен 09.09.2015Создание языка программирования с помощью приложения "Java". История названия и эмблемы Java. Обзор многообразия современных текстовых редакторов. Обработка строки. Методы в классе String. Java: задачи по обработке текста. Примеры программирования.
курсовая работа [276,1 K], добавлен 19.07.2014Структура экспертных систем, их классификация и характеристики. Выбор среды разработки программирования. Этапы создания экспертных систем. Алгоритм формирования базы знаний с прямой цепочкой рассуждений. Особенности интерфейса модулей "Expert" и "Klient".
курсовая работа [1,1 M], добавлен 18.08.2009Разработка структуры базы данных для хранения дипломных проектов в среде объектно-ориентированного программирования Python. Создание внешнего вида окон ввода-вывода информации, технологии переходов. Листинг программы с пояснениями; направления улучшения.
курсовая работа [3,1 M], добавлен 27.02.2015Формы документов, SQL-скрипт создания базы данных информационной подсистемы "Advancement". Листинги основных модулей проекта Delphi. Визуальные средства разработки приложений. Диалоговые окна программы Erwin. Атрибуты сущностей, входящие в базу данных.
дипломная работа [3,3 M], добавлен 01.07.2011Механизмы управления транзакциями в СУБД. Обзор средств удаленного взаимодействия с объектами. Разработка подсистемы управления транзакциями. Практический анализ производительности подсистемы. Способы защиты пользователей от опасных и вредных факторов.
дипломная работа [449,9 K], добавлен 14.03.2013Отличительные особенности языка программирования Python: низкий порог вхождения, минималистичный язык, краткий код, поддержка математических вычислений, большое количество развитых web-фреймворков. Традиционная модель выполнения программ на языке Python.
реферат [51,9 K], добавлен 18.01.2015Структурные подразделения и отделы организации, ее технические программные средства. Разработка приложений обработки данных на ассемблере, языке программирования высокого уровня. Тестирование и оптимизация программных модулей. Разработка документации.
отчет по практике [175,0 K], добавлен 30.09.2022История развития языка программирования Java. История тетриса - культовой компьютерной игры, изобретённой в СССР. Правила проведения игры, особенности начисления очков. Создание интерфейса программы, ее реализация в среде Java, кодирование, тестирование.
курсовая работа [168,1 K], добавлен 27.09.2013Способы усовершенствования использования существующего Интернет-канала на предприятии ООО "Бизнес ИТ". Процесс и главные этапы разработки подсистемы управления и мониторинга межсетевого экрана Forefront TMG 2010, а также методы расширения его функционала.
дипломная работа [3,8 M], добавлен 01.07.2011Общее устройство микропроцессора. Структура 64-битной подсистемы памяти. Селекция портов ввода/вывода. Особенности интерфейса микропроцессорных систем. Проектирование подсистемы памяти на базе Itanium 2. Расчёт информативности и необходимых объёмов.
курсовая работа [3,7 M], добавлен 05.12.2012Описание особенностей подсистемы обеспечения медикаментами. Разработка структуры базы данных, схемы алгоритма и программного модуля, структуры реестра. Обоснование выбора языка программирования. Оценка надежности и классификация ошибок программы.
дипломная работа [1,3 M], добавлен 25.12.2014История создания языка Java. Основные принципы объектно-ориентированного программирования. Структура, особенности синтаксиса и примеры прикладных возможностей использования языка Java, его преимущества. Перспективы работы программистом на языке Java.
курсовая работа [795,9 K], добавлен 14.12.2012