SE Module 2
SE Module 2
Requirement
The description of the features and functionalities of the target system is
called requirements. The expectations of users from the software product are communicated
through requirements.
IEEE defines a requirement as follows:
Two kinds of requirements based on the intended purpose and target audience:
User requirements
High-level abstract requirements written as statements, in a natural language plus
diagrams, of what services the system is expected to provide to system users and
the constraints under which it must operate.
System requirements
Detailed description of what the system should do including the software
system's functions, services, and operational constraints. The system
requirements document (sometimes called a functional specification) should
define exactly what is to be implemented. It may be part of the contract between
the system buyer and the software developers.
Functional requirements
Statements of services the system should provide, how the system should react to
particular inputs and how the system should behave in particular situations. May
state what the system should not do.
Non-functional requirements
Constraints on the services or functions offered by the system such as timing
constraints, constraints on the development process, standards, etc. Often apply
to the system as a whole rather than individual features or services.
Domain requirements
Constraints on the system derived from the domain of operation.
Functional requirements
Problems arise when requirements are not precisely stated. Ambiguous requirements
may be interpreted in different ways by developers and users. In principle, requirements
should be both
Non-functional requirements
Non-functional requirements may affect the overall architecture of a system rather than
the individual components. A single non-functional requirement, such as a security
requirement, may generate a number of related functional requirements that define
system services that are required. It may also generate requirements that restrict existing
requirements.
Three classes of non-functional requirements:
Product requirements
Requirements which specify that the delivered product must behave in a
particular way e.g. execution speed, reliability, etc.
Organizational requirements
Requirements which are a consequence of organizational policies and procedures
e.g. process standards used, implementation requirements, etc.
External requirements
Requirements which arise from factors which are external to the system and its
development process e.g. interoperability requirements, legislative requirements,
etc.
Domain requirements
The system's operational domain imposes requirements on the system. Domain
requirements may be new functional or non-functional requirements, constraints on
existing requirements, or define specific computations. If domain requirements are not
satisfied, the system may be unworkable. Two main problems with domain
requirements:
Understandability
Requirements are expressed in the language of the application domain, which is
not always understood by software engineers developing the system.
Implicitness
Domain specialists understand the area so well that they do not think of making
the domain requirements explicit.
Requirement Engineering
1. Feasibility Study
2. Requirement Elicitation and Analysis
3. Software Requirement Specification
4. Software Requirement Validation
5. Software Requirement Management
1. Feasibility Study:
The objective behind the feasibility study is to create the reasons for developing the
software that is acceptable to users, flexible to change and conformable to established
standards.
Types of Feasibility:
This is also known as the gathering of requirements. Here, requirements are identified
with the help of customers and existing systems processes, if available.
Analysis of requirements starts with requirement elicitation. The requirements are
analyzed to identify inconsistencies, defects, omission, etc. We describe requirements in
terms of relationships and also resolve conflicts if any.
The models used at this stage include ER diagrams, data flow diagrams (DFDs),
function decomposition diagrams (FDDs), data dictionaries, etc.
o Data Flow Diagrams: Data Flow Diagrams (DFDs) are used widely for
modeling the requirements. DFD shows the flow of data through a system. The
system may be a company, an organization, a set of procedures, a computer
hardware system, a software system, or any combination of the preceding. The
DFD is also known as a data flow graph or bubble chart.
o Data Dictionaries: Data Dictionaries are simply repositories to store
information about all data items defined in DFDs. At the requirements stage, the
data dictionary should at least define customer data items, to ensure that the
customer and developers use the same definition and terminologies.
o Entity-Relationship Diagrams: Another tool for requirement specification is
the entity-relationship diagram, often called an "E-R diagram." It is a detailed
logical representation of the data for the organization and uses three main
constructs i.e. data entities, relationships, and their associated attributes.
New requirements emerge during the process as business needs a change, and a better
understanding of the system is developed.
The business and technical environment of the system changes during the development.
Analysing requirements.
Assessing feasibility.
e) Specification.
f) Validation.
After requirement specifications developed, the requirements discussed in this document
are validated.
g) Requirements Management.
In an ideal setting, stakeholders and software engineers work together on the same
team. In such cases, requirements engineering is simply a matter of conducting
meaningful conversations with colleagues who are well-known members of the team.
We discuss the steps required to establish the groundwork for an understanding
ofsoftware requirements—to get the project started in a way that will keep it moving
forward toward a successful solution.
2.2.4 Asking the First Questions: Questions asked at the inception of the project
should be “context free. The first set of context-free questions focuses on the
customer and other stakeholders, the overall project goals and benefits. You might
ask:
The next set of questions enables you to gain a better understanding of the problem
and allows the customer to voice his or her perceptions about a solution:
• How would you characterize “good” output that would be generated by a
successful solution?
• What problem(s) will this solution address?
• Can you show me (or describe) the business environment in which the solution
will be used?
• Will special performance issues or constraints affect the way the solution is
approached?
The final set of questions focuses on the effectiveness of the communication activity
itself.
• Are you the right person to answer these questions? Are your answers “official”?