Внутренняя кухня

Взаимодействие программистов между собой

На абсолютном большинстве проектов работает более одного программиста. Для того, чтобы координировать их работу между собой, используется т.н. «репозиторий» - специальный программный продукт. Он представляет собой центральную базу данных, в которой хранятся все исходные коды разрабатываемого ПО.

Как работает репозиторий

Когда программисту нужно внести изменения в какой-нибудь из файлов, он делает т.н. «checkout» - забирает файл на свой компьютер, работает с ним, и отправляет назад на сервер – делает «checkin».

Принципы работы репозитория

Таким образом, в репозитории всегда хранится самая актуальная версия исходных кодов.

Если заказчику нужна последняя версия программы, то мы просто делаем сборку в репозитории и отправляем результат клиенту. Все это происходит автоматически – программисту достаточно нажать 1 кнопку. В нашей компании используется практика «на сервере всегда должен быть рабочий билд». Это означает, что все изменения, внесенные программистами, автоматически проверяются на работоспособность. Если кто-либо из разработчиков отправил на сервер изменения, из-за которых программа перестала работать, то они тут же получают соответствующее уведомление и восстанавливают работоспособность ПО.

Письмо о сломанном ПО

В качестве репозитория мы используем Microsoft Team Foundation Server. При этом мы достаточно сильно доработали его под свои нужды.

Взаимодействие с заказчиком

При разработке ПО мы уделяем большое внимание взаимодействию с заказчиком.

  • Во-первых, заказчик получает регулярные отчеты о ходе выполнения проекта. Это делает прозрачным процесс разработки: клиент видит, что разработка ведется и что она будет завершена в срок.
  • Во-вторых, мы предоставляем заказчику доступ в нашу внутреннюю учетную систему. В данной системе можно создавать новые задачи, вносить информацию о найденных ошибках. При этом разработчики могут напрямую общаться с клиентом, узнавая необходимые им детали.

Отчеты о ходе выполнения проекта

Каждый день наша система автоматически формирует данные о ходе готовности проекта. За основу берется информация, вносимая программистами.

Итоговые цифры каждую ночь отправляются заказчику на электронную почту:

Письмо с графиком выполнения проекта

Кроме того, заказчик явно видит перечень изменений, внесенных за прошедший день:

Письмо с перечнем измененных программных файлов

Взаимодействие команды разработки с заказчиком

Мы предоставляем клиенту доступ в нашу систему, где он может вносить новые задачи или сообщать о найденных ошибках. Плюс данного подхода в том, что данная информация сразу становится видна программистам. При этом возможен прямой диалог программистов с заказчиком.

Так, например, выглядит список поставленных задач:

Перечень задач в Team Foundation Server

Форма заведения новой задачи:

Форма заведения новой задачи в TFS

Общая информация о задаче:

Общая информация о задаче TFS

Обсуждение задачи с программистами:

Обсуждение задачи с программистами

Как только программисты завершают работу над задачей, заказчик получает уведомление на почту:

Письмо с уведомлением о выполненной задаче для программы

При необходимости заказчик автоматически получает новую версию программы, собранную прямо в репозитории:

Письмо с новой версией программного обеспечения

В ряде случаев мы обновляем ПО на сервере заказчика самостоятельно.

Оценка задач, которые ставятся сверх ТЗ, может происходить двумя путями:

  • Подсчет количества часов по факту выполнения;
  • Предварительная оценка задачи и согласование цены с заказчиком.

В случае предварительной оценки заказчик получает письмо с точной ценой, и либо утверждает задачу, либо откладывает ее:

Письмо с ценой задачи от ТФС

Мы рассказали лишь об основном функционале: в реальности возможностей гораздо больше, но их описание выходит за рамки данной статьи.