Диссертация (1149623), страница 17
Текст из файла (страница 17)
Функциональная архитектура Duplicate FinderРис. 5.2.2. Настройки режима автоматического поиска96Рис. 5.2.3. Настройки интерактивного режимаРис. 5.2.4. Браузер карты повторов и тепловая карта97Рис. 5.2.5. HTML-отчет5.3. Программная архитектураИнструмент Duplicate Finder [60] реализован на языке Python. Этот язык популярен в научном сообществе при решении задач анализа и обработки текста, аналитических задач и задач машинного обучения.
К достоинствам языка можно отнести наличие его реализаций для различных операционных систем и аппаратных платформ, множество готовых программных библиотек, реализующих разнообразные алгоритмы. Также программы на Python хорошо читаются, сам языклёгок в освоении. Два последних свойства важны при вовлечении молодых исследователей в научную работу, а также при обмене результатами с коллегамииз других исследовательских групп. Основными недостатками языка являютсянизкая производительность его интерпретатора и трудности с распараллеливанием программ.
При решении исследовательских задач эти недостатки не являются существенными: при обработке больших данных критические участки кодаможно вынести в библиотеки на компилируемых языках, например, на языке С.98Программная архитектура Duplicate Finder представлена на рис. 5.3.1. Прямоугольник являются программными модулями и в основном соответствуют исходным файлам на Python.
Стрелками показаны вызовы функциональности однихмодулей из других. Цветом выделены программные модули, не являющиеся частями Duplicate Finder.ЯдроГрафическийинтерфейспользователяDRL-редакторDocLineПостроение тепловойкартыВыбор режима инастройкаClone MinerПоиск точных группФильтрацияКомпоновка неточныхповторовКарта повторовРефакторингПоиск по образцуБраузер повторовPandocИмпортЭкспорт HTMLРис. 5.3.1. Программная архитектура Duplicate FinderКратко опишем программные модули инструмента. Модуль Ядро обеспечивает передачу управления и данных между прочимимодулями. Модуль DRL-редактор DocLine может быть использован для запуска Duplicate Finder на текущем DocBook-документе из среды DocLine [11, 21]. Основной режим работы Duplicate Finder не требует интеграции с пакетом DocLine. Модуль Построение тепловой карты генерирует цветовую разметку документа и строит тепловую карту.99 Модуль Поиск точных групп выполняет автоматический поиск точныхгрупп, используя инструмент Clone Miner [35].
Clone Miner поставляется вместе c Duplicate Finder. Модуль Компоновка неточных повторов реализует алгоритм автоматического поиска неточных повторов. Модуль Фильтрация оптимизирует выдачу алгоритма компоновки неточныхповторов. Модуль Рефакторинг реализует автоматизированный рефакторинг документации в формате DocBook. Модуль Поиск по образцу выполняет поиск неточных повторов по выбранному образцу, реализуя алгоритм поиск по образцу. Модуль Импорт выполняет конвертацию документов из различных входныхформатов в «плоский» текст.
Конвертация осуществляется при помощи внешней утилиты Pandoc [113], инсталлируемой отдельно. Модуль Экспорт HTML позволяет экспортировать текущее состояние браузера неточных повторов в автономный HTML-файл для последующего просмотра в Интернет-браузере. Модуль Графический интерфейс пользователя обеспечивает выбор режима работы инструмента, выбор параметров и предоставляет пользовательский интерфейс на протяжении работы инструмента. Он реализован на базебиблиотеки PyQt [120], позволяющей использовать графический интерфейсфреймворка Qt в программах на языке Python.100ЗаключениеПодведем итоги данного диссертационного исследования.1. Предложена формальная модель неточных повторов в программнойдокументации, разработан алгоритм поиска неточных повторов вдокументации ПО на основе компоновки точных повторов, найденных спомощью метода поиска точных клонов ПО.
Доказана корректностьалгоритма.2. Созданаметодикаинтерактивногопоисканеточныхповторов,позволяющая учитывать заданную экспертом семантику повторов. Созданалгоритм поиска по образцу, доказана полнота данного алгоритма.3. Создан метод улучшения документации ПО на основе неточных повторов,включая автоматизированный рефакторинг документации в формате DocBook.Предлагаются следующие рекомендации для использования полученныхрезультатов в промышленности, образовании и научных исследованиях.
Предложенные алгоритмы могут быть реализованы в составе более сложных целевыхсервисов по разработке промышленной документации ПО. Модульная архитектура реализации предложенных алгоритмов допускает замену отдельных элементов (алгоритма вычисления редакционного расстояния и др.), а также эффективное распараллеливание.
Предложенная в работе методика может быть уточнена в соответствии с особенностями процесса разработки документации в конкретной компании и эффективно применена при сопровождении больших пакетов долгоживущей документации, а также для выработки корпоративного стандарта документации. Предложенные средства разработки могут быть примененына практике — как непосредственно, так и в составе более сложных средств разработки и поддержки документации ПО.Выделен ряд перспектив дальнейшей разработки представленной в работетематики: создание алгоритмов автоматического поиска неточных повторов,101учитывающих структуру документа, автоматизированное извлечение из документации иерархии объектов, которые документация описывает (с использованием машинного обучения); классификация повторов в зависимости от типа документации, дальнейшее совершенствование инструментов поиска неточных повторов.102Список литературы1. Ахин, М.Х. Слайсинг над деревьями: метод обнаружения разорванных и переплетенных клонов в исходном коде программного обеспечения /М.Х.
Ахин, В.М. Ицыксон // Моделирование и анализ информационных систем. — 2012. — 19 (6). — С. 69–78.2. Брукс, Ф. Мифический человеко-месяц или как создаются программные системы / Ф. Брукс. — СПб.: Символ-плюс, 1999. — 304 c.3. Граничин, О.Н. Введение в методы стохастической оптимизации и оценивания.
Учеб. пособие / О.Н. Граничин. — СПб.: Издательство С.-Петербургского университета, 2003. — 131 с.4. Граничин, О.Н. Рандомизированные алгоритмы в задачах обработки данныхи принятия решений / О.Н. Граничин // Системное программирование. —2011. — 6 (1). — С. 141–162.5. Дробинцев, П.Д. Индустриальные технологии разработки программногообеспечения. Учебное пособие / П.Д. Дробинцев, О.В. Александрова,А.Н.
Карпов. — СПб.: Изд-во СПбГТУ, 2016. — 76 с.6. Зельцер, Н.Г. Поиск повторяющихся фрагментов исходного кода при автоматическом рефакторинге / Н.Г. Зельцер // Труды института системного программирования РАН. — 2013. — Т. 25. — С. 39–50.7. Иванников, В.П. Использование контрактных спецификаций для представления требований и функционального тестирования моделей аппаратуры /В.П. Иванников, А.С.
Камкин, А.С. Косачев, В.В. Кулямин, А.К. Петренко //Программирование – 2007. – 33 (5). – С. 47–61.8. Кознов, Д.В. Автоматизированный рефакторинг документации семействпрограммных продуктов / Д.В. Кознов, К.Ю. Романовский // Системное программирование. — 2009. — 4 (1). — С. 128–150.9. Кознов, Д.В. Основы визуального моделирования / Д.В. Кознов. — М: Интернет-Университет Информационных Технологий; БИНОМ.
Лабораториязнаний, 2007. — 248 c.10310. Кознов, Д.В. Особенности проектов в области разработки корпоративной архитектуры предприятий / Д.В. Кознов, М.Ю. Арзуманян, Ю.В. Орлов, М.А.Деревянко, К.Ю. Романовский, А.А. Сидорина // Бизнес-информатика. —2015. — 4 (34). — С. 15–23.11. Кознов, Д.В. DocLine: метод разработки документации семейства программныхпродуктов/Д.В. Кознов,К.Ю.
Романовский //Программирование. — 2008. — 34 (4). — С. 1–13.12. Коршунов, А. В. Тематическое моделирование текстов на естественномязыке / А.В. Коршунов, А.Г. Гомзин // Труды института системного программирования РАН. — 2012. — Т. 23.
— С. 215–242.13. Лаврищева, Е.М.Моделированиесемействпрограммныхсистем/Е.М. Лаврищева, А.К. Петренко // Труды института системного программирования РАН. — 2016. — 28 (6). — С. 49–64.14. Левенштейн, В.И. Двоичные коды с исправлением выпадений, вставок и замещений символов / В.И. Левенштейн // Доклады АН СССР. — 1965. —163 (4). — С. 845–848.15. Липаев, В.В.
Документирование сложных программных средств / В.В. Липаев. — М.: СИНТЕГ, 2005. — 216 c.16. Луцив, Д.В. Задача поиска нечётких повторов при организации повторногоиспользования документации / Д.В. Луцив, Д.В. Кознов, Х.А. Басит, А.Н. Терехов // Программирование. — 2016. — 42 (4). — С. 39–49.17. Луцив, Д.В. Метод поиска повторяющихся фрагментов текста в техническойдокументации / Д.В. Луцив, Д.В. Кознов, Х.А. Басит, О.Е.















