One of the big reasons people don’t like Visio (or any diagramming software) being used as a CASE tool is: Visio doesn’t differentiate between an Object and a Symbol. In a complex diagramming situation, you may want to describe a real-world object once, then display it in multiple diagrams, with different relationships to other objects. You might even want to show that object as a different symbol or style in the various diagrams.
(Note that some of the Visio Professional features, such as UML class models, do understand multiple symbols for one object. These are buggy extras tacked onto a tool that is fundamentally about symbols.)
Last night I used Visio to map out a relatively simple options-analysis. I wanted to show 5 “option” variations of the same diagram, with some of the objects recurring on each, and other objects & relationships varying. I just cut & pasted, but if I ever want to change a recurring object in that analysis, I’ll have to change it 5 times.
At first I thought this was the usual problem with Visio not understanding Object vs Symbol. Then I realized that the full-fledged CASE tools I’ve used can’t deal with options analysis either. You can’t designate some attributes of an entity as “Maybe we need this – display only on diagram X”. If you’re not sure of a relationship cardinality or rolename, you have to create two relationships to show both options – and if you forget to delete the less-favoured relationship, it may show up accidentally on your “display all” diagram or a relationship list report. Exploring two options for the model structure may cause errors if your CASE tool checks for redundancy. And where is the soft-delete feature?
Options analysis is just one kind of human thought process that software doesn’t support. Software is stuck in a create-copy-paste-display paradigm, and these aren’t always the most efficient ways to maintain documents.