0% found this document useful (0 votes)
3 views

Lesson 2

The document outlines the Software Development Life Cycle (SDLC) and various software development process models, emphasizing the importance of understanding each phase and model for successful software project management. It details the stages of SDLC, including requirement analysis, design, implementation, testing, deployment, and maintenance, along with descriptions of models like Waterfall, V-Model, Big Bang, Incremental, Iterative, Prototype, and Spiral. Each model is discussed in terms of its advantages, disadvantages, and ideal usage scenarios, providing a comprehensive overview for students in the Introduction to Software Engineering course.

Uploaded by

Phial
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

Lesson 2

The document outlines the Software Development Life Cycle (SDLC) and various software development process models, emphasizing the importance of understanding each phase and model for successful software project management. It details the stages of SDLC, including requirement analysis, design, implementation, testing, deployment, and maintenance, along with descriptions of models like Waterfall, V-Model, Big Bang, Incremental, Iterative, Prototype, and Spiral. Each model is discussed in terms of its advantages, disadvantages, and ideal usage scenarios, providing a comprehensive overview for students in the Introduction to Software Engineering course.

Uploaded by

Phial
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 38

Nyanza campus

Module: Introduction to Software Engineering


Lecturer: Dr. Taiwo Adigun Email:
[email protected]
Lecture 2: Software Development Life Cycle &
Process Models
Software Development Life Cycle & Process
Models
Outline:
 SDLC
 Software Development Process Models
 Choosing the most appropriate model
Software Development Life Cycle & Process
Models
Specific Objectives:

By the end of this lesson, you should be able:

 Have a clear understanding of the SDLC concept


 Know all the SDLC stages, in the “right order”
 Know the connection between the SDLC and the
different process models
 Understand the different software development process
models, so as to know the most applicable model for
different software project scenarios.
Software Development Life Cycle & Process
Models
Software Development Life Cycle

Software  When thinking about SDLC, think about phases and forms.
Development  The merriam-webster dictionary defines the term ‘life
has a Life
cycle’ as “the series of stages in form and
Cycle?
functional activity through which an organism passes
between successive recurrences of a specified primary
stage”.
The life cycle of a
mosquito is from
egg to larva to pupa
then to adult.

 SDLC has to do with the different phases (and forms) that


a software under development undergoes, in order to
have a complete deployable software product.
Software Development Life Cycle

Various diagrams and phrases


describe the different stages
of software development, but
they all mean the same in
essence
Software Development Life Cycle

Any software process must include the following four basic activities:

1. Software specification (or requirements engineering): Define the


main functionalities of the software and the constrains around them.

2. Software design and implementation: The software is to be


designed and programmed.

3. Software verification and validation: The software must conform to


its specification and meets the customer needs.

4. Software evolution (software maintenance): The software is being


modified to meet customer and market requirements changes.

 In practice, they include sub-activities such as requirements validation,


architectural design, unit testing, …etc.
Software Development Life Cycle

In this class, we are adopting the


following stages:

1. Requirement Analysis and Elicitation

2. Design

3. Implementation

4. Testing

5. Deployment

6. Support and Maintenance


Software Development Life Cycle

 Requirements Elicitation & Analysis: This


phase identifies business requirements.
Requirements such as: “Expected Users of
the System” and what the system is expected
to do, are determined and analyzed. This
phase produces a Requirements Specification
document or SRS (Software Requirement
Specification).

 Design: The system and software design is


produced using details derived from the
specification document. SRS is a reference for
software designers to come up with the best
architecture for the software. This phase
produces Design Document Specification
(DDS).
Software Development Life Cycle

 Implementation (or Coding):


The designed blueprint is turned to
reality by writing the source code
of the entire application

 Testing: The software is tested


against the initially identified
requirements. This is to ensure that
the product is truly solving the
needs gathered during the
requirements phase
Software Development Life Cycle

 Deployment: The software is installed


on systems. Client’s custom software
are deployed at client’s site, while
generic software are made available via
appropriate medium. Once the product
is tested and ready to be deployed it is
released formally in the appropriate
market.

 Support & Maintenance: The


software team is also responsible for
support and maintenance. Plans on how
to scale and enhance your system are
also done by the development team.
Software Development Life Cycle - SOFTWARE DEVELOPMENT
ROLES

 Most Software Engineering


Organizations structure workflow,  Project Manager
team formation and project  Team Lead
dependence differently.  Business Analysts

 This difference is mainly as a result  Requirement

of varying business strategies and Engineers

priorities.  Testers
 Solutions
Architects
 Programmers
 Support Team
 Developers
Software Development Life Cycle

This leads us to the different software development strategies, called SDLC


Models or Software Development Process Models
Software Development Process Models
 Software development process models describe the different
approaches that can be employed in the creation of a software
solution.
 Each process model adheres to a specific set of phases tailored to
its type, all aimed at ensuring the achievement of success at
each step of the software development process.
 Each of the models brings its favorable aspects and
disadvantages for a specific software development project or a
team.
 A model defines entry and exit criteria for every phase of SDLC. A
phase can start only if its phase-entry criteria have been
satisfied.
 Without software life cycle models the entry and exit criteria for a
phase cannot be recognized.
 Without software life cycle models it becomes difficult for
software project managers to monitor the progress of the project.
Software Development Process Models
 The following are some and common process models:
1. Waterfall Model
2. V-Model
3. Big Bang Model
4. Incremental Model
5. Iterative Model
6. Prototype model
7. Spiral Model
8. Agile Model

 Let’s discuss each of these models


Software Development Process Models - Waterfall Model

 Classical waterfall model is the


simplest model of software
development paradigm that follows
a serial execution of the SDLC
phases
 It says the all the phases of SDLC
will function one after another in
linear manner. That is, when the
first phase is finished then only the
second phase will start and so on.
 The waterfall model is not in When to use
practice anymore, but it is the basis 1. When you know exactly what you
for all other SDLC models. want the result to look like.
2. When clients are unable to change
 Because of its simple structure, the the scope of a project after it has
waterfall model is easier to use and started.
provides a tangible output. 3. Concept and definition are critical for
success (but not speed).
Software Development Process Models - Waterfall Model

Advantages Disadvantages
1. Complete and accurate requirements are
1. This model is simple and easy to expected at the beginning of the
understand. development process.
2. Working software is not available for very
2. This is very useful for small projects. long during the development life cycle.
3. We cannot go back to the previous phase.
3. This model is easy to manage.
4. It is very difficult to change the
requirements.
4. The end goal is determined early.
5. Risk is not assessed in this, hence there is
high risk and uncertainty in this model.
5. Each phase of this model is well
6. Testing period comes very late.
explained.
7. It is not a good model for large and
complex projects.
6. It provides a structured way to do
things.
Software Development Process Models - V-Model

 V-Model is an SDLC model, it is also


called Verification and Validation
Model, and it is considered a
disciplined model.
 It is based on the association of
testing phase with each
development phase.
 That is, with each development
phase, its testing phase is also
associated in a V-shape, in other
words both software development
and testing activities take place at When to use
the same time. 1. When the criteria and goals are clear
and straightforward.
 So in this model, Verification Phase 2. When technical requirements, such as
will be on one side, Validation technical resources and technical
Phase will be on the other side. specialists, are readily available.
Software Development Process Models - V-Model

Advantages Disadvantages
1. This is a simple and easy to use model.
1. This model is not suitable for any
complex projects.
2. Planning, testing and designing tests can 2. There remains both high risk and
be done even before coding. uncertainty.

3. This is a very disciplined model, in which


3. This is not a suitable model for an
ongoing project.
phase by phase development and testing
4. This model is not at all suitable for a
goes on. project which is unclear and in
which there are changes in the
4. Defects are detected in the initial stage
requirement.
itself.

5. Small and medium scale developments can


be easily completed using it..
Software Development Process Models - Big Bang Model

 Big Bang model is an informal and


unstructured approach to software
development, where there is no
specific planning, documentation, or
well-defined phases.
 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.
 It focuses all the possible resources in
the software development and
coding, with very little or no planning.
When to use
1. his model is ideal for small projects with one or two developers
working together and is also useful for academic or practice projects.
2. It is an ideal model for the product where requirements are not well
understood and the final release date is not given.
Software Development Process Models - Big Bang Model

Advantages Disadvantages
1. Very High risk and uncertainty.
1. This is a very simple model
2. Not a good model for complex and
2. Little or no planning required object-oriented projects.
3. Poor model for long and ongoing
3. Easy to manage
projects.
4. Very few resources required 4. Can turn out to be very expensive if
requirements are misunderstood.
5. Gives flexibility to developers

6. It is a good learning aid for new


comers or students.
Software Development Process Models - Incremental
Model
 This process model breaks a development
project/product into divisions called
modules for easy management
 Each module is developed separately
 The 1st module is often a major aspect of
the system that can be used, and other
module integrated incrementally.
 For example, we collect the customer’s
requirements, now instead of making the
entire software at once, we first take
some requirements and based on them
create a module or function of the
software and deliver it to the customer.
Then we take some more requirements When to use
and based on them add another module 1. Urgent need for swiftly delivering essential functionality.
to that software. 2. When the project team lacks familiarity with the specific
 domain or subject area.
Similarly, modules are added to the
software in each increment until the 3. When an organization harbors ambitious goals for
complete system is created. substantial enhancements and improvements.
Software Development Process Models - Incremental Model

Advantages Disadvantages
1. Important modules/functions are developed first and 1. Management is a continuous
then the rest are added in chunks. activity that must be handled.
2. Working software is prepared quickly and early during 2. The complete requirements of
the software development life cycle (SDLC). the software should be clear.
3. This model is flexible and less expensive to change 3. This requires good planning and
requirements and scope.
designing.
4. The customer can respond to each module and
4. The total cost of this model is
provide feedback if any changes are needed.
higher.
5. Project progress can be measured.
5. Problem may arise from
6. It is easier to test and debug during a short iteration.
additional requirements
7. Errors are easy to identify.

8. Risks from requirement is reduced.


Software Development Process Models - Iterative Model

 In Iterative model we start developing


the software with some requirements
and when it is developed, it is reviewed.
 If there are requirements for changes in
it, then we develop a new version of the
software based on those requirements.
 This process repeats itself many times
until we get our final product.
When to use
 In the Iterative model , each cycle 1. Unclear goals: The product's goal isn't fully defined
results in a semi-developed but 2. Frequent feedback: The project needs regular
deployable version of the software. feedback and continuous improvement
 With each cycle, some requirements are 3. Evolving requirements: The project's requirements or
added to the software, and the final goals may change over time
cycle results in the software with the 4. Tight deadlines: The project needs to be delivered
complete requirement specification. quickly
5. Large scale: The project is large and complex, and
requires a high level of quality and flexibility
Software Development Process Models - Iterative Model

The process is the same


but the intention is
Is there any difference
different
between Incremental
So, their advantages and
and Iterative models?
disadvantages are the
same.
Software Development Process Models - Iterative Model

Advantages Disadvantages
1. Important modules/functions are developed first and 1. Management is a continuous
then the rest are added in chunks. activity that must be handled.
2. Working software is prepared quickly and early during 2. The complete requirements of
the software development life cycle (SDLC). the software should be clear.
3. This model is flexible and less expensive to change 3. This requires good planning and
requirements and scope.
designing.
4. The customer can respond to each module and
4. The total cost of this model is
provide feedback if any changes are needed.
higher.
5. Project progress can be measured.
5. Problem may arise from
6. It is easier to test and debug during a short iteration.
additional requirements
7. Errors are easy to identify.

8. Risks from requirement is reduced.


Software Development Process Models - Prototype model

 Prototyping is the act of developing a


sample version of an intended
software solution.
 It allows users evaluate developer
proposals before implementation.
 This model is created when we do not
know the requirements well.
 The prototype model is an iterative,
trial-and-error process where
developers build, test, and rework a When to use
prototype until they achieve an 1. A prototype model can be used to show that a project
acceptable outcome. is feasible and realistic to other parties.
2. A prototype model is great for projects where you
need to quickly get everyone on the same page and
make changes on the fly.
Software Development Process Models - Prototype model

Advantages Disadvantages

1. Customers get a say in the product


1. Customer satisfaction may
early on, increasing customer
satisfaction. take a while to fulfill

2. Missing functionality and errors are 2. High risk of compromising


detected easily.
quality
3. Prototypes can be reused in the future,
for more complicated projects. 3. Building prototypes may be
4. It emphasizes team communication too much if not monitored
and flexible design practices.
properly.
Software Development Process Models - Spiral model

 The spiral method is a risk-


biased development strategy
 It consciously iterates risk analysis
at a predefined frequency
 It is a combination of iterative
development process model and
waterfall model
 It analyses alternatives and weighs
their viability.

When to use
1. Frequent software releases are advantageous and necessary.
2. Rigorous risk and cost management are of paramount importance.
3. The project entails either a medium to high level of risk or an exceptionally high level of risk.
4. Requirement criteria are challenging to grasp clearly.
5. A dynamic environment with ongoing and unpredictable changes is prevalent.
Software Development Process Models - Spiral model
Software Development Process Models – Spiral model

Advantages Disadvantages
1. Spiral model is suitable for large and 1. Not suitable for smaller projects.
complex projects.
2. This is the most complex model of SDLC,
2. It is easy to estimate how much the project due to which it is quite difficult to manage.
will cost.
3. The cost of this model is quite high.
3. Risk analysis is done in each phase of this
4. It requires more documentation than other
model.
models.
4. The customer can see the look of his
5. Experienced experts are required to
software only in the early stages of the
evaluate and review the project from time
development process.
to time.
Software Development Process Models - Agile Model

 The agile model is perhaps the most widely used model


 It is mostly used in time-critical situations.
 Agile practices in software development prioritize the delivery of
functional software systems within tight timelines.
 Specifically, agile software development methodologies focus on
delivering small increments of operational software swiftly to
enhance customer contentment.
 Agile model is a combination of iterative and incremental models
which was created mainly to make changes in the middle of
software development so that the software project can be
completed quickly.
 There is a customer representative in the development team to
maintain contact with the customer during software development
and to understand the requirement.
 When an iteration is completed, stakeholders and customer
representatives review it and re-evaluate the requirements.
Software Development Process Models - Agile Model

When to use Variants of Agile Methodolgy


1. Complex projects: Agile is a good fit 1.Scrum
for complex projects with deadlines.
2.Crystal methods
2. New projects: Agile is a good fit for
3.Dynamic System Development
projects that are new or new to the
Method (DSDM)
team.
4.Feature driven development (FDD)
3. Continuously changing
environments: Agile is a good fit for 5.Lean

environments that are continuously 6.Extreme programming (XP)


changing and evolving 7.Kanban

8.Scaled Agile Framework (SAFe)


Software Development Process Models – Agile Model

Advantages Disadvantages
1. Minimal development rules
1. Poor documentation
2. Allows teams to easily adapt change and
use software slowly while working closely
2. Very high project risk
with stakeholders.

3. Results in high customer satisfaction 3. Poor emphasis on design

principles
Software Development Process Models – Choosing Process Models

 It can be very tricky deciding on what process model to follow.


 Two or more process models may be used in carrying out a software
project, but the level of success may vary
 A deep consideration of the most appropriate model is required of a
software engineering team.
 The following factors may be given deep consideration in deciding on which
model to use.
1. Project Requirements
2. Project Size and Complexity
3. Team Expertise
4. Client Involvement
5. Time and Budget Constraints
6. Risk Management
7. Product Release Timeline
8. Maintenance and Support
9. Stakeholder Expectations
Software Development Process Models – Choosing Process Models
For Instance:
Project Requirements:
Clear Requirements: Use Waterfall or V-Model if requirements are well-
defined and unlikely to change.
Changing Requirements: Use Agile or Iterative models if requirements
are unclear or likely to evolve.
Project Size and Complexity:
Small Projects: Use Waterfall or V-Model for small, simple projects.
Large Projects: Use Agile, Spiral for large, complex projects that need
flexibility.
Team Expertise:
Experienced Teams: Use Agile or Scrum if the team is familiar with
iterative development.
Less Experienced Teams: Use Waterfall or V-Model for teams needing
structured guidance.
Software Development Process Models – Choosing Process Models
For Instance:
Client Involvement:
Frequent Client Feedback: Use Agile, Scrum if regular client interaction is
needed.
Minimal Client Involvement: Use Waterfall or V-Model if client
involvement is low after initial planning.
Time and Budget Constraints:
Fixed Time and Budget: Use Waterfall or V-Model if you have strict time
and budget limits.
Flexible Time and Budget: Use Agile or Spiral if you can adjust time and
budget as needed.
Risk Management:
High-Risk Projects: Use Spiral for projects with significant risks and
uncertainties.
Low-Risk Projects: Use Waterfall for projects with minimal risks.
Software Development Process Models – Choosing Process Models
For Instance:
Product Release Timeline:
Quick Release Needed: Use Agile to deliver products quickly.
Longer Development Time: Use Waterfall or V-Model for projects with no
urgent deadlines.
Maintenance and Support:
Long-Term Maintenance: Use Prototype or Agile for projects needing
continuous updates and support.
Minimal Maintenance: Use Waterfall or V-Model if little future
maintenance is expected.
Stakeholder Expectations:
High Stakeholder Engagement: Use Agile or Scrum if stakeholders want
ongoing involvement.
Low Stakeholder Engagement: Use Waterfall or V-Model if stakeholders
prefer involvement only at major milestones.
Thank
you

You might also like