The version I used to work with had some serious bugs like entities that could not be deleted, inconsistencies and oversized blank entries in the JTree in the LHS menu and more of that kind. Also multiplicities were not fully supported IIRC. But that was a 1.x version and according to the website they're up to 2.6, I'll check out the newest version.
Which programming language? The latest SunOne Studio, Java Edition (or whatever they are calling it this week) has some rather nice UML tools. The Sun website has a webcast of the JavaOne presentation where the tool was put through its paces.
For Open Source, try these alternatives: OSS UML tools @ JGuru More generically, there is the Rational product line from IBM.