Methodologies
Overview
A software development methodology, or Software Development Life Cycle (SDLC) model, consists of a framework of rules, steps, roles, and principles for software development.
While many methodologies are available, the three most common are:
- Waterfall
- Agile
- Lean
Importance of Clear Requirements
Every software project should start with clear requirements. Developers and customers must work together to define these needs, which are essential for project success.
- Provide a shared understanding of project goals.
- Help prioritize critical features.
- Serve as a basis for testing and validation.
Technical Design Process
After defining requirements, developers create a technical design that shows how different parts of the software will connect. This planning is vital, much like having a blueprint for a construction project.
- Outlines system architecture and data flow.
- Identifies interfaces between components.
- Facilitates better communication among team members.
- Reduces risks by identifying potential issues early.
Waterfall Model
Once requirements are established, developers can begin building the software using different methodologies. One traditional method is the *Waterfall- model, which follows these steps:
- Define system requirements
- Create software requirements
- Develop preliminary and detailed designs
- Code and test the software
- Move into operations and maintenance
This model is linear and can be inflexible, making it hard to adapt to changes during development.

Since each phase's outcome is crucial for the next, a single misstep can disrupt the entire process. If requirements change during an iteration, they cannot be addressed until the following cycle, potentially leading to increased costs and delays in delivering features to users.
Spiral Model
Introduced in the 1980s, the Spiral Model improves on the Waterfall approach by using an iterative process with four main steps:
- Set objectives and identify constraints
- Evaluate options and manage risks
- Develop and test the software
- Plan for future work
In the Spiral mode, developers begin in the first phase and then move through each of the phases, multiple times, until they have a satisfactory finished product.

Incremental Model
The Incremental model involves developing software in small functional increments.
- Builds software in small portions called increments.
- Each increment adds functionality and can be deployed early.
- Allows early feedback and gradual improvement.
Cleanroom Model
The Cleanroom model focuses on preventing defects/errors or mistakes by following highly structured and formal methods of rigorous developing and testing.
- Focuses on preventing defects rather than fixing them.
- Uses formal specifications and statistical quality control
- Emphasizes correctness by construction.
Reuse Model
The Reuse Methodology approaches software development by using progressively developed code. It leverages existing components to speed up development.
- Builds software using existing components.
- Encourages modular design and component libraries.
- Saves time and reduces errors.
Exploratory Model
The Exploratory Methodology is flexible, trial-and-error approach useful for uncertain requirements.
- Informal, trial-and-error approach.
- Useful when requirements are unclear or research-oriented.
- Used when there's no clearly defined project objectives.
- Emphasizes learning and adaptation.
Rapid Prototyping
A development approach that builds early prototypes to explore requirements and design ideas.
- Quickly develops a prototype to clarify requirements.
- Refined iteratively based on user feedback.
- Reduces risk of building the wrong system
Different ways to apply prototyping for feedback and testing.
- Evolutionary Prototyping: Grows gradually into the final system.
- Operational Prototyping: Tested in the real environment for performance and usability.
Joint Application Development (JAD)
A collaborative approach to gather requirements and build consensus.
- Conducts workshops with developers and users.
- Speeds up requirements gathering and consensus.
- Improves communication and reduces misunderstandings.
Rapid Application Development (RAD)
Focuses on quick development with iterative prototypes.
- Fast development with prototypes and iterative releases.
- Prioritizes speed and user feedback over detailed documentation.
- Best for small to medium projects with clear requirements.
Agile Method
The Agile method is favored for its adaptability and speed. Key Agile principles include:
- Valuing people and communication over strict processes
- Delivering functional software rather than heavy documentation
- Encouraging customer collaboration
- Being open to changing requirements
Agile methodology does not use prototypes to represent the full product but breaks the product down into individual features that are continuously being delivered.
For more information, please see What is Agile.
A notable element of many Agile methodologies is their focus on user stories. A user story is a sentence that describes what a user wants to do and why.
Kanban
Kanban is a visual workflow management system to optimize tasks.
- Visual system to manage workflow.
- Tracks tasks on boards to optimize flow and reduce bottlenecks.
- Limits work in progress for better efficiency.
Extreme Programming (XP)
Extreme Programming (XP) emphasizes high quality, adaptability, and close collaboration.
- Agile approach focused on quality and responsiveness.
- Uses pair programming, test-driven development, and frequent releases.
- Encourages continuous feedback and collaboration.
Lean Software Development
Lean software development is based on Lean Manufacturing principles, which are focused on minimizing waste and maximizing value to the customer. There are seven principles for lean:
- Eliminate waste
- Amplify learning
- Decide as late as possible
- Deliver as fast as possible
- Empower the team
- Build integrity in
- Optimize the whole
For more information, please see Lean Principles.
Documentation
Documentation helps developers, users, and stakeholders understand, use, and maintain the software effectively.
-
Source Code Library
- Stores source code in a secure, centralized repository
- Helps with version control, collaboration, and rollback when needed
-
Source Code Documentation
- Makes the code easier to read, understand, and maintain
- Includes design documents and code comments that explain logic and structure
-
Software Documentation
- Explains how the software works and how to use it
- Useful for end users, support staff, and new team members
Constraints
Every software project has limits, commonly in cost, time, usability, and security. These constraints must be balanced carefully.
You can make it cheap, fast, usable, or secure - but not all at once.
With a fixed budget, management usually chooses two priorities to focus on.
-
Technical Debt
Choosing speed often lowers quality, causing technical debt:
- “I’ll fix it later; just need to meet the deadline”
- Quick fixes or temporary solutions are used to save time
-
Management Pressure
Management often demands fast delivery:
- Assumes problems can be fixed after release
- May ignore long-term costs of rushed work
- Can lead to unstable or hard-to-maintain systems
Integrated Product Team
An Integrated Product Team (IPT) is a group of people from different areas working together to achieve a common goal: delivering a complete product efficiently and effectively.
-
IPPD (Integrated Product and Process Development)
- Integrates all acquisition and development activities
- Collaboratnig to align design, process, and outcomes
-
IPT (Integrated Product Team)
- A cross-functional team responsible for specific project deliverables
- Encourages shared ownership and accountability
-
DevOps
- Collaborative relationship between development and IT operations
- Based on Agile principles: integration, communication, and continuous delivery
- Involves skilled QA teams and support experts to ensure reliability and speed