Многократно убеждался, что существует очень простое необходимое (но недостаточное) условие успешности программного проекта: в проекте должен быть один человек (назвоем его архитектор), который с самого начала держит практическии весь проект в голове и знает, что будет сделано (включая детали).
Никаких технологий обретения этого понимания не существует - оно является результатом инсайта. Конечно, опыт и владение предметом сильно способствует.

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

Определить, является ли лидер проекта архитектором - очень просто. Задайте ему вопрос о том, как будет сделано какое-нибудь тонкое место. Если он ответит - "Делать будем так.." или "Существует несколько вариантов (перечисление), какой будем использовать - решим потом.", то это он (архитектор).

Если человек отвечает "Этими вопросами мы будем заниматься на этапе технического задания (технорабочего проекта и др.)", или "Этот вопрос в кометенции Василий Ивановича, но его сейчас нет..." то это не архитектор, это менеджер.

Если в проекте нет архитектора, проект обречен. Причем успешно могут готовиться все отчеты, писаться программы и др. Но никогда ничего не заработает - процесс не склеится.