1 / 49

Agile software configuration management

Agile software configuration management. Шмаркатюк Сергей , 04-11- 2010. Общие аспекты. Цель. Связь между : Agile- методологиями и практиками конфигурационного менеджмента Инструментами, использующихся практиками конфигурационного менеджмента. Какие такие практики?. Контроль версий

chipo
Download Presentation

Agile software configuration management

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Agile software configuration management ШмаркатюкСергей, 04-11-2010

  2. Общие аспекты

  3. Цель Связь между: • Agile-методологиями и практиками конфигурационного менеджмента • Инструментами, использующихся практиками конфигурационного менеджмента

  4. Какие такие практики? • Контроль версий • Билд менеджмент • Автоматизированные сборки • Непрерывная интеграция • Релиз менеджмент • Управление зависимостями

  5. Повествование От простого к сложному…

  6. Повествование …с одновременным устранением возникающих противоречий

  7. Представление Диаграммы потока разработки

  8. Представление Диаграммы потока разработки

  9. Представление Диаграммы потока разработки

  10. Представление Диаграммы потока разработки

  11. Представление Диаграммы потока разработки Ветки Релизы Сборки Теги Слияния Директории Коммиты

  12. Похожие идеи 1. Контроль версий для нескольких agile-команд: http://www.infoq.com/articles/agile-version-control 2. Паттерны конфигрурационного менеджмента: http://www.cmcrossroads.com/bradapp/acme/branching/

  13. Простейший сценарий «Релиз за два дня»

  14. Простейший сценарий • После нескольких последовательных коммитов разработчик желает сделать сборку приложения • Зачем? • Будем считать что сборка будет результатом реализации функциональных требований (баг/фича) • Сборка доступна конечному пользователю: • Собирается отдельное десктопное приложение • Развертывается веб-приложение • Сбор метрик и статистики (интеграционная сборка)

  15. Простейший сценарий • Затем возникает необходимость сделать релиз • Зачем? • Релиз – это специальный тип сборки • Но имеет специфичные особенности: • Полная реализация набора требований • Качество • Доступность к использованию

  16. Простейший сценарий Простейший сценарий - это… …случай, когда описанные шаги не требуют слишком много усилий «Релиз за два дня»

  17. Простейший сценарий релиз ! /trunk ? ? 2 3 ? 1 ? ? 1.1 1.2 ? 1.0

  18. Пример чуть посложнее Расширяем scope

  19. Представим себе … • что нужно стабилизировать релиз • и • обеспечить одновременную разработку следующей версии приложения

  20. Ветвление для релиза релиз слияние ! ! /trunk ? ? 2 3 ? ? 1 2.3 2.1 2.2 2.0 ? ? ? /? /1.x 1.1 1.2 1.0 ? ? ?

  21. Ветвление для релиза Заметили? Возникает непоследовательность в нумерации версий! Имеет смысл разделить разработку в trunk’eи стабилизацию релиза

  22. Ветвление для релиза /trunk 5 6 8 4 7 ? ? 2 3 ? 1 ? ? ? ? ? /? /1.x /? /2.x 1.1 1.2 2.1 1.0 2.0 ? ? ? ? ?

  23. Пример еще сложнее Параллельное ветвление

  24. Ветвление для релиза • Вам может понадобиться стабилизировать релиз в любое время • и • При этом не прерывать параллельной разработки или стабилизации релиза

  25. Ветвление для релиза /2.x /? 2.1 2.0 ? ? /trunk 1.3 2.2 5 6 ? ? 4 ? ? 2 3 ? 1 ? ? ? 0.1 0.2 0.3 0.4 0.5 0.6 /? /1.x 1.1 1.2 1.0 ? ? ?

  26. Типы веток Время подумать о типах веток! ?

  27. Типы веток /2.x Веткарелиза x.x 2.1 2.0 ? ? /trunk Без типа (просто trunk) 1.3 2.2 x.8 x.7 5 6 x.2 x.5 x.6 ? ? 4 ? ? 2 3 x.1 ? 1 x.3 ? ? ? x.4 Веткарелиза /1.x 1.1 1.2 1.0 ? ? ?

  28. Пример того, когда ветки начинают расти сами по себе

  29. Типы веток Несовместимые изменения /2.x Слияние невозможно 2.1 2.0 ? ? /trunk 1.3 2.2 x.8 x.7 5 6 x.2 x.5 x.6 ? ? 4 ? ? 2 3 x.1 ? 1 x.3 ? ? ? x.4 /1.x 1.1 1.2 1.0 ? ? ?

  30. Типы веток • Несовместимость означает то, что… • …слияние изменений не может быть выполнено в родительскую ветку • Пример: • Глубокий рефакторинг (изменение иерархии директорий/файлов) • Серьезное архитектурное/структурное изменение • Переписывание приложения или его отдельных частей с нуля

  31. Типы веток /2.x Ветка релиза /0.2.x 2.1 2.0 ? ? 0.x.x 0.2.1 0.2.0 /trunk Слияние невозможно 1.3 x.5 x.2 ? 4 ? ? 2 3 x.1 ? 1 x.3 ? x.4 0.x.5 0.x.2 0.x.1 0.x.3 0.x.4 Ветка релиза /1.x.x /? /1.x /0.1.x 1.1 1.2 1.0 ? ? ? Ветка поддержки 0.1.1 0.1.2 0.1.0

  32. Типы веток.Ветки поддержки и релиза /0.2.x /0.3.x /trunk /1.0.x /0.1.x /1.x.x Ветка релиза Ветка поддержки

  33. Типы веток.Ветки поддержки и релиза Ветка поддержки Ветка релиза • Не допускает слияния с родительской веткой • Существует всегда • Разрешены ветки-потомки • Не разрешены ветки-потомки для поддержки • Не рекомендуются слияния с ветками- потомками • Допускает слияние с родительской веткой • Существует до тех пор, пока не выпущен стабильный релиз • Ветки-потомки не разрешены

  34. Типы веток.Экспериментальные ветки /trunk x.2 x.0 x.4 x.6 x.8 x.11 x.7 x.9 x.3 x.1 ? 1 x.5 x.10 Экспериментальная ветка

  35. Experimental vs release branch Ветка релиза Экспериментальная ветка • Не допускает веток-потомков • Использует строгое именование. Пример: 1.0.x • Использует собственную область значений для нумерации сборок • Рекомендуемый подход к слияниям: после каждой сборки/релиза • Допускает любое число веток-потомков • Правил к именованию не выдвигается. Пример: new_eng_test • Разделяет область значений для нумерации сборок с родственными ветками • Нет рекомендованного подхода к слияниям

  36. Наследование базыисходного кода /0.2.x 0.x.x /trunk /2.x.x /0.1.x /1.x.x Последняя разработка

  37. Наследование базыисходного кода Последняя разработка должна содержаться в trunk

  38. Наследование базыисходного кода /3.x.x 1.x.x 2.x.x 3.x.x 4.x.x /trunk /2.x.x /1.x.x

  39. Типы сборок

  40. SCM в действии 1.x.x 2.x.x /trunk PA 1.x.3 1.x.0 2.x.0 A 1.x.1 1.x.4 2.x.1 builds B 1.x.2 1.x.5 2.x.2 /1.x.x AR 1.0.0 BR 1.0.1 RC releases 1.0.2 1.0.3 ST 1.0.4 /1.0.x

  41. Scrum и SCM /trunk demo PA/A AR/BR 1.0.1 1.x.0 1.x.1 1.x.2 1.0.0 1.x.3 user stories /1.0.x sprint backlog

  42. Иерархия директорий репозитория

  43. Иерархия директорийПроект

  44. Иерархия директорийТеги

  45. Иерархия директорийВетки поддержки

  46. 1.x.x 2.x.x 1.x.0 1.x.3 2.x.0 1.x.1 1.x.4 2.x.1 1.x.2 1.x.5 2.x.2 /branches/maintenance/versions/1.x.x 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 /branches/releases/1.0.x Номера ревизий 1 12 39 52 73 79 93 112 126 139 140 155 170 193 201 215 230

  47. Заключительное слово

  48. Спасибо за внимание!

More Related