Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемВалентин Петрунькин
1 Автоматизированная классификация изменений программного кода Князев Е.Г. Старший разработчик ЗАО «Транзас Технологии»; Аспирант СПбГУ ИТМО для повышения эффективности задач его обзора и анализа
2 Обзор программного кода (Code Review) 2 Повышает качество кода Помогает найти ошибки на ранних стадиях Помогает узнать код Помогает курировать работу новичков
3 Система контроля версий и обзор изменений кода Система контроля версий хранит всю историю разработки Позволяет просматривать только изменившийся код 3 Система контроля версий кода Разработчик Обзор Запрос изменения
4 Трудоемкость просмотра изменений В крупных проектах необходим просмотр большого количества изменений Проект Tortoise SVN Navi- Manager KDE Размер, LOC ~ 200 тысяч~ 250 тысяч ~ 4.7 миллиона Период наблюдения ~1 месяц Число изменений (!) 4
5 Метод решения проблемы Автоматизация классификации изменений 5 Система контроля версий кода Изменение Класс изменения интересен? Автоматизированный классификатор изменений Класс изменения Да Разработчик Просмотр
6 Классы изменений Новая функциональность Рефакторинг Удаление кода Косметическое изменение Исправление ошибки 6
7 Известные методы классификации изменений Метод классификации комментариев к изменениям bug, fixed – исправление ошибки implement, feature – новая функциональность Метод поиска рефактоингов по метрикам изменений Выделение предка класса ( DIT>0 и NOM
8 Обучение метода 8
9 Классификация изменений 9
10 Метрики изменений Рассчитываются как разность метрик ревизий M = M r – M r-1 CC – цикломатическая сложность ( количество независимых путей в графе исполнения ) CS – количество классов / структур eLOC – эффективное число строк кода ( без учета комментариев и пустых строк ) 10
11 Алгоритм нечеткой кластеризации метрик изменений 11
12 Расчет метрик и кластеризация множества изменений Navi-Manager Реви - зия CCICeLOC Ближ. кластерКомментарий к изменению Процесс объединения кораблей в рамках одной транзакции Удалена лишняя команда ( коммит ) Вывод широты, долготы в полном формате при поллинге Обновление MessageSource. UpdateTime после обработки каждого сообщения Откат изменений из r Не нужно обновлять поле после обработки каждого сообщения Первая версия механизма загрузки треков с MonServer. 12
13 Таблица принадлежности изменений нечетким кластерам 13 Ревизия / Кластер ,780,140,000, ,020,790,000, ,210,320,110, ,030,300,000, ,020,790,000, ,10,110,680,11
14 Пример обучения метода КластерЭкспертный класс 1 Рефакторинг 2 Удаление кода 3 Новая функциональность 4 Исправление ошибки 14 Проект : Navi-Manager Размер обучающего множества : 29 изменений Количество кластеров: 4
15 Пример классификации Ревизия Ближ. класс Ближ. кластерКомментарий к изменению Рефакт. 1 Процесс объединения кораблей в рамках одной транзакции Удал. фун. 2 Удалена лишняя команда ( коммит ) Нов. фун. 3 Вывод широты, долготы в полном формате при поллинге Исправ. ошибки 4 Обновление MessageSource. UpdateTime после обработки каждого сообщения Удал. фун. 2 Откат изменений из r Не нужно обновлять поле после обработки каждого сообщения Нов. фун. 3 Первая версия механизма загрузки треков с MonServer. 15
16 Нечеткость классификации Изменение r16833 « Удалена лишняя команда ( коммит )» классифицировано как : на 2% рефакторинг на 79% удаление кода на 0% новая функциональность на 20% исправление ошибки 16
17 Результаты Применение метода в Navi-Manager показало его эффективность От 50% экономии времени на обзоре кода Выявлены проблемы разработки Слишком большое число исправлений ошибок по сравнению с реализацией новой функциональности 17
18 Инструмент автоматизированной классификации изменений Работает с Subversion Слабо зависит от языка программирования Рассчитывает метрики CC, CS, eLOC Выделяет следующие классы изменений новая функциональность удаление функциональности рефакторинг косметическое изменение исправление ошибки * 18
19 Будущие исследования Улучшение метода Кластеризация по Гюстафсону - Кесселю Объектные и другие метрики Расширение внедрения Использование в процессе разработки на постоянной основе Оценивание применимости для различных типов проектов 19
20 Спасибо за внимание ! Вопросы ? 20
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.