Skip to main content

Alternative to CRUD

So if CRUD use cases don't belong in requirements documents, what use cases do you include in their place?

First, I should reiterate that CRUD use cases may still be appropriate outside of a requirements document, such as in a design specification. As I've mentioned, once a use case author begins fleshing out text use cases with steps, she is engaging in design, anyway.

Second, when a product manager is tempted to include CRUD in a requirements document, he should instead specify the user's larger goal. Presumably, information somehow needs to get into the system and stay up to date. Why? What does having that information enable the system to do for the user? An example of a larger goal is Generate Periodic Financial Reports. In that example, the user doesn't want to enter information; she just wants her reports!

The product manager still has to capture nonfunctional requirements relating to the accuracy and timeliness of information in the system. A useful approach is to have the use cases represent on-going, end-to-end processes instead of discrete tasks the user performs. That way they encompass the nonfunctional requirements and any data administration that product designers decide to include in their design.

For example, consider a Pay Employees use case that encompasses not just one round of payroll, but the process of paying employees during the lifetime of the company. Such a process contends with the hiring and firing of employees, and changes to employee titles, salaries, and marital status. Attach nonfunctional requirements to the use case that constrain the accuracy and timeliness of the information and limit the amount of time and effort users are engaged in carrying out the process (including the administration of information).

Comments

Roger L. Cauvin said…
Scott, I think your idea about "composition" is part of the solution.

As my post suggests, I would express the larger functional requirement as an on-going, end-to-end use case. (I would just give the name of the use case, the actor, and any needed explanation. A use case diagram with notes often suffices) Then I would attach constraints to that functional requirement.

If I considered it important to convey the fact that CRUD-style administration would likely be part of the design, I would depict some use case "composition". For example, I might show that the Pay Employees use case includes a Manage Payroll use case, which in turn includes CRUD use cases. But I would explicitly label these lower-level use cases - and the <<include>> relationships - as a design example or suggestion.

Ideally, a product designer or architect documents these use cases instead.

Popular posts from this blog

Why Spreadsheets Suck for Prioritizing

The Goal As a company executive, you want confidence that your product team (which includes all the people, from all departments, responsible for product success) has a sound basis for deciding which items are on the product roadmap. You also want confidence the team is prioritizing the items in a smart way. What Should We Prioritize? The items the team prioritizes could be features, user stories, epics, market problems, themes, or experiments. Melissa Perri  makes an excellent case for a " problem roadmap ", and, in general, I recommend focusing on the latter types of items. However, the topic of what types of items you should prioritize - and in what situations - is interesting and important but beyond the scope of this blog entry. A Sad but Familiar Story If there is significant controversy about priorities, then almost inevitably, a product manager or other member of the team decides to put together The Spreadsheet. I've done it. Some of the mos

Is Customer Development Pseudoscience?

The “Science” of Lean Startup Lean startup practitioners embrace the scientific method, seeking the "truth" about what business model and strategy will lead to product success. We do so by: Formulating hypotheses Crafting and running experiments to test them Learning from the experiments Iteratively feeding our learnings back into revised hypotheses Sounds pretty scientific, at least in spirit, doesn't it? Yet this process actually neglects a key ingredient in the scientists' mode of operation. To identify what’s missing, let’s examine “customer development”. Customer Development Steve Blank is one of the pioneers of the lean startup movement. He introduced into the lean startup lexicon the term “customer development”. Customer development consists of sessions and interactions with customers to test hypotheses. For example, a product manager might interview a prospect, asking if she agrees with the product manager’s hypotheses about the problem

Interaction Design: the Neglected Skill

Your product development organization has a big, gaping hole in it. (Be prepared to feel defensive as you continue reading.) One of the most important roles in product development is the role of interaction designer. An interaction designer designs how the users will interact with the product and conceptualize the tasks they perform. He decides whether, for example, the user interface will be command driven, object oriented (clicking on objects then specifying what to do with them), or wizard based. The interaction designer decides the individual steps in the use cases. Every company has one or more people that play the interaction designer role. Usually, those people have little or no expertise in interaction design. Sadly, they typically don't even realize how unqualified they are. Let's see who typically plays the role at companies. Engineer . An engineer is an expert on building what is designed. Yes, an engineer may know how to design the internal structure of the hardware