agile software configuration management
TRANSCRIPT
AGILE SOFTWARE CONFIGURATION
MANAGEMENT
ШМАРКАТЮК СЕРГЕЙ, EPAM SYSTEMS
2
ПОВЕСТВОВАНИЕ
ОТ ПРОСТОГО К СЛОЖНОМУ
3
ЦЕЛЬ
СВЯЗЬ МЕЖДУ:
1. AGILE-МЕТОДОЛОГИЯМИ И ПРАКТИКАМИ КОНФИГУРАЦИОННОГО МЕНЕДЖМЕНТА
2. ИНСТРУМЕНТАМИ, ИСПОЛЬЗУЮЩИХСЯ ПРАКТИКАМИ КОНФИГУРАЦИОННОГО МЕНЕДЖМЕНТА
4
КАКИЕ ТАКИЕ ПРАКТИКИ?
Контроль версий
Билд менеджмент Автоматизированные сборкиНепрерывная интеграция
Релиз менеджмент
Управление зависимостями
5
ПРЕДСТАВЛЕНИЕ
ДИАГРАММЫ ПОТОКА РАЗРАБОТКИВетки
Релизы
Сборки
Теги
Слияния
Директории
Коммиты
7
ПРОСТЕЙШИЙ СЦЕНАРИЙ
После нескольких последовательных коммитов разработчик желает сделать сборку приложения
Зачем?1. Будем считать что сборка будет
результатом реализации функциональных требований (баг/фича)
2. Сборка доступна конечному пользователю: Собирается отдельное десктопное приложение Развертывается веб-приложение Сбор метрик и статистики (интеграционная
сборка)
8
ПРОСТЕЙШИЙ СЦЕНАРИЙ
Затем возникает необходимость сделать релиз
Зачем? Релиз – это специальный тип сборки Но имеет специфичные особенности:
1. Полная реализация набора требований2. Качество3. Доступность к использованию
9
ПРОСТЕЙШИЙ СЦЕНАРИЙ
ПРОСТЕЙШИЙ СЦЕНАРИЙ - ЭТО……СЛУЧАЙ, КОГДА ОПИСАННЫЕ ШАГИ НЕ
ТРЕБУЮТ СЛИШКОМ МНОГО УСИЛИЙ
10
ПРОСТЕЙШИЙ СЦЕНАРИЙ
? ? ?
!релиз
/trunk
1 2 3 ? ? ?1.0 1.1 1.2
11
ИНОГДА НЕ ВСЕ ТАК ПРОСТО
12
ПРЕДСТАВИМ СЕБЕ …
ЧТО НУЖНО СТАБИЛИЗИРОВАТЬ РЕЛИЗ
и
ОБЕСПЕЧИТЬ ОДНОВРЕМЕННУЮ РАЗРАБОТКУ СЛЕДУЮЩЕЙ ВЕРСИИ
ПРИЛОЖЕНИЯ
13
?
ВЕТВЛЕНИЕ ДЛЯ РЕЛИЗА
? ? ?
!релиз
/trunk
1 2 3
? ? ?1.0 1.1 1.2
!слияние
/?
? ? ?2.0 2.1
/1.x
2.32.2
14
ВЕТВЛЕНИЕ ДЛЯ РЕЛИЗА
ЗАМЕТИЛИ?
ВОЗНИКАЕТ НЕПОСЛЕДОВАТЕЛЬНОСТЬ В НУМЕРАЦИИ ВЕРСИЙ!
ИМЕЕТ СМЫСЛ РАЗДЕЛИТЬ РАЗРАБОТКУ В TRUNK’E И СТАБИЛИЗАЦИЮ РЕЛИЗА
15
ВЕТВЛЕНИЕ ДЛЯ РЕЛИЗА
? ? ?
/trunk
1 2 3
? ? ?1.0 1.1 1.2
/?
? ? ?4 5
/1.x
6
? ?2.0 2.1
? ?7 8
/?/2.x
16
ВЕТВЛЕНИЕ ДЛЯ РЕЛИЗА
НО ЭТО ЕЩЕ НЕ ВСЁ…
ВАМ МОЖЕТ ПОНАДОБИТЬСЯ СТАБИЛИЗИРОВАТЬ РЕЛИЗ В ЛЮБОЕ
ВРЕМЯ
и
ПРИ ЭТОМ НЕ ПРЕРЫВАТЬ ПАРАЛЛЕЛЬНОЙ РАЗРАБОТКИ ИЛИ
СТАБИЛИЗАЦИИ РЕЛИЗА
17
ВЕТВЛЕНИЕ ДЛЯ РЕЛИЗА
? ? ?
/trunk
1 2 3
? ? ?1.0 1.1 1.2
/?
? ? ?4 5
/1.x
6
? ?2.0 2.1
/?/2.x
? ?1.3 2.2
0.1 0.2 0.3 0.4 0.5 0.6
18
ТИПЫ ВЕТОК
Время подумать о типах веток!
?
19
ТИПЫ ВЕТОК
? ? ?
/trunk
1 2 3
? ? ?1.0 1.1 1.2
? ? ?4 5 6
? ?2.0 2.1
? ?1.3 2.2
/1.x
/2.xВетка релиза
Ветка релиза
Без типа(просто trunk)
x.x
x.1 x.2 x.3 x.4 x.5 x.6 x.7 x.8
20
ТИПЫ ВЕТОК
? ? ?
/trunk
1 2 3
? ? ?1.0 1.1 1.2
? ? ?4 5 6
? ?2.0 2.1
? ?1.3 2.2
/1.x
/2.x
x.1 x.2 x.3 x.4 x.5 x.6 x.7 x.8
Несовместимые изменения
Слияние невозможно
21
ТИПЫ ВЕТОК
Несовместимость означает то, что……слияние изменений не может быть
выполнено в родительскую веткуПример:
Глубокий рефакторинг (изменение иерархии директорий/файлов)
Серьезное архитектурное/структурное изменение
Переписывание приложения или его отдельных частей с нуля
22
ТИПЫ ВЕТОК
? ? ?
/trunk
1 2 3
? ? ?1.0 1.1 1.2
?4
? ?2.0 2.1
?1.3
/1.x
/2.x
x.1 x.2 x.3 x.4 x.5
/?
Слияние невозможно
/1.x.x
0.x.x
Ветка релиза
Ветка релиза
Ветка поддержки
0.x.1 0.x.2 0.x.3 0.x.4 0.x.5
/0.1.x
/0.2.x
0.1.0 0.1.1 0.1.2
0.2.0 0.2.1
23
ТИПЫ ВЕТОК.ВЕТКИ ПОДДЕРЖКИ И РЕЛИЗА
/trunk
/0.1.x
/0.2.x
/1.x.x
/0.3.x
/1.0.x
Ветка поддержки
Ветка релиза
24
ТИПЫ ВЕТОК.ВЕТКИ ПОДДЕРЖКИ И РЕЛИЗА
Не допускает слияния с родительской веткой
Существует всегда
Разрешены ветки-потомки Не разрешены ветки-
потомки для поддержки Не рекомендуются
слияния с ветками- потомками
Допускает слияние с родительской веткой
Существует до тех пор, пока не выпущен стабильный релиз
Ветки-потомки не разрешены
Ветка поддержки Ветка релиза
25
x.5x.3
ТИПЫ ВЕТОК.ЭКСПЕРИМЕНТАЛЬНЫЕ ВЕТКИ
/trunk
?1x.1
x.0 x.2 x.4
x.7 x.9
x.11
x.6 x.8
x.10Экспериментальная ветка
26
EXPERIMENTAL VS RELEASE BRANCH
Не допускает веток-потомков
Использует строгое именование. Пример: 1.0.x
Использует собственную область значений для нумерации сборок
Рекомендуемый подход к слияниям: после каждой сборки/релиза
Допускает любое число веток-потомков
Правил к именованию не выдвигается. Пример: new_eng_test
Разделяет область значений для нумерации сборок с родственными ветками
Нет рекомендованного подхода к слияниям
Ветка релиза Экспериментальная ветка
27
НАСЛЕДОВАНИЕ БАЗЫИСХОДНОГО КОДА
/trunk
/0.1.x
/1.x.x
/0.2.x
/2.x.x
0.x.x
Последняя разработка
28
НАСЛЕДОВАНИЕ БАЗЫИСХОДНОГО КОДА
Последняя разработка должна содержаться в trunk
29
НАСЛЕДОВАНИЕ БАЗЫИСХОДНОГО КОДА
/trunk
/1.x.x
/3.x.x
/2.x.x
4.x.x3.x.x2.x.x1.x.x
30
ТИПЫ СБОРОК
releases
alpha release
(AR)
beta release
(BR)
release candidate (RC)
stable (ST)
builds
pre-alpha (PA) alpha (A) beta (B)
31
SCM В ДЕЙСТВИИ
/1.x.x
/1.0.x
1.x.x 2.x.x
1.x.0
1.x.1
1.x.2
1.x.3
1.x.4
2.x.0
2.x.1
1.x.5 2.x.2
/trunk
PA
A
Bbuilds
AR
BR
RC
ST
releases
1.0.0
1.0.1
1.0.2 1.0.3
1.0.4
34
Где же AGILE?!
35
SCRUM И SCM
1.x.0 1.x.1 1.x.2
/trunk
1.x.3 1.0.0 1.0.1
sprint backlog
user stories
/1.0.x
demoPA/A AR/BR
36
AGILE SCM
Нет запланированной даты релиза (agile релиз менеджмент)
Вызревание релиза (agile тестирование)
Переключение команд на приоритетные направления разработки (agile ресурс менеджмент)
37
А главное то, что…… мы теперь знаем как правильно!
38
КОНТАКТНАЯ ИНФОРМАЦИЯ
Skype: sergey.shmarkatyuk
E-mail: [email protected]
Web: http://altern.kiev.ua
Linkedin: http://www.linkedin.com/in/shmarkatyuk
Twitter: @altern
Slideshare: http://slideshare.net/altern