1. As a user-centered technique, use cases help ensure that the correct system is developed by capturing the requirements from the user’s point of view.
2. Use cases are a powerful technique for the elicitation and documentation of blackbox functional requirements.
3. Use cases can help manage the complexity of large projects by decomposing the problem into major functions (i.e., use cases) and by specifying applications from the users’ perspective.
4. Because they typically involve the collaboration of multiple objects and classes, use cases help provide the rationale for the messages that glue the objects and classes together. Use cases also provide an alternative to the overemphasis of traditional object-oriented development methods on such static architecture issues as inheritance and the identification of objects and classes.
5. Use cases can form the foundation on which to specify end-to-end timing requirements for real-time applications. Five Disadvantages of using Case Structures:
1. The use case model and the object model belong to different paradigms (i.e., functional and object-oriented) and therefore use different concepts, terminology, techniques, and notations. The simple structure of the use case model does not clearly map to the network structure of the object model with its collaborating objects and classes.
2. The functional nature of use cases naturally leads to the functional decomposition of a system in terms of concrete and abstract use cases that are related by extends and uses associations. Each individual use case involves different features of multiple objects and classes, and each individual object or class is often involved in the implementation of multiple use cases. Therefore, any decomposition based on use cases scatters the features of the objects and classes among the individual use cases.
3. Another major problem with use case modeling is the lack of formality in the definitions of the terms use case, actor, extends, and uses. Similarly, the specification of individual use cases in natural languages such as English provides ample room for miscommunication and misunderstandings. Use cases provide a much less formal specification of their instances (i.e., individual usage scenarios) than do classes of objects. Whereas the inheritance relationship between classes of objects is well-defined and has been automated by compilers, the ‘inheritance’ and ‘delegation’ relationships provided by extends and uses associations are much less well defined.
4. Being created at the highest level of abstraction before objects and classes have been identified, use cases ignore the encapsulation of attributes and operations into objects. Use cases therefore typically ignore issues of state modeling that clearly impact the applicability of some use cases.
5. Another potential problem with use case modeling is knowing when to stop. When one is building a non-trivial application, there are often a great number of use cases that can produce an essentially infinite number of usage scenarios, especially with today’s graphical user interfaces and event driven systems.