We should try to understand what sort of requirements may arise in the requirement elicitation phase and what kinds of requirements are expected from the software system.
Broadly software requirements should be categorized in two categories:
Requirements, which are related to functional aspect of software fall into this category.
They define functions and functionality within and from the software system.
● Search option given to user to search from various invoices.
● User should be able to mail any report to management.
● Users can be divided into groups and groups can be given separate rights.
● Should comply business rules and administrative functions.
● Software is developed keeping downward compatibility intact.
Requirements, which are not related to functional aspect of software, fall into this category. They are implicit or expected characteristics of software, which users make assumption of.
Non-functional requirements include -
● Security
● Logging
● Storage
● Configuration
● Performance
● Cost
● Interoperability
● Flexibility
● Disaster recovery
● Accessibility
Requirements are categorized logically as
● Must Have : Software cannot be said operational without them.
● Should have : Enhancing the functionality of software.
● Could have : Software can still properly function with these requirements.
● Wish list : These requirements do not map to any objectives of software.
While developing software, ‘Must have’ must be implemented, ‘Should have’ is a matter of debate with stakeholders and negation, whereas ‘could have’ and ‘wish list’ can be kept for software updates.