Agile Methodology
State the Agile Manifesto: The Agile Manifesto is a set of guiding values and principles for developing software and managing projects iteratively and collaboratively. It was created by a group of software developers in 2001 to address the challenges of traditional, rigid project management approaches. The Agile Manifesto consists of four core values and twelve principles:
Agile Manifesto 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.
Agile Manifesto Principles:
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
Deliver working software frequently, with a preference for shorter timescales.
Business people and developers must work together daily throughout the project.
Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
Working software is the primary measure of progress.
Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
Continuous attention to technical excellence and good design enhances agility.
Simplicity—the art of maximizing the amount of work not done—is essential.
The best architectures, requirements, and designs emerge from self-organizing teams.
At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behaviour accordingly.
These values and principles emphasize collaboration, adaptability, and a focus on delivering value to customers. Agile methodologies, such as Scrum, Kanban, and Extreme Programming (XP), are all derived from the Agile Manifesto and help teams implement these principles in their software development and project management processes.
Discuss 3 traditional software methodologies. Eg. Waterfall:
- Waterfall Model: The Waterfall Model is one of the oldest and most straightforward methodologies in software development. It follows a linear and sequential approach, where each phase of the development cycle must be completed before moving on to the next. The phases typically include requirements gathering, system design, implementation, testing, deployment, and maintenance.
Advantages of the Waterfall Model include its clear structure and documentation, which can be beneficial for projects with well-defined and stable requirements. However, its rigid nature can lead to difficulties in accommodating changes or addressing issues that arise after the initial phases have been completed.
- V-Model (Validation and Verification Model): The V-Model is an extension of the Waterfall Model that places a strong emphasis on testing and validation. In this approach, each development phase has a corresponding testing phase that runs in parallel. As the development phases progress, the corresponding testing activities occur, leading to a "V" shape in the project timeline when graphed.
The V-Model's advantage lies in its focus on testing and ensuring that each development stage is thoroughly validated before moving forward. However, like the Waterfall Model, it can struggle to handle changing requirements effectively.
- Spiral Model: The Spiral Model is an iterative and risk-driven methodology that combines elements of both Waterfall and iterative development approaches. It emphasizes risk assessment and management by dividing the project into a series of iterative cycles. Each cycle involves planning, risk analysis, engineering, testing, and evaluation. As the project progresses through these cycles, it continuously builds upon the work from previous iterations.
The Spiral Model's strength is its flexibility and adaptability to changes, making it more suitable for complex and large-scale projects with uncertain or evolving requirements. However, its iterative nature can sometimes lead to extended development timelines.
These traditional methodologies have been widely used in the past for software development projects. However, over time, the limitations of these approaches—such as their rigidity in handling changes and evolving requirements—led to the emergence of Agile methodologies, which prioritize flexibility, collaboration, and responsiveness to change.
- Explain any 5 Agile Frameworks: Scrum, Extreme Programming, Test-Driven Development, Lean, and Kanban:
Scrum: Scrum is one of the most popular and widely used Agile frameworks. It is designed to improve collaboration, adaptability, and value delivery within a team. In Scrum, work is divided into time-boxed iterations called "sprints," which are usually 1 to 4 weeks long. Each sprint involves planning, daily stand-up meetings, development, testing, and a sprint review. The key roles in Scrum are the Product Owner, Scrum Master, and Development Team.
Extreme Programming (XP): Extreme Programming (XP) is an Agile framework that emphasizes technical excellence and collaboration among team members. XP practices include continuous integration, test-driven development (TDD), pair programming, and frequent releases. XP focuses on delivering high-quality software through close collaboration between developers and customers. It places a strong emphasis on customer feedback and incorporates it into the development process.
Test-Driven Development (TDD): Test-Driven Development (TDD) is a development technique that is often used within Agile methodologies like Scrum and XP. TDD involves writing tests for a piece of functionality before writing the actual code. The process typically follows these steps: write a failing test, write the minimum amount of code needed to make the test pass, and then refactor the code for better design while keeping the tests passing. TDD helps ensure that the codebase remains robust and maintainable.
Lean: Lean is an Agile framework that draws inspiration from manufacturing principles developed by Toyota. It aims to minimize waste, optimize efficiency, and deliver value quickly. In software development, Lean focuses on delivering what the customer values most while reducing unnecessary work or processes. The framework encourages continuous improvement, flow, and collaboration to achieve these goals.
Kanban: Kanban is an Agile framework that emphasizes visualizing work, limiting work in progress, and optimizing the flow of work. Kanban boards are often used to visually represent the stages of work items, from "To Do" to "Done." Each work item is represented by a card, and teams pull work into the next stage when capacity allows. Kanban is particularly useful for teams dealing with frequent changes in priorities and a steady stream of incoming work.
These Agile frameworks provide different approaches to software development, each with its own set of practices and principles. Teams often choose the framework that aligns best with their project's requirements, team dynamics, and organizational culture.