SYSTEMS DEVELOPMENT
METHODOLOGIES
Systems Development Methodologies
• A methodology is a formalized approach to
implementing the SDLC
• Well-known methodologies include:
Waterfall development
Parallel development
V-model
Rapid application development
Agile development
Categories of Methodologies
• Structured Design
Waterfall Development
Parallel Development
• Rapid Application Development
Phased
Prototyping
Throwaway Prototyping
• Agile Development
eXtreme Programming
Structured Design 1
Waterfall Development
Waterfall model phases
• Requirement analysis and definition
• System and software design
• Implementation and unit testing
• Integration and system testing
• Operation and maintenance
The drawback of the waterfall model is the difficulty
of accommodating change after the process is
underway
Waterfall model problems
• Inflexible partitioning of the project into distinct stages
• This makes it difficult to respond to changing customer
requirements
• Therefore, this model is only appropriate when the
requirements are well-understood
Waterfall model describes a process of
stepwise refinement
Based on hardware engineering models
Widely used in military and aerospace
industries
Why Not a Waterfall
But software is different :
• No fabrication step
Program code is another design level
Hence, no “commit” step – software can always be changed…!
• No body of experience for design analysis (yet)
Most analysis (testing) is done on program code
Hence, problems not detected until late in the process
• Waterfall model takes a static view of requirements
Ignore changing needs
Lack of user involvement once specification is written
• Unrealistic separation of specification from the design
• Doesn’t accommodate prototyping, reuse, etc
Structured Design 2
Parallel Development
Rapid Application Development 1
Phased Development
Rapid Application Development 2
System Prototyping
Rapid Application Development 3
Throwaway Prototyping
Agile Development
Extreme Programming
Evolutionary development
• Exploratory development
Objective is to work with customers and to evolve a final system from
an initial outline specification.
Should start with well-understood requirements.
The system evolves by adding new features as they are proposed by
customer.
Evolutionary development
• Throw-away prototyping
Objective is to understand the system requirements. Should start with
poorly understood requirements
• Develop “quick and dirty” system quickly;
• Expose to user comment;
• Refine;
Until adequate system developed.
Particularly suitable where:
• detailed requirements not possible;
• powerful development tools (e.g. GUI) available
Evolutionary development
Concurr ent
activities
Initial
Specification
version
Outline Intermediate
Development
description versions
Final
Validation
version
Evolutionary Development
• Problems
Lack of process visibility
Systems are often poorly structured
Special skills (e.g. in languages for rapid prototyping) may
be required
• Applicability
For small or medium-size interactive systems
For parts of large systems (e.g. the user interface)
For short-lifetime systems
Selecting the Right Methodology
Usefulness Waterfall Parallel Phased Prototyping Throwaway Extreme
Prototyping Programming
for
Unclear user Poor Poor Good Excellent Excellent Excellent
requirements
Unfamiliar Poor Poor Good Poor Excellent Poor
technology
Complex Good Good Good Poor Excellent Poor
systems
Reliable Good Good Good Poor Excellent Good
systems
Short time Poor Good Excellent Excellent Good Excellent
schedule
Schedule Poor Poor Excellent Excellent Good Good
visibility
SYSTEMS DEVELOPMENT
METHODOLOGIES