Summary: Notes on using Visio for UML diagrams (mostly why I don't like to use Visio).
I think it is okay to use Visio for UML diagrams when you're not going to be doing very many, especially if you already own a copy of Visio. But once the application you're modeling gets to be substantial at all, Visio has a major flaw:
You're trying to model a software application that has a data model with a drawing program.
To me, that's not a very good idea.
Elements in UML models have relationships
The real value of working with UML diagrams comes in moving back and forth between several different diagram types, not just modeling static relationships, but also looking at the dynamic relationships and behavior of the objects in your design. When you really do this, you'll often change the names of your classes as you discover what they really do, and you'll be adding methods and changing their signatures as you design.
This is where "Visio, the UML drawing tool" falls apart. Because Visio contains no model of your data, it can't instantly change all your diagrams when you change the name of a class or the signature of a method.
I could go on for a while here, but I hope I've said that well enough. In working with UML you are creating a model, and your modeling tool should keep this information in some type of data store so all elements and diagrams are changed whenever you make a change.