UML writing effective use case