В сегодняшнем посте я кратко пропишу основные компоненты, из которых должна состоять система управления процессом командной разработки и посмотрю, что из этого есть в системе 1С.
Итак, основные компоненты современной системы командной разработки схематично можно изобразить следующим образом:
Все участники процесса работают в системе, которая обеспечивает следующие функции:
- Система регистрации запросов.
- Хранилище кода, которая должна поддерживать:
- Ветвление кода (операции Merge/Branch),
- Возможность связать каждое изменение в коде с задачей,
- Историю всех изменений,
- Желательно функцию Annotate (возможность посмотреть какие части кода в рамках каких задач менялись).
- Анализ кода:
- Автоматический анализ соответствия кода установленным правилам,
- Возможность внедрения процедуры Code Review,
- Тестирование:
- Автоматизированное тестирование блоков системы (unit tests)
- Автоматизированное нагрузочное тестирование (load tests)
- Build Machine – автоматизированный процесс переноса необходимых изменений на тестовую/рабочую среды.
- Система отчетов, которая объединяет все перечисленные выше элементы для предоставления необходимых отчетов всем участникам процесса. Предпочтительно использование платформы Business Intelligence для данного блока.
Что же мы имеем в 1С, если используем стандартный функционал? Честно говоря, картина достаточно удручающая, так как большинство инструментов физически не реализовано:
Система разработки 1С предназначена только для разработчика, при этом те инструменты, которые существуют, имеют следующие недостатки:
- Нет системы для хранения изменений внешних обработок.
- Вопросы к хранилищу конфигурации:
- Имеет ограничение на число версий, которые можно хранить,
- История изменений работает недопустимо медленно, чтобы быть часто используемым инструментом,
- Функции Annotate нет,
- Функций ветвления нет, что фактически ставит крест не релизной схеме работы и существенно увеличивает риски переноса некорректных или непротестированных изменений в рабочую среду.
- Каждому разработчику требуется своя отдельная база данных, что, в случае, если рабочая база достаточно большая может привести к проблемам с местом на сервере для большой команды.
В дальнейшем я опишу, как мы решили большинство из указанных выше проблем и добавили недостающую функциональность, что позволило нам существенно повысить эффективность командной разработки в 1С.