проекты были.
1. оперсистема для наладонника - многозадачная, с устойчивой файловой системой, не требовательная к ресурсам, с графикой, обменом сообщений между устройствами по радиоканалу. все с нуля и работало. С++. железо - оригинальное, памяти под мегабайт -два, флешка, пзу, 64 радиоканала в районе 900 мгц.
2. сервер с нуля, для трансляции потоковой инфы вроде видео, переносимый, Win, линух.
то есть работать можно, даже удобно.
есть особенности.
1. нужно работать так, чтобы расхождений между диаграммами классов и кодом не было. то есть код генерировать обязательно. используются диаграммы классов и пакетов. изменения в интерфейсах классов делаются через диаграммы с перегенерацией кода. разумеется тул должен поддерживать разделение своего кода и кода пользователя. роза это умеет. Обязательно нужно комментировать классы, атрибуты, методы и все что можно, поскольку тул автоматически генерирует еще и документацию.
2. работа с диаграммами делается системным архитектором - который досконально понимает задачу, и мог бы сам ее реализовать, но у него столько рук нет. программисты используются просто как "интеллектуальные генераторы специфицированного архитектором кода". задача архитектора - сгенерировать для кодеров совершенно готовые файлы с кодами определений классов, разделенный на пакеты, с правильными инклудами(импортами), и так далее, плюс документация на это все. программер просто берет готовый файл и наполняет тела методов кодом. все методы как я сказал документированы и достаточно атомарны с понятными именами, и так далее.
3. в принципе в некоторый момент можно отцепиться от диаграмм, если задача близится к завершению, то есть остались лишь штрихи, и дальнейших работ по задаче не предвидится. но желательно держаться в них как можно дольше, поскольку как минимум вы будете иметь актуальные доки на продукт. Разные доки генерируются различными шаблонами в генераторе документации. можно делать свои шаблоны, если необходимо.
Повторяю еще раз - без централизованной разработки в виде системного архитектора, или связки - архитектор-помощники(если система супер сложная или требуется очень быстрая разработка) всерьез работать в таком стиле трудно.
Если команда устроена так, что каждый сам себе хозяин и все начнут рисовать диаграммы - будет пустая трата времени и куча несогласованных решений. тогда уж проще по старинке сделать что нить плохоработающее, зато быстро
с диаграммами будет работать не лучше, но времени уйдет втрое больше:)
замечено что один архитектор может обслуживать в режиме реального времени примерно 5-6 хороших кодеров. если меньше - будет простаивать, больше - не успевать. однако сисарх он же и сеньор-программер(поскольку как я сказал задачу должен понимать отлично) и он же может реализовывать наиболее ответственные модули.
замечание. все это работает с хорошим эффектом, если у вас система реализует взаимодействие множества сущностей, многопоточна и обьемна.
если у вас много чистой математики..ну например какой-нибудь солвер разряженных матриц, модуль решалки дифуров и проч...то помощи будет меньше.
система должна быт представимой в виде модулей и классов - тогда удобно.