Why is all of this important, you may ask? The answer is
They prevent early design and focus on conditions.
They provide tractability.
They allow estimating and scheduling work.
They are easy to understand by the client, and provide a simple
means of communication between the client and the developers.
They do not easily capture non-functional requirements.
There may be a learning curve for the developer and/or the client.
In summary, a well-prepared use case is worth its weight in
gold. Once the client has agreed with the use case, project managers can plan
the schedule, and developers then have a clear insight into what they must
develop. From personal experience, while a use case is most beneficial, they
are rarely perfect, but they almost always serve a purpose.