Agile software configuration management

1,494 views

Published on

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,494
On SlideShare
0
From Embeds
0
Number of Embeds
16
Actions
Shares
0
Downloads
52
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Agile software configuration management

  1. 1. Agile software configuration management<br />Шмаркатюк Сергей, EPAM Systems<br />
  2. 2. Повествование<br />2<br />От простого к сложному<br />
  3. 3. Цель<br />3<br />Связь между:<br />Agile-методологиями и практиками конфигурационного менеджмента<br />Инструментами, использующихся практиками конфигурационного менеджмента<br />
  4. 4. Какие такие практики?<br />Контроль версий<br />Билд менеджмент <br />Автоматизированные сборки<br />Непрерывная интеграция<br />Релиз менеджмент<br />Управление зависимостями<br />4<br />
  5. 5. Представление<br />5<br />Диаграммы потока разработки<br />Ветки<br />Релизы<br />Сборки<br />Теги<br />Слияния<br />Директории<br />Коммиты<br />
  6. 6. Simplest scenario<br />6<br />Trunk<br />Development mainline<br />Repository directory<br />commits<br />project assets<br />project state<br />Source code changes<br />
  7. 7. Простейший сценарий<br />7<br />После нескольких последовательных коммитов разработчик желает сделать сборку приложения<br />Зачем?<br />Будем считать что сборка будет результатом реализации функциональных требований (баг/фича)<br />Сборка доступна конечному пользователю: <br />Собирается отдельное десктопное приложение<br />Развертывается веб-приложение<br />Сбор метрик и статистики (интеграционная сборка)<br />
  8. 8. Простейший сценарий <br />8<br />Затем возникает необходимость сделать релиз<br />Зачем?<br />Релиз – это специальный тип сборки<br />Но имеет специфичные особенности:<br />Полная реализация набора требований<br />Качество<br />Доступность к использованию<br />
  9. 9. Простейший сценарий<br />9<br />Простейший сценарий - это…<br />…случай, когда описанные шаги не требуют слишком много усилий<br />
  10. 10. Простейший сценарий<br />10<br />релиз<br />!<br />/trunk<br />?<br />?<br />2<br />3<br />?<br />1<br />?<br />?<br />1.1<br />1.2<br />?<br />1.0<br />
  11. 11. 11<br />Иногда не все так просто<br />
  12. 12. 12<br />Представим себе …<br />что нужно стабилизировать релиз<br />и<br />обеспечить одновременную разработку следующей версии приложения<br />
  13. 13. Ветвление для релиза<br />13<br />релиз<br />слияние<br />!<br />!<br />/trunk<br />?<br />?<br />2<br />3<br />?<br />?<br />1<br />2.3<br />2.1<br />2.2<br />2.0<br />?<br />?<br />?<br />/?<br />/1.x<br />1.1<br />1.2<br />1.0<br />?<br />?<br />?<br />
  14. 14. Ветвление для релиза<br />14<br />Заметили?<br />Возникает непоследовательность в нумерации версий!<br />Имеет смысл разделить разработку в trunk’eи стабилизацию релиза<br />
  15. 15. Ветвление для релиза<br />15<br />/trunk<br />5<br />6<br />8<br />4<br />7<br />?<br />?<br />2<br />3<br />?<br />1<br />?<br />?<br />?<br />?<br />?<br />/?<br />/1.x<br />/?<br />/2.x<br />1.1<br />1.2<br />2.1<br />1.0<br />2.0<br />?<br />?<br />?<br />?<br />?<br />
  16. 16. Ветвление для релиза<br />16<br />Но это еще не всё…<br />Вам может понадобиться стабилизировать релиз в любое время<br />и<br />При этом не прерывать параллельной разработки или стабилизации релиза<br />
  17. 17. Ветвление для релиза<br />17<br />/?<br />/2.x<br />2.1<br />2.0<br />?<br />?<br />/trunk<br />1.3<br />2.2<br />5<br />6<br />?<br />?<br />4<br />?<br />?<br />2<br />3<br />?<br />1<br />?<br />?<br />?<br />0.1<br />0.2<br />0.3<br />0.4<br />0.5<br />0.6<br />/?<br />/1.x<br />1.1<br />1.2<br />1.0<br />?<br />?<br />?<br />
  18. 18. Типы веток<br />18<br />Время подумать о типах веток!<br />?<br />
  19. 19. Типы веток<br />19<br />/2.x<br />Веткарелиза<br />x.x<br />2.1<br />2.0<br />?<br />?<br />/trunk<br />Без типа<br />(просто trunk)<br />1.3<br />2.2<br />x.8<br />x.7<br />5<br />6<br />x.2<br />x.5<br />x.6<br />?<br />?<br />4<br />?<br />?<br />2<br />3<br />x.1<br />?<br />1<br />x.3<br />?<br />?<br />?<br />x.4<br />Веткарелиза<br />/1.x<br />1.1<br />1.2<br />1.0<br />?<br />?<br />?<br />
  20. 20. Типы веток<br />20<br />Несовместимые изменения<br />/2.x<br />Слияние невозможно<br />2.1<br />2.0<br />?<br />?<br />/trunk<br />1.3<br />2.2<br />x.8<br />x.7<br />5<br />6<br />x.2<br />x.5<br />x.6<br />?<br />?<br />4<br />?<br />?<br />2<br />3<br />x.1<br />?<br />1<br />x.3<br />?<br />?<br />?<br />x.4<br />/1.x<br />1.1<br />1.2<br />1.0<br />?<br />?<br />?<br />
  21. 21. Типы веток<br />Несовместимость означает то, что…<br />…слияние изменений не может быть выполнено в родительскую ветку<br />Пример:<br />Глубокий рефакторинг (изменение иерархии директорий/файлов)<br />Серьезное архитектурное/структурное изменение<br />Переписывание приложения или его отдельных частей с нуля<br />21<br />
  22. 22. Типы веток<br />22<br />/2.x<br />Ветка релиза<br />/0.2.x<br />2.1<br />2.0<br />?<br />?<br />0.x.x<br />0.2.1<br />0.2.0<br />/trunk<br />Слияние невозможно<br />1.3<br />x.5<br />x.2<br />?<br />4<br />?<br />?<br />2<br />3<br />x.1<br />?<br />1<br />x.3<br />?<br />x.4<br />0.x.5<br />0.x.2<br />0.x.1<br />0.x.3<br />0.x.4<br />/?<br />/1.x.x<br />Ветка релиза<br />/1.x<br />/0.1.x<br />1.1<br />1.2<br />1.0<br />?<br />?<br />?<br />Ветка поддержки<br />0.1.1<br />0.1.2<br />0.1.0<br />
  23. 23. Типы веток.Ветки поддержки и релиза<br />23<br />/0.2.x<br />/0.3.x<br />/trunk<br />/1.0.x<br />/0.1.x<br />/1.x.x<br />Ветка релиза<br />Ветка поддержки<br />
  24. 24. Типы веток.Ветки поддержки и релиза<br />24<br />Допускает слияние с родительской веткой <br />Существует до тех пор, пока не выпущен стабильный релиз<br />Ветки-потомки не разрешены<br />Не допускает слияния с родительской веткой<br />Существует всегда<br />Разрешены ветки-потомки<br />Не разрешены ветки-потомки для поддержки<br />Не рекомендуются слияния с ветками- потомками<br />Ветка поддержки<br />Ветка релиза<br />
  25. 25. Типы веток.Экспериментальные ветки<br />25<br />/trunk<br />x.2<br />x.0<br />x.4<br />x.6<br />x.8<br />x.11<br />x.7<br />x.9<br />x.3<br />x.1<br />?<br />1<br />x.5<br />x.10<br />Экспериментальная ветка<br />
  26. 26. Experimental vs release branch <br />26<br />Экспериментальная ветка<br />Не допускает веток-потомков<br />Использует строгое именование. Пример: 1.0.x<br />Использует собственную область значений для нумерации сборок<br />Рекомендуемый подход к слияниям: после каждой сборки/релиза<br />Допускает любое число веток-потомков<br />Правил к именованию не выдвигается. Пример: new_eng_test<br />Разделяет область значений для нумерации сборок с родственными ветками<br />Нет рекомендованного подхода к слияниям<br />Ветка релиза<br />
  27. 27. Наследование базыисходного кода<br />27<br />/0.2.x<br />0.x.x<br />/trunk<br />/2.x.x<br />/0.1.x<br />/1.x.x<br />Последняя разработка<br />
  28. 28. Наследование базыисходного кода<br />28<br />Последняя разработка должна содержаться в trunk<br />
  29. 29. Наследование базыисходного кода<br />29<br />/3.x.x<br />4.x.x<br />3.x.x<br />2.x.x<br />1.x.x<br />/trunk<br />/2.x.x<br />/1.x.x<br />
  30. 30. Типы сборок<br />30<br />
  31. 31. SCM в действии<br />31<br />1.x.x<br />2.x.x<br />/trunk<br />PA<br />1.x.3<br />1.x.0<br />2.x.0<br />A<br />1.x.1<br />1.x.4<br />2.x.1<br />builds<br />B<br />1.x.2<br />1.x.5<br />2.x.2<br />/1.x.x<br />AR<br />1.0.0<br />BR<br />1.0.1<br />RC<br />releases<br />1.0.2<br />1.0.3<br />ST<br />1.0.4<br />/1.0.x<br />
  32. 32. Иерархия директорийПроект<br />32<br />
  33. 33. Иерархия директорийТеги<br />33<br />
  34. 34. 34<br />Где же AGILE?!<br />
  35. 35. Scrum и SCM<br />35<br />/trunk<br />demo<br />PA/A<br />AR/BR<br />1.0.1<br />1.x.0<br />1.x.1<br />1.x.2<br />1.0.0<br />1.x.3<br />user stories<br />/1.0.x<br />sprint backlog<br />
  36. 36. Agile SCM<br />36<br />Нет запланированной даты релиза<br />(agile релиз менеджмент)<br />Вызревание релиза<br />(agile тестирование)<br />Переключение команд на приоритетные направления разработки<br />(agile ресурс менеджмент)<br />
  37. 37. 37<br />А главное то, что…<br />… мы теперь знаем как правильно!<br />
  38. 38. Контактная информация<br />38<br />Skype:sergey.shmarkatyuk<br />E-mail: sergey.shmarkatyuk@gmail.com<br />Web: http://altern.kiev.ua <br />Linkedin: http://www.linkedin.com/in/shmarkatyuk<br />Twitter: @altern<br />Slideshare:http://slideshare.net/altern<br />
  39. 39. Полезные ссылки<br />http://www.infoq.com/articles/agile-version-control - agile контроль версий<br />http://svnbook.red-bean.com/ - официальная документация/справочное руководство по subversion<br />http://www.ericsink.com/ - один из лучших блогов, посвященный контролю версий<br />http://www.versioncontrolblog.com/ - еще один блог о контроле версий<br />http://better-scm.berlios.de/comparison/comparison.html - сравнительная таблица систем контроля версий<br />http://www.cmcrossroads.com/ - основной ресурс посвященный конфигурационному менеджменту<br />http://www.infoq.com/news/2009/03/Continuous-Deployment - про непрерывные развертывания<br />39<br />

×