Dia's support for UML is very robust and complete. The user can create classes, class templates, objects, and most things one would expect from a UML diagram. UML objects can be assigned functions and attributes, and the functions can contain parameters. This reviewer used Dia's SADT capabilities to create a flow diagram for the high level system design of a project he is currently engaged in. Dia's main strength is its extensibility.
Users can create new shapes, and write their own plugins to be used with the system.
Right now, it is a bit awkward to connect flow lines to connection points on other objects, mainly because there is only a fixed number of connection points on any given object. Thus, when the user tries to move an object around, some of the flow lines may not move with it. Also, the lines are not very flexible in how they follow the grid. In Visio, lines can zig-zag and bend around curves and objects more easily than they can in Dia. This may be beyond the scope of what the current authors envision, but would be a welcome feature that is available in some higher-end system design packages.