Requirements Engineering
Requirements engineering is a systematic method concerned with obtaining a formal specification of what a customer wishes an application to do. There are two major tasks in requirements engineering: analysis and modeling. Analysis is the process of determining what the customer wishes the system to do and formally creating a list of requirements that the customer can understand and agree to. Modeling is a process of interpreting the customer requirements into something that software engineers can understand.
There
are two major types of requirements: functional requirements and non-functional requirements. Functional requirements describe
a specific function or task that the system should perform. They can describe services, reactions, and behaviors of the system.
Non-functional requirements are not concerned with the functionality of the system, but instead place constraints on the entire
system. The six main types of non-functional requirements are: security, privacy, usability, reliability, availability, and
performance. Constraints are specific non-functional requirements that restrict the development of the system. Some constraints
may be the operating system, implementation language, or hardware configuration.
A major aspect of requirements engineering is the elicitation of requirements from the customer. There are several ways to gather requirements throughout the development process, which include: interviews, observations, examining documents and artifacts, Joint Application Development sessions, groupware, questionnaires, prototypes, customer focus groups, and the presence of an on-site customer. Changes to requirements should be anticipated during the development process.
Previous
