Component diagrams show the physical components and dependencies between software components. Deployment diagrams visualize the distribution of components across nodes in a system and allow seeing potential bottlenecks. Rational Rose, Visual UML, and Microsoft Visio are tools to create UML diagrams, with Rational Rose being a more full-featured software engineering tool that supports activities beyond diagramming like code generation and testing.