На самом деле, существует столько различий в этих процессах, сколько существует многих компаний.Значение: в каждой компании есть свои соглашения, отличающиеся от других, но в большинстве мест есть общие рекомендации, которые обычно используются.
Рекомендации, которые всегда полезны
- Все исходный код проекта и все, что требуется для его сборки, находится под контролем версий (также называемым контролем исходного кода). Любой должен иметь возможность собрать весь проект одним щелчком мыши.
Кроме того, ненужные файлы (объектные файлы или скомпилированные двоичные файлы) должны не быть добавлены в хранилище, так как они могутБыстро восстанавливаются и просто тратят место в хранилище. - Каждый разработчик должен обновить и передать в систему контроля версий несколько раз в день.В основном, когда они закончили задачу, они работают и достаточно протестировали ее, чтобы они знали, что она не содержит тривиальных ошибок.
- Опять же: любой должен иметь возможность построить проект содин клик.Это важно и облегчает тестирование для всех.Большое преимущество, если непрограммисты (например, начальник) тоже могут это сделать.(Это дает им возможность увидеть, над чем конкретно работает команда.)
- Каждый разработчик должен протестировать новую функцию или исправление ошибок, которые они добавляют до они передают их в хранилище.
- Установите сервер, который регулярно (через заданные интервалы) обновляется из хранилища и пытается собрать все во всем проекте .Если происходит сбой, он отправляет сообщения электронной почты группе вместе с последними коммитами в систему управления версиями (поскольку какой коммит не удалось собрать), чтобы помочь отладить проблему.
Эта практика называется непрерывная интеграция и сборки также называются ночные сборки .
(Это не означает, что разработчики не должны собирать и тестировать код на своих собственных машинах. Как упоминалось выше, они должны делатьчто.) - Очевидно, каждый должен быть знаком с базовым дизайном / архитектурой проекта, поэтому, если что-то нужно, разные члены команды не должнызаново изобрести колесо.Написание кода многократного использования - хорошая вещь.
- Необходим некоторый тип связи между членами команды.Каждый должен знать о том, что делают другие, хотя бы немного.Чем больше, тем лучше.Вот почему ежедневная работа в режиме ожидания полезна для команд SCRUM.
- Модульное тестирование - очень полезная практика, позволяющая автоматически проверять основные функции вашего кода.
- A программное обеспечение для отслеживания ошибок (иногда называемое программное обеспечение для отслеживания времени ) является очень хорошим средством для отслеживания ошибок и задач, которые имеют разные члены команды.Это также хорошо для тестирования: альфа / бета-тестеры вашего проекта могут общаться с командой разработчиков таким образом.
Эти простые вещи гарантируют, что проект не выйдет из-под контроля и все будут работатьна той же версии кода.Процесс непрерывной интеграции помогает, когда что-то идет ужасно плохо.
Он также не позволяет людям вносить вещи, не собранные в основной репозиторий.
Если вы хотите включить новую функцию, которая может занять несколько днейреализовать, и это будет мешать другим людям собирать (и тестировать) проект, использовать функцию branch вашего контроля версий.
Если этого недостаточно, вы можете настроить его на выполнениеавтоматическое тестирование, если это возможно для рассматриваемого проекта.
Еще несколько мыслей
Приведенный выше список может быть очень тяжелым на первый взгляд.Я рекомендую вам следовать ему по мере необходимости : начните с контроля версий и системы отслеживания ошибок, а затем настройте сервер непрерывной интеграции, если вам это нужно.(Если это большой проект, он понадобится вам очень скоро.) Начните писать модульные тесты для самых важных частей.Если этого недостаточно, напишите больше о них.
Несколько полезных ссылок:
Непрерывная интеграция , Ежедневные сборки - ваши друзья , Контроль версий , Модульное тестирование
Примеры:
Для управления версиями я обычно использую Git для своих личныхпроекты в наше время. Subversion также популярен, и, например, VisualSVN довольно легко настроить, если вы используете сервер Windows.Для клиента TortoiseSVN лучше всего подходит для многих людей. Вот сравнение между Git и SVN.
Для программного обеспечения отслеживания ошибок Jira и Bugzilla очень популярны.Мы также использовали Mantis на предыдущем рабочем месте.
Для программного обеспечения непрерывной интеграции существует Teamcity для одного (также CruiseControl и его .NET коллега заметны).
Ответ на ваш вопрос «кто решает основной дизайн проекта?»
Конечно, это будет ведущий разработчик.
В компаниях ведущий разработчик - это человек, который разговаривает с финансовыми / маркетологами проекта и определяет архитектуру в соответствии с финансовыми возможностями компании, запланированными характеристиками, требованиями пользователей и временем, которое доступно..
Это сложная задача, и обычно в ней участвует более одного человека.Иногда членов команды также просят принять участие или провести мозговой штурм по поводу разработки всего проекта или отдельных частей.