Software Process
Agile
For decades, software development was dominated by the Waterfall model, a sequential process where each phase—requirements, design, implementation, verification, and maintenance—had to be completed entirely before the next began. This “Big Upfront Design” approach assumed that requirements were stable and that designers could predict every challenge before a single line of code was written. However, this led to significant industry frustrations: projects were frequently delayed, and because customer feedback arrived only at the very end of the multi-year cycle, teams often delivered products that no longer met the user’s changing needs.
In Waterfall, feedback from the customer only appears at the very end — after months or years of work:
Detailed description
UML state machine diagram with 5 states (Requirements, Design, Implementation, Testing, Maintenance). Transitions: the initial pseudostate transitions to Requirements; Requirements transitions to Design on sign-off; Design transitions to Implementation on sign-off; Implementation transitions to Testing on code complete; Testing transitions to Maintenance on release; Maintenance transitions to the final state.
States
- Requirements
- Design
- Implementation
- Testing
- Maintenance
Transitions
- the initial pseudostate transitions to Requirements
- Requirements transitions to Design on sign-off
- Design transitions to Implementation on sign-off
- Implementation transitions to Testing on code complete
- Testing transitions to Maintenance on release
- Maintenance transitions to the final state
Agile inverts this: the team delivers a small working increment every one to four weeks and lets customer feedback reshape each subsequent iteration — the feedback loop closes in weeks, not years.
Agile Manifesto
In 2001, a group of software experts met in Utah to address these failures, resulting in the Agile Manifesto. Rather than a rigid rulebook, the manifesto proposed a shift in values:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan While the authors acknowledged value in the items on the right, they insisted that the items on the left were more critical for success in complex environments.
Core Principles
The heart of Agility lies in iterative and incremental development. Instead of one long cycle, work is broken into short, time-boxed periods—often called Sprints—typically lasting one to four weeks. At the end of each sprint, the team delivers a “Working Increment” of the product, which is demonstrated to the customer to gather rapid feedback. This ensures the team is always building the “right” system and can pivot if requirements evolve. Key principles supporting this include:
- Customer Satisfaction: Delivering valuable software early and continuously.
- Simplicity: The art of maximizing the amount of work not done.
- Technical Excellence: Continuous attention to good design to enhance long-term agility.
- Self-Organizing Teams: Empowering developers to decide how to best organize their own work rather than acting as “coding monkeys”.
Common Agile Processes
The most common agile processes include:
- Scrum: The most popular framework using roles like Scrum Master, Product Owner, and Developers.
- Extreme Programming (XP): Focused on technical excellence through “extreme” versions of good practices, such as Test-Driven Development (TDD), Pair Programming, Continuous Integration, and Collective Code Ownership
- Lean Software Development: Derived from Toyota’s manufacturing principles, Lean focuses on eliminating waste
Practice This
Use the flashcards to retrieve the process vocabulary, then use the quiz to decide which process assumptions fit realistic project contexts.
Software Process & Agile Flashcards
Concepts, history, and trade-offs of software processes — Waterfall, Agile, the Manifesto, iterative-incremental development, and major Agile frameworks (Scrum, XP, Lean).
What is the Waterfall model, and why did it fall out of favor?
What are the four values of the Agile Manifesto?
What does iterative and incremental development mean?
Why is late customer feedback Waterfall’s most costly failure mode?
Distinguish iterative from incremental delivery.
Name three of the key Agile principles beyond the four values.
Compare Scrum, XP, and Lean Software Development.
When is Waterfall still the right choice?
What is cargo-cult Agile?
What does ‘responding to change over following a plan’ actually mean for a working team?
Why does simplicity (maximizing the work not done) appear as an Agile principle?
Why must Agile teams invest in technical excellence even though working software is the primary measure of progress?
What is a Sprint (in Scrum) or Iteration (in XP)?
What is the role of self-organizing teams in Agile?
Why is choosing the right software process a context-dependent decision, not a universal answer?
Software Process & Agile Quiz
Apply software-process thinking to real situations — choose between Waterfall and Agile for a given domain, judge what 'over' means in the Agile Manifesto, recognize Agile anti-patterns, and reason about iterative-vs-incremental delivery.
A team is building software for a Mars rover that must launch in 2 years, run autonomously for at least 5 more, and cannot receive software updates after the launch window closes. The product manager insists on Agile. What is the right pushback?
A consultant says “Agile means no documentation and no planning.” How would you respond, citing the Agile Manifesto?
A team practices what they call Agile: they hold daily standups, run two-week sprints, and have a Scrum Master. But they also produce a 150-page requirements document up front, refuse to change any requirement once a sprint starts, and demo to the customer only at the end of the engagement. Diagnose what’s actually going on.
Which of these are core failures of Waterfall that Agile was designed to address? Select all that apply.
An Agile team is asked to estimate when they will be ‘done’ with a feature. They reply: “We’re delivering a working increment every 2 weeks; you can stop us whenever the product is good enough.” What Agile principle does this illustrate?
An organization’s leadership says: “Our developers are coding monkeys — we’ll tell them what to build.” A senior engineer says this violates a core Agile principle. Which one?
Compare Scrum, XP, and Lean Software Development at the highest level. Which framing is most accurate?
A startup CEO says: “We’re Agile, so we don’t need any plans — we just react to customer feedback every two weeks.” What’s the right correction?
A team’s product owner wants to demo working software to the customer every iteration but the engineering manager pushes back: “Two-week iterations are too short to produce anything demonstrable.” Which Agile principle does the engineering manager’s view violate, and what’s the right architectural response?
A team is in iteration 7 of 12. Halfway through the iteration, the customer comes back with a high-priority requirement change that affects work already in progress. How should the team respond per Agile values?