You are on page 1of 22

1

Software Development Methodologies



Prepared By:
Eng.\ Tarig Ahmed Khalid, M.Sc., PMP, CEC, CBAP , MI EEE
General Manager, Financial & Banking Systems Co. (FBS)


2
1. Introduction
2. Waterfall Model
3. V-Model
4. Top-Down Model
5. Bottom-Up Model
6. Rapid Prototyping
7. Spiral Model
8. Agile Model

3
1. Introduction
A software development methodology or system development
methodology in software engineering is used to structure, plan,
and control the process of developing an information system.


The software development methodology framework didn't emerge
until the 1960s. SDLC
The main idea of the SDLC has been "to pursue the development
of information systems in a very deliberate, structured and
methodical way, requiring each stage of the life cycle from
inception of the idea to delivery of the final system, to be carried
out in rigidly and sequentially.

4
ISO 12207 is an ISO standard for software lifecycle processes.
It aims to be the standard that defines all the tasks required for
developing and maintaining software.

Primary Lifecycle Processes:
According to ISO 12207, the processes are divided into five
different main processes:
1. Acquisition
2. Supply
3. Development
4. Operation
5. Maintenance
5
Adaptive vs. Predictive Approach
Agile
Iterative / Spiral Waterfall
Adaptive Predictive
Waterfall: since 70s till today;
Aims to predict all aspects (requirements, risks...),
The solution is accomplished at the end of the process
Iterative: since 80s (as opposed to Waterfall) till today;
The solution features are developed incrementally,
Components of the solution may be ready at the complition of the first
iterations
E.g: RUP, UP
Agile: since 90s till today;
Similar to Iterative, but the iteration duration is few weeks
Each iteration may be managed according the waterfall approach
E.g: Agile UP, Scrum, Crystal Clear, Extreme Programming, etc
6
2. Waterfall Model
Is a sequential process in which progress is
seen as flowing steadily downwards (like a
waterfall) through the phases of
Requirements, Design, Construction, Testing
and Maintenance.
The waterfall development model originates
in the manufacturing and construction
industries; highly structured physical
environments in which after-the-fact changes
are prohibitively costly, if not impossible.
Since no formal software development
methodologies existed at the time, this
hardware-oriented model was simply adapted
for software development.
7
Criticism
Many argue the waterfall model is a bad idea in practice
It impossible for any non-trivial project to finish a phase of a
software product's lifecycle perfectly before moving to the next
phases and learning from them.
For example, clients may not know exactly what requirements
they need before reviewing a working prototype and commenting
on it.
They may change their requirements constantly.
Designers and programmers may have little control over this. If
clients change their requirements after the design is finalized, the
design must be modified to accommodate the new requirements.
This effectively means invalidating a good deal of working
hours, which means increased cost, especially if a large amount
of the project's resources has already been invested in Big Design
Up Front.
8
3. V-Model
The V-model is a software/
hardware development process
which may be considered an
extension of the waterfall model.
Instead of moving down in a
linear way, the process steps are
bent upwards after the coding
phase, to form the typical V
shape.
The V-Model demonstrates the
relationships between each phase
of the development life cycle
and its associated phase of
testing.
9
4. Top-Down Model
Popularized by IBM in the 1970s, and its concepts are used in
other SDLC models such as the Waterfall and Spiral Models.
High-level requirements are documented, and programs are built to
meet these requirements. Then, the next level is designed and built.
Ex: Think of a menu-driven application. The top level menu items
would be designed and coded, and then each sublevel would be
added after the top level was finished. Each menu item represents a
subsystem of the total application.
The Top-down model is a good fit when the application is a new
one and there is no existing functionality that can be incorporated
into the new system.
A major problem with the Top-down model is that real system
functionality is not added and cannot be tested until late in the
development process. If problems are not detected early in the
project, they can be costly to remedy later.
10
5. Bottom-Up Model
The lowest level of functionality is designed and programmed first,
and finally all the pieces are integrated together into the finished
application.
The most complex components are developed and tested first.
Any project show-stoppers will surface early in the project.
It encourages the development and use of reusable software
components that can be used multiple times across many software
development projects.
Ex: Again, think of a menu driven system where the development
starts with the lowest level menu items.
Disadvantage: An extreme amount of coordination is required to
be sure that the individual software components work together
correctly in the finished system.
11
6. Rapid Prototyping (Evolutionary)
With the demand for faster software development, and because of
many well-documented failures of traditional SDLC models,
Rapid Application Development (RAD) was introduced as a
better way to add functionality to an application.
After a quick requirements gathering phase, a prototype is built
and presented to the application users.
Feedback from the user provides a loop to improve or add
functionality to the application.
Early RAD models did not involve the use of real data in the
prototype, but new RAD implementations do use real data.
The advantage of Rapid Prototyping Models is that time-to-
market is greatly reduced.
It skips many of the steps in traditional SDLC models in favor of
fast and low-cost software development.
12
The big disadvantage of the Rapid Prototyping Model is that the
process can be to fast, and, therefore, proper testing (especially
security testing) may not be done.
The Rapid Prototyping Model is used for graphical user interface
(GUI) applications such as web-based applications.
Extreme Programming (XP) is a modern incarnation of the Rapid
Prototyping Model.


13
7. Spiral Model
The development team starts with a small set
of requirements and goes through each
development phase (except Installation and
Maintenance) for those set of requirements.
Based on lesson learned from the initial iteration (via a risk
analysis process), the development team adds functionality for
additional requirements in ever-increasing "spirals" until the
application is ready for the Installation and Maintenance phase.
Iteration Prototype
The advantage of the Spiral Model over the Waterfall Model is
that the iterative approach allows development to begin even
when all the system requirements are not known or understood
by the development team.
14
Advantage: the iterative approach allows development to begin
even when all the system requirements are not known or
understood by the development team.
As each prototype is tested, user feedback is used to make sure the
project is on track.
The risk analysis step provides a formal method to ensure the
project stays on track even if requirements do change.
If new techniques or business requirements make the project
unnecessary, it can be canceled before too many resources are
wasted.
In today's business environment, the Spiral Model is the most used
SDLC model.
The Spiral Model combines elements of the Top-down and
Bottom-up SDLC models
15
8. Agile Development
Agile software development is a group of software development
methodologies based on iterative and incremental development,
where requirements and solutions evolve through collaboration
between self-organizing, cross-functional teams.

In February 2001 software developers
[
met at a ski resort in
Snowbird, Utah, to discuss lightweight development methods.
They published the "Manifesto for Agile Software Development to
define the approach now known as agile software development.

Some of the manifesto's authors formed the Agile Alliance, a non-
profit organization that promotes software development according
to the manifesto's principles.
16
Twelve principles underlie the Agile Manifesto.
See:
www.agilemanifesto.org
www.agilealliance.org
www.agilejournal.org


17
1. Customer satisfaction by rapid delivery of useful software
2. Welcome changing requirements, even late in development.
3. Working software is delivered frequently (weeks rather than
months)
4. Working software is the principal measure of progress
5. Sustainable development, able to maintain a constant pace
6. Close, daily cooperation between businesspeople and developers
7. Face-to-face conversation is the best form of communication (co-
location)
8. Projects are built around motivated individuals, who should be
trusted
9. Continuous attention to technical excellence and good design
10. Simplicity
11. Self-organizing teams
12. Regular adaptation to changing circumstances
18
Agile approach is adopted by the modern software industry
In the agile world, software requirements are developed through
continual exploration of the business need.
Agile offers the opportunity for getting the maximum benefit from
the frequent feedback provided by the business.
Wish List
Priorities
19
20

21
Scrum
Scrum is an agile software development framework for managing
software projects / application development.
Its focus is on "a flexible, holistic product development strategy
where a development team works as a unit to reach a common
goal" as opposed to a "traditional, sequential approach".
Scrum enables the creation of self-organizing teams by
encouraging co-location of all team members, and verbal
communication among all team members and disciplines in the
project.
Scrum Team:
1. Product Owner
2. Development Team
3. Scrum Master
Reference: www.scrum.org/
22

You might also like