Software Development Methodologies
The basic process steps of the SDLC (Software Development Life Cycle)
can be combined in many ways to create a successful software
methodology (process model) for software development.
The methodology chosen for a particular system depends on many factors
including the type of software product and the business practices of the
client’s organisation.
The development of a major system may use all three methodologies in
various combinations.
Sequential – The Waterfall Model (Linear Sequential Model)
The waterfall model is a heavyweight methodology with full
documentation of each step.
Requirement
s
Design
Developme
nt (coding)
Testin
g
Evaluati
Advantages: on
Process visibility
Separation of tasks Maintena
Quality control at each step nce
Cost monitoring at each step
Disadvantages:
No working software is produced until late during the life cycle
Cannot accommodate changing requirements
Risk and uncertainty is high with this model, i.e., projects where
requirements are at moderate to high risk of changing
In practice, each stage reveals new understanding of the previous stages,
which often requires the earlier stages to be revised. The Waterfall Model
is not flexible enough.
Situations where most appropriate:
Project has clear objectives and solution.
Pressure does not exist for immediate implementation.
Project requirements can be stated unambiguously and
comprehensively.
Project requirements are stable or unchanging during the system
development life cycle.
Strict requirement exists for formal approvals at designated
milestones.
Situations where least appropriate:
Large projects where the requirements are not well understood or are
changing for any reasons such as external changes, changing
expectations, budget changes or rapidly changing technology.
Iterative – Prototyping
This is a medium weight methodology with documentation created
during the process.
Office of Information Systems (2005) Selecting a Development Approach, p3.
Concept
Create a prototype system early in the development process.
Review the prototype with clients and test it with users, to improve
the understanding of the requirements and clarify the design.
Refine the prototype in a series of iterations.
Requirements are (can be) hard to understand until there is an
operational system, particularly with user interfaces.
Mistakes in the requirements are the most expensive to correct.
Users involved throughout the development.
Development is done in cycles.
Iterative refinement uses various techniques that enable the client to
review the planned system early during development, e.g., user interface
mock-up; dummy modules.
Advantages:
Addresses the inability of many users to specify their information
needs
Can realistically model important aspects of a system during each
phase of the traditional life cycle
Improves user participation in system development and
communication among project stakeholders
Users are actively involved in the development
Useful for resolving unclear objectives
Disadvantages:
Approval process and control is not strict
Requirements may frequently change
Designers may prototype too quickly
Can lead to poorly designed systems
Situations where most appropriate:
Project objectives are unclear
Pressure exists for immediate implementation of something
User is not fully knowledgeable
Situations where least appropriate:
Projects objectives are very clear
Project risk regarding requirements definition is low
Incremental
The Incremental approach uses a set number of steps and development
goes from start to finish in a linear path of progression. This approach
combines elements of the linear sequential model (applied repetitively)
with the iterative philosophy of prototyping.
Concept
The project is divided into a large number of small tasks, known as
sprints (increments).
For each sprint, a team works through a full software development
cycle including planning, requirements analysis, design, coding,
testing, and acceptance testing, and release.
Each sprint is completed in a fixed time period, e.g., four weeks.
The size of a sprint is based on team size, e.g., 5-10 people.
Advantages:
Generates working software quickly and early during the software
life cycle
This model is more flexible – less costly to change scope and
requirements
It is easier to test and debug during a smaller iteration
In this model customer can respond to each build
Lowers initial delivery cost
Easier to manage risk because risky pieces are identified and
handled during each iteration
Disadvantages:
Needs good planning and design
Needs a clear and complete definition of the whole system before it
can be broken down and built incrementally
Total cost is higher than waterfall
Incremental – The Spiral Model
The spiral model combines the controlled and systematic aspects of the
linear sequential model (applied repetitively) with the iterative nature of
prototyping.
Office of Information Systems (2005) Selecting a Development Approach, p6.
Advantages:
Mostly concentrates on risk analysis
Most useful for large and high risk projects
Useful if requirements changing frequently or not well understood
Strong approval and documentation control
Software is produced early in the software life cycle
Disadvantages:
Not useful for small projects
Project duration and cost could be infinite because of spiral feature
Documentation could be lengthy
Risk analysis requires highly specific expertise
Situations where most appropriate:
When costs and risk evaluation is important
Users are unsure of their needs
Requirements are complex
For medium to high-risk projects
Situations where least appropriate:
Risk avoidance is a low priority
Incremental – Rapid Application Development (RAD)
RAD is an incremental model that emphasises a short development cycle.
The RAD model distributes the analysis, design, build, and test phases into
a series of short, iterative development cycles. Following are the phases
of RAD Model:
Business Modelling
Data Modelling
Process Modelling
Application Generation
Testing and Turnover
RAD Model, Software Development Life Cycle (SDLC), tutorialspoint.com, p23
Concept
Fast development and delivery of a high quality system at a
relatively low investment cost
Aims to produce high quality systems quickly through the use of
iterative prototyping (at any stage of development) and active user
involvement
Advantages:
Reduced development time
Increases reusability of components
Quick initial reviews occur
Encourages customer/user feedback
Integration from very beginning solves a lot of integration issues
Disadvantages:
Depends on strong team and individual performances for identifying
business requirements.
Only system that can be modularized can be built using RAD
Requires highly skilled developers/designers
High dependency on modelling skills
Situations where most appropriate:
Project is of small-to-medium scale and of short duration (60-90
days)
Project scope is focused/constrained and business objectives are
well defined and narrow
Requirements are well understood
Senior management commitment exists to ensure end-user
involvement
Situations where least appropriate:
When technical risks are high
When a new application makes heavy use of new technology
When developers and customers are not committed to the rapid-fie
activities necessary to complete the system in a much shortened
time frame
Project scope is broad and business objectives are obscure
Large, scalable projects where sufficient human resources are not
available to create the right number of RAD teams