Проектирование многоалгоритмических методов на примере библиотеки классов для анализа и моделирования временных рядов

Требования к программным продуктам в условиях автоматизации бизнеса. Характеристика сигнатуры интерфейса "IAlgorithm". Принципы выбора программного кода для "MultyAlgorithms". Стадии компьютерного проектирования с учетом показателей Гарольда Херста.

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 28.04.2017
Размер файла 446,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Кубанский государственный университет

ПРОЕКТИРОВАНИЕ МНОГОАЛГОРИТМИЧЕСКИХ МЕТОДОВ НА ПРИМЕРЕ БИБЛИОТЕКИ КЛАССОВ ДЛЯ АНАЛИЗА И МОДЕЛИРОВАНИЯ ВРЕМЕННЫХ РЯДОВ

Кесиян Грант Арутович

Уртенов Махамет Хусеевич

В данной статье описывается модификация паттерна проектирования «Стратегия», которая информирует клиентов о различных типах алгоритмов (стратегиях) без раскрытия особенностей их реализации, а так же позволяет контролировать соответствие алгоритмов и методов.

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

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

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

Основным достижением работы является представленная модификация паттерна проектирования «Стратегия», которая избавляет от недостатков использования стандартного шаблона.

Кроме того, мы описываем преимущества проектирования в соответствии с интерфейсами и абстрактными классами, а так же демонстрируем механизм делегирования и применения паттерна «Шаблонный метод».

Многоалгоритмические методы. Одним из центральных тезисов данной работы является положение об адаптации паттерна проектирования «Стратегия» («Strategy») к реализации разрабатываемой библиотеке анализа и моделирования временных рядов. Дело в том, что важной задачей при программировании математических методов является задача поддержания одновременно нескольких алгоритмов для каждого метода. Поэтому при создании библиотеки классов мы использовали шаблон «Стратегия», который позволит:

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

- скрыть от клиента данные алгоритма. Данное решение позволить не раскрывать сложные, специфичные для алгоритма структуры.

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

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

- при решении нашей задачи необходимо контролировать соответствие алгоритмов и методов, так как паттерн «Стратегия» не запрещает одним экземплярам контекста (метода) использовать стратегии (алгоритмы), которые предназначались для других экземпляров.

Для разрешения вышеуказанных минусов была предложена архитектура классов, показанная на рисунке 1:

Рисунок 1. - Диаграмма классов для методов, поддерживающих множество алгоритмов:

Как видно из рисунка 1, абстрактный класс MultyAlgorithms, который выполняет роль контекста, наследуется от интерфейса ICompatibility, а также аргегирует интерфейс IAlgorithm (стратегия). В отличие от обычного паттерна «Стратегия», наш интерфейс IAlgorithm не содержит метода, который и представляет собой реализацию алгоритма.

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

Интерфейс IAlgorithm содержит сигнатуры следующих методов:

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

- GroupOfAlgorithm - данный метод возвращает значение перечислимого типа GroupsOfAlgorithm. Каждое такое значение свидетельствует о принадлежности данного алгоритма определенной группе. Другими словами, каждый алгоритм будет связан только с одним методом. Метод GroupOfAlgorithm и будет использоваться для того, чтобы контролировать соответствие алгоритмов и методов. На рисунке 1 продемонстрированы такие значения типа GroupsOfAlgorithm как None - неопределенная группа, Users - пользовательская, группы, реализующие методы генерации временных рядов с заданным параметром Херста (Hosking - метод Хоскинга, CirculantEmbedding - метод циркулянтных вложений и т. д.), группы, реализующие методы, оценивающие экспоненту Херста (VarianceOfResiduals - метод дисперсии остатков, RescaledRangeAnalysis - метод нормированного размаха).

Интерфейс ICompatibility «наделяет» своих наследников возможностью проверять на соответствие алгоритмы и методы.

Метод CheckCompatibility, который содержится в данном интерфейсе, имеет один аргумент - алгоритм, который необходимо проверить на возможность применения в текущем методе.

Результат метода CheckCompatibility это значение булевского типа, которое и говорит об искомой совместимости.

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

Рисунок 2. - Программный код абстрактного класса MultyAlgorithms (контекст в паттерне проектирования «Стратегия»):

Из рисунка 2 видно, что метод доступа set (мутатор) свойства Algorithm содержит проверку на соответствие данного многоалгоритмического метода и алгоритма, который передается с помощью контекстно-зависимого ключевого слова value. При этом используется метод CheckCompatibility, реалзация которого содержит абстрактное свойство GroupOfAlgorithms. Таким образом, мы предоставляем возможность наследникам класса MultyAlgorithms самим решить о том, к какой группе алгоритмов относится данный метод. Такой прием носить название «Шаблонный метод» («Template Method»). «Шаблонный метод» - это паттерн поведения классов, который определяет основу алгоритма и позволяет подклассам переопределить некоторые шаги алгоритма, не изменяя его структуру в целом. Шаблонный метод - один из фундаментальных приемов повторного использования кода, который особенно важен в библиотеке классов, так как предоставляет возможность вынести общее поведение в библиотечные классы.

Архитектурное решение для алгоритмов. Рассмотрим создание наследуемой базы алгоритмов на примере проектирования алгоритмов, генерирующих временные ряды с заданным параметром Херста. Данное решение продемонстрировано на рисунке 3.

Для того чтобы проектировать в соответствии с интерфейсами, как показано на рисунке 3, был создан интерфейс IAlgorithmGeneration, который является родителем для всех алгоритмов генерации временных рядов с заданным параметров Херста.

Этот интерфейс наследуется от интерфейса IAlgorithm, поэтому его могут агрегировать наследники абстрактного класса MultyAlgorithms.

Кроме того, интерфейс IAlgorithmGeneration включает сигнатуру метода генерации Execute.

Метода Execute содержит два параметра:

- H - экспонента Херста, число вещественного типа;

- T - длина генерируемого ряда, целое число.

Рисунок 3. - Проектирование алгоритмов, генерирующих временные ряды с заданным параметром Херста:

Результатом выполнения вышеуказанного метода является список чисел вещественного типа, хранящий значения сгенерированного временного ряда длины T, корреляционна структура которого характеризуется параметром Херста - H.

Наследники интерфейса IAlgorithmGeneration, по своему реализуют ствойства GroupOfAlgorithms, Description, а так же метод Execute.

На рисунке 3 показана пара алгоритмов, которая генерирует временные ряды прямым методом определения (DDMBasicAlgorithm и DDMQuickAlgorithm) и пара алгоритмов, которая генерирует временные ряды методом Хоскинга (HoskingBasicAlgorithm и HoskingQuickAlgorithm).

Классы DDMBasicAlgorithm и DDMQuickAlgorithm одинаково реализуют свойство GroupOfAlgorithms. Это означает, что они принадлежат одной группе алгоримов. Однако при реализации свойства Description, указываются разные описания, характеризующие особенности того или иного алгоритма. Например для класса DDMBasicAlgorithm, можно указать, что это «основной алгоритм», а для DDMQuickAlgorithm - «быстрый алгоритм». Аналогично предыдущим рассуждениям, классы HoskingBasicAlgorithm и HoskingQuickAlgorithm одинаково реализуют свойство GroupOfAlgorithms, так как относятся к одной группе алгоритмов (выполняют генерацию временных рядов по методу Хоскинга). Расмотренное архитектурное решения для алгоритмов позволяет:

- создавать алгоритмы генерации с другой сигнатурой методов;

- информировать пользователя об особенностях того или иного алгоритма;

- динамически подменять алгоритмы, которые относятся к одной группе.

Архитектурное решение для методов.

Для использования преимуществ вышеуказанной модификации паттерна «Стратегия», нами была предложена архитектура классов, пример которой продемонстрирован на рисунке 4.

Рисунок 4. - Проектирование алгоритмов, генерирующих временные ряды с заданным параметром Херста:

Как показано на рисунке 4, абстрактный класс BaseGenerationMethod, который отвечает за методы генерации временных рядов с заданным параметром Херста, наследуется от базового класса многоалгоритмических методов MultyAlgorithms, а так же от двух интерфейсов: IGenerationMethod и ISeries. IGenerationMethod включает сигнатуру метода генерации ExecuteMethod, который содержит такие же параметры, как и метод Execute интерфейса IAlgorithmGeneration (H и T).

Интерфейс ISeries содержит сигнатуры методов для работы с рядами Series:

- GetSeriesByName - позволяет получить ряд по его имени;

- GetSeriesByInd - позволяет получить ряд по его индексу;

- GetSeriesesNames - возвращает список имен рядов;

- Count - возвращает количество рядов.

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

Функционал для работы со списком рядов в данной архитектуре выделен в отдельный класс ListSeries, который реализует интерфейс ISeries, а так же содержит два дополнительных метода: Checking, который позволяет проверить наличие того или иного ряда и AddSeries, который добавляет ряд в список имеющихся.

Внутри себя метод AddSeries содержит проверку с использованием метода Checking, таким образом, запрещая добавлять ряды с именами, которые уже есть в наличии. Класс BaseGenerationMethod агрегирует ListSeries и делегирует ему методы, реализующие интерфейс ISeries. Реализация метода ExecuteMethod продемонстрирована на рисунке 5. Тут метод ExecuteMethod передает выполнение непосредственного исполнения генерации методу Execute текущего алгоритма, который является наследником интерфейса IAlgorithmGeneration.

Рисунок 5. - Пример реализации исполнения многоалгоритмического метода: автоматизация интерфейс компьютерный

Рассмотренная композиция классов позволяет:

- создавать другие методы генерации и динамически их подменять;

- эффективно создавать и использовать различные структуры внутреннего представления данных;

- быстро расширять набор методов генерации временных рядов.

Хорошее проектирование - это возможность, которая есть у одних и, которой нет у других. Использование навыков объектно-ориентированного проектирования позволяет развивать и совершенствовать систему.

В данной статье была представлена модификация паттерна проектирования «Стратегия», предназначенная для создания многоалгоритмических методов, которая:

- информирует клиентов о различных типах алгоритмов (стратегиях) без раскрытия особенностей их реализации;

- позволяет контролировать соответствие алгоритмов и методов.

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

Библиографический список

1. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования. - СПб.: Питер, 2008. - 366 с.

2. Иан Грэхем Объектно-ориентированные методы. Принципы и практика. - 3-е изд. - М.: Издательский дом «Вильямс», 2004. - 880 с.

3. Эндрю Троелсен. C# и платформа.NET. Издательство «Питер». Петербург 2002.

4. UML. Классика CS. Буч Г., Якобсон А., Рамбо Дж., Орлов С.А. 2-е изд. 2005 год.

Размещено на Allbest.ru

...

Подобные документы

  • Понятие пользовательского интерфейса, требования к его разработке. Понятие диалога, типы диалога. Критерии хорошего диалога. Эвристические правила Якоба. Принципы построения интерфейсов. Факторы, влияющие на удобство работы с программным обеспечением.

    презентация [2,9 M], добавлен 19.09.2016

  • Функциональные возможности программного продукта. Требования к программным и аппаратным средствам. Обоснование выбора наилучшей модели для прогнозирования стоимостных показателей объектов. Разработка пользовательского интерфейса и модулей программы.

    дипломная работа [2,3 M], добавлен 24.06.2013

  • Разработка интерфейса и программного обеспечения виртуальной библиотеки. Проектирование структуры экранов и навигационной системы. Построение прототипа пользовательского интерфейса. Тестирование и модификация прототипа. Экспертная оценка разработки.

    курсовая работа [41,2 K], добавлен 19.12.2010

  • Анализ проектирования интерфейса программы. Выбор и назначение визуальных компонентов. Изучение экранных форм приложения. Модули, процедуры, функции проекта и их назначение. Листинг программного кода. Результаты работы автоматизированного продукта.

    курсовая работа [1,9 M], добавлен 11.12.2017

  • Определение программного модуля. Принципы использования dll-библиотеки. Преимущества и недостатки использования dll-библиотек. Описание коэффициентов моделей. Разработка структуры классов. Реализация библиотеки классов в среде разработки MS Visual Studio.

    дипломная работа [676,6 K], добавлен 16.06.2015

  • Понятие и функции систем автоматизированного проектирования (САПР), принципы их создания и классификация. Проектирующие и обслуживающие подсистемы САПР. Требования к компонентам программного обеспечения. Этапы автоматизации процессов на предприятии.

    реферат [19,8 K], добавлен 09.09.2015

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

    презентация [49,3 K], добавлен 16.10.2013

  • Принципы автоматизации делопроизводства. Общие понятия документооборота. Проектирование программного обеспечения. Стадии и этапы создания информационных систем, средства их разработки. Анализ алгоритмов работы с базой данных, разработка интерфейса.

    дипломная работа [3,4 M], добавлен 07.11.2015

  • Методика и основные этапы разработки web-библиотеки, требования к ней, содержание, структура и элементы. Идейное описание системы, направления ее проектирования. Порядок написания кода и тестирование систем, ее важнейшие функции и сферы использования.

    курсовая работа [1,2 M], добавлен 08.02.2013

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

    курсовая работа [3,1 M], добавлен 14.08.2015

  • Обследование объекта, обоснование необходимости систем компьютерного тестирования. Анализ существующих разработок и обоснование выбора технологии проектирования. Создание системы компьютерного тестирования на основе случайного выбора в среде Visual Basic.

    дипломная работа [2,4 M], добавлен 18.08.2013

  • Унифицированный язык моделирования UML. Проектирование и документирование программных систем. Листинги кода проектируемой программы, сгенерированные RationalRose. Модель информационной подсистемы для управления, учета, контроля и ведения библиотеки.

    курсовая работа [1,3 M], добавлен 22.06.2011

  • Основные цели и принципы построения автоматизированного проектирования. Повышение эффективности труда инженеров. Структура специального программного обеспечения САПР в виде иерархии подсистем. Применение методов вариантного проектирования и оптимизации.

    презентация [259,7 K], добавлен 26.11.2014

  • Анализ облачных сервисов для автоматизации бизнеса и обоснование преимуществ перехода на облачную обработку данных. Виды и модели облачных сервисов для бизнеса, принципы их работы и характеристики. Задачи автоматизации бизнеса на примере облачных решений.

    дипломная работа [2,3 M], добавлен 06.09.2017

  • Проблемы, обзор и анализ публикаций процесса функционирования библиотеки и обоснование его автоматизации. Анализ альтернативного программного обеспечения по автоматизации работы библиотек. Моделирование процесса функционирования библиотеки "Стэлс".

    дипломная работа [1,2 M], добавлен 09.01.2014

  • Обзор существующих решений и обоснование выбора языка программирования. Разработка структурной схемы, интерфейса программного продукта. Технические требования к оборудованию, тест программного продукта, руководство системного программиста и оператора.

    дипломная работа [2,0 M], добавлен 10.07.2012

  • Характеристика основных методов и средств моделирования мультиагентных систем. Ознакомление с результатами экспериментального тестирования и отладки программного комплекса. Рассмотрение методов оценки качества разработанного программного продукта.

    дипломная работа [3,1 M], добавлен 27.10.2017

  • Характеристика состава, интерфейса и основных возможностей программы схемотехнического моделирования и проектирования семейства Micro-Cap8, которая относится к наиболее популярным системам автоматизированного проектирования (САПР) электронных устройств.

    реферат [108,0 K], добавлен 12.03.2011

  • Описание разрабатываемого программного обеспечения, его структура и предъявляемые требования, аналитический обзор. Система приоритетов при разработке, проектирование интерфейса, алгоритмов и иерархии классов. Особенности реализации и внедрения системы.

    дипломная работа [878,4 K], добавлен 18.11.2017

  • Основные принципы дизайна классов в объектно-ориентированном проектировании: единственной обязанности, открытости-закрытости, подстановки Барбары Лизков, разделения интерфейса, инверсии зависимостей. Понятие быстрой разработки программ Мартина Роберта.

    презентация [57,5 K], добавлен 05.01.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.