What are some good ways I can structure and organize the functional and non-functional requirements within my requirements document? For example under the business process they support, classify them into major functions and then list the use cases underneath within the function followed by the requirement statements?
Looking for some best practices here.
To systematically structure the processes/functions of a complex manual and/or automated business system there is only one way: Data Flow Diagrams for higher levels of abstraction and a sequence oriented technique for the more concrete. Once you have your overall picture properly sturctured, you can do your stand alone use cases (but these really are not necessary).
With the above overall architecture, you have a vehicle to pigeon-hole your non-functionals into.
Hi John,
From a documentation perspective, I would suggest an organization that is logical to the document's primary audience. If the document is meant to be reviewed (in part or in whole) by your business stakeholders, then grouping of related functions in some logical flow often works well. Note that this does not always correspond exactly to a business process flow, since it's not unusual for some functions to be shared across processes. And it may make more sense for business stakeholders to review related functions together even if they do not fall within the same process flow. For example, if you have a function to 'add new customer', business may find it easier to review and understand requirements if other functions related to customer information are grouped together.
Diagrams are always a great aid to supplement your requirements documentation. Diagrams such as use case models orfunctional hierarchies help business teams see each function within the broader context. You could incorporate these types of diagrams within your document to set the context for different sections of the document.
You will probably find many different perspectives regarding non-functional requirements. In my experience, these do not fit well into a use-case type organization, since by definition they are attributes of the system as a whole, rather than any specific function within it. So my suggestion would be to document these separately, or put them in their own section. If some function have specific non-functional requirements (e.g. a certain function has a specific requirement for performance or availability), these can certainly be incorporated into the respective use cases as well.
Sandy
Hi Sandy,
thanks a lot for this very clear explanation.
I just want to add that, to be able to reuse the same requirement as needed, I use a Wiki. That way, for solution - functional requirements, I can have the comments from all the users/reviewers to which they apply, as they come into their flow as needed.
For solution - non-functional, they should indeed be classified apart, except in the case you highlight.
Have a nice day.
Yannic
brought to you by enabling practitioners & organizations to achieve their goals using: