Я бы рекомендовал использовать Togethersoft или Omondo для Java, но эти инструменты не бесплатны.
Единственный свободный от Java инструмент UML - это eUML, но он добавляет множество тегов в мой код. Сгенерированный код - беспорядок, потому что модель UML использует @ UML непосредственно в моем коде Java. Поэтому и модель UML, и код Java смешаны.
Если я проведу рефакторинг своего кода, тогда вся моя модель будет потеряна. Я изменяю только один из моих атрибутов, и вся моя модель была немедленно потеряна. Хуже всего было то, что я также потерял свой код, который был изменен. Мне нужно было вставить копию всех моих классов вручную и создать новый проект. Я потерял много часов работы только потому, что создал 2 маленьких диаграммы классов!
Формат моего кода был изменен без моего разрешения. Это недопустимое поведение. Мне нравится инструмент, но я не хочу, чтобы генерация UML-кода была настолько навязчивой в моем Java-коде. Графический дизайн довольно приятный, но поскольку это синхронизация кода и модели, а код грязный, мне это не подходит. Было бы хорошо отделить генерацию живого кода от модели и дизайна UML, как и другие инструменты.