Скоро я буду вести новый проект. И я размышлял о том, какова базовая инфраструктура для программного проекта. Вот то, что, я думаю, должно быть в каждом проекте:
-Соглашения о стилях кодирования
-Соглашения об именах
-Стандартная структура каталогов проекта (например, стандартный макет каталога maven и т. д.)
-Управление проектами и отслеживание проблем (например, trac, redmine и т. д.)
-Сервер непрерывной интеграции (например, Hudson, круиз-контроль и т. д.)
Не уверен, что я что-то пропустил. Кто-нибудь хотел бы добавить?





В дополнение к вашему поставлю:
В качестве предварительного ответа ознакомьтесь с тестом Джоэла: http://www.joelonsoftware.com/articles/fog0000000043.html
Просто закуска:
- Do you use source control?
- Can you make a build in one step?
- Do you make daily builds?
- Do you have a bug database?
- Do you fix bugs before writing new code?
- Do you have an up-to-date schedule?
- Do you have a spec?
- Do programmers have quiet working conditions?
- Do you use the best tools money can buy?
- Do you have testers?
- Do new candidates write code during their interview?
- Do you do hallway usability testing?
Управление знаниями имеет решающее значение. Поскольку вы уже планируете использовать вики (например, Trac или Redmine), вы также можете использовать его для KM.
Функциональное тестирование - обязательная часть любого проекта. Модульное тестирование - это прекрасно, и оно хорошо работает для Agile-проектов, но функциональное тестирование по-прежнему необходимо. Вам нужен хотя бы базовый план тестирования. Если вы планируете иметь несколько проектов или подпроектов, вам подойдет документ о стратегии тестирования или страница Wiki. Сценарии тестирования, примеры приемочного тестирования и т. д. Могут быть обусловлены вашими пользовательскими историями или их эквивалентами, но они все равно должны существовать в той или иной форме.
Я бы также добавил к этому файлообменный сервер. Я думал, что контроль версий настолько прост, что даже не стал помещать его в список. Но это хороший контроль версий.
План управления конфигурацией. У вас должен быть документированный подход к вашим рабочим потокам разработки, к тому, как вы будете объединяться между ними и т. д.