Please enable JavaScript.
Coggle requires JavaScript to display documents.
02 Software Development Methodologies (Evolutionary methodologies and…
02
Software Development
Methodologies
Sequential methodologies
and approaches
Stages in defined order
Complete and agree
Formal review and sign-off
Project and payment milestones
Suitability
Requirements understood and stable
Rigour and documentation needed
Need to closely control cost and scope
Familiar tools, architectures, infrastructure
Strengths
Distinct stages with clear purpose
No need to revisit stages (review / agree)
Provides structure for complex projects
Designs and specifications are detailed
Controls cost and scope creep
Simple and intuitive
Weaknesses
Requires discipline to do each stage properly
Generally leads to long project timescales
Hard to handle changing requirements
No value until fully implemented
No value if stop the project early
Does not allow for early testing - might build wrong thing
Waterfall
Stages
Requirements engineering
Design
Programming
Testing
Implementation
Feasibility study
Strengths
Safe, "signed off"
Thorough
Quality is built-in
Easy to manage
Design takes into account all requirements
Good documentation
Weaknesses
Difficult to go back / change anything
Lack of user involvement
No early vision of system
Difficult to add missing requirements
Business change has high impact
Fosters "silo" mentality
"V" model
Stages
(paired)
Business requirements // user acceptance testing
System requirements // system testing
High level system design // integration testing
Unit + component design // unit testing
Development (programming)
Feasibility study // benefits realisation
Strengths
Focus on testing improves quality
Ideal for complex systems / high quality requirements
Easy to plug in external resources, due to clear interfaces
Easy to manage
Easy to scale
Weaknesses
Testing is heavy overhead for small systems
Changes have high cost impact
Early stages take longer
Working system not delivered until final stage
Evolutionary methodologies
and approaches
Early prototypes or iteration releases
Suitability
Requirements not well understood
Early delivery more important than completeness
High business or technical risk
Strengths
Early delivery of value
Minimise project risk
Handles complex requirements
Increased collaboration with business / users
Do just enough - refine later
Weaknesses
Hard to manage project (multiple teams, iterations, products)
Danger of scope creep
Higher costs due to extra (repeated) integration and testing
Danger of over-promising early functionality (user expectations)
Incremental
Stages
Feasibility study
Requirements engineering
High level system design
Iteration 1 (unit design, development, testing, implementation)
Iteration 2 (unit design, development, testing, implementation)
... Iteration N (unit design, development, testing, implementation)
Strengths
Delivers working software early
Identify and manage risks by handling in early increments
Easier to test and debug small increments
Can reduce overall delivery time by building increments in parallel
Weaknesses
Hard to manage parallel deliveries
Hard to manage change (requirements agreed up front)
Additional costs due to regression testing
Iterative
Stages
Initial planning
Iteration N (repeat)
Investigate
Plan
Requirements
Analysis and design
Development
Test
Evaluate
External release
Process
Time-boxed iterations
Self-contained mini-projects
Focus on riskiest parts up-front
Refine solution over time
Consolidate into external release at end
Strengths
Enables requirements / understanding to evolve over time
Encourages collaboration
Changes are easier to manage
Costs can be controlled
Weaknesses
Harder to project manage (iterations)
Evolving requirements can lead to never-ending scope creep
Higher costs due to additional integration and testing activities
Spiral
Process
Each spiral "mini-project" addresses one or more major risks
Progress reviewed after each iteration, and next spiral planned
Strengths
Risks are addressed early
Requirements can evolve and change over time
Collaboration with users
Early (internal) working system
Weaknesses
Danger of scope creep
Multiple iterations of working software can increase costs
Documentation may become lower priority
Poor choice for small projects or small teams
Agile
Principles
Reflection, re-tuning
Self-organising teams
Simplicity
Technical excellence, good design
Sustainable development
Progress = working software
Face-to-face conversation
Motivation + trust
Collaboration (business + devs)
Welcome changes
Working software, frequently
Satisfy customer (early, continuous)
Values
Responding to change
Customer collaboration
Working software
Individuals and interactions
Strengths
Early delivery of working software
Risks identified and handled sooner
Requirements can change and evolve
Encourages collaboration
Costs controlled
Weaknesses
More complex to manage
Danger of scope creep
Unsuitable when need audit, regulatory, safety critcal, or contractual commitments
Additional costs of testing, integration and deployment
Terminology
Also known as
System development methodology
Software development lifecycle
Software development process
Software process
Splits software development work into distinct phases/stages
Pre-definition of specific deliverables / artefacts
Process for planning, creating, deploying system
Aim = produce high quality system that users love to use
Types
Sequential
(linear)
Waterfall
"V" model
Evolutionary
(progressive versions)
Incremental (mini-waterfalls)
Iterative (DSDM, RAD, RUP, rapid prototyping, spiral)
Agile (XP, scrum)
Scope
Initial development and release
Ongoing support and maintenance
End-of-life / decomissioning
Diagram (c) 2018 Andrew Burgess
QA Apprenticeships