When you get ready to leave on a vacation, you may run through a mental or written checklist: Did you pack everything you need to take? Did you pack too much? Did you arrange to have the appropriate services (newspaper, mail delivery, etc.) stopped? Did you arrange for someone to water the plants and feed your pet rat? Once you depart on your trip, you want to enjoy yourself and know that when you arrive home again, you won't find any disasters waiting for you.
This isn't unlike a software development project: we need to organize a checklist of the things that must be provided for by the system before we embark on its development, so that the project runs smoothly and so that we don't create a disaster (in the form of unmet requirements and dissatisfied customers/users) when the system is delivered.
The art and science of requirements analysis—for it truly is both!—is so extensive a topic that we could devote an entire book to this subject alone. There is one technique in particular for discovering and rounding out requirements known as use case modeling that is a cornerstone of the Rational Unified Process (RUP), and which warrants your consideration. Use cases aren't strictly an artifact of OO methodologies; they can be prepared for any software system, regardless of the development methodology to be used. However, they made their debut within the software development community in the context of object systems, and have gained widespread popularity in that context.
In this chapter, you'll learn
How we must anticipate all of the different roles that users will play when interacting with our future system
That we must assume each of their viewpoints in describing the services that a software application as a whole is to provide
How to prepare use cases as a means of documenting all of the preceding requirements