УДК 004.4

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

Морозов Ю.Ю., Мирошкин А.Н.

Донецкий национальный технический университет

Рассмотрена архитектура RIA (Rich Internet application) приложения для автоматизированного проектирования цифровых устройств при помощи суперкомпьютерных вычислений, с минимальным участием человека .

Введение

            Актуальность темы. Непрерывное развитие средств вычислительной техники выдвигает высокие требования к разрабатываемым устройствам [1]. С ростом требований к построению цифровых устройств повышается длительность и сложность процесса их синтеза. Развитие технологии производства интегральных схем и постоянное увеличение сложности цифровых схем определяет актуальность создания программного обеспечения для автоматизации синтеза цифровых устройств. 

 

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

 

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

 

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

 

            1 Выбор базовой архитектуры

 

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

            Первоначально единственным API, доступным в Java для разработки серверных web-приложений, была технология сервлетов. У сервлетов было много преимуществ по сравнению со сценариями CGI, которые ранее были доминирующей технологией. Тем не менее, у сервлетов имелся один существенный недостаток. Поскольку код HTML, который будет представлен в окне обозревателя, должен был встраиваться в код Java, то большую часть кода сервлета было очень трудно поддерживать [2]. Подобный код был не очень удобен в сопровождении.

            Один из распространенных способов приблизиться к разрешению этой проблемы состоит в том, чтобы использовать шаблон проектирования Модель-Представление-Контроллер (Model-View-Controller).  Этот шаблон обеспечивает четкое разделение проблем, предоставляя артефакты, используемые исключительно в качестве данных (модели), в то время как другие артефакты отвечают (используются) исключительно за отображение (представление) данных, а третьи несут ответственность  за управление данными (контроллер) и передают управление требуемому представлению [3]. Базовая концепция модели MVC представлена на рис. 1.

 

Рисунок 1 – Базовая концепция модели MVC

 

            Для каждого уровня MVC модели будет выбран фреймворк реализующий данную задачу.

 

            2 Разработка уровня управления

           

            В качестве контроллера может служить сама реализация шаблона MVC, которая должна обеспечивать надежную структуру. С этой задачей полностью справляется модуль Spring MVC на базе фреймворка Spring.  Он представляет развернутую поддержку данного шаблона, а также других средств (например, оформление темами, интернационализацию, проверку достоверности, преобразование типов, форматирование и т.п.). Главной и самой важной особенностью его является Inversion of сontrol контейнер, который представляет средства конфигурирования и управления объектами Java с помощью отражения. Контейнер отвечает за управление жизненным циклом циклом объекта: создание объектов, вызов методов инициализации и конфигурирование объектов путем связывания их между собой [4].

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

 

Рисунок 2 – Общая структура приложения

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

 

 

Рисунок 3 – Расширенная структура приложения

 

 

 

 

            3 Разработка уровня представления

 

            В web-приложениях уровень представления является критически важным и оказывает значительное влияние на степень принятия приложения пользователями. Уровень представления – это своего рода «парадная дверь» в приложение. Он позволяет пользователям выполнять бизнес-функции, представляемые приложением, а также обеспечивает визуальное представление информации, которой управляет приложение. Эффективность пользовательского интерфейса вносит весьма существенный вклад в успех приложения в целом [5].

            Благодаря бурному росту Интернета (особенно облачным вычислениям и появлением различных типов устройств) разработка уровня презентаций в приложении становится довольно непростой задачей. Ниже приведены некоторые факторы, которые должны приниматься во внимание во время разработки web-приложений.

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

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

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

Доступность. В наши дни пользователи требуют, чтобы приложение было доступным  на любом устройстве, в том числе и на мобильном.

            Построение web-приложения, удовлетворяющего указанным выше требованиям, не является простой задачей, однако данные требования рассматриваются пользователями как обязательные. Для решения этих потребностей  были разработаны новые технологии и инфраструктуры. В последнее время многие платформы и библиотеки для разработки web-приложений – среди которых Spring MVC, Struts, Java Server Faces (JSF), Google Web Toolkit (GWT), jQuery и Dojo – предлагают инструменты и развитые библиотеки компонентов, помогающие построить высоко интерактивные пользовательские интерфейсы для web-сети.

            Среди массы платформ был выбран фреймворк Vaadin, который в отличие от библиотек на Javascript и специфических плагинов для браузеров предлагает сервер-ориентированную архитектуру, базирующуюся на Java Enterprise Edition. Использование JEE позволяет выполнять основную часть логики приложения на стороне сервера, тогда как технология AJAX, используемая на стороне браузера, позволяет интерактивно взаимодействовать с пользователем. Для отображения элементов пользовательского интерфейса и взаимодействия с сервером на стороне клиента Vaadin использует Google Web Toolkit [6].

            На безе интеграции фреймворков Spring MVC и Vaadin была доработана общая структура web-приложения, представленная на рис. 3 в блоках Web application и Web browser.

            4 Разработка уровня постоянства

            Уровень постоянства предоставляет данные и методы работы с этими данными. Этот уровень должен реагировать на запросы и изменять свое состояние. Не должен содержать информации о том, как эти данные нужные визуализировать. Важно отметить, что как представление, так и контроллер зависят от модели. Однако модель не зависит ни от представления, ни от контроллера. Тем самым достигается назначение такого разделения: оно позволяет строить модель независимо от визуального представления, а также создавать несколько различных представлений для одной модели.

            В качестве уровня постоянства будет использована реляционная база данных. Но использование реляционной базы данных для хранения объектно-ориентированных данных приводит к семантическому провалу, заставляя программистов писать программное обеспечение, которое должно уметь как обрабатывать данные в объектно-ориентированном виде, так и уметь сохранить эти данные в реляционной форме. Эта постоянная необходимость в преобразовании между двумя разными формами данных не только сильно снижает производительность, но и создает трудности для программистов, так как обе формы данных накладывают ограничения друг на друга [7]. Разработано множество пакетов, устраняющих необходимость в преобразовании объектов для хранения в реляционных базах данных. Некоторые пакеты решают эту проблему, предоставляя библиотеки классов, способных выполнять такие преобразования автоматически. Имея список таблиц в базе данных и объектов в программе, они автоматически преобразуют запросы из одного вида в другой. В результате запроса объекта «человек» (из примера с адресной книгой) необходимый SQL-запрос будет сформирован и выполнен, а результаты особым образом преобразованы в объекты «номер телефона» внутри программы. С точки зрения программиста система должна выглядеть как постоянное хранилище объектов. Он может просто создавать объекты и работать с ними как обычно, а они автоматически будут сохраняться в реляционной базе данных. Такой подход называется ORM (Object-relational mapping,) - объектно-реляционное отображение.

            В качестве ORM библиотеки была выбрана библиотека Hibernate, которая предоставляет легкий в использовании каркас (фреймворк) для отображения объектно-ориентированной модели данных в традиционные реляционные базы данных [8]. На безе интеграции фреймворка Spring MVC и библиотеки Hibernate была разработана  усовершенствованная структура web-приложения. Структура программного модуля постоянства представлена на рис. 3 в блоке Persistence.

 

 

            5 Сервис проектирования цифровых устройств

            Для проектирования цифровых устройств будет разработан программный модуль (сервис), который будет реализовывать оптимальный алгоритм вычислений на суперкомпьютере. В качестве суперкомпьютера будет использоваться кластер NeClus кафедры компьютерной инженерии ДонНТУ. Для удаленного подключения к кластеру необходимо использовать SSH протокол. Для этого будет использована библиотека JSCH. Структура модуля проектирования цифровых устройств представлена на рис. 3.

            Заключение

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

            Таким образом, для реализации данного приложения необходимо иметь один сервер для развертывания Spring-MVC приложения с выделенным реальным IP и отдельный аккаунт для  SSH доступа к кластеру NeClus. Базу данных можно разместить на том-же сервере вместе с web-приложением, чем сократив аппаратурные затраты.

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

[1] Методы синтеза композиционных микропрограммных устройств управления с модификацией системы адресации микрокоманд. : дис. на соискание науч. степени канд. техн. наук : спец. 05.13.05 "Компьютерные системы и компоненты" /  Мирошкин А.Н. ; ДонНТУ. –Донецк  2013 г. – 152 с.

[2] Java ЕЕ 6 и сервер приложений GlassFish 3. Дэвид Хеффельфингер -  М.: ДМК Пресс, 2013. - 416 с.: ил.

[3] Разработка приложений Java ЕЕ 6 в NetBeans 7. Дэвид Хеффельфингер - М.: ДМК Пресс, 2013. - 330 с.: ил.

[4] Spring в действии. Уоллс К.  – М.: ДМК Пресс, 2013. – 752 с.: ил.

[5] Spring 3 для профессионалов. Роб Харроп, Кларенс Хо. – М.: Вильямс, 2012. – 880с.:ил.

 

[6] Vaadin. Материал из Википедии – свободной энциклопедии. Электронный ресурс. Режим доступа: http://ru.wikipedia.org/wiki/Vaadin

[7] ORM. Материал из Википедии – свободной энциклопедии. Электронный ресурс. Режим доступа: http://ru.wikipedia.org/wiki/ORM

[8] Hibernate. Материал из Википедии – свободной энциклопедии. Электронный ресурс. Режим доступа: http://ru.wikipedia.org/wiki/Hibernate