I N T R O D U C T I O N T O S O F T W A R E E N G I N E E R I N G
Chapter 1
Overview
 Introduction to Software Engineering
 Software Engineering is a systematic approach to developing,
operating, and maintaining software systems efficiently and
reliably.
 It involves applying engineering principles and methodologies to
software development to ensure quality, efficiency, and scalability.
 This overview will highlight the significance of Software
Engineering in modern technology and its role in addressing the
challenges of the Software Crisis.
Definition:
 Software Engineering encompasses the systematic application
of scientific and technological knowledge to develop and
maintain software products.
 It involves processes, methods, tools, and techniques to
manage software development projects efficiently and
effectively.
 The goal of Software Engineering is to produce high-quality
software that meets user requirements within budget and time
constraints.
Basic Concepts
 Understanding Software and Engineering
 Software refers to programs, data, documentation, and user
interfaces that constitute a computer system.
 Engineering involves the systematic application of knowledge and
principles to design, build, and maintain complex systems.
 In Software Engineering, these concepts converge to address the
challenges of developing reliable and scalable software systems.
Evolution of Software Engineering
 From Early Programming Practices to Software
Engineering Discipline
 Software Engineering has evolved from ad-hoc programming
practices to a disciplined approach to software development.
 Early practices lacked systematic methodologies, leading to
inefficiencies, errors, and project failures.
 The emergence of Software Engineering as a discipline addressed
these challenges by introducing systematic approaches and
methodologies.
Evolution of Software Engineering
 Tracing the Development of Software Engineering
 Early programming practices were largely ad-hoc, lacking
systematic methodologies, and resulting in inefficiencies and
errors.
 The emergence of Software Engineering as a discipline stemmed
from the need for structured approaches to address software
complexities.
 Over time, Software Engineering has integrated principles from
engineering, computer science, and management to refine its
practices.
Key Milestones in Software Engineering
Evolution
 Notable Progress in Software Engineering
 1940s-1950s: The advent of electronic computers marked the
beginning of software development efforts.
 1960s-1970s: Structured programming methodologies and early
software development models, such as the Waterfall Model,
emerged.
 1980s-1990s: The proliferation of personal computers led to
advancements in software development tools and methodologies.
 2000s-Present: Agile methodologies gained popularity,
emphasizing flexibility and customer collaboration in response to
changing requirements.
The Software Crisis
 The Software Crisis refers to the challenges faced by the software
industry in delivering quality software products efficiently and
reliably.
 Factors contributing to the crisis include increasing complexity,
changing requirements, and inadequate development practices.
 Addressing the Software Crisis requires adopting systematic
approaches and methodologies to ensure the quality and reliability
of software systems.
Addressing the Software Crisis
 Software Engineering practices aim to address the challenges posed
by the Software Crisis by introducing systematic approaches to
software development.
 These practices include requirements engineering, software design,
coding, testing, and maintenance, conducted in a structured and
disciplined manner.
 By adopting Software Engineering practices, organizations can
improve the quality, reliability, and efficiency of software
development processes.
Software Development Life Cycle (SDLC)
 Understanding the SDLC:
 Software Development Life Cycle (SDLC) is a process used by the
software industry to design, develop and test high quality
software's.
 The SDLC aims to produce a high-quality software that meets or
exceeds customer expectations, reaches completion within times
and cost estimates.
 SDLC is a process followed for a software project, within a
software organization.
 It consists of a detailed plan describing how to develop,
maintain, replace and alter or enhance specific software. The life
cycle defines a methodology for improving the quality of software
and the overall development process.
Software Life Cycle Models Overview
 SDLC Models
 There are various software development life cycle models
defined and designed which are followed during the software
development process. These 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.
Software Development Life Cycle (SDLC)
 Following are the most important and popular SDLC
models followed in the industry −
 Waterfall Model
 Iterative Model
 Spiral Model
 V-Model
 Agile Model
 Big Bang Model
Waterfall Model
 The Waterfall Model is a sequential software
development process consisting of distinct phases:
requirements, design, implementation, testing,
deployment, and maintenance.
 Each phase must be completed before moving to the
next, resembling a waterfall flowing downwards.
 The Waterfall Model is easy to understand and
implement but lacks flexibility, making it less suitable
for projects with changing requirements.
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.
 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.
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.
 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.
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.
 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
 Waterfall Model Advantages
 The advantages of waterfall development are that it allows for
departmentalization and control.
 A schedule can be set with deadlines for each stage of development
and a product can proceed through the development process
model phases one by one.
 Development moves from concept, through design,
implementation, testing, installation, troubleshooting, and ends up
at operation and maintenance. Each phase of development
proceeds in strict order.
Waterfall Model
 Disadvantages
 The disadvantage of waterfall development is that it does not
allow much reflection or revision.
 Once an application is in the testing stage, it is very difficult to
go back and change something that was not well-documented
or thought upon in the concept stage.
 No working software is produced until late during the life
cycle( it’s sequential)
 High amounts of risk and uncertainty.
 Not a good model for complex and object-oriented projects.
 Poor model for long and ongoing projects.
Iterative Models
 Iterative process starts with a simple implementation
of a subset of the software requirements and iteratively
enhances the evolving versions until the full system is
implemented.
 At each iteration, design modifications are made and
new functional capabilities are added.
 The basic idea behind this method is to develop a
system through repeated cycles (iterative) and in
smaller portions at a time (incremental).
Iterative model
Iterative mode
 Iterative and Incremental development is a
combination of both iterative design or iterative
method and incremental build model for
development.
 “During software development, more than one
iteration of the software development cycle may be
in progress at the same time”.
Iterative Models
 Advantages and Disadvantages
 Advantages of Iterative Models include early delivery of partial
functionality, reduced risk through incremental development, and
greater flexibility in accommodating changes.
 Disadvantages
 However, managing iterations and controlling scope can be
challenging, and there may be increased complexity due to the
need for integration across iterations.
Spiral Model
 The spiral model combines the idea of iterative
development with the systematic, controlled aspects
of the waterfall model.
 This Spiral model is a combination of iterative
development process model and sequential linear
development model i.e. the waterfall model with a
very high emphasis on risk analysis.
 It allows incremental releases of the product or
incremental refinement through each iteration
around the spiral.
Spiral Model
Risk Handling in Spiral Model
 The most important feature of the spiral model is handling these
unknown risks after the project has started. Such risk resolutions are
easier done by developing a prototype.
 The spiral model supports coping with risks by providing the scope to
build a prototype at every phase of software development.
 The Prototyping Model also supports risk handling, but the risks must
be identified completely before the start of the development work of
the project.
 But in real life, project risk may occur after the development work
starts, in that case, we cannot use the Prototyping Model.
 In each phase of the Spiral Model, the features of the product dated
and analyzed, and the risks at that point in time are identified and are
resolved through prototyping.
 Thus, this model is much more flexible compared to other SDLC
models.
Cont..
 Advantages
 Changing requirements can be accommodated.
 Allows extensive use of prototypes.
 Requirements can be captured more accurately.
 Users see the system early.
 Development can be divided into smaller parts and the risky parts
can be developed earlier which helps in better risk management.
Spiral Model
 Disadvantages
 Management is more complex.
 End of the project may not be known early.
 Not suitable for small or low risk projects and could be
expensive for small projects.
 Process is complex
 Spiral may go on indefinitely.
 Large number of intermediate stages requires excessive
documentation.
V-Model
 The V-model is an SDLC model where execution of
processes happens in a sequential manner in a V-shape.
It is also known as Verification and Validation model.
 The V-Model is an extension of the waterfall model and is
based on the association of a testing phase for each
corresponding development stage.
 This means that for every single phase in the
development cycle, there is a directly associated testing
phase.
 This is a highly-disciplined model and the next phase
starts only after completion of the previous phase.
V Model
 Under the V-Model, the corresponding testing phase
of the development phase is planned in parallel.
 So, there are Verification phases on one side of the
‘V’ and Validation phases on the other side.
 The Coding Phase joins the two sides of the V-
Model.
V-Model
Agile Methodology
 Agile SDLC model is a combination of iterative and
incremental process models with focus on process
adaptability and customer satisfaction by rapid
delivery of working software product.
 Agile Methods break the product into small
incremental builds.
Agile Model
 Every iteration involves cross functional teams
working simultaneously on various areas like −
 Planning
 Requirements Analysis
 Design
 Coding
 Unit Testing and
 Acceptance Testing.
Agile model
Agile Model
 Advantages
 Is a very realistic approach to software development.
 Promotes teamwork and cross training.
 Functionality can be developed rapidly and demonstrated.
 Resource requirements are minimum.
 Suitable for fixed or changing requirements
 Delivers early partial working solutions.
Agile Model
 Disadvantages
 Not suitable for handling complex dependencies.
 More risk of sustainability, maintainability and extensibility.
 Strict delivery management dictates the scope, functionality to
be delivered, and adjustments to meet the deadlines.
 Depends heavily on customer interaction, so if customer is not
clear, team can be driven in the wrong direction.
 There is a very high individual dependency, since there is
minimum documentation generated.
Big Bang Model
 The Big Bang model is an SDLC model where we do not
follow any specific process.
 The development just starts with the required money and
efforts as the input, and the output is the software
developed which may or may not be as per customer
requirement.
 This Big Bang Model does not follow a
process/procedure and there is a very little planning
required.
 Even the customer is not sure about what exactly he
wants and the requirements are implemented on the fly
without much analysis.
Big Bang Model
 The Big Bang Model comprises of focusing all the
possible resources in the software development and
coding, with very little or no planning.
 The requirements are understood and implemented as
they come.
 Any changes required may or may not need to revamp
the complete software.
Big Bang Model
 Advantages
 This is a very simple model
 Little or no planning required
 Easy to manage
 Very few resources required
 Gives flexibility to developers
 It is a good learning aid for new comers or students.
Big Bang Model
 Disadvantages
 Very High risk and uncertainty.
 Not a good model for complex and object-oriented projects.
 Poor model for long and ongoing projects.
 Can turn out to be very expensive if requirements are
misunderstood.
Chapter 1.pptxs Introduction to software Engineering

Chapter 1.pptxs Introduction to software Engineering

  • 1.
    I N TR O D U C T I O N T O S O F T W A R E E N G I N E E R I N G Chapter 1
  • 2.
    Overview  Introduction toSoftware Engineering  Software Engineering is a systematic approach to developing, operating, and maintaining software systems efficiently and reliably.  It involves applying engineering principles and methodologies to software development to ensure quality, efficiency, and scalability.  This overview will highlight the significance of Software Engineering in modern technology and its role in addressing the challenges of the Software Crisis.
  • 3.
    Definition:  Software Engineeringencompasses the systematic application of scientific and technological knowledge to develop and maintain software products.  It involves processes, methods, tools, and techniques to manage software development projects efficiently and effectively.  The goal of Software Engineering is to produce high-quality software that meets user requirements within budget and time constraints.
  • 4.
    Basic Concepts  UnderstandingSoftware and Engineering  Software refers to programs, data, documentation, and user interfaces that constitute a computer system.  Engineering involves the systematic application of knowledge and principles to design, build, and maintain complex systems.  In Software Engineering, these concepts converge to address the challenges of developing reliable and scalable software systems.
  • 5.
    Evolution of SoftwareEngineering  From Early Programming Practices to Software Engineering Discipline  Software Engineering has evolved from ad-hoc programming practices to a disciplined approach to software development.  Early practices lacked systematic methodologies, leading to inefficiencies, errors, and project failures.  The emergence of Software Engineering as a discipline addressed these challenges by introducing systematic approaches and methodologies.
  • 6.
    Evolution of SoftwareEngineering  Tracing the Development of Software Engineering  Early programming practices were largely ad-hoc, lacking systematic methodologies, and resulting in inefficiencies and errors.  The emergence of Software Engineering as a discipline stemmed from the need for structured approaches to address software complexities.  Over time, Software Engineering has integrated principles from engineering, computer science, and management to refine its practices.
  • 7.
    Key Milestones inSoftware Engineering Evolution  Notable Progress in Software Engineering  1940s-1950s: The advent of electronic computers marked the beginning of software development efforts.  1960s-1970s: Structured programming methodologies and early software development models, such as the Waterfall Model, emerged.  1980s-1990s: The proliferation of personal computers led to advancements in software development tools and methodologies.  2000s-Present: Agile methodologies gained popularity, emphasizing flexibility and customer collaboration in response to changing requirements.
  • 8.
    The Software Crisis The Software Crisis refers to the challenges faced by the software industry in delivering quality software products efficiently and reliably.  Factors contributing to the crisis include increasing complexity, changing requirements, and inadequate development practices.  Addressing the Software Crisis requires adopting systematic approaches and methodologies to ensure the quality and reliability of software systems.
  • 9.
    Addressing the SoftwareCrisis  Software Engineering practices aim to address the challenges posed by the Software Crisis by introducing systematic approaches to software development.  These practices include requirements engineering, software design, coding, testing, and maintenance, conducted in a structured and disciplined manner.  By adopting Software Engineering practices, organizations can improve the quality, reliability, and efficiency of software development processes.
  • 10.
    Software Development LifeCycle (SDLC)  Understanding the SDLC:  Software Development Life Cycle (SDLC) is a process used by the software industry to design, develop and test high quality software's.  The SDLC aims to produce a high-quality software that meets or exceeds customer expectations, reaches completion within times and cost estimates.  SDLC is a process followed for a software project, within a software organization.  It consists of a detailed plan describing how to develop, maintain, replace and alter or enhance specific software. The life cycle defines a methodology for improving the quality of software and the overall development process.
  • 11.
    Software Life CycleModels Overview  SDLC Models  There are various software development life cycle models defined and designed which are followed during the software development process. These 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.
  • 12.
    Software Development LifeCycle (SDLC)  Following are the most important and popular SDLC models followed in the industry −  Waterfall Model  Iterative Model  Spiral Model  V-Model  Agile Model  Big Bang Model
  • 13.
    Waterfall Model  TheWaterfall Model is a sequential software development process consisting of distinct phases: requirements, design, implementation, testing, deployment, and maintenance.  Each phase must be completed before moving to the next, resembling a waterfall flowing downwards.  The Waterfall Model is easy to understand and implement but lacks flexibility, making it less suitable for projects with changing requirements.
  • 15.
    Waterfall Model  RequirementGathering and analysis  All possible requirements of the system to be developed are captured in this phase and documented in a requirement specification document.  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.
  • 16.
    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.  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.
  • 17.
    Waterfall model  Deploymentof system  Once the functional and non-functional testing is done; the product is deployed in the customer environment or released into the market.  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.
  • 18.
    Waterfall model  WaterfallModel Advantages  The advantages of waterfall development are that it allows for departmentalization and control.  A schedule can be set with deadlines for each stage of development and a product can proceed through the development process model phases one by one.  Development moves from concept, through design, implementation, testing, installation, troubleshooting, and ends up at operation and maintenance. Each phase of development proceeds in strict order.
  • 19.
    Waterfall Model  Disadvantages The disadvantage of waterfall development is that it does not allow much reflection or revision.  Once an application is in the testing stage, it is very difficult to go back and change something that was not well-documented or thought upon in the concept stage.  No working software is produced until late during the life cycle( it’s sequential)  High amounts of risk and uncertainty.  Not a good model for complex and object-oriented projects.  Poor model for long and ongoing projects.
  • 20.
    Iterative Models  Iterativeprocess starts with a simple implementation of a subset of the software requirements and iteratively enhances the evolving versions until the full system is implemented.  At each iteration, design modifications are made and new functional capabilities are added.  The basic idea behind this method is to develop a system through repeated cycles (iterative) and in smaller portions at a time (incremental).
  • 21.
  • 22.
    Iterative mode  Iterativeand Incremental development is a combination of both iterative design or iterative method and incremental build model for development.  “During software development, more than one iteration of the software development cycle may be in progress at the same time”.
  • 23.
    Iterative Models  Advantagesand Disadvantages  Advantages of Iterative Models include early delivery of partial functionality, reduced risk through incremental development, and greater flexibility in accommodating changes.  Disadvantages  However, managing iterations and controlling scope can be challenging, and there may be increased complexity due to the need for integration across iterations.
  • 24.
    Spiral Model  Thespiral model combines the idea of iterative development with the systematic, controlled aspects of the waterfall model.  This Spiral model is a combination of iterative development process model and sequential linear development model i.e. the waterfall model with a very high emphasis on risk analysis.  It allows incremental releases of the product or incremental refinement through each iteration around the spiral.
  • 25.
  • 26.
    Risk Handling inSpiral Model  The most important feature of the spiral model is handling these unknown risks after the project has started. Such risk resolutions are easier done by developing a prototype.  The spiral model supports coping with risks by providing the scope to build a prototype at every phase of software development.  The Prototyping Model also supports risk handling, but the risks must be identified completely before the start of the development work of the project.  But in real life, project risk may occur after the development work starts, in that case, we cannot use the Prototyping Model.  In each phase of the Spiral Model, the features of the product dated and analyzed, and the risks at that point in time are identified and are resolved through prototyping.  Thus, this model is much more flexible compared to other SDLC models.
  • 27.
    Cont..  Advantages  Changingrequirements can be accommodated.  Allows extensive use of prototypes.  Requirements can be captured more accurately.  Users see the system early.  Development can be divided into smaller parts and the risky parts can be developed earlier which helps in better risk management.
  • 28.
    Spiral Model  Disadvantages Management is more complex.  End of the project may not be known early.  Not suitable for small or low risk projects and could be expensive for small projects.  Process is complex  Spiral may go on indefinitely.  Large number of intermediate stages requires excessive documentation.
  • 29.
    V-Model  The V-modelis an SDLC model where execution of processes happens in a sequential manner in a V-shape. It is also known as Verification and Validation model.  The V-Model is an extension of the waterfall model and is based on the association of a testing phase for each corresponding development stage.  This means that for every single phase in the development cycle, there is a directly associated testing phase.  This is a highly-disciplined model and the next phase starts only after completion of the previous phase.
  • 30.
    V Model  Underthe V-Model, the corresponding testing phase of the development phase is planned in parallel.  So, there are Verification phases on one side of the ‘V’ and Validation phases on the other side.  The Coding Phase joins the two sides of the V- Model.
  • 31.
  • 32.
    Agile Methodology  AgileSDLC model is a combination of iterative and incremental process models with focus on process adaptability and customer satisfaction by rapid delivery of working software product.  Agile Methods break the product into small incremental builds.
  • 33.
    Agile Model  Everyiteration involves cross functional teams working simultaneously on various areas like −  Planning  Requirements Analysis  Design  Coding  Unit Testing and  Acceptance Testing.
  • 34.
  • 35.
    Agile Model  Advantages Is a very realistic approach to software development.  Promotes teamwork and cross training.  Functionality can be developed rapidly and demonstrated.  Resource requirements are minimum.  Suitable for fixed or changing requirements  Delivers early partial working solutions.
  • 36.
    Agile Model  Disadvantages Not suitable for handling complex dependencies.  More risk of sustainability, maintainability and extensibility.  Strict delivery management dictates the scope, functionality to be delivered, and adjustments to meet the deadlines.  Depends heavily on customer interaction, so if customer is not clear, team can be driven in the wrong direction.  There is a very high individual dependency, since there is minimum documentation generated.
  • 37.
    Big Bang Model The Big Bang model is an SDLC model where we do not follow any specific process.  The development just starts with the required money and efforts as the input, and the output is the software developed which may or may not be as per customer requirement.  This Big Bang Model does not follow a process/procedure and there is a very little planning required.  Even the customer is not sure about what exactly he wants and the requirements are implemented on the fly without much analysis.
  • 38.
    Big Bang Model The Big Bang Model comprises of focusing all the possible resources in the software development and coding, with very little or no planning.  The requirements are understood and implemented as they come.  Any changes required may or may not need to revamp the complete software.
  • 39.
    Big Bang Model Advantages  This is a very simple model  Little or no planning required  Easy to manage  Very few resources required  Gives flexibility to developers  It is a good learning aid for new comers or students.
  • 40.
    Big Bang Model Disadvantages  Very High risk and uncertainty.  Not a good model for complex and object-oriented projects.  Poor model for long and ongoing projects.  Can turn out to be very expensive if requirements are misunderstood.