Диплом: Разработка среды для модульного программного обеспечения с поддержкой удаленного управления

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
которых можно узнать в справке для данной команды, используя опцию -?
– см. рисунок 16. Если при вводе команды была допущена ошибка, то на
консоль будет выведена справка, как воспользоваться помощью. Кроме
того, будет выведен и стек ошибки – см. рисунок 17.
Рисунок 16. Результат запроса справки команды server:connect.
Рисунок 17. Ошибка и результат выполнения команды application:list.
Дадим краткую справку по каждой из команд.
Команда application:list. Данная команда позволяет выводить список
всех приложений. При использовании команды необходимо использовать
обязательную опцию для передачи типа приложений, например,
работающие и т.п. Несмотря на то, что в данный момент поддерживается
только один тип, использование данной опции позволяет в будущем
добавлять и другие типы – см. рисунок 17.
Команда application:start. Команда используется для запуска
приложения. Обязательными опциями для данной команды являются
название приложения и версия приложения.
Команда application:stop. Команда используется для остановки
приложения. Обязательными опциями для данной команды являются
название приложения и версия приложения.
Команда command:list. Данная команда выводит список всех
поддерживаемых команд в алфавитном порядке – см. рисунок 17. Если
используется API для добавления новых команд (см. требования), то эти
команды также включаются в этот список в общем алфавитном порядке.
Рисунок 18. Результат выполнения команды command:list.
Команда environment:shutdown. Команда используется для остановки
всей СВП. Важно отметить, что перед остановкой СВП вначале будут
остановлены все приложения. Необходимо использовать обязательную
опцию для выбора среды – клиентская или серверная.
Команда message:print. Эта команда позволяет осуществлять вывод
сообщений. Используется с обязательной опцией передачи сообщения.
Команда message:println. Данная команда аналогична команде
message:print, за тем исключением, что после сообщения происходит
перевод курсора на новую строку.
Команда script:execute. Команда позволяет выполнять скрипт,
который содержит в себе перечень команд, разделенных символом точки с
запятой. Используется с обязательной опцией передачи пути файла.
Команда server:check. Данная команда позволяет проверить работает
ли сервер на определенном хосте и определенном порту. Для передачи
хоста и порта используются обязательные опции – см. рисунок 19.
Рисунок 19. Результат выполнения команды server:check.
Команда server:connect. Команда используется для подключении к
серверу. Важно обратить внимание, что даже когда клиент и сервер
работают в одной JVM, перед выполнением большей части команд
необходимо выполнить данную команду. Необходимо использовать
обязательные опции для передачи хоста и порта сервера.
Команда server:disconnect. Данная команда позволяет отключиться от
используемого сервера.
Команда service:list. Эта команда выводит список всех JPMS
сервисов в разрезе JPMS слоя. Согласно требованиям, для каждого
приложения создается отдельный JPMS слой.
Команда thread:dump. Команда выводит дамп всех текущих потоков
виртуальной машины. Данная информация обычно нужна разработчикам.
Команда thread:list. Команда выводит список всех текущих потоков
JVM с основными сведениями по каждому потоку – см. рисунок 20.
Рисунок 20. Результат выполнения команды thread:list.
***
Стандартная СВП для модульных приложений обладает целым
рядом преимуществ. Во-первых, она позволяет значительно сократить
время и стоимость разработки приложений, так как содержит в себе
общую для модульных приложений функциональность. Во-вторых, она
позволяет значительно повысить качество как СВП, так и модульного
приложения. В-третьих, стандартная СВП позволяет разработчикам,
системным администраторам и пользователям не тратить время на
освоение новых продуктов.
В то время, как для технологии OSGi стандартная среда существует,
для технологии JPMS такая среда отсутствует. Возможности среды и ее
отсутствие для технологии JPMS являются основными причинами
разработки среды выполнения приложений Alpha.
Для разработки СВП были четко сформулированы все требования,
как функционального, так и нефункционального характера. Кроме того,
были описаны и основные принципы разработки, которыми необходимо
было руководствоваться.
СВП Alpha включает в себя три элемента: ядро СВП, приложение
Alpha RMI Client и приложение Alpha RMI Server. Ядро выполняет
основную бизнес логику среды управление приложениями,
предоставление данных о среде, JVM, приложениях. Предназначение
приложений заключается в том, что они предоставляют интерфейс
командной строки для работы с ядром среды. Взаимодействие между
приложениями осуществляется с использованием технологии вызова
удаленного метода – RMI. Благодаря использованию этой технологии,
приложения могут работать в разных виртуальных машинах. Приложения
поддерживают четырнадцать команд, которые обеспечивают всю базовую
функциональность.
ЗАКЛЮЧЕНИЕ
Разработка и сопровождение программного обеспечения это
сложные и крайне трудоемкие виды деятельности. Для того, чтобы
упростить и оптимизировать их разработчики непрерывно ведут работу
для создания новых решений, технологий, подходов и продуктов на базе
текущих достижений. Это поступательное и непрерывное развитие мы
постарались приблизить к структуре работы – от языка разработки и
модульности к системам управления модулями, от систем управления
модулями к средам модульного ПО.
В первой главе рассматриваются возможности и характеристики
языка программирования Java и основные понятия, концепции и
преимущества модульного подхода к созданию ПО. Следует отметить, что
для раскрытия важнейших возможностей Java был проведен
сравнительный анализ Java с двумя другими современными языками
программирования Си и С++. Результаты данного анализа позволяют
лучше понимать область применения Java и условия, при которых следует
выбирать для разработки ПО данный язык.
Язык программирования Java является одним из самых популярных
языков программирования на сегодняшний день. Данная популярность
объясняется рядом причин. Во-первых, язык Java и компиляторы Java
являются бесплатными для пользования (кроме Java ME). Во-вторых,
программа на Java кроссплатформенна, так как выполняется в виртуальной
машине Java. В-третьих, язык Java обладает богатыми возможностями, а
его стандартные библиотеки объемным API. В-четвертых, более чем
двадцатилетняя история данного языка свидетельствует о его ее
надежности и зрелости. В-пятых, весь язык нацелен на работу с
парадигмой объектно-ориентированного программирования.
Основными элементами языка Java являются классы, интерфейсы,
перечисления, аннотации, ошибки, исключения, пакеты и модули. Модули
появились в Java 9, которая вышла в сентябре 2017, с внедрения
технологии JPMS.
Модульность (англ. modularity) это такой подход к созданию
системы, при котором создаваемая система делится на небольшие части,
называемые модулями (англ. module), которые могут создаваться и
использоваться независимо друг от друга.
Модульный метод проектирования соответствует определенным
критериям, определенным правилам, которым должны следовать
разработчики и определенным принципам, которые должны соблюдаться.
Модульность предоставляет целый ряд преимуществ. Она позволяет
упростить процесс разработки и сопровождения, упростить повторное
использование кода, повысить читабельности кода, повысить надежность
разрабатываемой системы, повысить эффективность совместной работы,
улучшить управляемости проекта и др.
Во второй главе осуществляется обзор двух существующих
технологий для создания модульного ПО на языке Java – технологии OSGi
и технологии JPMS. В силу того, что главные задачи данных технологий
совпадают, между ними много общего, хотя есть и некоторые отличия.
Рассмотрим основные сходства технологий. Во-первых, обе
технологии осуществляют разрешение зависимостей модулей. Во-вторых,
обе технологии позволяют управлять доступом к пакетам модулей. В-
третьих, и OSGi и JPMS создают возможности для предоставления и
потребления сервисов на межмодульном уровне. В-четвертых, для работы
с модулем обе технологии требуют наличие в модуле служебной
информацией.
Отметим и важнейшие различия. Во-первых, технология OSGi
требует поверх среды выполнения работу платформы OSGi, а JPMS
встроена в среду выполнения. Во-вторых, OSGi не осуществляет
модулизацию стандартных библиотек Java, а работает только с модулями
приложения. JPMS, в свою очередь, поддерживает модули обоих типов. В-
третьих, технология OSGi поддерживает динамическое изменение модулей
работающего кода, что осуществляется посредством управления
жизненного цикла модуля, а JPMS такую функциональность не
обеспечивает. В-четвертых, технология OSGi поддерживает версионность
пакетов, в то время, как JPMS такую поддержку не осуществляет.
В качестве небольшого примера использования технологий для
каждой из них рассмотрен классический шаблон, когда используются три
модуля для работы с межмодульным сервисом. Первый модуль содержит
пакеты с API сервиса, второй модуль содержит реализацию сервиса,
третий модуль использует сервис.
Третья глава работы посвящена реализации среды для модульного
ПО на языке Java в соответствии с поставленной задачей и принципами
разработки.
При постановке задачи делается краткий обзор среды Apache Karaf,
которая является аналогом реализуемой в рамках данной работы среды для
технологии OSGi. Проект Apache Karaf существует почти 10 лет и за это
время стал стандартной средой для работы с OSGi.
Для реализации среды были подробно описаны требования к ней. В
соответствии с данными требованиями необходимо было разработать
среду выполнения приложений (СВП), представляющих собой
совокупность JPMS модулей, которая должна: поддерживать удаленное
управление, одновременное выполнение неограниченного количества
приложений с разграничением модулей каждого приложения в системе
управления модулями, с раздельным логгированием для каждого
приложения, с поддержкой интерфейса командной строки для управления
средой, с набором базовых команд и возможностью добавления новых
команд через API.
Среди основных принципов проектирования следует выделить
следующие принципы: грамотное и эффективное использование
принципов ООП, обеспечение слабого зацепления и сильную связность
элементов системы, использование стандартных шаблонов
проектирования.
В соответствии с требованиями и руководствуясь указанными выше
принципами, была реализована СВП Alpha. СВП Alpha включает в себя
три элемента: ядро СВП, приложение Alpha RMI Client и приложение
Alpha RMI Server. Ядро выполняет основную бизнес логику среды –
управление приложениями, предоставление данных о среде, JVM,
приложениях. Предназначение приложений заключается в том, что они
предоставляют интерфейс командной строки для работы с ядром среды.
Взаимодействие между приложениями осуществляется с использованием
технологии вызова удаленного метода – RMI. Благодаря использованию
этой технологии, приложения могут работать в разных виртуальных
машинах, находящихся на разных аппаратных устройствах, соединенных
сетью. Приложения поддерживают четырнадцать команд, которые
обеспечивают всю базовую функциональность.
В дальнейшем среду Alpha можно расширить такой
функциональностью, как: поддержка расширений для приложений
(например, плагинов), поддержка обновлений приложений из различных
репозиториев (работающих по разным протоколам), поддержку
управления репозиториями, поддержка мониторинга работы приложений и
др.
Обзор разработанной СВП Alpha осуществляется в главе с двух
сторон – с технической точки зрения и с точки зрения ее использования.
Рассмотрение технических аспектов среды осуществляется по модулям с
использованием UML-диаграмм. Кроме того, даются разъяснения по bash-
скрипту alpha.sh и XML-дескрипторам приложений. Основные сведения по
использованию среды приводятся по командам с использованием
скриншотов консоли.
Подводя итого, перечислим важнейшие преимущества,
предоставляемые средой Alpha:
Среда дает возможность не дублировать общую функциональность,
которая может быть необходима модульному приложению.
Среда обеспечивает возможность удаленной работы.
Среда предоставляет привычный для разработчиков интерфейс
командной строки и содержит функционал самых востребованных
команд.
Среда позволяет осуществлять простой способ управления
конфигурацией модульного приложения посредством XML-
дескриптора приложения.
В результате данных преимуществ использование среды дает
возможность снизить стоимость и время разработки модульного ПО и
оптимизировать его сопровождение. Цель работы достигнута.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
Источники на русском языке
1. Мейер Б. Основы объектно-ориентированного программирования. – 2-
е издание, исправленное. – Национальный Открытый Университет
«ИНТУИТ», 2016.
Источники на иностранных языках
2. Alves Alexandre De Castro. OSGI in Depth. – New York: Manning, 2012.
394 p.
3. Bartlett Neil. OSGi In Practice. – December 17, 2009. – 313 p.
4. Eckel Bruce. Thinking in Java. – Fourth Edition. – Prentice Hall, 2006. –
1057 p.
5. Edstrom Johan, Goodyear Jamie. Instant OSGi Starter. – Birmingham:
Packt Publishing, 2013. – 58 p.
6. Finegan Edward, Liguori Robert. OCA Java SE 7 Programmer I Study
Guide (Exam 1Z0-803). – 2nd Edition. – McGraw-Hill Education, 2012. –
576 p.
7. Ganesh S. G., Sharma Tushar. Oracle Certified Professional Java SE 7
Programmer Exams 1Z0-804 and 1Z0-805. – Apress, 2013. – 656 p.
8. Goncalves Antonio. Beginning Java EE 7. – Apress, 2013. – 608 p.
9. Graham Darrel L. C Programming: Language: A Step by Step Beginner's
Guide to Learn C Programming in 7 Days. – CreateSpace Independent
Publishing Platform, 2016.
10. Horstmann Cay S., Cornell Gary. Core Java. Volume I. – Eighth Edition. –
Prentice Hall, 2008. – 811 p.
11. Johansen Andrew. C++: The Ultimate Beginner's Guide! – Kindle Edition.
12. Kochan Stephen G. Programming in C. – 4th edition. – Developer’s
Library, 2014.
13. Lowe Doug. Java All-in-One For Dummies. – 4th edition. – For Dummies,
2014.
14. Patterson James. C++: A Beginner's Guide to Learning the Basics of C++
Programming. – Kindle Edition.
15. Perry Greg, Miller Dean. C Programming Absolute Beginner's Guide. – 3rd
Edition. – Pearson Education, 2014.

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)
Value-based education: ценности в системе образования и способы их реализации на уроке английского языка. Опыт Европейских стран