Characteristic
|
Description
|
Mitigation
|
Separation of CRUD functions
|
Each element of CRUD (CReate-Update-Delete) is dealt with in a separate use case.
|
Make CRUD functions alternate flows in one use case.
|
Actors are not generalized
|
Use cases are tied to specific concrete users, not abstract actors.
|
Generalize actors that inherit the same system functionality
|
Use cases are functions
|
No use case's basic flow completes a major interaction or transaction, but instead describes functions.
|
Re-write the basic flow to complete an end-to-end scenario.
|
Technology specific
|
Use cases are locked to specific architectural or system components.
|
Re-write the use case, treating the technology as a "black box", crossing sub-system or component
boundaries if necessary to complete the flow.
|
User interface design
|
Use cases are tied to specific screens or user functions and contain specific UI design statements.
|
Remove references to specific screens, controls, or other UI paradigms.
|
Few alternate flows
|
Use cases usually contain 0-2 alternate flows, frequently data specific.
|
Once the basic flow is complete, identify possible deviations from the main flow and name them. These will
be your alternate flows.
|
Piecemeal scenarios
|
Scenarios almost always have to call several use cases to complete a useful example.
|
Write out an end-to-end user scenario, then create a single use case by combining the smaller use cases you
need to complete it.
|
Low level test case derivation
|
Use cases are useful for deriving unit test cases.
|
Remove low level details. Focus the use case on required visible behavior.
|