Word + Visio + Project для документации и управления.
Пробовал RationalRose, но не впечатлило, наверно, масштаб у меня мелковат, да и сам UML в ней несколько устаревший.
ERWin, BPWin - этим мы в университете пользовались.
Очень интересны решения Borland. Последнюю концепцию, что я от него видел: набор связанных программных средств для полного управления проектом. (Всё нижеследующее не разбирал, не использовал, поэтому уточняющих вопросов можно не задавать.)
Design (проектирование):
- CaliberRM - управление требованиями проектов любой природы (не только софтовых), интегрируется с MS Project.
- Borland Together Control Center - позволяет моделировать, проектировать и продумывать развёртывание разрабатываемых систем. Сколь я понял - среда моделирования, интегрирующаяся со средами разработки (собственно программирования) и средствами управления проектом. То, что я видел в JBuilder 9 - это уже более высокоуровневое решение, нежели старые среды.
Change Managment (управление изменениями):
- StarTeam - средство для принятия и обсуждения решений, управление задачами, сроками, репозиторий.
Development (разработка):
- Delphi, C++ Builder, JBuilder, Kylix, C#Builder и т.д.
- Bold - как я понимаю, интегратор UML и кода, т.е. когда можно по модели автоматом генерить код, а по коду восстанавливать модель.
Test (тестирование) :
- Optimizelt - что-то для Java, анализ работы J2EE решений (сильно интегрирован с JBuilder), профайлер для .NET, есть средство отладки параллельных потоков.
Deployment (внедрение, развёртывание):
В этом разделе Borland почему-то описывает движки баз-данных и свой сервер приложений.
У Microsoft к студии тоже кажется какие-то средства прикручиваются, но я ими не пользуюсь - слишком маленькие проекты. Мне кажется, что универсальной средой для "рисования" в будущем будет (да частично есть и сейчас) Visio на, к который будут навешивать преобразователи схем в код и обратно.
А вообще универсальным средством является: лист бумаги и ручка
. Но для крупных проектов, имхо, такие старые методы существенно замедляют разработку и отрывают проектирование от программирования. Для последующего сопровождения продуктов (особенно крупных) такое разделение смерти подобно - потом по коду восстановить идею без документации или утеряной документации и без наличия автора кода сложно со всеми вытекающими последствиями.