Pull to refresh

Книги // Шаблоны управления конфигурацией ПО

Reading time3 min
Views2.9K
Добрейшего.

В последнее время занялся чтением и рецензированием книг по любимой тематике — SCM, куда в первую очередь входят контроль версий, отслеживание изменений, отстройка и выпуск релизов и несколько других не менее важных тем. На этот раз под раздачу попала ещё одна книжка из числа тех, что выбрал себе для детального ознакомления. Называется Software Configuration Management Patterns: Effective Teamwork, Practical Integration, авторы — Стёпа Берчук (Stephen P. Berczuk) и Брэд Эпплтон (Brad Appleton). На русский можно перевести как «Шаблоны управления конфигурацией ПО: Эффективная работа команды, практическая интеграция.»
Обложка Software Configuration Management Patterns


Как и в любой другой области знаний, в SCM есть свои устоявшиеся практики, методики и просто удачные способы сделать работу эффективной. Соответственно, кто-то должен был уже упорядочить всё это в одном источнике. Авторы же имеют большой опыт не только разработки ПО, но и управления конфигурациями, так что именно они и взялись за задачу.

Тема шаблонов в разработке софта прорабатывается уже достаточно давно. Причем, как выяснилось, начало своё она берет из архитектуры. Сергей Тепляков не так давно рассказал на страницах RSDN Magazine об истоках этого направления, почитайте (после этой заметки, конечно же).


Вся книга поделена на вводную часть, 2 основных раздела и пару приложений.

Введение и весь 1-й раздел вкратце напоминают читателю о том, что такое Software Configuration Management, а также что такое шаблоны. Что примечательно — здесь не просто ведется повествование от первого лица, а приводятся цитаты из множества других работ. Авторы, достаточно часто публикуются в журналах и участвуют конференциях. Поэтому нет недостатка как в ссылках на себя самих, так и на других авторитетов отрасли. В общем, нормальный научных подход, сразу видно, что не просто взято из головы, но ещё и как минимум обдумало другими людьми.

Основа книги — это, конечно же, описание самих шаблонов. Каждый шаблон дается в одинаковом виде — описывается проблемная ситуация и задаются вопросы о дальнейших действиях, затем дается развернутый ответ. После чего отмечаются задачи, которые связаны с описанным шаблоном, но ещё не решены (Unresolved issues), а также даются ссылки на литературу, где можно прочитать про описанные техники более подробно (Further reading). В общем, правильный инженерный подход.

Всего описано 16 шаблонов, которые авторы условно делят на 2 множества.
Во-первых это Codeline-related patterns, т.е. те шаблоны, которые показывают, как работать с кодом. Сюда относятся:
  • Mainline — использование главной ветки для выдачи стабильных релизов и ханения только стабильноо кода;
  • Active development line — разработка «на транке» с минимальным ветвлением и активной работой;
  • Private versions — ветвление для нужд разработчика, ветки используются для отладки ипромежуточных результатов;
  • Release line — ветвление с целью формирование новых релизов (1 новый релиз = 1 ветка);
  • Release-prep code line — то же, что release line, только ветвление происходит непосредственно перед выпуском для стабилизации работы;
  • Task branch — ветка-на-задачу;
  • Codeline policy — внедрение и поддержание политик, тесно связанных с коммитом кода и его (автоматической) проверкой;

Второе множество — это Workspace-related patterns, куда идут:
  • Private workspace — о необходимости выделять разработчику рабочего пространства с теми версиями кода и настройками среды, которые нужны для работы;
  • Repository — хранилище, в котором хранятся не только версии кода, но и инструменты, необходимые для работы и создания релизов;
  • Private system build — о необходимости дать возможность разработчику отстраивать систему без пересечения с остальными участниками проекта;
  • Integration build — интеграционные билды для объединения работы участников;
  • Third-party codeline — о том, как организовать версионность сторонних зависимостей;
  • Task-level commit — вариация на тему task branch;
  • Smoke test — об автоматизированном тестировании при каждом коммите на главную или активную ветку;
  • Unit test — одноименной технике;
  • Regression test — о необходимости проводить регрессионное тестирование перед сдачей дельты на интеграцию

В целом — базовые практики, о которым многие уже слышали или пробовали.

В оставшихся приложениях даются краткие описания полезных ресурсов по вопросам SCM и основных инструментальных средств (впрочем, тут сведения несколько устарели).

Общий итог — хочется больше шаблонов, однако уже в данном виде это — хороший справочник по правильным техникам, надо брать.
Tags:
Hubs:
+19
Comments9

Articles