Enterprise Architect does UML very well. The UI is slick and intuitive. But it also has a bunch of useful features that weren't obvious at first glance. In fact, it took a good deal of playing around with EA before I even understood everything it did.
Forward and reverse engineering works out of the box, with no hacks necessary. I mock up a class design, generate the classes from UML, then go in and write all the stubs in Eclipse. Then I go back to Enterprise Architect, synchronize the classes with the codebase and I'm done. If you have any dependencies on external classes (and who doesn't) then you can import classes directly from the JAR file.
It has integrated database support. I can create table diagrams with foreign key references and autogenerate the DDL. I can even reverse engineer tables by hooking Enterprise Architect to an ODBC data source. This makes DBAs happy.
It has MDA transforms. This feature sounds pretty but useless, until given an example: autogeneration of getters and setters given the attributes of a class. Create DDL with a handful of attributes.
But this is not even getting to the one feature that truly makes Enterprise Architect a killer app: autogenerated documentation.
You generate documentation by pressing F8 on a package. There are actually two document generators -- one of them referred to as "legacy." Ignore that one. You want the "New RTF style template editor" which actually works right. This will create RTF documents containing the diagrams, the notes for each element, and any scribbles that get attached to the connection. (The example text in the base templates is very obviously fake, so you have to click "Manage Templates" and create your own with company headers and suitably generic intros.) It's massively useful, even in its raw form.
If you don't want to use the "raw" version, you can create your own Word document and link to the diagrams in the RTF document. This solves two problems: the UML diagrams in the tech design document never get out of date, and you don't have to have masses of JPG files littering your directory.
Enterprise Architect also seems to have features for requirements and testing, although I haven't been able to figure how useful those are yet. In addition, there are a number of features I would like to try because I can't figure out how the heck they work. Part of the problem is that I am a UML newbie and haven't figured out what a UML profile or a UML pattern is. But part of the problem here is the interface.
Generally speaking, the nicer the feature, the more kludgy the interface. EA has more dialog boxes and context-free buttons than it knows what to do with, which is to be expected in a technically-oriented tool but requires (REQUIRES) that I click help button on every single dialog box so I can figure out what the heck it does. It gets worse the more esoteric you get; for example, it's possible to create your own language to generate from UML diagrams, except that it's just not worth it. (And Actionscript support is coming in the next version anyway.)
Still, it's really, really good. The central UI (as long as I avoid any modelling features) is seamless enough that I can actually develop and diagram at the same time, tweaking one or the other to stay in sync without losing the thread of what I'm doing. There's a 30 day trial, and it's damn cheap for what it offers. Go try it.