In general, requirements methods and languages and the tools that support them fall into three general categories—object,
process, and behavioral. Object-oriented approaches organize the requirements in terms of
real-world objects, their attributes, and the services performed by those objects. Process-based approaches
organize the requirements into hierarchies of functions that communicate via data flows. Behavioral
approaches describe external behavior of the system in terms of some abstract notion (such as predicate
calculus), mathematical functions, or state machines.