Guideline: Strategies to Avoid Functional Decomposition
Identify common symptoms of functional decomposition and mitigate their impact.
Relationships
Main Description

Refer to the Mitigation column for actions you can take to raise the level of granularity and head off the problems associated with Functional Decomposition.



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.


References


[CON99], [BIT02], [AMB04]
More Information