GraphViz is great for visualizing trees and graphs, however even a slight change to the tree structure and the diagram will come out very different looking.
For software maps, or diagrams that need to remain relatively stable, GraphViz is too dynamic.
If the tree structure changes, of course the diagram changes. I'd like to know what you mean by "slight change" and "very different" in this context. Could you post samples? --
Laying out graphs in 2D in general requires arcs to overlay each other (provably; it requires a 3D space to avoid such); minimizing the number of such intersections can require arbitrarily large movement of projected nodes. A single addition or deletion of an arc can therefore lead to arbitrarily large changes in layout. Similarly to a lesser extent with other aspects of layout.
To avoid large jumps on the output upon small changes in input would require hysteresis from one output to the next; a program like GraphViz would need to remember what it had done the last time, and make only small changes on output on successive runs, rather than recalculating layout from scratch.
I haven't gotten around to using GraphViz in particular, but the above concerns apply in general to any such program.
GraphViz provides a firm system to constrain its layout. For example, if you draw a tree, and if you specify an in-order fan-out to place nodes in their DOT file order, and if you specify a rank for each node, the location of each new node becomes totally predictable.
GraphViz works great within these constrainst as a geometry manager. --PhlIp