jimbo1580 wrote
Hello,
I am a BA and am currently writing use cases for a couple projects that I am working on. I have used use cases before and find they are extremely helpful in some cases and not as useful in others. It depends on the system and the type of requirements. When I am using them, one thing that I get caught up on is how to prevent imposing design constraints when describing the use case. We always say to define requirements so as not to constrain the design. How can we do that if use cases are supposed to be descriptions of the interactions between a user and the system? It seems to me that in order to write them, you have to make design decisions about the interface (i.e. what is displayed on the screen, whether a drop-down list is used, whether something is visible or not) because you pretty much have to describe what is on the screen and what the user can do.
Does anyone else face this similar issue? Is there a better way to describe the use case or is that just the nature of the technique? Any tips?
I want to be able to capture the requirements in the use cases, but I also want to let the designers and developers build the appplication how they see fit without unnecessarily constraining how they design it.
Any thoughts would be helpful.
Thanks,
Jim
|
I am in complete agreement with your desire to avoid making design decisions within use case specifications. This is certainly one of the hardest things to do and at times it may even seem unavoidable. Looking back at my work, however, I find that usually I am successful at avoiding most design related information.
The following information presumes that you are developing the use cases very early on in the process to capture requirements. Screen design should come later, though when working with business representatives they seem to want to see screens right away.
To avoid design decisions remember a few things. First, use cases and screens are not a one to one relationship. A system use case describes a series of actor/system interactions to achieve something of standalone value for the user. So a single use case will often, if not usually, span multiple screens within a system. There should be no reference to or knowledge of these screen to the reader. It's just "the system". Second, while the system will display information to the user/actor you don't need to specify what controls are used. The actor will provide certain information and the system will do something or make a decision based on that information. Then, it may present some information back. Exactly how the user sees that information you don't need to get into. Third, don't allow the logic of the system use cases to get too overly detailed. Remember, they are not the only artifacts you will be creating. They are to capture functional requirements in a way thats easily understood by the business. If you get too detailed you defeat the purpose of creating use cases.
I know a lot of this sounds easy, but is actually very difficult in practice. Another tip that I have found helpful to keeping design out of my system use cases is to first start by creating business use cases. Describe the processes in term of the business and busines workers as if none of the process was automated by a system. Moving from a business use case to a system use case, i.e. replacing parts of the business use cases with user/system interactions, help get you going on the right track.
Finally, a comment about developing use cases simultaneously with screen mockups. This is often done so that the business can visualize how things will work. If you must go down this path then understand that keeping design out of your use cases will be much more difficult. You as the analyst will inevitably start thinking about controls and screens. Just make sure you don't include them in your use cases. This makes use case maintanance unbearable and eventually your use case model reflects far more than functional requirement. They begin to restrict your developers.
Hope this helped. I know some of this may seem generic.