В перспективе планируется выпуск новой версии программного инструментария UFO-toolkit, где будут автоматизированы все описанные возможности системно-объектного моделирования.
Литература
1. Емельянов А. А., Власова Е. А. Имитационное моделирование экономических процессов / Имитационное моделирование. Теория и практика. Четвертая всероссийская научнопрактическая конференция по имитационному моделированию и его применению в науке и промышленности (ИММОД-2009), Санкт-Петербург, 2009.
2. Маторин С.И., Попов А.С., Маторин В.С. Моделирование организационных систем в свете нового подхода «Узел-Функция-Объект» // Научно-техническая информация. Сер. 2. - 2005. -№1.-С. 1-8.
3. Маторин С.И., Зимовец О.А., Жихарев А.Г. О развитии технологии графоаналитического моделирования бизнеса с использованием системного подхода «Узел-Функция-Объект» // Научно-техническая информация. Сер. 2. - 2007. - №11. - С. 10-17.
4. Маторин С.И. О новом методе системологического анализа, согласованном с процедурой объектно-ориентированного проектирования. Часть 2 // Кибернетика и системный анализ. -2002. -№1.-С. 118-130.
5. Жихарев А.Г., Маторин С.И., Маматов Е.М., Смородина Н.Н. О системно-объектном методе представления организационных знаний // Научные ведомости Белгородского государственного университета. Сер. История. Политология. Экономика. Информатика. -2013. - № 8 (151). - Выпуск 26/1. - С. 137-146.
6. Abadi Martin and Luca Cardelli A Theory of Objects. Springer-Verlag, 1996.
УДК 004.43:378.09
ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННОЙ СИСТЕМЫ ДЛЯ ВЕДЕНИЯ БЛОГА
Мясникова Нелли Александровна, доцент, Южно-Российский государственный политехнический университет (Новочеркасский политехнический институт) имени М.И. Платова, Россия,
Новочеркасск, mnela@list.ru
Курин Николай Дмитриевич, студент, Южно-Российский государственный политехнический университет (Новочеркасский политехнический институт) имени М.И. Платова, Россия,
Новочеркасск, kurin,kolvan@,vandex.ru
Блог - это веб-сайт, основное содержимое которого представляет регулярно добавляемые записи, содержащие в себе текстовую, графическую, или иную информацию. Также характерна упорядоченность записей в хронологическом порядке - чем новее запись, тем выше она расположена. В последнее время по разным причинам блоги получают большую распространенность, создаются различные веб-сервисы, позволяющие зарегистрировать и содержать свой собственный блог.
От обычных дневников блоги отличаются своей публичностью: блоги предполагают сторонних читателей, которые могут оставлять комментарии как непосредственно под записью, так и в своих собственных блогах. Можно выделить еще одну особенность -простоту добавления новых записей. Пользователь просто обращается к веб-серверу, происходит идентификация, после чего пользователь просто добавляет еще одну запись. Сервер представляет информацию как последовательность сообщений, помещая самые свежие сообщения вверху [1].
Можно выделить следующие функции блогов:
• коммуникативная функция;
• функция самопрезентации;
57
• функция развлечения;
• функция сплочения и удержания социальных связей;
• функция мемуаров;
• функция саморазвития, или рефлексии;
• психотерапевтическая функция;
• продвижение товаров и услуг.
В данной статье мы рассмотрим внутреннее устройство информационной системы простейшего блога. При создании любой информационной системы, в том числе и блога, необходимо выделить основные требования к этой системе:
• авторизация пользователей;
• создание записей;
• комментирование записей;
• поддержка тэгов.
Помимо перечисленных требований, необходимо учесть, что у пользователей могут быть разные уровни доступа. Например, хозяин блога может добавлять записи, а гости - нет, но при этом комментирование записей должно быть доступно всем.
Для создания информационной системы вполне логично использовать объектноориентированную базу данных (ООБД). С помощью использования ООБД можно достичь высокой скорости обработки данных при том, что внутреннее устройство может быть достаточно сложным.
Основными характеристиками объектно-ориентированных баз данных являются:
1. Поддержка индивидуальности объектов.
2. Поддержка инкапсуляции.
3. Поддержка классов.
Теперь рассмотрим подробнее, почему же для создания информационной структуры блога так удобно использование объектно-ориентированных баз данных.
Поддержка индивидуальности объектов. Это означает, что каждый объект в базе данных должен иметь свой уникальный идентификатор, не зависящий от атрибутов самого объекта. Применительно к блогу это обеспечит уникальность каждого пользователя и каждой записи. Действительно, существование двух абсолютно одинаковых пользователей или записей не просто не допустимо, но вообще не имеет смысла. Следовательно, этот пункт удовлетворяет требованиям к блогу.
Поддержка инкапсуляции. Инкапсуляция - это сокрытие внутреннего устройства от пользователя с целью сохранности работоспособности системы. Применительно к блогу это обеспечит гарантию того, что пользователи, используя блог, не смогут изменить его внутреннее устройство - например, систему авторизации или способы внутреннего представления информации. Таким образом, инкапсуляция обеспечит работоспособность блога и его устойчивость к воздействию извне, следовательно, этот пункт удовлетворяет поставленным требованиям.
Поддержка классов. Класс - это своего рода модель для построения объектов. Фактически класс описывает устройство объекта, атрибуты, которые этот объект должен иметь. Учитывая то, что блог представляет собой набор хронологических записей и пользователей, а также комментариев, можно будет выделить отдельные классы «Запись», «Пользователь» и «Комментарий» и, выделив необходимые атрибуты, без труда создавать в дальнейшем объекты этих классов. По сути, это самое рациональное решение, которое удовлетворяет требованиям к блогу.
Определившись с тем, что в основе блога будет лежать объектно-ориентированная база данных, необходимо подробнее ознакомиться с особенностями ее создания. В любой, даже
58
несложной, работе можно выделить этапы, и проектирование ООБД не является исключением.
Построение объектно-ориентированной базы данных происходит в несколько этапов
[2]:
• изучение предметной области - определение области работы БД и определение примерного функционала;
• концептуальное проектирование - конструирование модели, не зависящей от физической реализации;
• логическое проектирование - конструирование модели на основе выделенных типов данных;
• физическое проектирование - физическое развертывание БД.
Теперь применим каждый из этапов к информационной модели нашего блога:
Изучение предметной области. Блог должен содержать в себе серверную базу данных, серверное приложение и клиентское приложение или сайт, с помощью которого будет происходить получение и добавление информации. Основные требования к блогу уже были сформулированы ранее: авторизация пользователей, создание записей, комментирование записей, поддержка тэгов. База данных должна будет хранить в себе информацию о пользователях, их записи и комментарии.
Концептуальное проектирование сводится к построению концептуальной схемы. На рис. 1 представлены все выделенные сущности и их атрибуты. Для описания пользователей была выделена сущность User. Эта сущность должна содержать следующие атрибуты: Name - имя пользователя, Family - фамилия пользователя, NickName - псевдоним пользователя, BirthDate - дата рождения пользователя, Password - пароль пользователя, Info -дополнительная информация о пользователе (интересы, музыкальные предпочтения и т.д.). В блоге могут быть как сам автор блога, так и его читатели, при этом блоггер и читатели имеют разные права. Для определения, «кто есть кто», создана сущность Level. Эта сущность имеет следующие атрибуты: AccessLevel - уровень доступа, доступный конкретному
пользователю. Автор блога может создавать записи. Для представления записей была создана сущность Post. Эта сущность содержит следующие атрибуты: Title - название (заголовок) для записи, Date - дата публикации записи, Content - содержание записи. Все пользователи могут комментировать записи, которые также являются сущностями. В связи с этим была выделена ещё одна сущность - Comment. Эта сущность должна иметь следующие атрибуты: Date - дата публикации комментария, Content - содержание комментария. Также, каждая запись может иметь один или несколько хэш-тэгов. В связи с этим была выделена ещё одна сущность - Tag, имеющая следующие атрибуты: ListOfTags - список тегов.
Рис. 1 - Концептуальная модель 59
Когда концептуальная модель построена, необходимо создать логическую модель. Построение логической модели сводится к тому, чтобы выделить и абстрагировать некоторые общие свойства разных сущностей. Учитывая то, что сущности Post и Comment имеют одинаковые атрибуты Date (дата публикации) и Content (данные), можно выделить ещё один абстрактный класс ContentDateObject, который будет иметь атрибуты Date и Content. Таким образом, получается, что классы Comment и Post наследуются от ContentDateObject. Нужно отметить, что все атрибуты класса Comment наследуются от класса ContentDateObject, то есть он не имеет собственных атрибутов.
Следующим шагом будет размещение готовой базы данных на сервере, написание серверного приложения и приложения либо сайта для обеспечения работы с БД. Обычно в качестве системы управления базой данных используется MySQL. Это происходит по той причине, что данная СУБД ориентирована на задачи, выполняемые на сервере, доступна практически на всех операционных системах и проста в настройке и администрировании. Для написания серверной логики может использоваться Python, Ruby или любой другой язык программирования. В качестве клиентской части может использоваться любой браузер. С его помощью происходит визуализация данных, получаемых с сервера и взаимодействие пользователя с сервером.
Обычно блоги имеют достаточно простой и интуитивно понятный интерфейс. Должна быть возможность регистрации нового пользователя или авторизации уже существующего. Неавторизированные пользователи могут просто просматривать блог. После авторизации пользователю должен быть доступен его блог с возможностью добавления, редактирования и
60
удаления записей, а также комментирование записей - как своих, так и чужих. Все сформулированные требования показаны на рис. 3.
Итак, база данных для блога создана, сайт написан. Остается лишь обеспечить взаимосвязь клиентской и серверной частей. Теперь рассмотрим, что же происходит при взаимодействии пользователя с клиентским приложением.
Первым делом нужно обеспечить возможность добавления пользователей. Вводимые пользователем данные должны проверяться на корректность, после чего созданный экземпляр класса (как мы помним, в базе данных пользователи представляются в виде класса User) заносится в базу данных. Для обеспечения надежности хранения пароля к нему обычно применяется некоторая система шифрования, так что в базе данных хранится не сам пароль, а его значение, полученное по какому-либо методу шифрования. Когда пользователь вводит свои личные данные для авторизации, происходит проверка соответствия пароля и имени пользователя (пароль шифруется и отправляется на сервер, где происходит сравнение данных), если данные верны - пользователь получает доступ к своему блогу.
Здесь же, при создании пользователя, происходит присвоение пользователю некоторого уровня доступа. За соблюдением уровней доступа следит класс Level, в котором хранится соответствие, какие страницы доступны каждому конкретному пользователю и какие действия могут быть выполнены на каждой из страниц. Каждому пользователю происходит присвоение какой-то конкретной страницы, на которой он сможет оставлять свои записи -это и будет личным блогом пользователя. В чужих же блогах пользователь сможет лишь оставлять комментарии и просматривать записи, сделанные их владельцами.
Итак, у нас есть пользователь, и он хочет создать свою первую запись. При создании записи, вся необходимая информация собирается со страницы пользователя и отправляется на сервер. На сервере каждая запись представляет собой экземпляр класса Post. Запись содержит свой уникальный номер, заголовок, какое-то содержимое: к примеру, текст, информацию о пользователе, создавшем ее, дату и время создания. Уникальный номер используется для нахождения записи в базе данных. Заголовок и содержимое представляют собой данные, вводимые пользователем, - в дальнейшем, эта информация будет отображена в самом блоге. Информация о пользователе обычно представляет собой ссылку на информацию о пользователе или его страничку. Дата и время публикации играют в блоге немаловажную роль, так как именно по этому критерию происходит сортировка выводимых в блоге записей. Данные о записях с сервера на клиентский канал пользователя передаются в
61
виде списка записей, отсортированных по дате и времени публикации по убыванию; таким образом, последняя запись всегда находится в самом верху.
К каждой записи её автором могут быть добавлены тэги. В базе данных, на сервере, тэги хранятся в виде экземпляров класса Tag, связанных непосредственно с записью. Они играют роль ключевых слов в поиске записей. Таким образом, при поиске по тэгам, несколько записей, имеющих одинаковый тэг, к примеру, «#IT», будут отображаться рядом, хотя в хронологическом порядке могут находиться очень далеко друг от друга. Обычно тэги должны отражать краткое содержание записей, соответственно, по тэгу «#IT» мы найдем записи, так или иначе связанные с информационными технологиями.
Каждый пользователь может прокомментировать любую запись, как посчитает нужным. В базе данных каждый комментарий представляется экземпляром класса Comment. Когда пользователь пишет комментарий и жмет кнопку «Добавить комментарий», происходит отправка введенных данных на сервер. Сервер обрабатывает данные, а именно: кем, когда, и к какой записи он был оставлен, а также непосредственно содержание комментария, после чего он заносится в базу данных. Когда пользователь жмет «Показать комментарии», на сервер отправляются сведения о том, для какой именно записи должны быть загружены комментарии. Происходит получение всех комментариев, относящихся к этой записи, после чего они в отсортированном по дате и времени виде отправляются на клиентскую машину пользователя. Соответственно, пользователь их видит и может прочесть.
Таким образом, блог имеет три основных составляющих: база данных, хранящаяся на сервере, серверное приложение и клиентское приложение. База данных выполняет роль хранилища всей информации о пользователях, записях, комментариях и пр. Серверный обработчик служит связующим звеном между клиентской частью и базой данных. Он получает запросы со стороны пользователя и, в зависимости от запроса, производит чтение данных из базы данных, запись данных или же их сортировку. Клиентская часть служит «проводником» между пользователем и сервером - она обрабатывает действия пользователя, преобразуя их в команды, понятные для сервера, после чего отправляет серверу необходимые для выполнения этих команд данные. Необходимо отметить, что в статье была рассмотрена простейшая модель интернет-блога. В действительности же, в блог может быть добавлено множество дополнительных функций, таких как удаление или редактирование пользователей, записей или комментариев, прикрепление к записям (а возможно, и к комментариям) различных медиа файлов и т.д. Но в целом все блоги имеют схожее внутреннее устройство, которое было рассмотрено выше.
Несмотря на то, что тематически блоги весьма различны, их внутреннее устройство почти всегда схоже с описанным. Разобравшись с принципиальным устройством одного блога, в дальнейшем не составляет труда создать свой собственный блог. В статье были выделены основные шаги при создании блога, рассмотрено его внутреннее устройство и основные функциональные возможности. Таким образом, ознакомившись с данной статьей, любой желающий создать личный блог получает знания, которые помогут ему в разработке.
Литература
1. Объектно-ориентированная база данных - Википедия. URL:
Ьйр8://щ.-мк1реб1а.ощ/-мк1/Объектно-ориеитироваииая база данных (дата обращения: 21.04.2015)
2. Блог - Википедия. URL: Ьйр8://ги.-мк1реб1а.от/-мк1/Блог (дата обращения: 21.04.2015)
3. Буч Г., Рамбо Д., Якобсон И. Язык UML. Руководство пользователя. - ДМК Пресс Издательство, 2008 г. - 496 с.
62
4. Байдачный С.С. Silverlight 4: Создание насыщенных Web-приложений СОЛОН-Пресс Издательство, 2010 г. -288 с.
5. Батоврин В.К. Системная и программная инженерия. Словарь-справочник: учебное пособие для вузов. - ДМК Пресс Издательство, 2010 г. - 280 с.
УДК 004.514
ИЗУЧЕНИЕ И ОЦЕНКА ПОХОДОВ К РАЗРАБОТКЕ ГРАФИЧЕСКОГО ИНТЕРФЕЙСА ПОЛЬЗОВАТЕЛЯ
Искра Наталья Александровна, магистр технических наук, ассистент кафедры ЭВМ, Белорусский государственный университет информатики и радиоэлектроники, Республика Беларусь, Минск,
natallia.iskra@gmail.com
Макоед Виктор Николаевич, студент, Белорусский государственный университет информатики и радиоэлектроники, Республика Беларусь, Минск, vmakoed@gmail.com Куница Евгений Юрьевич, студент, Белорусский государственный университет информатики и радиоэлектроники, Республика Беларусь, Минск, kunitsa.evgeniy@gmail.com
Введение
На сегодняшний день существует большое количество инструментов разработки графического интерфейса пользователя (Graphical User Interface, GUI), предлагающих создание программ на различных языках программирования и реализующих различные подходы к созданию интерфейса. В процессе изучения и практического освоения новой технологии обучающемуся приходится сталкиваться с разнообразными задачами, и очень важно систематически представить приёмы их решения, следуя принципу «от простого - к сложному». Следует отметить, что и в будущей профессиональной деятельности обучающийся должен уметь оперативно оценивать различные подходы к реализации GUI для того, чтобы решать поставленные задачи максимально эффективно.
Существуют подходы к сравнению технологий по созданию GUI на основе метрик, оценивающие, например, системные требованиям к запуску приложений и занимаемой памяти [1]. Однако для изучения новой технологии важно в первую очередь сопоставить инструменты с точки зрения самого процесса разработки, а именно - написания исходного кода приложений. Для этого могут использоваться некоторые «типовые задачи», которые часто встречаются на практике, например проект 7GUI [2].
В задачи, предлагающиеся к решению проектом 7GUI, входят 7 типовых задач: счётчик, конвертер температуры, симулятор бронирования билетов, таймер, CRUD (реализация базовых функций, реализуемых в работе с хранилищами данных), приложение для рисования кругов и интерактивная таблица значений. Подходы к решению каждой из задач позволяют рассмотреть тестируемую технологию с разных точек зрения, последовательно рассмотреть возможности набора инструментов. Например, для создания счётчика необходимо иметь базовые представления о применяемом языке программирования и инструментах разработки, создании и настройке элементов интерфейса, тогда как конвертер температуры требует реализации обработки информации, введённой пользователем, а также работу с двунаправленным потоком данных.
В рамках проекта уже было проведено сравнение объектно-ориентированного и функционального подходов к реализации GUI [3]. Мы, в свою очередь, внесли свой вклад в проект в виде сравнения двух объектно-ориентированных кроссплатформенных подходов [4]
1. Исследуемые задачи и подходы
Для оценки эффективности объектно-ориентированных кроссплатформенных фреймворков Qt[5] и JavaFX[6] были спроектированы и разработаны приложения CRUD и
63