Электронная библиотека диссертаций и авторефератов России
dslib.net
Библиотека диссертаций
Навигация
Каталог диссертаций России
Англоязычные диссертации
Диссертации бесплатно
Предстоящие защиты
Рецензии на автореферат
Отчисления авторам
Мой кабинет
Заказы: забрать, оплатить
Мой личный счет
Мой профиль
Мой авторский профиль
Подписки на рассылки



расширенный поиск

Поиск неточных повторов в документации программного обеспечения Луцив Дмитрий Вадимович

Диссертация - 480 руб., доставка 10 минут, круглосуточно, без выходных и праздников

Автореферат - бесплатно, доставка 10 минут, круглосуточно, без выходных и праздников

Луцив Дмитрий Вадимович. Поиск неточных повторов в документации программного обеспечения: диссертация ... кандидата Физико-математических наук: 05.13.11 / Луцив Дмитрий Вадимович;[Место защиты: ФГБОУ ВО «Санкт-Петербургский государственный университет»], 2018

Введение к работе

Актуальность темы исследования. Документация современного программного обеспечения (ПО) имеет значительные объёмы, сложную структуру и длительный жизненный цикл. При разработке и сопровождении документации в неё вносится большое количество точечных изменений, часто документация разрабатывается коллективом авторов, состав которого со временем меняется. Все это приводит к большому количеству ошибок и рассогласованностей, а также к нарушению единого стиля, то есть к деградации качества документации. В качестве примера можно указать описание ядра ОС Linux (Linux Kernel Documentation): проблемы качества этой документации в последнее время активно обсуждаются в Linux-сообществе. Одним из известных способов поддержки документации является стандартизация и повторное использование. Стандартизация означает создание и использование шаблонов и соглашений. Повторное использование документации подразумевает выделение переиспользуемых свойств программного обеспечения (тестов, требований, функциональности модулей, методов и пр.) и унификацию соответствующих фрагментов документации. Это, в свою очередь, облегчает сопровождение документации, так как изменения вносятся один раз в определение текстового фрагмента и далее автоматически попадают во все соответствующие места текста.

Следует отметить важность неточных повторов — текстовых фрагментов, незначительно отличающихся друг от друга. К их появлению приводит широко используемый при разработке документации приём copy/paste: вначале фрагмент текста копируется, затем каждая копия как-то по-своему изменяется. Учёт неточных повторов может предоставить новые возможности для стандартизации и повторного использования (работа E. Juergens с коллегами, работа M. Oumaziz с коллегами), в том числе для параметрического повторного использования (работы M. Oumaziz с коллегами, К. Романовского и Д. Кознова, M. Horie с коллегами, M. Nosl и J. Porubn).

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

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

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

Степень разработанности темы работы. Существуют работы, предлагающие методы разработки документации с применением повторного использования: M. Oumaziz с коллегами, M. Horie с коллегами, M. Nosl и J. Porubn, К. Романовский и Д. Кознов. Следует также отметить модульный способ организации документации в технологии DITA. Работы в этой сфере концентрируются вокруг форматов и языков разработки документации, разделяющих внутреннее и финальное представления документации – DITA, DocBook, JavaDoc, Tex, ReStructuredText, Markdown и др. Такие форматы активно используются на практике, поскольку позволяют решать задачу единого представления документации (single source) и автоматически порождать по этому представлению различные выходные документы, а также ввиду того, что технологии, основанные на этих форматах, обеспечивают надёжность при вёрстке больших документов. Методы повторного использования являются одним из основных источников требований к исследованиям в области автоматизированного поиска неточных повторов в документации ПО.

Существует значительное количество эмпирических исследований, посвящённых повторам в различной программной документации: E. Juergens с коллегами исследуют повторы в спецификациях требований, M. Oumaziz с коллегами — в API-документации, M. Nosl и J. Porubn — во внутренней документации (internal documentation). A. Wingkvist с коллегами исследовали повторы в документации ПО с точки зрения управления дальнейшей разработкой документации. Однако во всех этих

исследованиях рассматривались лишь точные повторы, хотя и отмечалась необходимость работы с неточными. Требуется также отметить отсутствие формализации понятия «неточный повтор»: общая концепция повторно используемого контента была разработана ещё в конце 90-х P. Basett, но с тех пор были предприняты лишь незначительные дальнейшие шаги — см. работы M. Nosl и J. Porubn, в которых, тем не менее, формальное определение неточных повторов отсутствует. Кроме того, осталась в стороне задача унификации большого класса документации программного обеспечения — так называемой reference-документации (различные справочники, руководства пользователей, API-документация и т.д.). Данный вид документации предложил в 2011 году D. Parnas.

Существующие методы поиска повторов в документации основываются преимущественно на технике поиска клонов в ПО: с этой целью используются готовые клон-детекторы, незначительно модифицированные для работы с документацией. Тем не менее следует отметить, что данный подход не позволяет эффективно искать неточные повторы в документации ПО, поскольку использует поиск по синтаксическому дереву программы. Кроме того, такой подход приводит к большому количеству ложноположительных срабатываний (false positives), а также низкому качеству найденных повторов (одна из основных проблем здесь — игнорирование структуры документа). S. Wagner, и D. Fernndez пишут о преимуществах методов и средств обработки естественных языков (natural language processing) при формальной обработке текстовой информации программных проектов, но не приводят готовых методов для поиска повторов. Также следует отметить, что до сих пор остались не исследованными вопросы семантического анализа повторов в документации ПО.

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

Объектом исследования диссертационной работы являются алгоритмы поиска точных и неточных повторов в документации ПО, подходы к сопровождению и улучшению документации, модели и методы разработки программного обеспечения, языки разметки документации (markup languages), технологии и программные средства для разработки документации.

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

  1. Формализовать понятие неточного повтора в документации ПО и разработать эффективные алгоритмы поиска таких повторов.

  2. Создать метод улучшения документации на основе поиска повторов.

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

Постановка цели и задач исследования соответствует следующим пунктам паспорта специальности 05.13.11: модели, методы и алгоритмы проектирования и анализа программ и программных систем, их эквивалентных преобразований, верификации и тестирования (пункт 1); оценка качества, стандартизация и сопровождение программных систем (пункт 10).

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

В работе использована концепция архетипа и дельт, а также концепция настраиваемых фреймов для повторного использования вариативного контента (P. Bassett). В качестве базового средства поиска повторов был применен метод поиска клонов в ПО, использована структура данных под названием интервальное дерево (interval tree) для быстрого поиска пересекающихся целочисленных интервалов, а также редакционное расстояние между строками для вычисления степени сходства тестовых фрагментов. Применена известная метафора тепловой карты (heat map) для визуализации информации о найденных повторах. В качестве средств программной реализации использовались языки Python и Java.

Положения, выносимые на защиту.

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

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

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

Научная новизна представленных результатов заключается в следующем.

  1. Предложенная формальная модель неточных повторов является новой: в ней делается акцент на синтаксической структуре повторов, уточняется и формализуется концепция повторно используемого контента, предложенная P. Bassett. M. Nosl и J. Porubn дают определение неточного повтора, но оно является неформальным и оставляет в стороне синтаксическую структуру повтора. В работах E. Juergens с коллегами и M. Oumaziz с коллегами лишь говорится о необходимости поиска неточных повторов, но не предлагается соответствующих формальных моделей.

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

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

ограничиваются повторным использованием (M. Nosl и J. Porubn, M. Oumaziz) и верхнеуровневым анализом качества документации (A. Wingkvist).

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

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

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

Результаты исследования были доложены на следующих научных конференциях и семинарах: 10th International Andrei Ershov Memorial Conference on Perspectives of System Informatics (PSI, 26 августа 2015 года, Казань), Spring/Summer Young Researchers’ Colloquium on Software Engineering (SYRCoSE, 31 марта 2017 года, Иннополис), 5th International Conference on Actual Problems of System and Software Engineering (APSSE, 15 ноября 2017 года, Москва), семинар в ИПМ им. М.В. Келдыша РАН (05 декабря 2017 года, Москва), семинар в СПбГТУ (08 декабря 2017 года, Санкт-Петербург).

Дополнительной апробацией результатов является поддержка исследований, представленных в диссертации, грантом РФФИ №16-01-00304 «Управление повторами при разработке и сопровождении документации программного обеспечения».

Публикации по теме диссертации. Все результаты диссертации опубликованы в 8-ми печатных работах, из них 5 зарегистрированы в РИНЦ, 3 статьи изданы в журналах из «Перечня российских рецензируемых научных журналов, в которых должны быть

опубликованы основные научные результаты диссертаций на соискание учёных степеней доктора и кандидата наук», 3 статьи опубликованы в изданиях, входящих в базы цитирования Scopus и Web of Science.

Работы [1-6, 8] написаны в соавторстве. Личный вклад автора в данных публикациях заключается в следующем. В работе [1] автор разработал алгоритма поиска неточных повторов, соавторы реализовали алгоритм и выполнили необходимые эксперименты. В работах [2, 3] автор разработал и реализовал алгоритм поиска неточных повторов на основе поиска клонов, соавторы участвовали в создании идеи алгоритма, разработке процесса и настройки инструмента поиска клонов. В работах [4, 5] автору принадлежит идея доработки алгоритма поиска неточных повторов на основе клонов, реализация этих доработок. Соавторы занимались экспериментами. В работе [6] автор разработал методику применения поиска неточных повторов для улучшения документации, соавторы участвовали в разработке идеи методики, сделали обзор литературы и выполнили эксперименты. В работе [8] автору принадлежат идеи визуальных метафор, предложенные для отображения результатов иерархического сравнения документов, соавторы предложили концепцию создания целевых сервисов на базе поиска повторов для разработки и сопровождения офисной документации.

Объем и структура работы. Диссертация состоит из введения, пяти глав, заключения и приложения. Полный объем диссертации — 122 страницы текста с 16 рисунками и 5 таблицами. Список литературы содержит 153 наименования.