agile software configuration management

35
AGILE SOFTWARE CONFIGURATION MANAGEMENT ШМАРКАТЮК СЕРГЕЙ, EPAM SYSTEMS

Upload: sergii-shmarkatiuk

Post on 18-May-2015

1.264 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Agile software configuration management

AGILE SOFTWARE CONFIGURATION

MANAGEMENT

ШМАРКАТЮК СЕРГЕЙ, EPAM SYSTEMS

Page 2: Agile software configuration management

2

ПОВЕСТВОВАНИЕ

ОТ ПРОСТОГО К СЛОЖНОМУ

Page 3: Agile software configuration management

3

ЦЕЛЬ

СВЯЗЬ МЕЖДУ:

1. AGILE-МЕТОДОЛОГИЯМИ И ПРАКТИКАМИ КОНФИГУРАЦИОННОГО МЕНЕДЖМЕНТА

2. ИНСТРУМЕНТАМИ, ИСПОЛЬЗУЮЩИХСЯ ПРАКТИКАМИ КОНФИГУРАЦИОННОГО МЕНЕДЖМЕНТА

Page 4: Agile software configuration management

4

КАКИЕ ТАКИЕ ПРАКТИКИ?

Контроль версий

Билд менеджмент Автоматизированные сборкиНепрерывная интеграция

Релиз менеджмент

Управление зависимостями

Page 5: Agile software configuration management

5

ПРЕДСТАВЛЕНИЕ

ДИАГРАММЫ ПОТОКА РАЗРАБОТКИВетки

Релизы

Сборки

Теги

Слияния

Директории

Коммиты

Page 6: Agile software configuration management

7

ПРОСТЕЙШИЙ СЦЕНАРИЙ

После нескольких последовательных коммитов разработчик желает сделать сборку приложения

Зачем?1. Будем считать что сборка будет

результатом реализации функциональных требований (баг/фича)

2. Сборка доступна конечному пользователю: Собирается отдельное десктопное приложение Развертывается веб-приложение Сбор метрик и статистики (интеграционная

сборка)

Page 7: Agile software configuration management

8

ПРОСТЕЙШИЙ СЦЕНАРИЙ

Затем возникает необходимость сделать релиз

Зачем? Релиз – это специальный тип сборки Но имеет специфичные особенности:

1. Полная реализация набора требований2. Качество3. Доступность к использованию

Page 8: Agile software configuration management

9

ПРОСТЕЙШИЙ СЦЕНАРИЙ

ПРОСТЕЙШИЙ СЦЕНАРИЙ - ЭТО……СЛУЧАЙ, КОГДА ОПИСАННЫЕ ШАГИ НЕ

ТРЕБУЮТ СЛИШКОМ МНОГО УСИЛИЙ

Page 9: Agile software configuration management

10

ПРОСТЕЙШИЙ СЦЕНАРИЙ

? ? ?

!релиз

/trunk

1 2 3 ? ? ?1.0 1.1 1.2

Page 10: Agile software configuration management

11

ИНОГДА НЕ ВСЕ ТАК ПРОСТО

Page 11: Agile software configuration management

12

ПРЕДСТАВИМ СЕБЕ …

ЧТО НУЖНО СТАБИЛИЗИРОВАТЬ РЕЛИЗ

и

ОБЕСПЕЧИТЬ ОДНОВРЕМЕННУЮ РАЗРАБОТКУ СЛЕДУЮЩЕЙ ВЕРСИИ

ПРИЛОЖЕНИЯ

Page 12: Agile software configuration management

13

?

ВЕТВЛЕНИЕ ДЛЯ РЕЛИЗА

? ? ?

!релиз

/trunk

1 2 3

? ? ?1.0 1.1 1.2

!слияние

/?

? ? ?2.0 2.1

/1.x

2.32.2

Page 13: Agile software configuration management

14

ВЕТВЛЕНИЕ ДЛЯ РЕЛИЗА

ЗАМЕТИЛИ?

ВОЗНИКАЕТ НЕПОСЛЕДОВАТЕЛЬНОСТЬ В НУМЕРАЦИИ ВЕРСИЙ!

ИМЕЕТ СМЫСЛ РАЗДЕЛИТЬ РАЗРАБОТКУ В TRUNK’E И СТАБИЛИЗАЦИЮ РЕЛИЗА

Page 14: Agile software configuration management

15

ВЕТВЛЕНИЕ ДЛЯ РЕЛИЗА

? ? ?

/trunk

1 2 3

? ? ?1.0 1.1 1.2

/?

? ? ?4 5

/1.x

6

? ?2.0 2.1

? ?7 8

/?/2.x

Page 15: Agile software configuration management

16

ВЕТВЛЕНИЕ ДЛЯ РЕЛИЗА

НО ЭТО ЕЩЕ НЕ ВСЁ…

ВАМ МОЖЕТ ПОНАДОБИТЬСЯ СТАБИЛИЗИРОВАТЬ РЕЛИЗ В ЛЮБОЕ

ВРЕМЯ

и

ПРИ ЭТОМ НЕ ПРЕРЫВАТЬ ПАРАЛЛЕЛЬНОЙ РАЗРАБОТКИ ИЛИ

СТАБИЛИЗАЦИИ РЕЛИЗА

Page 16: Agile software configuration management

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

Page 17: Agile software configuration management

18

ТИПЫ ВЕТОК

Время подумать о типах веток!

?

Page 18: Agile software configuration management

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

Page 19: Agile software configuration management

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

Несовместимые изменения

Слияние невозможно

Page 20: Agile software configuration management

21

ТИПЫ ВЕТОК

Несовместимость означает то, что……слияние изменений не может быть

выполнено в родительскую веткуПример:

Глубокий рефакторинг (изменение иерархии директорий/файлов)

Серьезное архитектурное/структурное изменение

Переписывание приложения или его отдельных частей с нуля

Page 21: Agile software configuration management

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

Page 22: Agile software configuration management

23

ТИПЫ ВЕТОК.ВЕТКИ ПОДДЕРЖКИ И РЕЛИЗА

/trunk

/0.1.x

/0.2.x

/1.x.x

/0.3.x

/1.0.x

Ветка поддержки

Ветка релиза

Page 23: Agile software configuration management

24

ТИПЫ ВЕТОК.ВЕТКИ ПОДДЕРЖКИ И РЕЛИЗА

Не допускает слияния с родительской веткой

Существует всегда

Разрешены ветки-потомки Не разрешены ветки-

потомки для поддержки Не рекомендуются

слияния с ветками- потомками

Допускает слияние с родительской веткой

Существует до тех пор, пока не выпущен стабильный релиз

Ветки-потомки не разрешены

Ветка поддержки Ветка релиза

Page 24: Agile software configuration management

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Экспериментальная ветка

Page 25: Agile software configuration management

26

EXPERIMENTAL VS RELEASE BRANCH

Не допускает веток-потомков

Использует строгое именование. Пример: 1.0.x

Использует собственную область значений для нумерации сборок

Рекомендуемый подход к слияниям: после каждой сборки/релиза

Допускает любое число веток-потомков

Правил к именованию не выдвигается. Пример: new_eng_test

Разделяет область значений для нумерации сборок с родственными ветками

Нет рекомендованного подхода к слияниям

Ветка релиза Экспериментальная ветка

Page 26: Agile software configuration management

27

НАСЛЕДОВАНИЕ БАЗЫИСХОДНОГО КОДА

/trunk

/0.1.x

/1.x.x

/0.2.x

/2.x.x

0.x.x

Последняя разработка

Page 27: Agile software configuration management

28

НАСЛЕДОВАНИЕ БАЗЫИСХОДНОГО КОДА

Последняя разработка должна содержаться в trunk

Page 28: Agile software configuration management

29

НАСЛЕДОВАНИЕ БАЗЫИСХОДНОГО КОДА

/trunk

/1.x.x

/3.x.x

/2.x.x

4.x.x3.x.x2.x.x1.x.x

Page 29: Agile software configuration management

30

ТИПЫ СБОРОК

releases

alpha release

(AR)

beta release

(BR)

release candidate (RC)

stable (ST)

builds

pre-alpha (PA) alpha (A) beta (B)

Page 30: Agile software configuration management

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

Page 31: Agile software configuration management

34

Где же AGILE?!

Page 32: Agile software configuration management

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

Page 33: Agile software configuration management

36

AGILE SCM

Нет запланированной даты релиза (agile релиз менеджмент)

Вызревание релиза (agile тестирование)

Переключение команд на приоритетные направления разработки (agile ресурс менеджмент)

Page 34: Agile software configuration management

37

А главное то, что…… мы теперь знаем как правильно!

Page 35: Agile software configuration management

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