JYOTSNA
ASSISTANT PROFESSOR
CSE DEPARTMENT
INTRODUCTION TO SOFTWARE
ENGINEERING 1
INTRODUCTION TO SOFTWARE
ENGINEERING 2
Process of establishing the:
◦ services that the customer requires from a software system.
◦ constraints under which the software operates.
◦ constraints under which the software is developed.
INTRODUCTION TO SOFTWARE
ENGINEERING 3
Elicitation
Specification
Verification
Validation
Feasibility discovery documentation does it mak e sense?
is it exactly what is needed?
can it be done?
INTRODUCTION TO SOFTWARE
ENGINEERING 4
Sometimes called requirements elicitation or requirements discovery.
Involves technical staff working(developers) with customers(clients) to find out about the application domain, the services that the system should provide and the system’s operational constraints.
May also involve end-users, managers, domain experts, trade unions, etc. These are called stakeholders.
Sources of information may also include documentation, and the specifications of similar systems.
INTRODUCTION TO SOFTWARE
ENGINEERING 5
Requirements definition
◦ Customer-oriented descriptions of the system’s functions and constraints.
Requirements specification
◦ Detailed descriptions of the system’s functionality and constraints.
◦ Written as a contract between client and contractor.
◦ Written for contractors or developers.
INTRODUCTION TO SOFTWARE
ENGINEERING 6
Functional Requirements
Non-Functional Requirements
INTRODUCTION TO SOFTWARE
ENGINEERING 7
Describe the interactions between the system and its environment independent from implementation
A functional requirement defines a function of a system and its components.
Functional requirements may be calculations, technical details, data manipulation and processing and other specific functionality that define what a system is supposed to accomplish.
INTRODUCTION TO SOFTWARE
ENGINEERING 8
Non-functional requirements define system properties and constraints e.g., reliability, response time and storage requirements, quality etc.
Functional requirements are supported by nonfunctional requirements (also known as quality requirements), which impose constraints on the design or implementation (such as performance requirements, security, or reliability).
For Example:
◦
◦ The response time must be less than 1 second from 2:00am-2:01am and 3:00am-3:01am
INTRODUCTION TO SOFTWARE
ENGINEERING 9
INTRODUCTION TO SOFTWARE
ENGINEERING 10
In general, functional requirements define what a system is supposed to do whereas non-functional requirements define how a system is supposed to be.
Functional requirements are usually in the form of "system shall do <requirement>", while nonfunctional requirements are "system shall be
<requirement>“.
Non-functional requirements may be more critical than functional requirements. If these are not met, the system is useless.
INTRODUCTION TO SOFTWARE
ENGINEERING 11
A Functional Requirement is a requirement that, when satisfied, will allow the user to perform some kind of function. For example:
“The customer must place an order after registering”
INTRODUCTION TO SOFTWARE
ENGINEERING 12
A Non-Functional Requirement is usually some form of constraint or restriction that must be considered when designing the solution. For example:
“The customer must be able to access his/her account 24 hours a day, seven days a week.”
INTRODUCTION TO SOFTWARE
ENGINEERING 13
Imposed by the client or the environment in which the system will operate.
For Example:
◦ The implementation language must be Java.
◦ The project must be completed within 2 weeks.
o Project must be economic.
INTRODUCTION TO SOFTWARE
ENGINEERING 14
Interviews – One-on-one Interviews
– Group Interviews
Documentation via e-mail
Questionnaires and Surveys
INTRODUCTION TO SOFTWARE
ENGINEERING 15
In formal or informal interviewing, the RE team puts questions to stakeholders about the system that they use and the system to be developed.
There are two types of interview
◦ Closed interviews where a pre-defined set of questions are answered.
◦ Open interviews where there is no predefined agenda and a range of issues are explored with stakeholders.
INTRODUCTION TO SOFTWARE
ENGINEERING 16
Interviewers should be open-minded, willing to listen to stakeholders and should not have pre-conceived ideas about the requirements.
They should prompt the interviewee with a question or a proposal and should not simply expect them to respond to a question such as ‘what do you want’.
INTRODUCTION TO SOFTWARE
ENGINEERING 17
Customers don’t know what they really want.
Customers express requirements in their own terms.
They may have conflicting requirements.
Organisational factors may influence the system requirements.
INTRODUCTION TO SOFTWARE
ENGINEERING 18
Verification and Validation are independent procedures that are used together for checking that a product or software system meets specifications and that it fulfils its intended purpose.
INTRODUCTION TO SOFTWARE
ENGINEERING 19
Validation – “Are we building the right product?? ”
Checking a work product against the authorities that frame this particular product.
Validation is the process of evaluating software at the end of the development process to determine whether software meets the customer expectations and requirements.
Verification – “Are we building the product right??”
Checking a work product against some standards and conditions imposed on this type of product and the process of its development.
Verification is the process of evaluating products of a development phase to find out whether they meet the specified requirements.
INTRODUCTION TO SOFTWARE
ENGINEERING 20
Validation ensures that "you built the right thing". Verification ensures that "you built it right".
It is sometimes said that validation can be expressed by the query "Are you building the right thing?” and verification by "Are you building it right?".
"Building the right thing" refers back to the user's needs, while "building it right" checks that the specifications are correctly implemented by the system.
INTRODUCTION TO SOFTWARE
ENGINEERING 21
Validation process describes whether the software will be accepted by the user or not. It is computer based execution of program.
Verification process explains whether the outputs are according to inputs or not. It is human based checking of documents and files.
INTRODUCTION TO SOFTWARE
ENGINEERING 22
Verification Validation
Are we building the system right?
Verification is the process of evaluating products of a development phase to find out whether they meet the specified requirements.
Are we building the right system?
Validation is the process of evaluating software at the end of the development process to determine whether software meets the customer expectations and requirements.
The objective of Verification is to make sure that the product being develop is as per the requirements and design specifications
Following activities are involved in Verification: Reviews,
Meetings and Inspections.
The objective of Validation is to make sure that the product actually meet up the user’s requirements, and check whether the specifications were correct in the first place.
Following activities are involved in Validation: Testing like black box testing, white box testing, gray box testing etc.
Validation is carried out by testing team.
Verification is carried out by QA team to check whether implementation software is as per specification document or not .
Verification process explains whether the outputs are according to inputs or not.
Verification is carried out before the Validation.
Validation process describes whether the software is accepted by the user or not.
Validation activity is carried out just after the Verification.
Following items are evaluated during Verification: Plans,
Requirement Specifications, Design Specifications, Code, Test
Cases etc
Cost of errors caught in Verification is less than errors found in Validation.
It is basically manually checking the of documents and files like requirement specifications etc -
Following item is evaluated during Validation: Actual product or Software under test.
Cost of errors caught in Validation is more than errors found in Verification.
It is basically checking of developed program based on the requirement specifications documents & files. 23
An analysis and evaluation of a proposed project to determine if it (1) is technically feasible, (2) is feasible within the estimated cost , and (3) will be profitable .
Operational Feasibility
Economic Feasibility
Technical Feasibility
Schedule Feasibility
INTRODUCTION TO SOFTWARE
ENGINEERING 24
Goal is not to create great specifications but to create great products or great software .
Can you create a great product without a great specification?????
NO…..
Software Requirements Specification is basically an organization's understanding (in writing) of a customer or potential client's system requirements and dependencies at a particular point in time (usually) prior to any actual design or development work.
It functions as a blueprint for completing a project with as little cost as possible.
Includes:
◦ Problem definition (what is the problem)
◦ Solution Statement (how to solve the problem)
SRS contains functional and nonfunctional requirements
It doesn't offer design suggestions, possible solutions to technology or business issues, or any other information other than what the development team understands the customer's system requirements to be.
Customers
◦ To define the software requirements [in fact, what actually they want/need]
Suppliers/Developers
◦ To understand what customers want
[then to give solutions]
◦ Functionality
What is the software supposed to do?
◦ External interfaces
How does the software interact with people, the system’s hardware, other hardware, and other software?
◦ Performance
What is the speed, availability, response time, recovery time of various software functions
◦ Attributes
What are the portability, correctness, maintainability, security etc.
◦ Constraints imposed on an implementation
Are there any required standards, implementation language, policies for database integrity, resource limits, operating environment etc.
An SRS should be a) Correct b) Unambiguous c) Complete d) Consistent e) Ranked for importance and/or stability f) Verifiable g) Modifiable h) Traceable
Of course you want the specification to be correct.
No one writes a specification that they know is incorrect.
The discipline is keeping the specification up to date when you find things that are not correct.
An SRS is unambiguous if, and only if, every requirement stated therein has only one interpretation .
Find ambiguities fix them
Requirements in SRS must be
COMPLETE
The SRS should be consistent within itself and consistent to its reference documents.
Big NO to Contradiction
Example:
If you call an input "Start and Stop" in one place, don't call it "Start/Stop" in another.
Every requirement has its own priority.
Some may not be achievable.
It is useful to provide this information in the SRS.
Don't put in requirements like - "It should provide the user a fast response."
It is much better if you provide a quantitative requirement like: "Every key stroke should provide a user response within 100 milliseconds."
The logical, hierarchical structure of the SRS should facilitate any necessary modifications
Grouping related issues together and separating them from unrelated issues makes the SRS easier to modify.
In most organizations, it is sometimes useful to connect the requirements in the SRS to a higher level document.
Each requirement in an SRS must be uniquely identified to a source .
It provides feedback to the customer.
It decomposes the problem into component parts.
It serves as an input to the design specification.
It serves as a product validation check.
Goals (cont’d)
It provides feedback to the customer.
An SRS 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.
Therefore, the SRS should be written in natural language, in an unambiguous manner that may also include charts, tables, data flow diagrams, decision tables, and so on.
Goals (cont’d)
It decomposes the problem into component parts.
The simple act of writing down software requirements in a welldesigned format organizes information, places borders around the problem, solidifies ideas, and helps break down the problem into its component parts in an orderly fashion.
Goals (cont’d)
It serves as an input to the design specification.
As mentioned previously, the SRS serves as the parent document to subsequent documents, such as the software design specification and statement of work.
Therefore, the SRS must contain sufficient detail in the functional system requirements so that a design solution can be devised.
Goals (cont’d)
It serves as a product validation check.
The SRS also serves as the parent document for testing and validation strategies that will be applied to the requirements for verification.
1.
1.1
1.2
1.3
1.4
1.5
2.
2.1
2.2
2.3
2.4
2.5
2.6
2.7
3.
3.1
3.2
Introduction
Purpose
Document Conventions
Intended Audience and Reading Suggestions
Project Scope
References
Overall Description
Product Perspective
Product Features
User Classes and Characteristics
Operating Environment
Design and Implementation Constraints
User Documentation
Assumptions and Dependencies
System Features
System Feature 1
System Feature 2 (and so on)
4.
External Interface Requirements
4.1
User Interfaces
4.2
Hardware Interfaces
4.3
Software Interfaces
4.4
Communications Interfaces
5.
Other Nonfunctional Requirements
5.1
Performance Requirements
5.2
Safety Requirements
5.3
Security Requirements
5.4
Software Quality Attributes
6.
Other Requirements
Appendix A: Glossary
Appendix B: Analysis Models
Appendix C: Issues List