Диссертация (1145120), страница 39
Текст из файла (страница 39)
Исключаются группы клонов, состоящие только из XML и не содержащие текста: не ставилось задачи организовывать повторное использование XML-разметки.4. Исключаются группы клонов, являющиеся общеупотребимыми словосочетаниями «that is», «there is a» и т.д.; эти фразы не являются содержательными. Для исключения таких групп клонов был создан словарь,каждая группа проверяется на принадлежность этому словарю.Поиск по оставшемуся тексту. После выполнения поиска клонов и фильтрации результатов мы имеем набор клонов A1.
После этого мы удаляем из237документа все клоны, входящие в A1, вновь запускаем CloneMiner и получаем набор клонов A2. К A2 мы снова применяем шаги 1–4, и получаем наборA3. Далее, мы объединяем наборы A1 и A3, считая это конечным результатом. Такой повторный поиск может давать существенные результаты, в частности, из-за исключения пересекающихся групп. Эксперименты (см. ниже)показали, что многократный поиск по остаткам не даёт значимого улучшениярезультатов.Рефакторинг. Для каждой найденной группы клонов пользователь можетвыполнить операции рефакторинга — выделение информационного элементаили выделение для включения в словарь. После выполнения операции даннаягруппа клонов исключается из набора, координаты оставшихся клонов пересчитываются с учётом произведённых рефакторингом изменений в документе.
Перед выполнением операций рефакторинга представленный алгоритмпреобразует выбранные клоны в корректные XML-фрагменты, восстанавливая балансировку открывающих и закрывающих тегов в клоне и в окружающем тексте, из которого извлекается клон. Однако при этом возможны случаи, когда такая балансировка меняет внешний вид документа — например,вставка дополнительного закрывающего/открывающего тега, обозначающегопараграф, даёт в конечном тексте лишний параграф (два параграфа вместоодного).Программный инструмент. Представленный процесс поиска клонов реализован в виде программных средств, интегрированных с DocLine и Eclipse.Созданный инструмент позволяет обнаруживать клоны в документах, редактируемых при помощи DocLine — поиск клонов включён как одна из операций рефакторинга в редакторе DRL.
Инструмент также позволяет осуществлять навигацию по группам клонов и перемещение по исходному тексту, длятого чтобы можно было наблюдать, в каких контекстах встречается клон.Наконец, есть возможность извлекать все клоны выбранной группы как подлежащие повторному использованию элементы.238На рис.
4.31 показан процесс навигации по найденным в документе группам клонов и клонам и контекстное меню, предлагающий выделить группу винформационный элемент или поместить её в словарь.Рис. 4.31. Навигация по клонамКроме инструмента редактирования и навигации был реализован рядвспомогательных инструментов, позволяющих собирать статистику по количеству и характеру найденных клонов и выдавать отчёты в табличном виде.Эти инструменты генерируют отчёты в формате HTML, которые легко можно импортировать в различные пакеты для последующей обработки средствами электронных таблиц. Вспомогательные инструменты реализованы наязыке Python и интегрированы в среду DocLine. Пример отчёта показан нарис.
4.32.239Рис. 4.32. Пример отчёта по группам клоновДля апробации предложенного подхода было проведено три серии экспериментов. Первая серия заключалась в запуске инструмента на небольших,искусственно документах, специально созданных для этой цели: в этих документах было точно известно количество клонов. Инструмент обнаружил всеклоны.Вторая серия экспериментов была посвящена эффективности поиска клонов по оставшемуся тексту.
Для этого мы использовали фрагменты открытойDocBook-документации для 15 Java-проектов с открытым исходным кодом(15 документов в среднем по 1300 строк). Поиск по оставшемуся тексту увеличил количество групп клонов на 5–10%, однако на 1,5% уменьшил длинуклонов. По итогам тестирования мы заключили, что данный приём позволяет, в основном, находить короткие (по 2–5 токенов) клоны и может быть полезен для поиска в документации повторяющихся терминов. Дальнейшее повторение этого шага не дало значимых результатов, так как маленькие группы клонов редко пересекаются, а поиск по оставшемуся тексту восстанавли-240вает, в основном, те клоны, которые были отброшены при фильтрации пересечений.Третья серия экспериментов была проведена для документации ядраLinux [337] (Linux Kernel Documentation, далее — LKD).
Документация LKDсостоит из 29 документов общим объёмом 870 Кб (25000 строк), документация написана в формате DocBook. Статистика приведена в таб. 4.3.Табл. 4.3. Количество найденных клоновМин. длина клонаКол. найденных групп клонов1356423543323275429623171508108Эксперименты показали, что фильтрация существенно снижает общее количество клонов, отбрасывая, в основном, малосодержательные клоны длиной 1 и 2 токена. В целом, с увеличением минимальной длины клона количество групп клонов значительно падает, как показано на рис. 4.33.18000160001400012000Групп найдено100008000Групп послефильтрации600040002000013579 11 13 15 17 19Рис. 4.33. Количество найденных в LKD групп клонов в зависимости от минимальной длины клонаПри анализе результатов были выделены следующие смысловые группыклонов. Термины (аббревиатуры, отдельные слова, словосочетания), которыеможно включить в глоссарий.
58 найденных в LKD групп клонов были241классифицированы как термины, при этом 30 состояли из одного токена, 28 — из двух, в среднем количество клонов в этих группах составило 11 вхождений. Гиперссылки (ссылки на веб-ресурсы). На практике оказывается полезным уметь находить в документации все гиперссылки и собирать их вединый список. Было найдено 8 групп клонов, состоящих из гиперссылок. Лицензионные соглашения.
Каждый документ LKD содержит лицензионное соглашение, основанное на фрагменте GPL [252]. Было обнаружено 6 групп таких клонов, содержавших по 2 клона в группе. Описание функциональности. Было получено 49 групп таких клонов,состоящих в среднем из 3,27 клонов. Примеры исходного кода. LKD содержит множество фрагментов исходного кода в качестве примеров. Наш инструмент нашёл 330 групптаких клонов, в среднем по 2,69 клонов в группе.Результаты экспериментов по смысловым группам клонов суммируются втабл. 4.4.Табл. 4.4. Результаты экспериментов по поиску повторов вдокументации ядра операционной системы LinuxКол-во группСр. кол. токенов в клонеСр.
кол. клонов в группеТерминыГиперссылкиЛицен.согл.581,48113211,2564,362Функциональность493,293,27Примерыкода3305,22,69Всего4514,433,56Не все найденные клоны удалось распределить по этим смысловым группам. Так, например, фрагмент «This document describes…» в LKD встречаетсячасто, но он не несёт самостоятельного смысла. Для таких случаев повторное использование, на взгляд автора диссертационной работы, может лишьусложнить XML-представление документа.
Эксперименты были ориентиро242ваны на семантическое повторное использование, что может позволить интегрировать предложенный подход с различными средствами управления вариативностью, а также с различными вариативными артефактами разработки — требованиями и свойствами (features), программным кодом и пр.2434.4 Модель КИТ-решения50Внедрение в компанию процесса управления ИТ-архитектурой, как правило, сопровождается созданием решения на базе EAM-инструмента и происходит, в большинстве случаев, в рамках специальных ИТ-проектов: даннаядеятельность выходит за рамки обычной деятельности компании и являетсядовольно сложной. Более того, хорошей практикой является регулярное проведение таких проектов. Данные проекты, как правило, поручаются сторонним компаниям, имеющим соответствующий опыт, однако сама компаниядолжна деятельно участвовать в таких проектах.Корпоративная ИТ-архитектура позволяет согласованно развивать ИТтехнологии, используемые компанией, осуществлять связь бизнес-задач иразработку/использование отдельных систем.
При этом задачи, возникающиепри анализе и разработке требований, проектировании, разработке и сопровождении информационных систем, переносятся на новый уровень, сочетаясь с задачами управления на корпоративном уровне. Ряд методологий разработки ПО отражают эту деятельность. Например, в спиральной модели (автор — B. Boehm) [181] первый шаг (первый квадрант спирали) включает всебя оценку альтернатив созданию новой системы. Эти альтернативы могутбыть следующими — покупка и внедрение готовой системы, использованиетехнологий типа ERP, разработка системы внутри компании или силами сторонней компании и т.д. Значительное внимание этому вопросу уделяет также CMMI [201]. Таким образом разработка ИТ-архитектуры лежит на стыкепрограммной инженерии и бизнес-инжиниринга.
В данной работе эта деятельность рассматривается со стороны программной инженерии: корпоративная ИТ-архитектура адресуется задачам создания/внедренияв бизнес-компании программного обеспечения; средства разработки/использования ИТ-архитектуры являются специфическими ИТ-решениями;50Материалы этого раздела следуют работе автора [64].244 проекты по созданию таких решений рассматриваются как ИТпроекты.Отметим, что созданное в ходе такого проекта описание ИТ-архитектурыкомпании не является самоцелью, неизменным артефактом.