Материал: 8 неделя науки СВАО - тезисы с содержанием

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Рис. 1. Структурная схема системы измерения сейсмических сигналов

Рис. 2. Схема расположения ПО и РТП сейсмической системы

ОБЪЕКТНО-РЕЛЯЦИОННЫЕ ПРЕОБРАЗОВАТЕЛИ В ЯЗЫКЕ С++

Найденов В. В., Путилин А. Б.

МГОУ имени В.С. Черномырдина

Одной из самых основных методик разработки ПО на сегодняшний день является объектно-ориентированная декомпозиция. При таком подходе предметная область задачи моделируется как множество объектов, относящихся к различным классам, связанных отношениями, взаимодействующих с помощью сообщений. Объект можно представить как набор данных (атрибутов), с которым связан набор операций (сообщений). Объектная модель хорошо себя зарекомендовала при разработке больших бизнес-систем, таких как ERP-системы, Интернет-магазины и т. д.

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

Одновременно с этим сложилась практика использования реляционных (табличных) СУБД в качестве универсальных хранилищ самых разнообразных данных. Плюсами реляционных СУБД являются:

  • сравнительно простая математическая модель, лежащая в их основе — т. н. реляционная алгебра;

  • наличие относительно стандартизированного способа взаимодействия с такими СУБД в виде языка SQL, который используется для выполнения запросов и других манипуляций с данными;

  • наличие относительно стандартизированных прикладных программных интерфейсов (Application Programming Interface, API) для всевозможных языков программирования, с помощью которых программа может выполнять запросы к СУБД, используя выше упомянутый язык SQL;

  • огромный выбор реализаций реляционных СУБД, удовлетворяющий большинству потребностей хранения данных;

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

В противовес реляционным существуют объектно-ориентированные базы данных, однако, по ряду причин, широкого распространения они до сих пор не получили. В качестве альтернативы объектным БД было предложено совмещение двух самых распространенных практик — объектно-ориентированного подхода и хранения данных в реляционных БД — это решение получило название объектно-реляционного преобразователя (Object-Relational Mapper, ORM). Основная задача инструментария ORM — отобразить классы, объекты и связи между ними на сущности БД — таблицы, строки, ограничения первичных и внешних ключей.

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

Инструментарий ORM создает дополнительный слой абстракции, позволяющий прикладному программисту мыслить больше категориями объектов и классов моделируемой предметной области, нежели категориями реляционной БД. Этот слой берет на себя вопросы сохранения и загрузки объектов, оптимизируя обращения к БД с помощью таких механизмов, как «загрузка по требованию». В то же время данный инструментарий должен предоставлять программисту достаточный контроль над исполняемыми запросами, при необходимости. Потенциально, этот слой абстракции может существенно снизить затраты на обучение программистов, снизить количество ошибок, упростить написание правил бизнес-логики.

Нужно помнить, что между реляционной и объектной моделями существует значительное различие, они решают разные задачи. Поэтому, если в разрабатываемой системе основной упор делается на многокритериальный поиск и массированное извлечение информации (класс информационно-поисковых систем, OLAP, генерация отчетности), то использование объектов для доступа к данным может быть излишне. Никакого различия между табличным представлением информации в базе данных, внутри программы и на экране пользователя или в отчете нет, промежуточная обработка сводится к соединениям таблиц и простым пересчетам значений их полей. Напротив, если система осуществляет транзакционную обработку (OLTP, On-Line Transaction Processing), сложные расчеты, оповещения о событиях, диспетчеризацию, моделирует поведение — здесь преимущества использования инструментария ORM наибольшие.

На данный момент инструментарии ORM в среде программистов на C++ используются не так широко как среде программистов на таких языках, как Java или Python. Причиной может быть как несколько иная сложившаяся область применения языка С++, так и недостаточная развитость средств ORM, доступных программистам на языке C++.

К особенностям данного языка можно отнести сильную типизацию, отсутствие встроенных механизмов интроспекции объектов на этапе выполнения, аналогичных Java Reflection API. В отдельных случаях это может быть проблемой, особенно если требуется анализ схемы БД на стадии выполнения.

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

При разработке должны быть использованы только общедоступные, а еще лучше стандартные компоненты. Однако, стандартная библиотека актуального стандарта ANSI С++ не содержит примитивов для работы с базами данных, данными в формате XML, типами данных для хранения дат и чисел с фиксированной точкой. Отчасти этот пробел восполняется такими библиотеками как Boost, являющимися стандартом де-факто.

Данная работа ставит своей целью исследовать существующие подходы к отображению объектов в реляционные БД, используемые в различных существующих решениях, построенных как с использованием языка C++, так и других платформ. Необходимо оценить применимость и эффективность этих подходов и методов к инструментарию C++. Данное исследование поможет разработать полноценный инструментарий ORM для использования с языком программирования C++.

Технологии моделирования систем оптической обработки информации

Мельков А. Е.

МГОУ имени В.С. Черномырдина

Центральная задача проблемы распознавания образов – построение на основе систематических теоретических и экспериментальных исследований эффективных вычислительных средств для отнесения формализованных описаний объектов (сформированных в пространстве признаков) к соответствующим классам (рис. 1).

Статистические (вероятностные) модели.

Модели вычисленияоценок.

Модели, основанные на построении грамматики примитивов.

Модели алгоритмов классификации

Модели, основанные на исчислении высказываний, в частности на аппарате алгебры логики.

Модели, построенные на основе так называемого «метода потенциальных функций».

Детерминистические модели.

Рис. 1. Модели алгоритмов классификации.

Используя ряд признаков образа (рис. 2), можно выделить и другие задачи – распознавание объекта вне зависимости от масштаба, угла обзора и инвариантного состояния.

Признаки Фурье

Признаки Хау

Моментные признаки

Виды признаков

Признаки Вигнера

Признаки Хартли

Хордовые признаки

Рис. 2. Виды признаков исследуемого образа.

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

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

Φ1 = µ02 + µ20,

Φ2 =( µ20 - µ02)2 + 4 µ112,

Φ3 = (µ30 - 3 µ12)2 + (3 µ21 - µ03)2,

Φ4 = (µ30 + µ12)2 + (µ21 + µ03)2,

Φ5 = (µ30 - 3 µ12)( µ30 + µ12) [(µ30 + µ12)2 – 3 (µ21 + 3 µ03)2] +

+ (3 µ21 - µ03) (µ21 + µ03)[3(µ30 + µ12)2 – (µ21 + µ03)2],

Φ6 = (µ20 - µ02)[(µ30 - µ12)2 – (µ21 + µ03)2] + 4µ11 (µ30 + µ12)(µ21 + µ03),

Φ7 = (3µ21 - µ03)(µ30 + µ12)[(µ30 + µ12)2 – 3(µ21 + µ03)2] –

- (µ30 - 3µ12)(µ21 + µ03)[3(µ30 + µ12)2 – (µ21 + µ03)2],

где µ - момент, Φ – моментный инвариант

Методы реализации признаков представлены на рис. 3.

Реализация признаков

Преобразование Фурье

Преобразование Меллина

Построение моментов

Рис. 3. Методы реализации признаков.

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

Недостатком данных признаков можно считать высокую чувствительность к воздействию шумов на процесс вычисления моментов.

Получение Фурье признаков изображения основано на реализации Фурье-преобразования. Преобразование Фурье (рис. 4) используется во многих областях науки.

Источник: https://files.student-it.ru/previewfile/284476