Requirements Engineering (Chapter 4) Flashcards
What is Requirements Engineering?
The process of finding out, analyzing, documenting, & checking the services and constraints for Requirements
True or False: The term Requirement is unanimous and consistent across the Software Industry
False, the term is not used consistently
Describe why a Requirement might have different definitions across the software industry
A requirement can be a high-level, abstract statement of a service/constraint
A requirement can be a detailed, formal definition of a system function
Where do some of the problems in Requirements Engineering originate from?
Failing to make a clear separation between the different levels of description
Why do we often get Requirements wrong?
Because Requirements Engineering is hard
What percentage of defects are introduced during Requirements Activities?
40-50%
What are two ways to differentiate Requirements?
User Requirements
System Requirements
What is a User Requirement?
A high-level abstract requirement of what services the system is expected to provide the user
What is a System Requirement?
A detailed description of the system’s functions, services, & operational constraints
Why do Requirements need to be written in different ways?
Because different readers use them in different ways
List some reasons for why it’s hard to define Requirements
Informal requirements gathering Not able to articulate what's needed Implied requirements (detailed implied from domain specific knowledge) Miscommunicated Assumptions Poorly Specified Requirements Casual Change Process Diversity of Interest in Stakeholders Inevitable Economic & Business Change
Who said, “To proclaim that you “have the requirements”
is delusional if all you really have is a pile of
email and voice mail messages, sticky notes,
meeting minutes, and vaguely recollected
hallway conversations”?
Wiegers
What are the 2 Types of Requirements?
Functional
Non-Functional (Technical)
What are Functional Requirements?
Services the system should provide
How the system should react to particular inputs
How the system should behave in particular situations
What are Non-Functional Requirements?
Constraints on the services or functions offered by the system
What constraints can Non-Functional Requirements include?
Timing Constraints
Development Process constraints
Standards Constraints
True or False: Requirements are independent
False, requirements are not independent and one requirement often generates/constrains other requirements
What are the two types of Functional Requirements?
Business Requirements
User Requirements
What are Business Requirements?
Describe WHY the organization is implementing the system
Identify high-level business objectives of the customer
What are User Requirements?
Describe WHAT the system does at a high-level
User goals & the high-level tasks performed by users
What can User Requirements sometimes be grouped into?
Features
What should the Functional Requirements of a System ideally be?
Complete & Consistent
True or False: Individual Functional Requirements are often more important than Non-Functional Requirements
False, Non-Functional Requirements are often more critical
How can Non-Functional Requirements arise?
Through user needs due to budget constraints organizational policies software/hardware interoperability External Factors (e.g. safety regulations)
What are the three types of Non-Functional Requirements?
Product Requirements
Organizational Requirements
External Requirements
What do Non-Functional Product Requirements specify?
Specify or constrain the runtime behavior of the software
What do Non-Functional Organizational Requirements specify?
Specify the broad system requirements derived from policies & procedures in the customer & developer’s organizations
What do Non-Functional External Requirements specify?
Specifies all requirements that are derived from external factors
What is a common problem with Non-Functional Requirements?
Stakeholders often set them as general goals (e.g. ease of use, rapid user response, etc)
True or False: Whenever possible, you should write non-functional requirements quantitatively so that they can be objectively tested
True