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

NovaInfo 3, скачать PDF
Опубликовано
Раздел: Технические науки
Просмотров за месяц: 2
CC BY-NC

Аннотация

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

Ключевые слова

ДУБЛИРУЮЩИЙСЯ КОД, DUPLICATED CODE, SOFTWARE CLONES, CLONES

Текст научной работы

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

Цель данной работы — проектирование унифицированной многослойной архитектуры приложения для поиска программных клонов.

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

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

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

Функциональность каждого слоя объединена общей ролью или ответственностью. Слои слабо связаны, и между ними осуществляется явный обмен данными.

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

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

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

Для реализации обмена информацией между объектами, поддержки их в актуальном состоянии и уведомления пользователя о происходящих в системе процессах целесообразно использовать паттерн «Наблюдатель».

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

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

Для представления единицы кода служит класс CBaseSourceRow и его наследники. Объектами этого типа оперируют алгоритмы, определяющие похожие единицы кода.

Работа с фрагментами кода реализована через класс CCodeFragment. При этом фрагмент кода может начинаться с произвольной позиции в строке и также заканчиваться.

За представление файла с исходным кодом отвечает класс CSourceFile.

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

За поиск схожих строк отвечает семейство классов, унаследованных от CBaseCloneSearchStrategy. Сохранение результатов осуществляется в наследнике CBaseClonedRowsMatrix; а для извлечения дублирующихся фрагментов кода служит класс CBaseCloneExtractor и его потомки.

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

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

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

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

Читайте также

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

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

Цитировать

Вахрушев, И.Н. Проектирование многослойной архитектуры приложения для поиска дублирующегося кода / И.Н. Вахрушев. — Текст : электронный // NovaInfo, 2011. — № 3. — URL: https://novainfo.ru/article/228 (дата обращения: 16.05.2022).

Поделиться