You are on page 1of 72

HEWAD UNIVERSITY

Software Quality Assurance ‫هیــــواد پوهنــتون‬

Chapter 0
Software Engineering

Yousuf Hotak

Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

In the end of this Chapter

• What is software?

• What is software engineering?

• Software crisis.

• Exploratory style.

• Emerging software engineering technique.


Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

What is software???
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Where do you see software???


Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Why software???
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

What is software???

• Software, instructions that tell a computer what to do.

• Software is the programs for a computer or the program


material for an electronic device which make it run.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Where do you see software???


Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Where do you see software???


Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Where do you see software???


Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Where do you see software???


Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Where do you see software???


Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Where do you see software???


Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Where do you see software???


Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Why software???

• Software helps us accomplish things faster, easier, or in a more


delightful manner.

An example of software is Excel or Word etc.


Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

What is Software Engineering

• An engineering approach to develop software.

i.e. Database (for school or university), Website (for hospital),


Games, Mobile applications etc.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

What is Software Engineering

• Making small software is an easy task. Like making a small wall


in civil engineering. Very simple, even non-engineers can make
it, made with brooks, has paint etc.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

What is Software Engineering

• What about bigger software? It is mostly like making bigger


complexed buildings with many floors.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

What is Software Engineering

• To make complex software (like, Facebook, Canvas, Banking


databases etc.) programming is not enough we need to get
step into software engineering.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

What is Software Engineering

• IEEE Definition:
• Software Engineering is the application of a systematic, disciplined,
quantifiable‫ قــابـلاـندازـهـ ګ یرـی‬approach to the development, operation and
maintenance of software.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Software Crisis

• Software mostly:
• Fail to meet user requirement. (What user requires is not made.)

• Expensive. (Once software is made, changes will be so costly.)

• Often delivered late. (Software not submit on time.)

• Difficult to alter, debug and enhance. (Difficult to bring changes.)


Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Software Crisis
Standish Group Report on software

Successful
28%

Delayed or cost
overrun
49%

Cancelled
23%
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Software Crisis Factors

• Larger problems.

• Poor project management.

• Lack of trained software engineers. (Important point)


Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Exploratory Software Development

• Early programmers used exploratory style.


• Also called build and fix style.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Exploratory Software Development

• Problem statement was given.

• Code was written.

• Bugs were fixed.


Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Exploratory Style Diagram

Fix

Initial coding Test

Do Until Done
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Exploratory Software Development

• Exploratory style can successfully be used for developing very small


programs.

• E.S. is not working for big projects.

• Quality will be poor.

• Cost, time and effort is growing compared to software engineering


approach.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Exploratory Software Development

• Small programs with a couple of variables are not complex


programs.

• As the numbers of variables increases in bigger programs,


complexity increases.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Why Study Software Engineering?

• To acquire skills to develop large programs.

• Handling growth in complexity.

• Systematic technique based on abstraction (modelling) and


decomposition.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Why Study Software Engineering?

• Learn systematic techniques of specification, design, user


interface development, testing, maintenance etc.

• To acquire skills to make higher productivity and better


quality program.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Software Services

• Software service is an umbrella term, includes:


• Software Customization (Making Software).

• Software Testing. Software Software


Customization Testing
• Software Maintenance.

Software
Maintenance
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Life Cycle Models


Many life cycle models have been proposed:

• Waterfall
• V Model
• Evolutionary Traditional Models
• Prototyping
• Spiral Model
• Agile Models
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Life Cycle Models


• A software process is a series of stages that a software
product undergoes during its lifetime.
• The stages are as below:
• Feasibility Study.
• Requirement Analysis and Specification.
• Design.
• Coding.
• Testing.
• Maintenance.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Software Life Cycle


Conceptualize

Retire Specify

Maintain Design

Deliver Code

Test
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Classical Waterfall Model


• Classical waterfall model divides life cycle into following
phases:
• Feasibility Study.
• Requirement Analysis and Specification.
• Design.
• Coding and Unit Testing.
• Integration and System Testing.
• Maintenance.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Classical Waterfall Model


• Why do we call it waterfall though?
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Classical Waterfall Model

Feasibility Study

Requirement
Analysis

Design

Coding

Testing

Maintenance
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Classical Waterfall Model


• Relative efforts for phases:
• Phases between feasibility study and testing is called
development phases.
• Among all life cycle phases:
• Maintenance phase consumes maximum effort.
• Among development phases:
• Testing phase consumes maximum effort.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Relative Effort Diagram

Requirement

Design

Coding

Test

Maintenance

0 10 20 30 40 50 60 70
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Classical Waterfall Model

Feasibility Study

Requirement
Analysis

Design

Coding

Testing

Maintenance
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Feasibility Study
Feasibility Dimensions:
• Economic Feasibility:
• The software must be economically feasible. Also called cost/benefit feasibility.
• Schedule Feasibility:
• The timing of delivery must be determined as well.
• Technical Feasibility:
• The team members must be technically expert.
• Like, If we need a connection of satellite in our program, someone must be able to
connect it to us.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Steps of Feasibility Study


• Roughly understand what customer wants:
• What sort of data needs to be input to the system.
• Which processes needed to the data to be input.
• What output data to be produced by the system.
• Various constraints/limitations on the behavior of the system.
• Like, taking backup, input the data from various places etc.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Classical Waterfall Model

Feasibility Study

Requirement
Analysis

Design

Coding

Testing

Maintenance
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Requirement Analysis and Specification


• Aim of this phase:
• To understand the exact requirements of the customer.
• Analyze the requirements.
• Document them properly.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Requirement Analysis and Specification


• Consists of two activities:
• Requirements gathering and analysis.
• Requirements specification.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Requirement Analysis and Specification


• Gather requirements from customer:
• Analyze the collected data to understand what customer
wants.
• To do that, we need to remove problems.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Requirement Analysis and Specification


• Remove requirements problems:
• Inconsistencies (One part of requirement contradict with
other parts).
• Anomalies (Some parts of requirements are not clear).
• Incompleteness (Some requirements are not complete).
• Organize into a:
• Software Requirement Specification document (SRS).
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Requirement Analysis and Specification


• To remove requirements problems organize it into a:
• Software Requirement Specification document.
• Also called SRS document.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Classical Waterfall Model

Feasibility Study

Requirement
Analysis

Design

Coding

Testing

Maintenance
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Design
• During Design phase requirements specification is
transformed into:
• A form, suitable for implementation in some programming
language.

• Two commonly used design approaches:


• Traditional Approach.
• Object Oriented Approach.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Traditional Design Approach


• Consists of two activities:
• Structured Analysis (Done by DFD)
• Structured Design.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Classical Waterfall Model

Feasibility Study

Requirement
Analysis

Design

Coding

Testing

Maintenance
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Coding
• During this phase:
• Each module of the design is coded.
• Each module is tested.
• Each module is documented.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Classical Waterfall Model

Feasibility Study

Requirement
Analysis

Design

Coding

Testing

Maintenance
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Testing
• During coding modules are also tested.

• In this phase:
• Different modules are integrated to check weather they interact
with each other.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Testing
• In this phase:
• Firstly, partially integrated system is tested called unit testing.

M1 M2 M3

• In next step, more modules are integrated called integration


testing. M1 M2 M3
M4 M5 M6
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Testing
• In this phase:

• The system is integrated over a number of steps to check if there


are any bugs.
• The identical focus of testing is to find bugs.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

System Testing
• After all modules have been successfully integrated and
tested:
• System Testing is carried out.

• Goal of system testing:


• Ensure that the developed system functions are according to its
requirements as specified in the SRS documents.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Classical Waterfall Model

Feasibility Study

Requirement
Analysis

Design

Coding

Testing

Maintenance
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Maintenance
• Once the system testing is complete:
• The software is delivered to customer and maintenance phase is
started.
• If any bug is reported from customer the software engineers fix it.
• This phase continues for quite long time.
• This phase takes 60/100% of software development effort.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Types of Maintenance
• Corrective maintenance:
• Bugs might be reported.
• To correct them corrective maintenance is needed.
• Perfective Maintenance:
• New functionalities might be needed to bring.
• To enhance new functionalities perfective maintenance is needed.
• Adaptive Maintenance:
• The software might need to work with new hardware.
• To do that adaptive maintenance is needed.
• Like, new server, new computer or new operating system etc.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Waterfall Model
• Classical waterfall model is very simple:
• Once one stage is complete the second stage starts just like natural
waterfall.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Waterfall Model
• But what if:
• There is a design error which was discovered during testing?
• The later the phase in which the defect/error gets detected, the
more expensive is its removal. WHY?
• We need to rework the result of many phases.
• Like, change requirement, change code, change design and test again.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Classical Waterfall Model

Feasibility Study

Requirement
Analysis

Design

Coding

Testing

Maintenance
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Waterfall Model
• The later the error is detected the expansive it is:
• Errors should be detected in same phase:
• For example:
• If a design problem is detected in design phase itself,
• The problem can be taken care of much more easily.
• Than say if it is identified at the end of system testing phase.
• Reason?
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Waterfall Model
• Reason?
• Rework must be carried out not only to the design but also to the
code and test phases.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Waterfall Model
• Iterative waterfall model is by far the most widely used
model.
• Almost every other model is derived from the waterfall model.

• Why?
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Waterfall Model Strengths


• Easy to understand.
• Easy to use.
• Requirements are provided and understood.
• Strong management system.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Waterfall Model Deficiencies


• All requirements must be known upfront.
• No change is possible later.
• False information of progress is possible.
• Delay is possible in delivery.
• Integration is the big-bang at the end.
• Little opportunity for customer to preview the system.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Waterfall Model
• When to use waterfall model?
• Requirements are well known and stable.
• Technology to make is understood.
• Experienced development team is available.
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

Group Assignment (Presentation)


Why other models (Agile specifically) were proposed after
Waterfall?

• Waterfall
• V Model
• Evolutionary Traditional Models
• Prototyping
• Spiral Model
• Agile Models
Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

In this Chapter

• What is software?

• What is software engineering?

• Software crisis.

• Exploratory style.

• Emerging software engineering technique.


Department
HEWAD University of Computing & Technology ‫هیــــواد پوهنــتون کمپیوتر ساینس پوهنځ ی‬

End of Chapter 0

Any Questions???

You might also like