Inkscape I've primarily used. It's a very different UI, but it works well and it's a powerful tool. Output can (depending on input) look as professional as necessary. In Inkscape, use the 'Create diagram connector'.
It has the option to 'Make connector avoid selected objects'. If you draw a connector, then select the object you want to avoid, edit the connector and finally click the button to avoid that object, you can use smart connectors that will not overlap the different elements of your box. In practice, I find the easiest way to do this is to:. Draw a connector.
Deselect the connector by clicking the object you want to avoid. Hold SHIFT and double-click the connector you just drew.
Choose 'Make connector avoid selected objects' Also see this question and answers: About the other recommendations I haven't used it much yet, but yEd looks very good. Alternatively, LibreOffice Draw is a popular piece of software, see other answers. One thing to note is that LibreOffice can now open Visio diagrams, and it lets you edit them. It works well for simple diagrams, not as well for very Visio-idiosyncrasy-intensive ones. It could still be usable with more effort, and in an environment with a lot of existing diagrams, this might be tolerable.
I also like very much: it has a straightforward approach to creating diagrams and lets you work efficiently after a very short while. The quality of the diagrams can be very high: there are advanced alignment functions, custom Icons can be imported (also from Visio) and there are various output formats available. However, yEd requires an Oracle Sun Java VM, which is not standard e.g.
In Ubuntu 11.10. A solution is given in. The easiest solution for me was to download and extract the 'Zipped yEd Jar' Download and call the Oracle Sun Java explicitely, like: /jre1.6.030/bin/java -jar /yed-3.8/yed.jar.