Научная статья на тему 'Использование архитектурного подхода при разработке приложений к базам данных'

Использование архитектурного подхода при разработке приложений к базам данных Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
368
54
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
БАЗА ДАННЫХ / ПРИЛОЖЕНИЕ / АРХИТЕКТУРНЫЙ СТИЛЬ / ШАБЛОН ПРОЕКТИРОВАНИЯ / DATABASE / APPLICATION / ARCHITECTURAL STYLE / DESIGN PATTERN

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Галиаскаров Э.Г.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Галиаскаров Э.Г.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

The article deals with issues related to database applications development in the course of students’ term papers and practical works. Experience has shown that the results of such work are usually low-quality. The reasons are: a lack of knowledge of software engineering methods, insufficient design experience, time limits for implementation, and difficulty in understanding how to solve the problem. The available examples are or too fragmented to use them in a project immediately, or too excessive to study, understand and put them into practice in time. Taking that into account, a simple template of application development has been offered. It’s based on the synthesis of various architectural styles and design patterns. This approach has proved its effectiveness in student practical work within "Data Management" discipline.

Текст научной работы на тему «Использование архитектурного подхода при разработке приложений к базам данных»

6. Михайлов Г.А., Войтишек А.В. Численное статистическое моделирование. Методы Монте-Карло — М.: Издательский центр «Академия», 2006. — 368 с.

7. Boost compute documentation [Электронный ресурс]: http://www.boost.org/doc/libs/1 62 0 /libs/compute/doc/html/index.html

УДК 004.04

ИСПОЛЬЗОВАНИЕ АРХИТЕКТУРНОГО ПОДХОДА ПРИ РАЗРАБОТКЕ ПРИЛОЖЕНИЙ К БАЗАМ ДАННЫХ

Галиаскаров Эдуард Геннадьевич, к.х.н., доцент, Ивановский государственный химико-технологический университет, Россия, Иваново, portugaled@yandex.ru

Учебный курс «Управление данными» является одним из центральных в подготовке студентов по направлению 09.03.02 «Информационные системы и технологии». В рамках данной дисциплины основное внимание уделяется вопросам проектирования баз данных и работы с данными средствами языка запросов и современных РСУБД [1]. Другим важным моментом является разработка приложения к базам данных, которая, как показывает опыт, и вызывает самую большую сложность. Практическая часть курса по управлению данными предполагает у студента определенные знания и навык в разработке приложений и владении языками программирования высокого уровня. Однако в реальности опыт программирования оказывается небольшим, а уровень владения методами программной инженерии в целом низкий. Вместе с тем программа курса «Управление данными» не предусматривает подробное рассмотрение вопросов разработки приложений к базам данных. Если задачу разработки отдавать на откуп студентам, то это приводит к тому, что качество решения этой задача остается низким. Даже если уровень программисткой подготовки студентов в целом неплохой, мало кому удается разработать приложение в полном объеме. При этом не приходится даже говорить о какой-то более или менее целостной структуре приложения, целостном подходе к его проектированию и реализации. Причинами этого, как уже упоминалось выше, являются слабое владение методами программной инженерии, незначительный опыт проектирования подобных задач, ограниченность времени на реализацию приложения, трудность в понимании того, как следует решать эту задачу. В результате возникла потребность разработать такой подход, который бы соответствовал следующим критериям:

• обладал относительной простотой и понятностью при изучении и использовании;

• опирался на принципы объектно-ориентированного программирования;

• демонстрировал, пусть и в упрощенной форме, особенность «промышленной» разработки кода.

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

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

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

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

• слой представления или Presentation Layer - отвечает за взаимодействие с пользователем и работу графического пользовательского интерфейса;

• слой бизнес-логики или Business Logic Layer - отвечает за обработку данных в соответствии с потребностями пользователя;

• слой доступа к данным или Data Access Layer - отвечает за взаимодействие с внешними хранилищами данных, т.е. обеспечивает доступ к данным.

Для обеспечения физической независимости каждый слой может дополнительно разрабатываться как отдельный модуль. Поскольку для выполнения студенческой работы рекомендуется использование MS Visual Studio и языка разработки C#, то каждый слой разрабатывается как отдельный проект типа «библиотека классов». Разработка графического пользовательского интерфейса также ведется в отдельном проекте. Выбор технологии для разработки интерфейса пользователя остается за студентом, но рекомендуется использование технологии WPF, основанной на языке разметки XAML. В последнем случае создается отдельный проект типа «WPF приложение», который также играет роль запускаемого проекта. Это означает, что при компиляции решения проект типа «WPF приложение» компилируется в исполняемый файл типа .exe, а проекты типа «библиотека классов» в динамически подключаемую библиотеку .dll.

На рис.1 представлена рекомендуемая структура приложения и схема зависимости модулей в виде UML диаграммы размещения. Слой представления (Presentation Layer) на схеме явно отсутствует, в данном случае он реализован в рамках запускаемого проекта Application. При этом в качестве отдельного модуля добавлена библиотека Dto. Данная библиотека представляет коллекцию объектов, единственная задача которых состоит в передаче данных между слоями. Такое решение обусловлено широко известным шаблоном проектирования Data Transfer Object (DTO). Объекты DTO по определению не содержат поведения.

Рис. 1 - Общая структура приложения

В центре разработки приложений к базам данных обычно лежит структуру базы данных. В этом случае для каждой таблицы или представления на уровне проекта DataAccess

67

следует создать и поместить в папку Entities соответствующий объект типа Entity, структура которого полностью повторяет структуру таблицы или представления. Согласно принципу разделения ответственности, за получение списка, добавление, редактирование и удаление экземпляров сущности отвечает другой класс, назначение которого отражается в имени класса с помощью аббревиатуры DAO (Data Access Object): EntityDao. На текущий момент существует большое число самых различных СУБД, использование которых в проекте для хранения данных может быть обусловлено целым рядом причин: компактностью, быстродействием, ценой, доступностью и т.п. Чтобы обеспечить независимость от конкретной СУБД и повторное использование имеющегося кода, описанная выше функциональность обобщается в виде абстракции, декларируя операции конкретного класса EntityDao в виде интерфейса IEntityDao. При этом сторонние модули, в данном случае модуль, реализующий бизнес-логику (BusinessLogic Layer), будут знать только об интерфейсе IEntityDao. Также зададим единственное место, в котором все сторонние модули будут получать объект реализации интерфейса IEntityDao. Это место называется фабрикой классов DaoFactory.

Рис. 2 - Рекомендуемый шаблон разработки

Для передачи данных между слоями используется объект EntityDto. В результате возникает задача преобразования объектов типа Entity в объекты типа EntityDto и обратно. Чтобы не делать это каждый раз, где только потребуется, следует добавить специальный класс DtoConverter в проекте BusinessLayer и поместить его в папку Converters этого проекта. Кроме того, такой прием значительно сокращает код и облегчает его понимание.

Аналогично слою доступа к данным на уровне слоя бизнес-логики создадим интерфейс IEntityProcess, декларирующий операции обработки данных объекта типа EntityDto. Чтобы быстро заменить реализацию интерфейса IEntityProcess с нынешнего варианта на какой-либо иной, позволим сторонним модулям знать только об интерфейсе IEntityProcess и зададим фабрику классов ProcessFactory, посредством которой все сторонние модули будут получать

объект реализации интерфейса IEntityProcess. Таким образом, создание экземпляров класса, реализующих интерфейс IEntityProcess, будет в одном месте. Мы всегда с легкостью поменяем класс реализации данного интерфейса на любой иной, и сторонние модули даже не узнают об этом.

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

предметную область небольшой художественной галереи View Ridge.

Рис. 3 - Схема базы данных View Ridge Gallery

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

Согласно описанному выше подходу реализация поставленных задач будет заключаться в последовательном использовании предложенного шаблона проектирования (рис. 2) для каждой таблицы представленной схемы базы данных. Рекомендуется начать реализацию с таблиц CUSTOMER и ARTIST, продолжить таблицами WORK и TRANS (transaction) и завершить таблицей связью CUSTOMER_ARTIST_INT, которая на практике будет заменена представлением CUSTOMER_INTERESTS.

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

Схема реализации для таблицы WORK, представленной на рис. 4, будет следующей.

В проекте DataAccess:

1. в папке Entities необходимо добавить класс Work, структура которого полностью соответствует структуре таблицы WORK, а сам класс соответствует классу Entity рекомендуемого шаблона разработки (рис. 2);

добавить интерфейс для доступа к данным IWorkDao, в котором декларировать основные методы обработки объекта типа Work, в том числе и методы осуществления поиска в коллекции объектов типа Work;

4.

добавить реализацию интерфейса IWorkDao в виде класса WorkDao, который включает реализацию методов получения и обработки данных, ориентированных на конкретную СУБД (в учебном проекте использовался MS SQL Server 2008). При этом методы подключения к базе данных вынесены в отдельный класс BaseDao, общий для всей коллекции классов этого уровня. Процедура создания объектов типа Work вынесена в отдельный статический метод LoadWork(), что позволяет использовать его в других методах класса и повысить понятность разрабатываемого кода; завершает работу на этом уровне добавление в класс DaoFactory метода, отвечающего за создание объектов типа WorkDao. Напомним, что класс DaoFactory является единственной точкой доступа к модулю Data Access и связывает между собой модули Business Logic и Data Access.

Рис. 4 - Схема реализации шаблона для таблицы WORK

Далее, следует перейти в проект Dto и создать класс WorkDto. В отличие от объектов типа Entity объекты типа Dto описывают свойства (property), а не поля (field). Это позволяет в объектах Dto при объявлении свойств ссылаться на другие объекты в целом. Таким образом, каждому произведению будет привязан не просто идентификатор художника, как это отражено в сущности Work, а все сведения о художнике (объект ArtistDto): с его именем, фамилией и прочими атрибутами, что существенно облегчает получение нужных данных в ходе реализации приложения. Закончив с созданием объектов типа Dto, перейдите на уровне бизнес-логики, т.е. в проект BusinessLayer, и реализуйте логику работы с объектами класса WorkDto:

1. сначала перейдите в папку Converters и добавьте соответствующие методы к классу DtoConverter, преобразующие объекты типа Work в объекты типа WorkDto и наоборот;

2. далее создайте интерфейс IWorkProcess и реализуйте его в классе WorkProcessDb, согласно предложенной на рисунке 4 схеме. Конструктор класса WorkProcessDb отвечает за подключение к модулю Data Access через интерфейс IWorkDao и получение объектов типа Work, которые затем преобразуются при вызове

соответствующих методов класса DtoConverter в объекты типа WorkDto, которые затем используются в качестве источников данных для предоставления данных в графическом пользовательском интерфейсе;

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

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

Более подробно с примером реализации учебного проекта на базе рассматриваемого шаблона разработки можно ознакомится в работе [3].

Предложенный в статье подход к разработке приложений к базам данных был апробирован в течение двух последних лет в ходе выполнения практических занятий и курсовых проектов по дисциплине «Управления данными» студентами кафедры Информационных технологий Ивановского государственного химико-технологического университета. Использование данного подхода показало, что студенты стали лучше понимать принципы разработки подобных приложений, стали выполнять больший объем работ и делать эту работу более качественно. Многие студенты используют данных подход в ходе разработки своих курсовых проектов, развивая и расширяя его возможности. Кроме того, практика знакомства студентов с предлагаемым подходом проектирования, позволяет им в дальнейшем лучше понимать и смелее использовать альтернативные подходы быстрой разработки приложений, например, такие, как Entity Framework.

Литература

1. Галиаскаров, Э.Г. Проектирование баз данных: лабораторный практикум / Э.Г. Галиаскаров, А.Ю. Крылов; Иван. гос. хим.-технол. ун-т.- Иваново, 2012. - 96 с.

2. Руководство Microsoft по проектированию архитектуры приложений. 2-е издание.

3. Разработка приложений баз данных: лабораторный практикум / Э.Г. Галиаскаров и др.; Иван. гос. хим.-технол. ун-т. - Иваново, 2015. - 112 с.

УДК 004.04

АВТОМАТИЗАЦИЯ СБОРА ИНФОРМАЦИИ ИЗ ОТКРЫТЫХ ИНТЕРНЕТ-

ИСТОЧНИКОВ

Гранаткин Денис Сергеевич, студент, Ивановский государственный химико-технологический университет, Россия, Иваново, dengranatkin94@mail.ru

Галиаскаров Эдуард Геннадьевич, к.х.н., доцент, Ивановский государственный химико-технологический университет, Россия, Иваново, portugaled@yandex.ru

Введение

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

i Надоели баннеры? Вы всегда можете отключить рекламу.