CONCEPTOS
Antes que nada debemos tener claro que UML es un lenguaje universal (visual) usado básicamente para definir procesos informáticos y como todo lenguaje se debe tener muy claro los elementos que lo componen para evitar errores de comunicación.
En UML existen diferentes tipos de diagramas en los cuales podemos definir comportamientos de los procesos así como la distribución de cada uno de ellos, de esta forma podemos decir que los diagramas de comportamiento permiten definir procesos por medio de diagramas de actividades, secuencia, estado etc. y diagramas de estructura que nos permiten modelar despliegue y arquitectura a traves de los diagramas de clases, datos, componentes etc.
PROCESO
La mayor ventaja que nos proporciona el hacer uso de UML es acortar distancias en la percepción que tienen las personas (gerentes de proyectos, arquitectos, desarrolladores, testers, usuarios finales y patrocinadores) de un sistema informático, prestando gran importancia a que se debe especificar cuanto sea necesario para que las personas involucradas conozcan y compartan la definición del sistema.
Por ejemplo en el siguiente diagrama se muestra claramente que existe una aplicación web que se encuentra alojada en un servidor con IIS la cual hace uso de un servidor de base de datos y de otro servidor con carpetas FTP, y que los usuarios acceden a la aplicación por medio de internet pasando por el firewall.

Dependiendo de la metodología que usemos, los diagramas UML se construyen en la fase de diseño del proyecto y pueden aumentar en un 30% el tiempo del mismo, aunque este tiempo se repone en la fase de desarrollo, pruebas y soporte siempre y cuando tengamos los diagramas actualizados en cada una de las fases del proyecto.
RECOMENDACIONES
Dada la variacion de los proyectos es necesario que hagamos diferentes modelos según la logica de negocio.
En los diferentes proyectos que se llevan a cabo es muy posible y recomendable que debamos centrar nuestra atención en diferentes tipos de diagramas según la necesidad del proyecto.
Si estamos trabajando en un sistema de información que permite procesar solicitudes de servicio y en el cual un proceso puede estar en diferentes estados según el tipo de solicitud o alguna otra variable, será muy necesario un diagrama de estados en el cual centremos la atención para especificar cada detalle en un lenguaje universal con pocas ambigüedades.
En la mayoría de procesos hay una base de datos en la cual almacenamos la información, sin embargo existen procesos que no hacen uso de ella o simplemente no se considera un tema relevante, y no debemos especificar demasiado al respecto.
Si estamos modelando un sistema y usamos UML para validar el funcionamiento de un proceso con el usuario final no debemos pedir la aprobación de un diagrama de clases o de datos, sino que podemos generar un modelo de estado o actividades. Si por el contrario en nuestra organización un arquitecto define los componentes a usar en un diagrama de despliegue para proporcionar la información a un desarrollador, este diagrama adquiere mayor importancia que en otros escenarios.
De esta forma lo que trato de decir es que el UML debe ser usado para especificar procesos que sean susceptibles de ambigüedades y entendimiento, no porque se infiera en un error sino porque podríamos estar destinando recursos en algo innecesario.
CONCLUSIONES
UML es un lenguaje grafico universal que permite modelar procesos, que si usamos de forma adecuada nos permite disminuir el riesgo de fracaso de un proyecto y nos facilita el levantamiento de requerimientos, desarrollo, documentación, pruebas y soporte.