Аспирант, ассистент кафедры автоматики и вычислительной техники Вологодского государственного технического университета (ВоГТУ), Проектировщик RS-Bank/Pervasive R-Style Softlab Северо-Запад
При разработке крупных программных продуктов (ПП) на одно из первых мест выходят поддержка приемлемого уровня качества продукта, снижение затрат на внедрение и сопровождение, повышение точности планирования и прогнозирования работ с целью оперативного внесения изменений в соответствие с требованиями заказчика или законодательства (рис. 1).
Дублирование исходного кода – это одна из причин, которые значительно усложняют поддержку и развитие крупных программных продуктов. Программная система, способная использовать различные алгоритмы поиска дубликатов и поддерживать множество языков программирования, позволила бы максимально эффективно устранять дублирование кода.
Цель данной работы – проектирование унифицированной многослойной архитектуры приложения для поиска программных клонов.
В настоящее время существует ряд разнообразных методов поиска дублирующегося исходного кода в программных продуктах. Эти методы используют различные техники для выявления клонов (softwareclones), имеют как преимущества, так и недостатки. Однако, как показано в [1], практически во всех случаях можно выделить ряд общих этапов в процессе обработки кода (рис. 1).
Дублирование исходного кода – это одна из причин, которые значительно усложняют поддержку и развитие крупных программных продуктов. Со временем дублирующийся код появляется практически в любой системе независимо от того, насколько хорошо и качественно она была спроектирована и реализована изначально.
Дубликаты (клоны) – это фрагменты кода, которые полностью идентичны другим фрагментам кода или похожи на них (то есть совпадают за исключением некоторых параметров, например, имён переменных).
Авторская (единоличная) разработка достаточно большого и сложного программного продукта практически неосуществима. Рано или поздно возникает необходимость разделить, распараллелить часть задач между исполнителями, чтобы эффективно и своевременно развивать и поддерживать продукт. Однако увеличение числа исполнителей вносит ряд определённых проблем. Как правило, разработчики слабо взаимодействуют друг с другом при выполнении мелких повседневных задач – необходимые им функции они могут реализовывать независимо от остальной команды.
Множество инженерных задач, таких как: рефакторинг, оценка качества кода, поиск и исправление ошибок, требуют выделения синтаксически или семантически схожих фрагментов исходного кода, обычно называемых клонами (software clones). Клоны – это фрагменты кода, которые точно или приближенно совпадают с другими фрагментами.
В процессе функционирования информационной системы возможна ситуация, когда одна и та же информация в базе данных встречается несколько раз, то есть дублируется. В большинстве случаев дублирование информации недопустимо и приводит к фатальным ошибкам. Наиболее остро проблема поиска дублирующихся записей стоит в системах хранения и обработки персональных данных, где возможно частичное совпадение сведений о клиентах [1].
В процессе функционирования информационной системы возможна ситуация, когда одна и та же информация в базе данных встречается несколько раз, то есть дублируется. Иногда такая избыточность обоснована и реализована искусственно, например, для повышения надёжности. Однако в большинстве случаев дублирование информации недопустимо и приводит к фатальным ошибкам. Также большое количество дубликатов ведёт к нерациональному использованию вычислительных ресурсов.