You are on page 1of 61

What is software?

Software=Program+
Documentation+ Operating
Procedures
What is software?
Software=Program+
Documentation+ Operating
Procedures

Computer software, or
simplysoftware, is that part of a
computer systemthat consists of
dataor computer instructions
Types of software
Application software, which is
software that uses the computer
system to perform special functions.
Applications software (also
calledend-userprograms) include
such things asdatabaseprograms,
word processors,Web browsersand
spreadsheets.
Types of software
System software, which is software
that directly operates the
computer hardware, to provide basic
functionality needed by users and
other software.
System software
1) Microsoft Windows
2) Linux
3) Unix
4) Mac OSX
5) DOS
6) BIOS Software
7) HD Sector Boot Software
8) Device Driver Software i.e Graphics Driver etc
9) Linker Software
10) Assembler and Compiler Software
Application software
1) Opera (Web Browser)
2) Microsoft Word (Word Processing)
3) Microsoft Excel (Spreadsheet software)
5) MySQL (Database Software)
6) Microsoft Powerpoint (Presentation
Software)
7) iTunes (Music / Sound Software)
8) VLC Media Player (Audio / Video Software )
9) World of Warcraft (Game Software)
10) Adobe Photoshop (Graphics Software)
What is software engineering?

Software engineering is an
engineering discipline which is
concerned with all aspects of
software production
What is software engineering?
At the first conference on software
engineering in 1968, Fritz Bauer
defined software engineering as The
establishment and use of sound
engineering principles in order to
obtain economically developed
software that is reliable and works
efficiently on real machines.
What is software engineering?

Stephen Schach defined the same as


A discipline whose aim is the
production of quality software,
software that is delivered on
time, within budget, and that
satisfies its requirements
Product and Process
Product: What is delivered to the
customer, is called a product. It may
include source code, specification
document, manuals, documentation etc.
Process: Process is the way in which we
produce software. It is the collection of
activities that leads to (a part of) a
product.
SDLC - Overview
Software Development Life Cycle (SDLC)
is a process used by the software
industry to design, develop and test high
quality softwares.
The SDLC aims to produce a high-quality
software that meets or exceeds customer
expectations, reaches completion within
times and cost estimates.
SDLC - Overview
SDLC Models
SDLC models are also referred as
Software Development Process Models".
Each process model follows a Series of
steps unique to its type to ensure success
in the process of software development.
Waterfall Model
Iterative Model
Spiral Model
SDLC - Waterfall Model
The Waterfall Model was the first Process
Model to be introduced.
It is also referred to as alinear-
sequential life cycle model.
It is very simple to understand and use.
In a waterfall model, each phase must be
completed before the next phase can begin
and there is no overlapping in the phases.
SDLC - Waterfall Model
SDLC - Waterfall Model
Requirement Gathering and
analysis All possible requirements
of the system to be developed are
captured in this phase and
documented in a requirement
specification document.
SDLC - Waterfall Model
System Design The requirement
specifications from first phase are
studied in this phase and the system
design is prepared.
This system design helps in
specifying hardware and system
requirements and helps in defining
the overall system architecture.
SDLC - Waterfall Model
Implementation With inputs from
the system design, the system is first
developed in small programs called
units, which are integrated in the
next phase.
Each unit is developed and tested for
its functionality, which is referred to
as Unit Testing.
SDLC - Waterfall Model
Integration and Testing All the
units developed in the
implementation phase are integrated
into a system after testing of each
unit.
Post integration the entire system is
tested for any faults and failures.
SDLC - Waterfall Model
Deployment of system Once the
functional and non-functional testing
is done; the product is deployed in
the customer environment or
released into the market.
SDLC - Waterfall Model
Maintenance There are some
issues which come up in the client
environment. To fix those issues,
patches are released.
Also to enhance the product some
better versions are released.
Maintenance is done to deliver these
changes in the customer environment.
Waterfall Model - Advantages
Simple and easy to understand and use
Easy to manage due to the rigidity of the
model. Each phase has specific deliverables
and a review process.
Phases are processed and completed one at
a time.
Works well for smaller projects where
requirements are very well understood.
Clearly defined stages.
Waterfall Model - Disadvantages
No working software is produced until late during
the life cycle.
High amounts of risk and uncertainty.
Not a good model for complex and object-oriented
projects.
Poor model for long and ongoing projects.
Not suitable for the projects where requirements
are at a moderate to high risk of changing. So, risk
and uncertainty is high with this process model.
It is difficult to measure progress within stages.
Cannot accommodate changing requirements.
Software Requirements
Specification (SRS)
Asoftware requirements
specification(SRS) is a description of a
software systemto be developed.
It lays outfunctionaland
non-functional requirements, and may include
a set ofuse casesthat describe user
interactions that the software must provide.
Software requirements specification
establishes the basis for an agreement
between customers and contractors or
suppliers
Software Requirements
Specification (SRS)
Software Testing
Software testing is the process of
evaluation a software item to detect
differences between given input and
expected output.
Testing assesses the quality of the product.
Software testing is a process that should
be done during the development process.
In other words software testing is a
verification and validation process.
Verification
Verification is the process to make
sure the product satisfies the
conditions imposed at the start of the
development phase.
In other words, to make sure the
product behaves the way we want it
to.
Validation
Validation is the process to make
sure the product satisfies the
specified requirements at the end of
the development phase.
In other words, to make sure the
product is built as per customer
requirements.
Basics of software testing

Blackbox Testing
Black box testing is a testing
technique that ignores the internal
mechanism of the system and
focuses on the output generated
against any input and execution of
the system. It is also called
functional testing.
Basics of software testing
WhiteboxTesting
White box testing is a testing technique
that takes into account the internal
mechanism of a system. It is also called
structural testing and glass box testing.
Black box testing is often used for
validation and white box testing is
often used for verification.
Types of testing
Unit Testing
Integration Testing
Functional Testing
System Testing
Stress Testing
Performance Testing
Usability Testing
Acceptance Testing
Regression Testing
Beta Testing
Unit Testing
Unit testing is the testing of an
individual unit or group of related
units.
It falls under the class of white box
testing.
It is often done by the programmer to
test that the unit he/she has
implemented is producing expected
output against given input.
Integration Testing
Integration testing is testing in which a
group of components are combined to
produce output.
Also, the interaction between software
and hardware is tested in integration
testing if software and hardware
components have any relation.
It may fall under both white box testing
and black box testing.
Functional Testing
Functional testing is the testing to
ensure that the specified
functionality required in the system
requirements works.
It falls under the class of black box
testing.
System Testing
System testing is the testing to ensure
that by putting the software in
different environments (e.g.,
Operating Systems) it still works.
System testing is done with full
system implementation and
environment.
It falls under the class of black box
testing.
Stress Testing
Stress testing is the testing to
evaluate how system behaves under
unfavorable conditions.
Testing is conducted at beyond limits
of the specifications.
It falls under the class of black box
testing.
Performance Testing
Performance testing is the testing to
assess the speed and effectiveness
of the system and to make sure it is
generating results within a specified
time as in performance
requirements.
It falls under the class of black box
testing.
Usability Testing
Usability testing is performed to the
perspective of the client, to evaluate
how the GUI is user-friendly?
How easily can the client learn?
After learning how to use, how
proficiently can the client perform?
How pleasing is it to use its design?
This falls under the class of black box
testing.
Acceptance Testing
Acceptance testing is often done by
the customer to ensure that the
delivered product meets the
requirements and works as the
customer expected.
It falls under the class of black box
testing.
Regression Testing
Regression testing is the testing after
modification of a system, component,
or a group of related units to ensure
that the modification is working
correctly and is not damaging or
imposing other modules to produce
unexpected results.
It falls under the class of black box
testing.
Beta Testing
Beta testing is the testing which is
done by end users, a team outside
development, or publicly releasing full
pre-version of the product which is
known as beta version.
The aim of beta testing is to cover
unexpected errors.
It falls under the class of black box
testing.
Requirement Engineering
Produces one large document written
in natural language contains a
description of what the system will
do without describing how it will do
it.
Requirement Engineering
Requirement Engineering
Requirement Engineering is the
disciplined application of proven
principles, methods, tools, and
notations to describe a proposed
systems intended behavior and
its associated constraints.
Types of Requirements
Functional requirements describe
what the software has to do. They
are often called product features.

Non Functional requirements are


mostly quality requirements. That
stipulate how well the software does,
what it has to do.
Requirements Elicitation
Requirements Elicitationis the
practice of collecting the
requirements of a system from users,
customers and other stakeholders.

The practice is also sometimes


referred to as "requirement
gathering".
Requirements Elicitation
Steps
1. Identify stakeholders
2. List out requirements
3. Degree of importance to each
requirement.
Requirements Analysis
We analyze, refine and scrutinize
requirements to make consistent &
unambiguous requirements.
Requirements Analysis
Requirements Analysis
Requirements Documentation

This is the way of representing


requirements in a consistent format.
Nature of SRS
SRS Should
-- Correctly define all requirements
-- not describe any design details
-- not impose any additional constraints
Characteristics of a good SRS
An SRS Should be
Correct
Unambiguous
Complete
Consistent
Characteristics of SRS
Correct
An SRS is correct if and only if every
requirement stated there in is one
that the software shall meet.
Unambiguous
An SRS is unambiguous if and only if,
every requirement stated therein has
only one interpretation.
Characteristics of SRS
Complete
An SRS is complete if and only if, it includes
the following elements
(i) All significant requirements, whether
related to functionality, performance, design
constraints, attributes or external interfaces.
(ii) Responses to both valid & invalid inputs.
(iii) Full Label and references to all figures,
tables and diagrams in the SRS and
definition of all terms and units of measure.
Characteristics of SRS
Consistent
An SRS is consistent if and only if, no
subset of individual requirements
described in it conflict.
Requirements Review Process
Requirements Review Process

Review Checklists
Redundancy
Completeness
Ambiguity
Consistency
Organization
Traceability
Software Quality Assurance
The function of software quality
that assures that the standards,
processes, and procedures are
appropriate for the project and are
correctly implemented.
Focuses on processes and
procedures
Process-oriented activities.
Preventive activities.
Software Quality Control
The function of software quality
that checks that the project follows
its standards, processes, and
procedures, and that the project
produces the required internal and
external (deliverable) products.
Focuses on actual testing
Product-oriented activities.
It is a corrective process.
Software Quality Metrics
A definition of software quality
metrics is:-

A measure of some property of a


piece of software or its
specifications.
Software Quality Metrics
Some common software metrics (discussed later) are:-
Source lines of code.
Cyclomatic complexity, is used to measure code complexity.
Function point analysis (FPA), is used to measure the size
(functions) of software.
Bugs per lines of code.
Code coverage, measures the code lines that are executed
for a given set of software tests.
Cohesion, measures how well the source code in a given
module work together to provide a single function.
Coupling, measures how well two software components
aredatarelated, i.e. how independent they are.

You might also like