Digital Notes: (Department of Computer Applications)
Digital Notes: (Department of Computer Applications)
Digital Notes: (Department of Computer Applications)
Digital Notes
[Department of Computer Applications]
Subject Name : Software Engineering
Subject Code : KCA-203
Course : MCA
Branch : MCA
Semester : III
Prepared by : Mr. Yogendra Singh
The term software engineering is composed of two words, software and engineering.
Definition of Software:
Software is a set of instructions that provide desired functionality when executed.
Software = programs + documentation + operating procedures.
Types of Software:
Computer software is mainly divided into two types.
1. System software:
System software includes the operating system & all the utilities to enable the computer
to run.
Example: window operating system, Linux etc.
2. Application software:
Application software consists of programs to perform user oriented tasks.
Example: MS Office, paint etc.
Why Study Software Engineering?
To acquire skills to develop large programs
Learn systematic techniques of:
-Specification, design, user interface development, testing, project management,
maintenance, etc.
To acquire skills to be a better programmer:
i. Higher Productivity
ii. Better Quality Programs
Ensure high quality of software.
Engineering is the process of using knowledge and principles to design, build and analyze
objects.
Fig: Bathtub curve for hardware Fig: Bathtub curve for software
As time passes, the failure rate rises again because of environmental melodies like
excess use, dust. Vibrations etc. and finally hardware begins to wear out. But the
software does not wear out like hardware.
2. Software is developed or engineered:
The software is developed not manufactured.
In both software development and hardware manufacturing the focus is on quality.
Software projects cannot manage like hardware manufacturing projects.
Actually learn programming only does not means you will develop a good quality software. You
should also understand the software engineer concept and practice it, which helps to create a
professional and disciplined environment.
Software Development Life Cycle (SDLC) a process used by the software industry to
design, develop and test high quality software
The purpose of SDLC is to produce high quality software that meets customer
expectations, reaches completion within time and cost estimates.
Phases of SDLC:-
There are following phases in the SDLC model:
1. Feasibility Study
2. Requirement analysis and specifications
3. System Design
4. Coding / Implementation / Development Phase
5. Testing
6. Maintenance
1. Feasibility Study:
The main aim of feasibility study is to determine whether developing the software is:
i. Financially worthwhile
ii. Technically feasible.
4. Implementation Phase:
The purpose of the coding and unit testing phase (sometimes called the implementation
phase) of software development is to translate the software design into source code. Each
component of the design is implemented as a program module. The end-product of this
phase is a set of program modules that have been individually tested.
During this phase, each module is unit tested to determine the correct working of all the
individual modules. It involves testing each module in isolation as this is the most
efficient way to debug the errors identified at this stage.
The goal of system testing is to ensure that the developed system conforms to its requirements
laid out in the SRS document.
Waterfall Model:
The waterfall life cycle model was originally proposed by Winston Royce in 1970. This is an
engineering model designed to apply to the development of software.
In the classical waterfall model development process, the various phases of development
are completed sequentially, one after the other.
It is linear model because after completion of one phase, it enters into next phase.
The output of one phase is given as input for next phase so if output is wrong it effects
next phase.
The classical waterfall model divides the life cycle into the following phases as shown in fig.:
Each component of the design is implemented as a program module. The end-product of this
phase is a set of program modules that have been individually tested.
During this phase, each module is unit tested to determine the correct working of all the
individual modules. It involves testing each module in isolation as this is the most efficient way
to debug the errors identified at this stage.
The feedback paths allow for correcting errors committed by a Programmer during some phase,
as and when these are detected in a later phase
The feedback paths introduced by the iterative waterfall model are shown in Figure
Figure: Iterative Waterfall Model
Shortcomings of the iterative waterfall model
i. Phase overlap not supported
ii. Incremental delivery not supported
iii. Limited customer interactions
iv. No support for risk handling and code reuse
3. Prototyping Model:
This model suggests building a working prototype of the system, before development of the
actual software.
A prototype is a toy implementation of the system. A prototype usually exhibits limited
functional capabilities, low reliability, and inefficient performance compared to the actual
software.
First develop a working prototype of the software instead of the actual software.
Prototype gives idea about the software system; it does not perform all functions of
the final system.
Because of prototype the customer can get a actual feel of software. So he can easily
understand the requirements.
After this, the software is handed over to the customer and check the prototype and
then suggest what changes need in the software.
This Prototype is used when customer is unclear about the detailed information of the
input process & output needs of the software.
1. Requirement Identification:
-Prototyping begins with the requirements gathering.
2. Quick Design:-
It focuses on those aspects of software that will visible to user.
Analyst estimates prototype cost &give idea to the management.
3. Developing the Initial Prototype:
The design of prototype is developed.
Prototype represents the input screen format & output screen format.
4. Customer Evaluation of Prototype:
The prototype is evaluated by the user and is used to refine the requirements for the
software to be developed.
User or customer works on prototype to evaluate its features & operations.
5. Revise And Enhance The Prototype:
The prototype is refined after getting information from user about what they want and
what they do not want.
Developer should understand the need of customer properly for making modifications in
the prototype.
Advantages of Prototype Model:
4. Spiral Model:
The Spiral model was developed by Boehm in 1986.
Spiral model can handle large amount of risk.
The spiral model is emphasis placed on risk analysis.
The diagrammatic representation of this model appears like a spiral with many loops.
The exact number of loops in the spiral is not fixed. Each loop of the spiral represents a
phase of the software process.
Each phase in this model is split into four quadrants as shown in fig.
Fig: Spiral Model
The following activities are carried out during each phase of a spiral model.
Phases of the Spiral Model
Each phase in spiral model is split into four quadrants as shown in Figure
During the first quadrant, it is needed to identify the objectives of the phase.
Examine the risks associated with these objectives.
Advantages
The evolutionary model of development has several advantages.