Software Engineering
(2250523)
Software Process
What is it? When you build a product or system, it’s important to go through a
series of predictable steps—a road map that helps you create a timely, high-
quality result. The road map that you follow is called a ‘software process.’
Who does it? Software engineers and their managers adapt the process to their
needs and then follow it. In addition, the people who have requested the
software.
Why is it important? Because it provides stability, control, and organization to
an activity that can if left uncontrolled, become quite chaotic.
                                  Dr. Saumil Maheshwari
Software Process
There are         Software specification The functionality of the software
many different    and constraints on its operation must be defined.
software
processes but     Software design and implementation The software to
all must          meet the specification must be produced.
include four
activities that   Software validation The software must be validated to
are
                  ensure that it does what the customer wants.
fundamental
to software
                  Software evolution The software must evolve to meet
engineering:
                  changing customer needs.
                                 Dr. Saumil Maheshwari
Dr. Saumil Maheshwari
   SDLC
A software life cycle model (also called process model) is a descriptive and diagrammatic
representation of the software life cycle.
A life cycle model represents all the activities required to make a software product transit
through its life cycle phases. It also captures the order in which these activities are to
be undertaken.
Different life cycle models may map the basic development activities to phases in
different ways. Thus, no matter which life cycle model is followed, the basic activities are
included in all life cycle models though the activities may be carried out in different orders in
different life cycle models.
                                         Dr. Saumil Maheshwari
SDLC Models
 The Waterfall     Iterative Waterfall                  Prototyping
    Model                 Model                           Model
            Spiral Model                     RAD Model etc.
                           Dr. Saumil Maheshwari
             The classical waterfall model is intuitively the
             most obvious way to develop software.
The
Waterfall    Because of the cascade from one phase to
             another, this model is known as the ‘waterfall
Model        model’.
             It is an example of a plan-driven process—in
             principle, you must plan and schedule all of
             the process activities before starting work on
             them.
            Dr. Saumil Maheshwari
            Though the classical waterfall model is elegant and
            intuitively obvious, it is not a practical model in the
            sense that it can not be used in actual
The         software development projects.
Waterfall   Thus, this model can be considered as theoretical way
            of developing software.
Model
            But all other life cycle models are essentially
            derived from the classical waterfall model. So, in order
            to be able to appreciate other life cycle models it is
            necessary to learn the classical waterfall model.
            Dr. Saumil Maheshwari
The Water
fall Model
             Dr. Saumil Maheshwari
Feasibility Study
   The main aim of
  feasibility study is   • Development of an overall
     to determine          understanding of the problem
  whether it would       • Formulation of the various possible
  be financially and       strategies for solving the problem
 technically feasible    • Evaluation of the different solution
    to develop the         strategies
       product.
                            Dr. Saumil Maheshwari
     Requirements analysis and specification
    The aim of the
    requirements
     analysis and
                       •Requirements
 specification phase    gathering and analysis
is to understand the
 exact requirements    •Requirements
of the customer and
 to document them       specification
       properly.
                         Dr. Saumil Maheshwari
Design
The goal of the design phase is to transform the requirements
specified in the SRS document into a structure that is suitable
for implementation in some programming language.
In technical terms, during the design phase the software
architecture is derived from the SRS document. Like interface
Design, Architecture design.
• Procedural design approach
• Object-oriented design approach
                                Dr. Saumil Maheshwari
  Coding and unit testing
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.
                                   Dr. Saumil Maheshwari
Integration and system testing
Integration testing is carried out to verify that the interfaces
among different units are working satisfactorily. On the other
hand, the goal of system testing is to ensure that the developed
system conforms to the requirements that have been laid out in
the SRS document.
 • α – testing: It is the system testing performed by the development team.
 • β – testing: It is the system testing performed by a friendly set of customers.
 • acceptance testing: It is the system testing performed by the customer himself
   after the product delivery to determine whether to accept or reject the delivered
   product.
                                    Dr. Saumil Maheshwari
    Maintenance
Corrective maintenance: This type of maintenance is carried out to correct errors that
were not discovered during the product development phase.
Perfective maintenance: This type of maintenance is carried out to improve the
performance of the system, or to enhance the functionalities of the system based on
customer’s requests.
Adaptive maintenance: Adaptive maintenance is usually required for porting the
software to work in a new environment. For example, porting may be required to get
the software to work on a new computer platform or with a new operating system.
                                     Dr. Saumil Maheshwari
                   The classical waterfall model is an idealistic
Shortcomings       one since it assumes that no development
of the classical   error is ever committed by the engineers
   waterfall       during any of the life cycle phases.
                   However, in practical development
     model         environments, the engineers do commit a
                   large number of errors in almost every
                   phase of the life cycle.
                         Dr. Saumil Maheshwari
               No feedback paths
Shortcomings
               Difficult to accommodate change
of the         requests
classical
waterfall      Inefficient error corrections
model
               No overlapping of phases
               Dr. Saumil Maheshwari
             • Software engineering: a practitioner’s
               approach by Roger S. Pressman
References   • Software Engineering by Ian Sommerville
             • Software Engineering by Rajib Mall
             • Microsoft Office 365
                   Dr. Saumil Maheshwari
Thank You
            Dr. Saumil Maheshwari