Upload
clyde-bernard-douglas
View
316
Download
6
Tags:
Embed Size (px)
Citation preview
Requirements Engineering
Requirement: A function, constraint or other property that the system must provide to fill the needs of the system’s intended user(s).
Engineering: implies that systematic and repeatable techniques should be used
Requirement Engineering means that requirements for a product are defined, managed and tested systematically
Requirements Engineering
The basic goal of requirements phase in the SDLC is to produce the Requirements Specification Document(RSD) or Software Requirement Specification (SRS) which describes the complete external behavior of the proposed software system. The process of developing this document is Requirements Engineering.
Requirements Engineering can be defined as
“The systematic process of documenting requirements through an interactive co-operative process of analyzing the problem, documenting the resulting observations in a variety of representation format and checking the accuracy of the understanding gained.”
“ The systematic use of proven principles, techniques, tools and languages for the cost effective analysis, documentation and ongoing evolution of user needs and the specification of the external behavior of the system in order to satisfy these needs.”
Input to this activity of requirements engineering are requirements which are informal and fuzzy and output is clear, well defined and consistent requirements written in formal notation RSD or SRS as shown -
Requirements Engineering
Informal and Fuzzy
Requirement
RequirementsEngineering
Well Defined Complete and Consistent Requirements
It is essential that the software engineering team understand the requirements of a problem before the team tries to solve the problem.
RE is software engineering actions that start with communication activity and continues into the modeling activity.
RE establishes a solid base for design and construction. Without it, resulting software has a high probability of not meeting customer needs.
Requirements Engineering (RE)
The requirements engineering is the most crucial and most important activity in the software development life cycle because the errors introduced at this stage are the most expensive errors requiring lot of rework if detected late in the software life cycle. The SRS document produced as an output of this activity is used by successive stages of life cycle i.e. for generating design document for coding, for generating test cases in software testing and also plays a lead role in acceptance testing.
Requirements Engineering (RE)
Requirement
According to IEEE , a requirement is defined asi.a condition or capability needed by a user to solve a problem or to achieve an objective.
ii.A condition or capability that must be met or possessed by a system or system component to satisfy a contract, standard, specification or other formally imposed document;
iii.A document representation of a condition or capability as in (i) and (ii).
Characteristics of a Good Requirement Clear and Unambiguous
standard structure has only one possible interpretation Not more than one requirement in one sentence
Correct A requirement contributes to a real need
Understandable A reader can easily understand the meaning of the
requirement Verifiable
A requirement can be tested Complete
Contains all required information Consistent
Does not conflict with other requirements Traceable
Has unique identity, cannot be broken into parts
Requirements readersClient managersSystem end-usersClient engineersContractor managersSystem architects
System end-usersClient engineersSystem architectsSoftware developers
Client engineers (perhaps)System architectsSoftware developers
User requirements
System requirements
Software designspecification
Statements in natural language + diagrams
System’s functions, services and operational constraints
Detailed software description
Types of Requirements
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.
Non-functional requirements constraints on the services or functions offered by
the system such as timing constraints, constraints on the development process, standards, etc.
Domain requirements Requirements that come from the application domain
of the system and that reflect characteristics of that domain
Functional RequirementsAs the name implies, functional requirements
focus on the functionality of the software components that build the system.
High level FR are expressed in terms of:- Inputs Outputs Processing input data in some way
In simple words functional requirements are the services which the end users expect the final product to provide.
Documenting Functional Requirements Steps:-
Identify the set of services supported by the system
Specify each of the services or functionality by identifying the input data, output data and processing done on input in order to get the output.
Identify all the sub requirements for a high level requirement corresponding to the different user interactions
Non-functional requirements (NFRs)
NFRs are the constraints imposed on the system and deal with issues like maintainability, security, performance , reliability, probability, scalability, response time and storage requirements.
Non-functional requirements are also called as Quality attributes Constraints Goals Non-behavioral requirements
Non-functional requirements may be more critical than functional requirements. If these are not met, the system is useless
Non-functional classifications Product requirements
Requirements which specify that the delivered product must behave in a particular way e.g. execution speed, reliability, etc.
Organisational requirements Requirements which are a consequence of
organisational 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.
Non-functional requirement types
Performancerequirements
Spacerequirements
Usabilityrequirements
Efficiencyrequirements
Reliabilityrequirements
Portabilityrequirements
Interoperabilityrequirements
Ethicalrequirements
Legislativerequirements
Implementationrequirements
Standardsrequirements
Deliveryrequirements
Safetyrequirements
Privacyrequirements
Productrequirements
Organizationalrequirements
Externalrequirements
Non-functionalrequirements
Domain requirements Derived from the application domain and
describe system characteristics and features that reflect the domain
May be new functional requirements, constraints on existing requirements or define specific computations
For a satisfactory working of the system these are mandatory requirements to be implemented or satisfied.
Domain requirements problems
Understandability Requirements are expressed in the language
of the application domain. This is often not 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
Why is Getting Good Requirements Hard?
Stakeholders don’t know what they really want.
Stakeholders express requirements in their own terms.
Different stakeholders may have conflicting requirements.
Organisational and political factors may influence the system requirements.
The requirements change during the RE process. New stakeholders may emerge and the business environment change.
RequirementsManagement
Validation
Inception
Elicitation
Elaboration
Negotiation
Specification
Requirements Engineering Process
Requirements Engineering Process Inception —Establish a basic understanding of the problem
and the nature of the solution. Elicitation —Draw out the requirements from stakeholders. Elaboration (Highly structured)—Create an analysis model
that represents information, functional, and behavioral aspects of the requirements.
Negotiation—Agree on a deliverable system that is realistic for developers and customers.
Specification—Describe the requirements formally or informally.
Validation —Review the requirement specification for errors, ambiguities, omissions, and conflicts.
Requirements management — Manage changing requirements.
Inception
Inception— Ask “context-free” questions that establish … Basic understanding of the problem The people who want a solution The nature of the solution that is desired,
and The effectiveness of preliminary
communication and collaboration between the customer and the developer
Elicitation Elicitation - elicit requirements from customers,
users and others. Find out from customers, users and others
what the product objectives are what is to be done how the product fits into business needs,
and how the product is used on a day to day
basis Also called as Requirement Analysis.
Why Requirement elicitation is difficult?
Problems of scope: The boundary of the system is ill-defined. Customers/users specify unnecessary technical detail that may confuse
rather than clarify objectives. Problems of understanding:
Customers are not completely sure of what is needed. Customers have a poor understanding of the capabilities and limitations
of the computing environment. Customers don’t have a full understanding of their problem domain. Customers have trouble communicating needs to the system engineer. Customers omit detail that is believed to be obvious. Customers specify requirements that conflict with other requirements. Customers specify requirements that are ambiguous or not able to test.
Problems of volatility: Requirement change over time.
Tasks of Requirements Elicitation Fact Finding – studies the organization in which the
final system will be installed and defines the scope of the proposed system
Collecting Requirements – captures information from different users viewpoint
Evaluation – focuses on identifying inconsistencies in the requirements collected
Prioritization – prioritizes the requirements depending upon cost, user needs, ease of development etc.
Consolidation – consolidates the requirements from the information gained in a way that can be analyzed further and ensures that they are consistent with the goals of the organization.
Requirement Eliciting Techniques
Techniques for eliciting requirement:1. Interviews2. Brainstorming3. Task Analysis4. Form Analysis5. User Scenarios and use case based requirement
elicitation6. Delphi Technique7. Domain Analysis8. Joint Application Design (JAD)9. Facilitated Application Specific Technique (FAST)10. Prototyping
1. Interviews May take the form of questionnaire, open ended
interviews and focus groups. Questions must be created carefully so as to extract
maximum knowledge about true requirements. Interviews can be conducted on phone, personally or
even over the internet. Steps:
create the questions select the interviewers plan contacts conduct the interviews close the meeting determine where to go next
2. Brainstorming Is a group technique to promote creative
thinking and can be used during requirements elicitation process to generate new ideas and solve problems.
Session consists of a group of people who are free to say whatever comes to their mind irrespective of their relevance.
People are not criticized for the ideas. Session normally last for two to three hours.
2. Brainstorming Session is attended by a group of 5 to 10 people.
Three types of participants with different roles: Leader: lead the brainstorming session by encouraging the
participants to come up with new ideas and helping the scribe.
Scribe: capture the ideas, write down each idea briefly in such a way that it is visible to all the participants present in the session. He can use tools like flip charts, overhead projectors and white boards.
Participants: produce new ideas.
3. Task Analysis Is a technique of decomposing the problem
domain into a hierarchy of tasks and subtasks performed by the users.
Eg: Donate Blood Donor approaches the blood bank Staff takes the sample of the blood Staff checks for any infection in the blood and
the blood group If found OK, takes the blood and stores it Staff updates the quantity of the blood group in
the inventory Blood bank issues a card to the donor for later
use
4. Form Analysis
Forms play an important role in any organization and contain lot of meaningful information about data objects of the domain.
Faculty Registration Form
Name :Address : Position : Department :Date of Joining :Salary :
Forms are used as an input to the process of constructing ER model.
Faculty DepartmentWorks
in
Name Address
Position
ER Diagram based on previous form
4. Form Analysis
5. User Scenario and Use case Based Requirements Elicitation Technique for capturing requirements from users point
of view. This technique is based on notion of scenario.
Use case scenarios are unstructured descriptions of the user requirements.
Use cases are structured descriptions of the user requirements. It is a narrative text which describes the sequence of events from users’ perspective.
Use case diagrams are graphical representation to show the system at different levels of abstraction.
5. User Scenario and Use case Based Requirements Elicitation
Each scenario is described from the point-of-view of an “actor”—a person or device that interacts with the software in some way.
Use case scenario is a story about how actor interacts with the system.
Once actors are identified, then this information is used to draw Use Case Diagrams. These diagrams are supported by activity diagrams to show workflow view of activities.
5. User Scenario and Use case Based Requirements Elicitation Benefits of Use case models:
1. Easily understandable by managers, developers, users and other stakeholders of the project.
2. Supports validation and implementation testing.
3. Supports traceability
4. Easily converted into object models
5. Describes the existing system under development accurately.
6. Delphi Technique In delphi technique session, participants
are made to write the requirements.
These requirements are then exchanged among participants who give their comments to get a revised set of requirements.
This process is repeated till a final consensus is reached.
7. Domain Analysis This technique focus on reuse of requirements from similar
domain. It is the process of identifying, collecting, organizing and
representing the relevant information in a domain. In this technique, within a domain, existing systems are
studied and a generic domain model which is an abstraction of main features of applications of that domain is produced.
This is just like representing the requirements at another higher level of abstraction called meta level.
These requirements at meta level can then be modified to fit the problem domain.
This technique will not give good results for immature or evolving domains.
Steps of Domain Analysis
① Selection of reusable requirements.② Adaptation of requirements selected in (1) for
incorporating in the new model.
Existing System 1 Existing System 2 Existing System 3
META-SYSTEM REQUIREMENT SPECIFICATIONS
New System Requirement
Domain Analysis
Generates
8. Joint Application Design (JAD) JAD is a registered trademark of IBM and was developed
by IBM in 1970's. It is also a type of extremely effective, structured and
disciplined session because it is represented by people who are well informed and knowledgeable. They are: users customers functional experts system experts stakeholders of the project
It can last upto three days and can even produce high level software models like DFDs, Use case diagrams etc. instead of documenting only ideas.
JAD sessions are attended by: Sponsor: represents the top management and
always available to resolve any issue which has come up during the sessions. He may not attend all the sessions.
Facilitator: ensures that sessions are carried out smoothly and all participants attend the session with an open mind.
Developers: inform the participants in the meeting about the latest tools and technology that can be used to meet the requirements.
Scribe: capture and record the ideas properly. Users: explain their requirements.
8. Joint Application Design (JAD)
9. Facilitated Application Specification Technique (FAST)
FAST was developed specifically for collecting requirements and is similar to brainstorming and JAD.
Attended by developers & customers/end users.
The meeting is controlled by facilitator and an informal agenda is published.
Before starting of session, list of objects, functions and constraints is made and is presented in the session for discussion.
Participants agree not to debate. After discussion some of the entries from the list is eliminated and new entries are also added to the list. This process is continued till a consensus is reached.
Following activities take place additionally: Identification of external data objects. Detailed description of software functionality. Understanding the behavior of software. Establishing the interface characteristics. Describing the design constraints.
9. Facilitated Application Specification Technique (FAST)
10. Software Prototype
Prototype constructed for customer and developer assessment. In some circumstances construction of prototype is require in
beginning of analysis. (To derive requirement effectively)Selecting Prototype Approach1. Close ended (Throwaway Approach)2. Open ended (Evolutionary Approach)Close Ended – It serves as a rough demonstration of requirement.
It is then discarded, and the software is engineered using a different paradigm.
Open Ended - uses the prototype as the first part of an analysis activity that will be continued into design and construction. The prototype of the software is the first evolution of the finished system.
Approaches to prototyping
Evolutionaryprototyping
Throw-awayPrototyping
Deliveredsystem
Executable Prototype +System Specification
OutlineRequirements
Evolutionary prototyping
Build prototypesystem
Develop abstractspecification
Use prototypesystem
Deliversystem
Systemadequate?
YES
N
Evolutionary prototyping advantages
Accelerated delivery of the system Rapid delivery and deployment are
sometimes more important than functionality or long-term software maintainability
User engagement with the system Not only is the system more likely to
meet user requirements, they are more likely to commit to the use of the system
Evolutionary prototyping problems
Management problems Existing management processes assume a
waterfall model of development Specialist skills are required which may not be
available in all development teams
Maintenance problems Continual change tends to corrupt system
structure so long-term maintenance is expensive
Contractual problems Due to cost or time line agreed
Throw-away prototyping
Outlinerequirements
Developprototype
Evaluateprototype
Specifysystem
Developsoftware
Validatesystem
Deliveredsoftwaresystem
Reusablecomponents
Throw-away prototyping Used to reduce requirements risk The prototype is developed from an initial
specification, delivered for experiment then discarded
The throw-away prototype should NOT be considered as a final system Some system characteristics may have been
left out There is no specification for long-term
maintenance The system will be poorly structured and
difficult to maintain
Elaboration Focuses on developing a refined technical model of
software functions, features, and constraints using the information obtained during inception and elicitation
Create an analysis model that identifies data, function and behavioral requirements.
It is driven by the creation and refinement of user scenarios that describe how the end-user will interact with the system.
Each event parsed into extracted. End result defines informational, functional and
behavioral domain of the problem
Negotiation Negotiation - agree on a deliverable system that is
realistic for developers and customers
Requirements are categorized and organized into subsets
Relations among requirements identified Requirements reviewed for correctness Requirements prioritized based on customer needs Negotiation about requirements, project cost and
project timeline. There should be no winner and no loser in effective
negotiation.
Specification OR Documentation Specification – Different things to different people. It can be –
Written Document A set of graphical models, A formal mathematical models Collection of usage scenario. A prototype Combination of above.
The Formality and format of a specification varies with the size and the complexity of the software to be built.
For large systems, written document, language descriptions, and graphical models may be the best approach.
For small systems or products, usage scenarios
Validation Requirements Validation - formal technical
review mechanism that looks for Errors in content or interpretation Areas where clarification may be required Missing information Inconsistencies (a major problem when
large products or systems are engineered) Conflicting or unrealistic (unachievable)
requirements.
Requirement Management Set of activities that help project team to identify, control, and track requirements and changes as project proceeds Requirements begin with identification. Each requirement is assigned a unique identifier. Once requirement have been identified, traceability table are developed.
Traceability Table: Features traceability table - shows how requirements relate to customer observable featuresSource traceability table - identifies source of each requirementDependency traceability table - indicate relations among requirementsSubsystem traceability table - requirements categorized by subsystemInterface traceability table - shows requirement relations to internal and external interfaces
It will help to track, if change in one requirement will affect different aspects of the system.
Software Requirement Specification (SRS) or Requirement Specification Document
SRS document is generated as output of requirement analysis.
A SRS is a document which contains the complete description of software without talking much about implementation details. It is a set of precisely stated properties and constraints which final product must satisfy.
Clearly and accurately describes each of the essential requirements (functions, performance, design constraints, and quality attributes) of the system / software and its external interfaces
Defines the scope and boundaries of the system / software
Software Requirement Specification (SRS) or Requirement Specification Document
Each requirement must be described in such a way that it is feasible and objectively verifiable by a prescribed method (e.g., by inspection, demonstration, analysis, or test)
Basis for contractual agreements between contractors or suppliers and customers
Specifications are intended to a diverse audience Customers and users for validation, contract, ... Systems (requirements) analysts Developers, programmers to implement the system Testers to check that the requirements have been met Project Managers to measure and control the project
Components of SRS Document Functional Requirements Non - Functional Requirements Static Requirements Execution Constraints eg. Response time, throughput
time Standards to be followed Security requirements Company Policies Interface with other external agents ie. persons, software
or hardware
1. Feedback to customer : It is the customer’s assurance that the development organization understands the issues or problems to be solved and the software behavior necessary to address those problems.
2. Problem Decomposition: SRS helps to break down the problem into its component parts in an orderly fashion.
3. Input to Design Specification : SRS contains sufficient detail in the functional system requirements so that a design solution can be devised.
4. Product Validation Check: SRS serves as the parent document for testing and validation strategies that will be applied to the requirements for verification.
GOALS OF SRS DOCUMENT
Characteristics of an SRS
1. Correct2. Complete3. Unambiguous4. Consistent5. Verifiable6. Traceable7. Modifiable8. Ranked for importance and/or stability9. Design Independent10.Testability11.Understandable by Customer12.Right level of abstraction
Characteristics…
Correctness Each requirement accurately represents some
desired feature in the final system Completeness
All desired features/characteristics specified Hardest to satisfy Completeness and correctness strongly related
Unambiguous Each requirement has exactly one meaning Without this errors will creep in Important as natural languages often used
Characteristics…
Verifiability There must exist a cost effective way of checking if
software satisfies requirements Consistent
two requirements don’t contradict each other Modifiable
Any necessary change can be made easily while preserving completeness and consistency
Ranked for importance/stability Needed for prioritizing in construction To reduce risks due to changing requirements
Right Level of Abstraction Details in SRS must be represented at right level of
abstraction
Characteristics…
Traceable The origin of the requirement, and how the
requirement relates to software elements can be determined
Design Independent Provision for multiple design alternatives
Testability It should be easy to generate test cases & test plans
from the document Understandable By Customer
Avoid using formal notations to represent requirements
IEEE Std 830-1998 IEEE Recommended Practice for Software Requirements Specifications -Description Abstract: The content and qualities of a good
software requirements specification (SRS) are described and several sample SRS outlines are presented. This recommended practice is aimed at specifying requirements of software to be developed but also can be applied to assist in the selection of in-house and commercial software products. Guidelines for compliance with 12207.1-1997 are also provided.
Keywords: contract, customer, prototyping, software requirements specification, supplier, system requirements specifications
IEEE 830-1998 Standard
Title of Standard « IEEE Recommended Practice for
Software Requirements Specifications »
Describes the content and qualities of a good software requirements specification (SRS)
Presents several sample SRS outlines
IEEE 830-1998 Standard – Objectives Help software customers to accurately describe what
they wish to obtain
Help software suppliers to understand exactly what the customer wants
Help participants to: Develop a template (format and content) for the
software requirements specification (SRS) in their own organizations
Develop additional documents such as SRS quality checklists or an SRS writer’s handbook
IEEE 830-1998 Standard – Benefits Establish the basis for agreement between the
customers and the suppliers on what the software product is to do
Reduce the development effort Forced to consider requirements early reduces
later redesign, recoding, retesting Provide a basis for realistic estimates of costs and
schedules Provide a basis for validation and verification Facilitate transfer of the software product to new users
or new machines Serve as a basis for enhancement requests
IEEE 830-1998 Standard– Considerations Section 4 of IEEE 830 (how to produce a good SRS)
Nature (goals) of SRS Functionality, interfaces, performance, qualities, design constraints
Environment of the SRS Where does it fit in the overall project hierarchy
Characteristics of a good SRS Generalization of the characteristics of good requirements to the
document Evolution of the SRS
Implies a change management process Prototyping
Helps elicit software requirements and reach closure on the SRS Including design and project requirements in the SRS
Focus on external behavior and the product, not the design and the production process (describe in a separate document)
IEEE 830-1998 Standard – Structure of the SRS
Section 5 of IEEE 830
Contents of SRS Introduction General description of the software
product Specific requirements (detailed) Additional information such as
appendixes and index, if necessary
Title Table of Contents 1. Introduction
1.1 Purpose 1.2 Scope 1.3 Definitions. Acronyms, and Abbreviations 1.4 References 1.5 Overview
2. Overall Description 3. Specific Requirements 4. Other Requirements Appendices
IEEE 830-1998 Standard – Section 1 of SRS
•Describe purpose of this SRS•Describe intended audience
•Identify the software product•Enumerate what the system will and will not do•Describe user classes and benefits for each
•Define the vocabulary of the SRS (may reference appendix)
•List all referenced documents including sources(e.g., Use Case Model and Problem Statement; Experts in the field)
•Describe the content of the rest of the SRS•Describe how the SRS is organized
IEEE 830-1998 Standard – Section 2 of SRS
Title Table of Contents 1. Introduction 2. Overall Description
2.1 Product Perspective 2.2 Product Functions 2.3 User Characteristics 2.4 Constraints 2.5 Assumptions and Dependencies
3. Specific Requirements 4. Other Requirements Appendices
•Present the business case and operational concept of the system•Describe how the proposed system fits into the business context•Describe external interfaces: system, user, hardware, software, communication•Describe constraints: memory, operational, site adaptation
•Describe and justify technical skills and capabilities of each user class
•Summarize the major functional capabilities•Include the Use Case Diagram and supporting narrative(identify actors and use cases)•Include Data Flow Diagram if appropriate
•Describe other constraints that will limit developer’s options; e.g., regulatory policies; target platform, database, network software and protocols, development standards requirements
IEEE 830-1998 Standard – Section 3 of SRS
… 1. Introduction 2. Overall Description 3. Specific Requirements
3.1 External Interfaces 3.2 Functions 3.3 Performance Requirements 3.4 Logical Database Requirements 3.5 Design Constraints 3.6 Software System Quality Attributes 3.7 Object Oriented Models
4. Other Requirements Appendices
Specify software requirements in sufficient detail to enable designers to design a system to satisfy those requirements and testers to verify requirements
State requirements that are externally perceivable by users, operators, or externally connected systems
Requirements should include, at a minimum, a description of every input (stimulus) into the system, every output (response) from the system, and all functions performed by the system in response to an input or in support of an output
(a) Requirements should have characteristics of high quality requirements(b) Requirements should be cross-referenced to their source.(c) Requirements should be uniquely identifiable(d) Requirements should be organized to maximize readability
… 1. Introduction 2. Overall Description 3. Specific Requirements
3.1 External Interfaces 3.2 Functions 3.3 Performance Requirements 3.4 Logical Database Requirements 3.5 Design Constraints 3.6 Software System Quality Attributes 3.7 Object Oriented Models
4. Other Requirements Appendices
IEEE 830-1998 Standard – Section 3 of SRS
•Detail all inputs and outputs(complement, not duplicate, information presented in section 2)•Examples: GUI screens, file formats
•Include detailed specifications of each use case, including collaboration and other diagrams useful for this purpose
•The main body of requirements organized in a variety of possible ways:a) Architecture Specificationb) Class Diagramc) State and Collaboration Diagramsd) Activity Diagram (concurrent/distributed)
•Include:a) Types of information usedb) Data entities and their relationships
•Should include:a) Standards complianceb) Accounting & Auditing procedures
IEEE 830-1998 Standard – Section 4 of SRS Title Table of Contents 1. Introduction 2. Overall Description 3. Specific Requirements 4. Other Requirements
Apportioning of requirements Database Schedule & budgets
Appendices
give the details of requirements which are given to the third party for development.
describes the details of the database which will be developed as a part of the project.
describes the detailed project plan and schedule and budget estimate.
Requirements vs. Design
Requirements Design
Describe what will be delivered
Describe how it will be done
Primary goal of analysis:UNDERSTANDING
Primary goal of design:OPTIMIZATION
There is more than one solution
There is only one (final) solution
Customer interested Customer not interested (Most of the time) except for external