Я бы добавил:
API - это контракт для программистов, определение пользовательского интерфейса - это контракт с клиентами, протокол - это контракт для взаимодействия клиент-сервер. Получите их в первую очередь, тогда вы сможете воспользоваться параллельными путями разработки и не потеряться в сорняках. Да, периодически проверяйте, чтобы убедиться, что требования выполнены, но никогда не начинайте новый трек без контракта. И «контракт» - это сильное слово: после развертывания оно никогда не должно меняться. Вы должны включить управление версиями и самоанализ с самого начала, изменения в контракте реализуются только наборами расширений, номера версий меняются вместе с ними, а затем вы можете делать такие вещи, как постепенное снижение производительности при работе со смешанными или старыми установками.
Я усвоил этот урок нелегким путем, с большим проектом, который ушел в бесконечную землю, а затем применил его правильным способом позже, когда серьезно под огнем, выживание компании, короткий промежуток времени. Мы определили протокол, определили и написали набор протоколов эмуляции для каждой стороны транзакций (в основном, генераторы консервированных сообщений и средство проверки получаемых сообщений, одночасовое кодирование с двумя мозгами), затем разделили для отдельной записи концов сервера и клиента. приложения. Мы рекомбинировали ночь шоу, и это просто сработало. Требования, дизайн, контракт, тестирование, код, интеграция. В этой последовательности. Повторяйте до тех пор, пока не испечетесь.
Я немного подозрительно отношусь к дизайну TLA. Как и в случае с паттернами, рецепты, отвечающие модным словам, являются хорошим руководством, но, по моему опыту, такой вещи, как универсальный дизайн или процедура управления проектом, не существует. Если вы делаете все именно по Книге (tm), то, если это не договор DOD с процедурными требованиями DOD, вы, вероятно, столкнетесь с проблемами где-нибудь по пути. Прочитайте Книгу (ы), да, но будьте уверены, что поймете их, а затем примите во внимание и личную сторону вашей команды. Правила, которые применяются только Книгой, не будут применены единообразно - даже когда инструменты применяются, могут быть пропуски (например, svn комментарии оставлены пустыми или загадочно краткими). Процедуры, как правило, выполняются только в том случае, если цепочка инструментов не только обеспечивает их выполнение, но и упрощает отслеживание, чем любые возможные сокращения. Поверьте, когда наступают тяжелые времена, выявляются короткие пути, и вы можете не знать о тех, которые использовались в 3 часа ночи, пока не стало слишком поздно.