Требования к обобщенной архитектуре приложений для поиска дублирующегося кода

Ряд разнообразных методов поиска дублирующегося исходного кода в программных продуктах. Различные техники для выявления клонов (softwareclones). Обобщенная схема поиска дублирующихся фрагментов кода. Выбор структур данных и алгоритмов их обработки.

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

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

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

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

Вологодский государственный университет

Требования к обобщенной архитектуре приложений для поиска дублирующегося кода

Технические науки

Вахрушев Иван Николаевич, аспирант

В настоящее время существует ряд разнообразных методов поиска дублирующегося исходного кода в программных продуктах. Эти методы используют различные техники для выявления клонов (softwareclones), имеют как преимущества, так и недостатки.

В настоящее время существует ряд разнообразных методов поиска дублирующегося исходного кода в программных продуктах. Эти методы используют различные техники для выявления клонов (softwareclones), имеют как преимущества, так и недостатки. Однако, как показано в [1], практически во всех случаях можно выделить ряд общих этапов в процессе обработки кода (рис. 1).

Рис. 1 - Обобщенная схема поиска дублирующихся фрагментов кода

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

Архитектура [2] - это фундаментальная организация системы, реализованная в ее компонентах, связях этих компонентов друг с другом и внешней средой и принципах, определяющих структуру и развитие системы.

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

В контексте архитектуры и дизайна вариант использования(use case) - это описание ряда взаимодействий между системой и одним или более действующими лицами (либо пользователем, либо другой системой).

Возвращаясь к системе поиска клонов, можно выделить следующие варианты использования (рис.2).

Рис. 2 - Диаграмма вариантов использования

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

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

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

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

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

Поскольку разрабатываемое приложение будет работать преимущественно на клиентских ПК, то целесообразно использовать нераспределённую модель развертывания. При нераспределенном развертывании вся функциональность и слои приложения (кроме, как правило, функциональности хранения данных) располагаются на одном сервере (клиентской машине) (рис. 3).

Рис. 3 - Нераспределенное развертывание

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

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

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

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

Объектно-ориентированная архитектура - это парадигма проектирования, основанная на разделении ответственностей приложения или системы на самостоятельные пригодные для повторного использования объекты, каждый из которых содержит данные и поведение, относящиеся к этому объекту. При объектно-ориентированном проектировании система рассматривается как наборы взаимодействующих объектов. Объекты обособлены, независимы и слабо связаны; обмен данными между ними происходит через интерфейсы путем вызова методов и свойств других объектов и отправки/приема сообщений.

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

Многослойная архитектура (рис. 4) обеспечивает группировку связанной функциональности приложения в разных слоях, выстраиваемых вертикально, поверх друг друга. Функциональность каждого слоя объединена общей ролью или ответственностью. Слои слабо связаны, и между ними осуществляется явный обмен данными. Правильное разделение приложения на слои помогает поддерживать строгое разделение функциональности, что в свою очередь, обеспечивает гибкость, а также удобство и простоту обслуживания.

Рис. 4 - Многослойная архитектура приложения для поиска клонов

softwareclones алгоритм программный код

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

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

1. Вахрушев, И. Н. Применение методов поиска дублирующегося кода в процессе разработки программного обеспечения / Автоматизация и энергосбережение машиностроительного и металлургического производств, технология и надёжность машин, приборов и оборудования: Материалы шестой международной научно-технической конференции. Т. 1. - Вологда: ВоГТУ, 2010. - 219 с.

2. Фаулер, М. Архитектура корпоративных программных приложений / М. Фаулер. - М.:Вильямс, 2006. - 544 с.: ил.

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


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

  • Теоретические сведения об алгоритмах поиска подстроки в строке. Глобализация информации в сети Internet. Интеллектуальный поиск. Алгоритм последовательного (прямого) поиска, Рабина и их применение. Анализ алгоритмов. Реализация программного кода.

    курсовая работа [230,8 K], добавлен 12.02.2009

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

    курсовая работа [610,7 K], добавлен 20.01.2012

  • Методы реализации алгоритмов сортировки и алгоритмов поиска на языках программирования высокого уровня. Программирование алгоритмов сортировки и поиска в рамках создаваемого программного средства на языке Delphi. Создание руководства пользователя.

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

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

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

  • Создание программы для хранения и обработки данных о съеме/сдаче жилья. Написание программы на языке C++ с использованием библиотеки Qt; использование исходного кода для создания приложения под Windows, Linux, Mac OS X без дополнительных изменений кода.

    курсовая работа [60,4 K], добавлен 07.03.2013

  • Основные критерии и требования к средствам поиска по ресурсу. Технологии создания инструментов поиска. Способы поиска по ресурсу. Принцип действия поиска по ключевым словам и при помощи поисковых систем. Разработка ресурса "Поиск по ресурсу" в виде блога.

    курсовая работа [983,7 K], добавлен 01.02.2015

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

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

  • Реализация схемы минимума матрицы в среде САПР- Active HDL (Aldec) и разработка VERILOG-кода схемы. Описание модуля и числовые примеры работы схемы. Разработка и описание фрагментов кода. Разработка временных диаграмм и рассмотрение их примеров.

    курсовая работа [291,4 K], добавлен 11.11.2021

  • Описание алгоритмов поиска пути. Диаграмма объектов предметной области. Разработка структурной схемы. Проектирование интерфейса пользователя. Выбор и обоснование комплекса программных средств. Разработка пользовательского меню. Диаграмма компонентов.

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

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

    отчет по практике [53,0 K], добавлен 12.05.2015

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