Автоматизированная классификация изменений программного кода Князев Е.Г. Старший разработчик ЗАО «Транзас Технологии»; Аспирант СПбГУ ИТМО для повышения.

Презентация:



Advertisements
Похожие презентации
Разработка программного средства 3Genetic для генерации автоматов управления системами со сложным поведением Государственный контракт «Технология.
Advertisements

Девятая независимая научно-практическая конференция «Разработка ПО 2013» октября, Москва Евгения Фирсова, Яндекс.Деньги KPI разработчика.
ДИПЛОМНАЯ РАБОТА РАЗРАБОТКА ИНСТРУМЕНТАРИЯ ДЛЯ КОНТРОЛЯ КАЧЕСТВА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ Научный руководитель: ст. преподаватель Веревкин Сергей Анатольевич.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 4 Трансформация логической модели в программный код Лекции читает кандидат технических.
АВТОМАТИЗАЦИЯ РАСЧЕТА ОПЕРАЦИОННЫХ РАЗМЕРОВ «АВ.Р.О.РА»
1 РАЗРАБОТКА ИНФОРМАЦИОННОЙ СИСТЕМЫ ЭЛЕКТРОННОЙ ДОКУМЕНТАЦИИ УЧЕБНОГО ПРОЦЕССА ЗАОЧНОГО ФАКУЛЬТЕТА КУЗГТУ руководитель: исполнители: к.т.н., доцент М.А.
ЗАПРОС КАК ИНСТРУМЕНТ ОБРАБОТКИ ИНФОРМАЦИИ План урока : Повторение пройденного материала Изучение новой темы Практическая работа Подведение итогов Домашнее.
Проблема Множество тривиальных задач в крупных компаниях Простые, но объемные задачи (составление шаблонов отчетов для.
Изучение характеристик сообществ русскоязычной блогосферы А.В. Сычев, И.А.Гадебский
Крупин Илья Викторович, Заместитель генерального директора компании САПФИР НПО «САПФИР» г. Е катеринбург ООО «НПО САПФИР» г. Екатеринбург, ул. Гоголя 36.
Декомпозиция сложных дискретных систем, формализованных в виде вероятностных МП-автоматов. квалификационная работа Выполнил: Шляпенко Д.А., гр. ИУ7-83.
Волгоградский Государственный Технический Университет Курсовой проект Редактор диаграмм нотации IDEF0 IDEF0 Diagram Editor Менеджер проекта и архитектор:
Системное программное обеспечение Лекция 8 Тупики.
Диагностика ошибочного поведения аппаратуры при динамической верификации на основе моделей Докладчик: Проценко Александр.
Волгоградский Государственный Технический Университет Менеджер проекта: Мамонтов Д.П. Архитектор :Сухарев К.А. Тестировщик: Гончарова И.В.
Национальный аэрокосмический университет им. Н.Е. Жуковского «ХАИ» Кафедра «Компьютерные системы и сети» РАЗРАБОТКА И ИССЛЕДОВАНИЯ ИНФОРМАЦИОННО-АНАЛИТИЧЕСКОЙ.
Программа для моделирования IDEF0 диаграмм «Ide-editor» Исполнители: Насонов А.А. Куц Д.В. Заводовский В.Б. Шалыгина М. М.
Орлов Никита. Код был создан Майклом Лаби (Michael Luby) в 1998 г. Свое название он получил от Luby Transform (преобразование Лаби). Однако опубликованы.
Сложные периодические расчеты. Пример Сотрудник предприятия взял очередной отпуск на один из месяцев года Начислили и выплатили ему отпускные перед тем,
Оценивание влияния обратной семантической трассировки программ на их надежность с помощью объектно- ориентированных метрик В.В. Рогальчук, А.В. Тырва,
Транксрипт:

Автоматизированная классификация изменений программного кода Князев Е.Г. Старший разработчик ЗАО «Транзас Технологии»; Аспирант СПбГУ ИТМО для повышения эффективности задач его обзора и анализа

Обзор программного кода (Code Review) 2 Повышает качество кода Помогает найти ошибки на ранних стадиях Помогает узнать код Помогает курировать работу новичков

Система контроля версий и обзор изменений кода Система контроля версий хранит всю историю разработки Позволяет просматривать только изменившийся код 3 Система контроля версий кода Разработчик Обзор Запрос изменения

Трудоемкость просмотра изменений В крупных проектах необходим просмотр большого количества изменений Проект Tortoise SVN Navi- Manager KDE Размер, LOC ~ 200 тысяч~ 250 тысяч ~ 4.7 миллиона Период наблюдения ~1 месяц Число изменений (!) 4

Метод решения проблемы Автоматизация классификации изменений 5 Система контроля версий кода Изменение Класс изменения интересен? Автоматизированный классификатор изменений Класс изменения Да Разработчик Просмотр

Классы изменений Новая функциональность Рефакторинг Удаление кода Косметическое изменение Исправление ошибки 6

Известные методы классификации изменений Метод классификации комментариев к изменениям bug, fixed – исправление ошибки implement, feature – новая функциональность Метод поиска рефактоингов по метрикам изменений Выделение предка класса ( DIT>0 и NOM

Обучение метода 8

Классификация изменений 9

Метрики изменений Рассчитываются как разность метрик ревизий M = M r – M r-1 CC – цикломатическая сложность ( количество независимых путей в графе исполнения ) CS – количество классов / структур eLOC – эффективное число строк кода ( без учета комментариев и пустых строк ) 10

Алгоритм нечеткой кластеризации метрик изменений 11

Расчет метрик и кластеризация множества изменений Navi-Manager Реви - зия CCICeLOC Ближ. кластерКомментарий к изменению Процесс объединения кораблей в рамках одной транзакции Удалена лишняя команда ( коммит ) Вывод широты, долготы в полном формате при поллинге Обновление MessageSource. UpdateTime после обработки каждого сообщения Откат изменений из r Не нужно обновлять поле после обработки каждого сообщения Первая версия механизма загрузки треков с MonServer. 12

Таблица принадлежности изменений нечетким кластерам 13 Ревизия / Кластер ,780,140,000, ,020,790,000, ,210,320,110, ,030,300,000, ,020,790,000, ,10,110,680,11

Пример обучения метода КластерЭкспертный класс 1 Рефакторинг 2 Удаление кода 3 Новая функциональность 4 Исправление ошибки 14 Проект : Navi-Manager Размер обучающего множества : 29 изменений Количество кластеров: 4

Пример классификации Ревизия Ближ. класс Ближ. кластерКомментарий к изменению Рефакт. 1 Процесс объединения кораблей в рамках одной транзакции Удал. фун. 2 Удалена лишняя команда ( коммит ) Нов. фун. 3 Вывод широты, долготы в полном формате при поллинге Исправ. ошибки 4 Обновление MessageSource. UpdateTime после обработки каждого сообщения Удал. фун. 2 Откат изменений из r Не нужно обновлять поле после обработки каждого сообщения Нов. фун. 3 Первая версия механизма загрузки треков с MonServer. 15

Нечеткость классификации Изменение r16833 « Удалена лишняя команда ( коммит )» классифицировано как : на 2% рефакторинг на 79% удаление кода на 0% новая функциональность на 20% исправление ошибки 16

Результаты Применение метода в Navi-Manager показало его эффективность От 50% экономии времени на обзоре кода Выявлены проблемы разработки Слишком большое число исправлений ошибок по сравнению с реализацией новой функциональности 17

Инструмент автоматизированной классификации изменений Работает с Subversion Слабо зависит от языка программирования Рассчитывает метрики CC, CS, eLOC Выделяет следующие классы изменений новая функциональность удаление функциональности рефакторинг косметическое изменение исправление ошибки * 18

Будущие исследования Улучшение метода Кластеризация по Гюстафсону - Кесселю Объектные и другие метрики Расширение внедрения Использование в процессе разработки на постоянной основе Оценивание применимости для различных типов проектов 19

Спасибо за внимание ! Вопросы ? 20