Software Process Models Notes
Software Process Models
Quick Look on the Software Process Model
A software process model provides a structured framework that defines the steps for developing software.
It serves as a roadmap for teams to produce timely and high-quality software.
Who is Involved?
Software Engineers: Adapt and apply the process to real project work.
Managers: Plan, monitor, and ensure process adherence.
Stakeholders/Customers: Define requirements, provide feedback, and validate the outcome.
Why is it Important?
Ensures stability, control, and organization in development.
Prevents chaotic and unstructured project progression.
Supports flexibility in modern agile environments.
Maintains control & documentation for quality outcomes.
What Are the Steps?
The steps vary based on project type.
Critical Systems (e.g., avionics) → rigorous, structured models.
Web or App Development → agile, iterative approaches.
Model choice depends on:
Project size and complexity.
Level of risk and criticality.
Client needs and delivery timelines.
What Is the Work Product?
Work products are the outputs generated during the process, including documents (requirements, design, test plans), programs (source code, executables), and data (configuration files, logs, user data).
These outputs are essential for development, maintenance, and future enhancements.
How to Ensure Correctness?
By using Software Process Assessment Mechanisms, which check:
Maturity of the process.
Consistency in execution.
Adherence to standards.
Best indicators of success:
Product Quality
On-time Delivery
Long-term Maintainability.
A Generic Model Process
A Generic Process Model is a structured framework that organizes the work activities, actions, and tasks of software development systematically.
It ensures all software engineering activities are well-coordinated and executed efficiently.
Each framework activity is populated by a set of software engineering actions.
Each action is defined by a task set that identifies:
Work tasks to be completed
Work products to be produced
Quality assurance points required
Milestones to indicate progress.
Framework Activities & Task Sets
The software process framework includes five main activities:
Communication – gather requirements
Planning – estimate resources, define schedules
Modeling – create design and analysis models
Construction – code and test
Deployment – deliver and maintain the product
Each activity contains:
A set of actions
Each action has a task set, which includes:
Work tasks
Deliverables
Quality assurance steps
Umbrella Activities
These are supporting activities that run across the main process.
Project tracking and control
Risk management
Quality assurance
Configuration management
Technical reviews
Documentation and metrics collection
Umbrella activities maintain consistency, efficiency, and quality across the project lifecycle.
Process Flow
The process flow determines how framework activities and their associated tasks are executed in terms of sequence and timing.
There are four common types of process flows:
Linear Process Flow: Activities are executed sequentially, starting from communication and ending with deployment.
Iterative Process Flow: Some activities are repeated before moving to the next stage, allowing for refinement at each step.
Evolutionary Process Flow: The software evolves over multiple cycles, with each iteration adding improvements to the previous version.
Parallel Process Flow: Multiple activities are executed concurrently, such as modeling one aspect while constructing another.
1.1 Defining a Framework Activity
A framework activity in software development consists of a structured set of actions and tasks necessary to execute a particular stage of the software process.
The level of detail and complexity of these activities depend on factors such as the nature of the problem, the skills of the team, and the stakeholders' requirements.
For a small project with a single stakeholder and simple requirements, the communication activity may involve just a phone call to gather requirements. In such a case, the task set would include:
Contacting the stakeholder.
Discussing requirements and taking notes.
Organizing notes into a short document.
Sending the document for review and approval.
For a complex project with multiple stakeholders and conflicting requirements, the communication activity must be more structured.
It may involve six key actions:
Inception
Elicitation
Elaboration
Negotiation
Specification
Validation
Each of these actions requires multiple tasks and produces specific work products to ensure clear and well-defined requirements.
A well-defined framework activity ensures that each software phase is executed appropriately — balancing simplicity and thoroughness depending on project needs.
1.2 Identifying a Task Set
A task set defines the actual work to be done to accomplish the objectives of a software engineering action.
For example, elicitation (more commonly called “requirements gathering”) is an important software engineering action that occurs during the communication activity.
The goal of requirements gathering is to understand what various stakeholders want from the software that is to be built.
For a small, relatively simple project, the task set for requirements gathering might look like this:
Make a list of stakeholders for the project.
Invite all stakeholders to an informal meeting.
Ask each stakeholder to make a list of features and functions required.
Discuss requirements and build a final list.
Prioritize requirements.
Note areas of uncertainty.
For a larger, more complex software project, a different task set would be required. It might encompass the following work tasks:
Make a list of stakeholders for the project.
Interview each stakeholder separately to determine overall wants and needs.
Build a preliminary list of functions and features based on stakeholder input.
Schedule a series of facilitated application specification meetings.
Conduct meetings.
Produce informal user scenarios as part of each meeting.
Refine user scenarios based on stakeholder feedback.
Build a revised list of stakeholder requirements.
Use quality function deployment techniques to prioritize requirements.
Package requirements so that they can be delivered incrementally.
Note constraints and restrictions that will be placed on the system.
Discuss methods for validating the system.
The depth and formality of the task set depends on project size. The goal is to ensure quality and agility.
1.3 Process Pattern
A process pattern is a reusable solution to common problems encountered in the software process.
It provides a structured way to address challenges by offering a template that includes a problem description, the context in which it occurs, and a set of proven solutions.
By using process patterns, a software team can efficiently design a process that meets the needs of a project.
Ambler has proposed a template for describing a process pattern.
Pattern Template (by Ambler)
a. Pattern Name – A descriptive name (e.g., Technical Reviews).
b. Forces / Intent – The environment and challenges influencing the pattern.
c. Type – The pattern type is specified. Ambler suggests three types:
* Stage pattern—defines a problem associated with a framework activity for the process. Since a framework activity encompasses multiple actions and work tasks, a stage pattern incorporates multiple task patterns that are relevant to the stage. An example of a stage pattern might be EstablishingCommunication. This pattern would incorporate the task pattern RequirementsGathering and others.
* Task pattern—defines a problem associated with a software engineering action or work task and relevant to successful software engineering practice (e.g., RequirementsGathering is a task pattern).
* Phase pattern—define the sequence of framework activities that occurs within the process, even when the overall flow of activities is iterative in nature. An example of a phase pattern might be SpiralModel or Prototyping.
d. Initial Context – Conditions before applying the pattern, such as team structure and project constraints.
e. Problem – The specific challenge the pattern aims to solve.
f. Solution – The steps to implement the pattern and modify the process.
g. Resulting Context – The expected conditions after applying the pattern.
h. Related Patterns – Other patterns that connect to this one.
i. Known Uses and Examples – Real-world scenarios where the pattern is applicable.
Example of Process Pattern
The following abbreviated process pattern describes an approach that may be applicable when stakeholders have a general idea of what must be done but are unsure of specific software requirements.
a. Pattern name: RequirementsUnclear
b. Intent: This pattern describes an approach for building a model (a prototype) that can be assessed iteratively by stakeholders in an effort to identify or solidify software requirements.
c. Type: Phase pattern.
d. Initial context: The following conditions must be met prior to the initiation of this pattern:
* stakeholders have been identified.
* a mode of communication between stakeholders and the software team has been established.
* the overriding software problem to be solved has been identified by stakeholders.
* an initial understanding of project scope, basic business requirements, and project constraints has been developed.
e. Problem: Requirements are hazy or nonexistent, yet there is clear recognition that there is a problem to be solved, and the problem must be addressed with a software solution. Stakeholders are unsure of what they want; that is, they cannot describe software requirements in any detail.
f. Solution: A description of the prototyping process would be presented here.
g. Resulting context: A software prototype that identifies basic requirements (e.g., modes of interaction, computational features, processing functions) is approved by stakeholders.
Following this:
the prototype may evolve through a series of increments to become the production software or
the prototype may be discarded and the production software built using some other process pattern.
h. Related patterns: The following patterns are related to this pattern:
CustomerCommunication, IterativeDesign, IterativeDevelopment, CustomerAssessment,
RequirementExtraction.
i. Known uses and examples: Prototyping is recommended when requirements are uncertain.
2. Prescriptive Process Model
Prescriptive process models provide a structured and organized approach to software development.
They define what to do, when to do it, and how to do it through a set of activities, tasks, and workflows.
Software development exists on the "edge of chaos," where a balance between order and flexibility is necessary.
Too much order ➝ rigid, stifles creativity.
Too much chaos ➝ disorganized, hard to manage.
Prescriptive models aim to find the right balance between structure and flexibility.
Prescriptive models are not one-size-fits-all. They provide a guide—not a cage.
2.1 Waterfall model and enhance waterfall model
A traditional software development model introduced by Winston W. Royce (1970).
It follows a linear and sequential approach, where each phase must be completed before the next begins.
This model is widely used for projects where requirements are well-defined and unlikely to change.
It was once very popular. Today, it is not that popularly used.
However, it is important because most other types of software development life cycle models are a derivative of this.
Key Phases of the Waterfall Model
a. Communication:
All requirements are gathered at the beginning from stakeholders.
Conducted via interviews, meetings, and questionnaires.
Output: Software Requirement Specification (SRS).
b. Planning:
Detailed project plan is created with timelines and milestones.
Design document includes data flow, architecture, and resources.
c. Modeling:
Logical and physical system design is finalized.
No prototyping; system is built strictly based on documentation.
d. Construction:
Actual coding starts after design.
Testing happens after coding is fully completed (unit, integration, system testing).
e. Deployment:
Product is delivered to client.
Any change requires going back to the start, which is costly and time-consuming.
Advantages of Waterfall Model
Easy to manage and understand.
Clearly defined stages and deliverables.
Works well when requirements are clear and fixed.
Disadvantages
Inflexible to changes once the process starts.
Testing is late, so bugs are found too late.
Not suitable for complex or dynamic projects.
Enhanced Waterfall Model
The Enhanced Waterfall Model, also known as the Modified Waterfall Model, improves upon the traditional Waterfall by allowing feedback between phases.
This model introduces slight flexibility, ensuring that if issues are found in later stages, some modifications can be made without restarting the entire process.
Errors and changes can be managed more easily within the same framework.
What’s Improved in the Enhanced Model?
a. Communication:
Requirements can be revised based on feedback.
Stakeholders can validate or refine needs after initial documentation.
b. Planning:
Adds risk analysis to anticipate potential problems early.
Allows minor adjustments during later phases.
c. Modeling:
May include prototypes or visual models for early feedback.
Helps validate design before full development.
d. Construction:
Allows overlap of coding and testing (incremental testing).
Bugs are caught earlier, reducing rework.
e. Deployment:
Post-delivery feedback is considered for minor updates.
Encourages continuous improvement.
Advantages Over Traditional Waterfall
Allows limited iteration and flexibility.
Testing and development can happen side by side.
Can adapt to small requirement changes.
Improves communication and reduces risk.
When to Use Each Model
Waterfall Model - Small-scale, clearly defined, and stable projects
Enhanced Waterfall - Projects that require structure with some flexibility for small adjustments
Comparison Table
| Aspect | Waterfall Model | Enhanced Waterfall Model |
| :---------------------- | :--------------------------------------------- | :---------------------------------------------------------------- | ------------- |
| Communication | Requirements are gathered upfront in a single phase. | Ongoing feedback is incorporated throughout the project. |
| Planning | Detailed plan is created at the start and rarely changes. | Planning includes risk analysis and allows for minor adjustments. |
| Modeling | Detailed system design created after requirements gathering. | Prototypes or initial working models are developed for early feedback. |
| Construction | Development and testing are done sequentially, after full development. | Testing overlaps with development to identify and fix issues early.| |
| Deployment | Once deployed, only bug fixes and minor maintenance are allowed. | Post-deployment feedback is actively used for minor adjustments and improvements. |
| Flexibility | Highly structured with little flexibility for changes. | More flexibility with iterative feedback and adjustments. |
| Risk Management | Risks are not addressed until later in the project. | Risks are analyzed early and addressed during planning. |
| Error Detection | Errors are detected only after full development and testing. | Errors are detected early through continuous testing during development. |
2.2 Incremental Process Models
The Incremental Process Model is a method of software development where the system is designed, implemented, and tested in small sections called increments.
Each increment delivers part of the total functionality.
Over time, these increments combine to form the complete system.
It is particularly effective for large projects and when early delivery of a working system is needed.
Development Strategy
The approach is both sequential and iterative:
The first increment provides a core version with basic features.
Further increments build upon it by adding new features or enhancing existing ones.
After each increment, user feedback is gathered and used to shape the next cycle.
Key Features
a. Sequential Increment Delivery:
Each increment delivers a set of functionalities.
These are released in a planned sequence, allowing users to gradually experience the system and developers to refine it over time.
b. Core Product First:
The initial increment offers a usable product with essential functions, allowing early customer interaction and real-world usage.
c. Iterative Feedback Loop:
Feedback is gathered after each delivery.
This helps identify improvements and ensures that the final product aligns with user needs.
d. Risk Management:
Risks are easier to manage because each increment is small and focused.
Technical uncertainties can be addressed in early increments.
Advantages
a. Early Delivery of Software:
Functional software is available to users early in the lifecycle, even before the product is fully complete.
b. Flexibility and User-Driven Development:
Changes based on user suggestions can be incorporated in future increments, improving product relevance.
c. Reduced Risk:
Issues can be identified and resolved incrementally, limiting their impact.
d. Efficient Resource Use:
Smaller teams can work on initial increments, with more resources added as the project scales.
e. Continuous User Engagement:
Users are part of the development process, resulting in a product that better fits their expectations.
Disadvantages
a. Complex Project Management:
Handling multiple increments and their dependencies requires careful planning and coordination.
b. Incomplete Early Versions:
Initial versions may lack important features, which can cause user dissatisfaction if not managed well.
c. Risk of Feature Creep:
Ongoing feedback may lead to the uncontrolled addition of features, expanding the project scope.
d. Dependency on Quality Feedback:
Poor or incomplete feedback can lead to wrong assumptions in future increments.
e. Maintenance Overhead:
As the number of increments increases, maintaining uniformity and integration becomes more difficult.
When to Use
When early delivery of working software is important.
When project scope is broad but can be broken into modules.
When users are available to give frequent feedback.
When requirements are expected to evolve during development.
2.3 Rapid Application Development (RAD)
Rapid Application Development (RAD) is a flexible and fast-paced software development model that emphasizes rapid prototyping, continuous user involvement, and quick feedback cycles.
It focuses on quickly delivering functional software by breaking the development process into smaller, iterative segments.
RAD is especially suited for projects that need to respond to changing requirements and require active user participation throughout.
Unlike traditional models such as the Waterfall model, RAD is designed to be more flexible and responsive to user feedback and changing requirements throughout the development process.
Development Strategy
RAD follows a cyclical and adaptive approach:
Initial prototypes are developed based on basic requirements.
Users interact with the prototypes and provide feedback.
The product is refined over multiple iterations, each leading to a more complete version.
Development happens in time-boxed phases, ensuring rapid progress and delivery.
Key Features
a. Prototyping:
RAD prioritizes early creation of working prototypes, enabling users to interact with a functional model early on.
This helps clarify requirements and refine functionality iteratively.
b. Iterative Development:
The system is developed in short iterations, with each cycle focusing on a subset of features.
Feedback is gathered after each cycle to improve the next version.
c. High User Involvement:
Users participate closely in design, prototyping, and testing.
Their feedback directly influences product evolution, ensuring it stays aligned with their goals.
d. Timeboxing:
Each development phase is restricted to a fixed period (e.g., 2–6 weeks), which promotes discipline, accelerates delivery, and avoids unnecessary delays.
e. Component-Based Construction:
RAD promotes the use of pre-built, reusable software components and visual development tools to minimize coding effort and speed up delivery.
Advantages
a. Faster Delivery:
Prototypes and frequent iterations enable early availability of a working product, even before full development is complete.
b. Adaptive to Change:
Due to constant user feedback, the software evolves easily in response to changing business needs or user requirements.
c. High User Satisfaction:
Close collaboration and regular interaction ensure that users receive a product that closely matches their expectations.
d. Cost Efficiency:
Reusing components and reducing extensive documentation efforts can lower overall project costs, especially for smaller projects.
e. Reduced Risks:
Frequent feedback and testing help detect errors or misaligned features early, preventing costly changes later.
Disadvantages
a. Not Ideal for Large Systems:
RAD is better suited for smaller to medium-sized projects.
Large, complex systems may lack the structure and detailed planning RAD requires.
b. Needs Expert Developers:
RAD relies on experienced developers, designers, and tools to build and modify prototypes quickly.
A lack of expertise can derail progress.
c. Resource Intensive:
Frequent communication with users, tight deadlines, and multiple iterations demand significant time, personnel, and coordination.
d. Scope Creep Risk:
Ongoing feedback can lead to uncontrolled growth in feature requests, resulting in a project that expands beyond initial goals.
e. Quality Challenges:
Because of the emphasis on speed, thorough testing and documentation may be compromised, potentially leading to software quality issues.
When to Use
Projects with clearly defined and easily understood requirements.
Applications requiring short development cycles.
When users are readily available for active and ongoing involvement.
Projects where early delivery is more valuable than full feature completeness.
2.4 Prototype and Spiral Model
Prototyping is a software development approach used when requirements are incomplete or unclear.
It enables developers to build a quick working model (prototype) that helps both developers and stakeholders visualize and refine software requirements early in the process.
Types of Prototypes
Throwaway Prototype: Discarded after requirements are gathered. Not used in the final system (as suggested by Fred Brooks).
Evolutionary Prototype: Gradually refined and transformed into the final software product over time.
Phases of Prototyping
Communication: Developers and stakeholders discuss software goals, basic requirements, and identify unclear areas.
Quick Design: A rough design of key system aspects is created — mainly user interfaces and outputs.
Prototype Construction: A quick working model is built based on the quick design.
Stakeholder Evaluation: The prototype is presented to users for feedback and review.
Refinement & Iteration: Feedback is incorporated and the prototype is improved over multiple iterations.
Benefits of Prototyping
Early visibility of software for stakeholders.
Better understanding of vague or evolving requirements.
Reduces risk of major requirement mismatches later.
Encourages user involvement and satisfaction.
Challenges of Prototyping
Misleading Impressions: Stakeholders may treat the prototype as the final product, expecting it to be deployable with minor fixes.
Poor Technical Choices: To deliver quickly, developers may use inefficient or temporary solutions that compromise long-term quality.
Best Practices
Set Clear Expectations: Ensure stakeholders understand the prototype is only a temporary tool.
Focus on Learning, Not Delivery: Use it to understand needs, not to build the final product.
Refactor or Rebuild: Don’t use the prototype as the production system unless it is re-engineered properly.
2.5 Spiral Process Model
The Spiral Model, proposed by Barry Boehm, is a risk-driven software process model that combines the features of the Waterfall model and Prototyping.
It uses an iterative approach, where each loop of the spiral represents a phase in software development with increasing levels of refinement and detail.
In the spiral model, software development occurs in a series of evolutionary releases.
Each iteration around the spiral builds on the previous one, gradually increasing the level of detail and sophistication in the software.
Early iterations may focus on creating a prototype, and later iterations refine this prototype into a fully functional product.
How It Works
Development occurs in repeated cycles (spirals).
Each spiral builds upon the previous one, starting with planning and ending with a more complete version of the software.
Focuses on early risk identification and continuous refinement.
Phases in the Spiral
Each loop of the spiral includes the following four major activities, executed in clockwise direction:
a. Planning
Define project goals, constraints, alternatives, and schedule.
Adjust plan based on prior cycle feedback.
b. Risk Analysis
Core activity of the spiral model.
Identify, analyze, and plan mitigation for project risks.
c. Engineering
Design, develop, and test either a prototype or incremental release.
The system is refined in each cycle.
d. Customer Evaluation
Get stakeholder feedback on the prototype or increment.
Feedback shapes the next iteration and helps reduce misunderstanding.
After multiple spirals, a fully functional and validated product is released that meets user expectations with minimized risk.
Advantages of Spiral Model
Strong Risk Management: Risks are continuously analyzed and resolved.
Iterative Flexibility: Accommodates changes throughout the process.
User Involvement: Regular customer evaluations improve product alignment with needs.
Progressive Development: Software evolves in increasing levels of functionality.
Challenges of Spiral Model
Complex Management: Needs expert planning and risk-handling skills.
Costly: Iterative cycles can be resource-intensive (time, budget, personnel).
Best Suited For
Large, high-risk, or mission-critical projects where managing uncertainty is essential.
2.6 Rational Unified Process Model
The Rational Unified Process (RUP) is an iterative and incremental software development model developed by Ivar Jacobson, Grady Booch, and James Rumbaugh.
It is: Use case-driven, Architecture-centric, Risk-focused, Flexible and structured
It combines traditional best practices (like documentation and planning) with agile concepts (like iterations and feedback), making it ideal for complex and evolving projects.
History & Foundation
Originated in the early 1990s.
Evolved from the need to unify different object-oriented design methods.
Contributed to the creation of UML for modeling.
RUP became a complete process framework to guide software engineering using UML.
RUP Development Phases
RUP breaks development into five well-defined phases, each supporting iterative cycles and continuous refinement:
a. Inception Phase
Establish project scope, goals, and feasibility.
Identify high-level use cases, risks, and initial architecture.
Deliverables: Vision document, preliminary project plan.
b. Elaboration Phase
Refine requirements and system architecture.
Build architectural prototype and address major risks.
Deliverables: Detailed use cases, design models, executable prototype (if needed).
c. Construction Phase
Develop actual software components.
Use iteration-based coding and testing.
Focus on software quality through unit and integration testing.
Deliverables: Working software system.
d. Transition Phase
Release the software to end users.
Conduct beta testing, fix bugs, and gather user feedback.
Deliverables: Final product, user manuals, support docs.
e. Production Phase
Ongoing maintenance, support, and enhancements.
Monitor performance, fix bugs, and prepare for next version.
Ensures long-term software value.
Advantages of RUP
Iterative Development: Allows feedback and continuous improvement.
Risk Mitigation: Risks are identified and handled at every phase.
Well-documented: Clear structure helps future maintenance.
Strong User Involvement: Continuous feedback from stakeholders improves satisfaction.
Disadvantages of RUP
High Complexity: Difficult for small or inexperienced teams.
Expensive & Time-consuming: More effort in planning and documentation.
Requires Skilled Team: Needs experienced developers and project managers.
Overhead for Small Projects: May not be efficient for simpler applications.
Best Suited For:
Large-scale, object-oriented, enterprise-level projects requiring risk control, structured development, and strong stakeholder involvement.
2.7 Agile model: XP and Scrum, a toolset for the agile process
What is Agile?
Agile is a modern software development and project management methodology that emphasizes:
Flexibility and adaptability
Close customer collaboration
Frequent delivery of working software
Cross-functional, self-organizing teams
Major tech companies like Google, Amazon, and Facebook rely on Agile to manage complex, fast-paced projects.
Key Features of Agile
Iterative & Incremental Development
Continuous Delivery of Small Functional Features
Active Customer Feedback
Quick Response to Changes
Collaborative Teams
Agile is implemented through various frameworks, most commonly Extreme Programming (XP) and Scrum.
a. Extreme Programming (XP)
XP focuses on rapid development, frequent releases, and close developer-customer collaboration—ideal for fast-changing environments.
It is ideal for projects with dynamic requirements and tight deadlines.
Key Principles of XP
Continuous Feedback – From both customers and team members
Simplicity – Build what is necessary, no more
Customer Involvement – Active participation ensures clarity
Frequent Releases – Quick cycles of working software
Test-Driven Development (TDD) – Write tests before coding
XP Process Phases
XP follows a structured process with key activities:
Planning: User stories are collected from the customer, and development tasks are prioritized.
Designing: A simple system design is created to ensure flexibility and maintainability.
Coding: Code is written in short cycles, following Test-Driven Development (TDD) and pair programming.
Testing: Continuous testing is performed to detect and fix defects early.
Integration & Deployment: Code is integrated frequently, and working software is delivered incrementally.
When to Use XP?
When requirements change frequently
When the project needs fast delivery and continuous updates
When customer involvement is high
When the team is small and highly skilled
b. Scrum
Scrum is an Agile framework that organizes work into time-boxed iterations called sprints (usually 2-4 weeks long).
It is designed to improve teamwork, adaptability, and efficiency.
Scrum is widely used for managing complex software projects.
Scrum Roles
Product Owner: Represents the customer and prioritizes features based on business needs.
Scrum Master: Facilitates the Scrum process, ensures adherence to Agile principles, and removes team obstacles.
Development Team: A self-organizing team that builds the product incrementally.
Scrum Process Phases
Scrum follows an iterative process that repeats every sprint:
a. Product Backlog: A list of all features and requirements, maintained by the Product Owner.
b. Sprint Planning: The team selects a set of tasks from the backlog to complete within the sprint.
c. Sprint Execution: The development team works on the selected tasks during the sprint cycle.
d. Daily Scrum Meeting: A short daily stand-up meeting to discuss progress, challenges, and plans for the day.
e. Sprint Review: At the end of the sprint, the completed work is demonstrated to stakeholders for feedback.
f. Sprint Retrospective: The team reflects on what went well and what needs improvement for the next sprint.
When to Use Scrum?
When projects require continuous updates and feedback
When teams need flexibility to adapt to changing requirements
When cross-functional collaboration is essential
When work can be divided into short development cycles
XP (Extreme Programming) vs Scrum
Feature | XP (Extreme Programming) | Scrum |
|---|---|---|
Focus | Quality coding and frequent releases | Team collaboration and sprint cycles |
Customer Role | Actively involved in all phases | Represented by the Product Owner |
Iterations | Short coding iterations (1-2 weeks) | Sprints (2-4 weeks) |
Testing | Test-Driven Development (TDD) | Testing happens at the end of each sprint |
Team Size | Small teams (up to 10) | Can accommodate larger teams |
Meetings | Informal communication | Daily Scrum meetings |
Best For | Dynamic projects with changing requirements | Managing large projects in an organized manner |
Advantages of XP & Scrum
Faster Delivery – Regular releases of working features
Flexibility – Adapts to changing requirements
Customer Satisfaction – Involves end users throughout
Team Collaboration – Encourages shared ownership and communication
Disadvantages of XP & Scrum
Requires High Discipline – Must follow Agile strictly
Not Ideal for All Projects – Large, rigid projects may struggle
Customer Availability – Constant involvement may not always be feasible
Scaling Challenges – Managing multiple teams and integrating work can become difficult in large organizations.
2.8 Big-Bang Model
The Big-Bang Model is the simplest software development approach where development begins without any formal planning or requirements analysis.
All efforts go straight into coding, with the hope that a functional product will "emerge" in the end.
It’s called “Big-Bang” because everything—requirements, design, coding, and testing—happens more or less simultaneously and informally.
Where is it Used?
Small-scale or academic projects
Experimental or proof-of-concept software
Projects with unclear or evolving requirements
Process of Big-Bang Model
Although the model lacks formal stages, the process can be roughly divided into four steps:
a. Initial Coding: Developers start coding immediately based on vague or undefined requirements.
b. Freestyle Development: No proper design, documentation, or requirement analysis is done. Changes are made as coding progresses.
c. Testing & Debugging: Once the code is completed, testing is performed to identify