You are on page 1of 6

PM6

1 Explain the genesis of agile methodology and its background.

The genesis of agile methodology in project management can be traced back to the 1990s when traditional project
management approaches were facing challenges in managing software development projects. The traditional waterfall
method, which followed a sequential and linear approach, often resulted in delayed delivery, poor adaptability to
changing requirements, and limited customer collaboration.

In response to these challenges, a group of software development practitioners came together to find a better way of
managing projects. They shared their experiences and insights, leading to the formulation of the Agile Manifesto in
2001. The Agile Manifesto outlined a set of guiding principles for software development that emphasized flexibility,
collaboration, iterative development, and customer satisfaction.

The background of agile methodology can be attributed to various influences and methodologies that preceded it.
Some of the key influences include:

1. Iterative and Incremental Development: The concept of developing software in small increments and iterations can
be traced back to iterative development practices like Rapid Application Development (RAD) and Spiral models.
These approaches recognized the value of early and continuous feedback.

2. Lean Thinking: Agile methodologies were influenced by lean manufacturing principles, particularly the Toyota
Production System. Lean thinking promotes the elimination of waste, continuous improvement, and the empowerment
of teams to make decisions.

3. Adaptive Software Development (ASD): ASD, developed by Jim Highsmith, emphasized collaboration, flexibility,
and iterative development. It focused on adapting to changing requirements and promoting team learning.

4. Scrum: Scrum, developed by Jeff Sutherland and Ken Schwaber, provided a framework for managing complex
projects. It introduced the concept of time-boxed iterations called sprints, daily stand-up meetings, and self-organizing
teams.

5. Extreme Programming (XP): XP, introduced by Kent Beck, emphasized close collaboration between developers and
customers, frequent releases, continuous testing, and the use of coding best practices.

These influences, along with others, contributed to the formation of agile methodology as a response to the
shortcomings of traditional project management approaches. Agile methodologies prioritize customer satisfaction,
adaptability to change, and frequent delivery of working software through iterative and collaborative practices. Since
its inception, agile has expanded beyond software development and is now applied in various industries and project
types.

2 What is agile manifesto and principles of agile project management?

The Agile Manifesto is a set of guiding values and principles for agile project management. It was developed in 2001
by a group of software development practitioners who were looking for a more flexible and adaptive approach to
managing projects. The Agile Manifesto emphasizes collaboration, iterative development, and responding to change
over following a rigid plan.

The four main values of the Agile Manifesto are:

1. Individuals and interactions over processes and tools: This value emphasizes the importance of effective
communication and collaboration among team members. It highlights the idea that people and their interactions are
more important for project success than relying solely on tools and processes.

2. Working software over comprehensive documentation: This value encourages focusing on delivering a working
product rather than extensive documentation. While documentation is still important, the primary focus should be on
creating usable software that meets the customer's needs.

3. Customer collaboration over contract negotiation: This value emphasizes the importance of involving the customer
or end-user in the development process. Collaboration with the customer helps ensure that the project is aligned with
their requirements and expectations, leading to a more successful outcome.
4. Responding to change over following a plan: This value recognizes that change is inevitable and that project plans
should be adaptable. Agile projects embrace change and are designed to quickly respond to new requirements or
shifting priorities.

In addition to the Agile Manifesto, there are several principles that guide agile project management. Some of these
principles include:

1. Delivering working software frequently: Agile projects aim to deliver incremental value to the customer through
regular and frequent releases of working software. This allows for early feedback and helps to ensure that the project
stays on track.

2. Welcoming changing requirements: Agile projects embrace change and are prepared to adjust their plans and
priorities as new information becomes available. Changes in requirements are seen as opportunities to improve the
product rather than obstacles.

3. Self-organizing teams: Agile teams are encouraged to be self-organizing and empowered to make decisions. This
allows for greater collaboration, creativity, and flexibility within the team.

4. Continuous improvement: Agile projects promote a culture of continuous improvement by regularly reflecting on
their processes and seeking ways to optimize and enhance their performance.

5. Face-to-face communication: Agile methodologies value face-to-face communication as it is considered the most
effective way to convey information and foster collaboration. However, in today's remote working environment,
virtual communication tools are also widely used to facilitate effective collaboration.
These principles and values form the foundation of agile project management and guide the approach to planning,
execution, and delivery of projects in an iterative and incremental manner.

3 Explain in detail about scrum methodology.

Scrum is an agile project management framework that is widely used in software development but can also be applied
to other industries and projects. It emphasizes iterative and incremental development, flexibility, and collaboration
within a cross-functional team. Scrum enables teams to deliver high-quality products in a dynamic and evolving
environment by breaking down complex tasks into manageable units of work.

Here is a detailed explanation of the key aspects and components of the Scrum methodology:

1. Roles:
- Product Owner: The Product Owner represents the stakeholders and is responsible for defining and prioritizing the
product backlog. They work closely with the development team to ensure that the product vision is effectively
communicated and delivered.
- Scrum Master: The Scrum Master acts as a facilitator and servant-leader for the team. They ensure that Scrum
principles and practices are followed, remove any obstacles or impediments that the team may encounter, and promote
a productive and collaborative working environment.
- Development Team: The Development Team consists of professionals with cross-functional skills who are
responsible for delivering a potentially releasable product increment at the end of each sprint.

2. Artifacts:
- Product Backlog: The Product Backlog is a prioritized list of all the desired features, enhancements, and bug fixes
for the product. The Product Owner continuously refines and updates the backlog based on feedback and changing
requirements.
- Sprint Backlog: The Sprint Backlog is a subset of the Product Backlog that contains the items selected for the
current sprint. It represents the work that the Development Team commits to completing during the sprint.
- Increment: The Increment is the sum of all the completed and tested product backlog items at the end of a sprint. It
should be in a potentially releasable state, meeting the team's Definition of Done.

3. Events:
- Sprint: A Sprint is a time-boxed iteration, typically lasting 1-4 weeks, during which the Development Team works
on delivering a specific set of product backlog items. At the start of each sprint, the team collaboratively plans the
work and defines a sprint goal. Daily Scrum meetings are held throughout the sprint to synchronize activities and
address any obstacles.
- Sprint Planning: In this event, the Product Owner and the Development Team collaborate to determine which items
from the Product Backlog will be worked on during the upcoming sprint. The team decides how much work they can
commit to and creates a Sprint Backlog.
- Daily Scrum: A brief daily meeting is conducted where the Development Team synchronizes their work. Each team
member provides an update on their progress, discusses any challenges, and plans their work for the next 24 hours.
- Sprint Review: At the end of each sprint, a Sprint Review is held to demonstrate the completed work to
stakeholders and gather feedback. The Product Owner reviews the product backlog and decides whether to accept the
increment or not.
- Sprint Retrospective: This event allows the team to reflect on their collaboration, processes, and tools used during
the sprint. They identify what worked well and areas for improvement, making adjustments for future sprints.

4. Principles:
- Empirical Process Control: Scrum follows an empirical approach, which means that decisions are based on
observation, experimentation, and feedback. The framework encourages teams to adapt and make adjustments based
on real-time information and learning.
- Self-Organization: Scrum teams are self-organizing, meaning they have the autonomy to decide how to complete
their work. This fosters creativity, accountability, and a sense of ownership among team members.
- Collaboration: Scrum promotes close collaboration and frequent communication among team members and
stakeholders. This facilitates transparency, knowledge sharing, and a shared understanding of project goals.

Overall, Scrum provides a flexible and iterative approach to project management. It enables

4 What is extreme programming and features driven development.

Extreme Programming (XP) and Feature-Driven Development (FDD) are two different approaches to software
development that fall under the umbrella of agile project management. Both methodologies emphasize iterative
development, collaboration, and customer satisfaction.

1. Extreme Programming (XP):


Extreme Programming is a software development methodology that focuses on delivering high-quality software in a
flexible and responsive manner. XP emphasizes customer involvement, constant communication, and rapid feedback
loops. Key features of Extreme Programming include:

a. Iterative Development: The project is divided into small, manageable iterations or cycles, typically lasting one to
three weeks. At the end of each iteration, a working increment of the software is delivered.

b. Continuous Planning: Planning is an ongoing activity in XP. Requirements are collected in the form of user stories
and are prioritized by the customer or product owner. The development team estimates the effort required for each user
story and plans the work for the upcoming iterations.

c. Pair Programming: Two programmers work together on the same codebase, sharing one computer. One person
writes the code (the driver), while the other reviews it in real-time (the observer). This practice improves code quality,
knowledge sharing, and reduces the chance of introducing errors.

d. Test-Driven Development (TDD): XP advocates writing automated tests before writing the actual code. The tests
serve as a specification for the desired functionality, and the code is written incrementally to pass the tests. This
ensures that the code is thoroughly tested and maintainable.

e. Continuous Integration: Developers integrate their code changes frequently, ideally multiple times a day. This
practice ensures that conflicts are detected early, and the software remains in a working state at all times.

f. Onsite Customer: XP promotes having an active customer representative available to the development team
throughout the project. This ensures direct communication and quick decision-making.

2. Feature-Driven Development (FDD):


Feature-Driven Development is an iterative and incremental software development methodology that focuses on
delivering features in a timely manner. It emphasizes a feature-centric approach and is particularly suitable for large-
scale projects. Key features of FDD include:

a. Feature-Centric Approach: FDD revolves around identifying, designing, and delivering individual features. Features
are prioritized based on business value, and each feature goes through a specific process involving domain
walkthrough, design, planning, and implementation.
b. Domain Walkthrough: The development team and domain experts collaborate to gain a shared understanding of the
business domain. This helps in identifying features and their relationships.

c. Iterative and Incremental Development: FDD breaks down the project into small, time-boxed iterations. Each
iteration focuses on delivering one or more features. Iterations are typically two weeks in duration.

d. Detailed Design: Before implementing a feature, FDD emphasizes creating a detailed design for that feature. The
design process involves domain experts, architects, and developers and aims to define the necessary classes, interfaces,
and database schemas.

e. Regular Builds and Integration: FDD encourages frequent builds and integration of the features. This helps in
identifying integration issues early and ensures that the overall system remains stable.

f. Inspections: FDD incorporates regular inspections to review and assess the progress of features. Inspections involve
key stakeholders, including customers and developers, to ensure that the implemented features align with the
requirements.

Both Extreme Programming and Feature-Driven Development promote iterative development, customer collaboration,
and frequent feedback. They provide different sets of practices and techniques to address the complexities of software
development projects and enhance the overall project management process.

5 Explain in brief agile project management.

Agile project management is an iterative and flexible approach to managing projects. It emphasizes adaptability,
collaboration, and delivering value to customers in a timely manner. Here are five key points to explain agile project
management:

1. Iterative Approach: Agile projects are divided into smaller iterations called sprints, typically lasting 1-4 weeks. Each
sprint focuses on delivering a specific set of features or functionalities. At the end of each sprint, stakeholders review
the progress and provide feedback, which helps guide subsequent iterations.

2. Flexibility and Adaptability: Agile methodologies, such as Scrum or Kanban, embrace change and are designed to
respond quickly to evolving requirements. Instead of rigidly sticking to a fixed plan, agile teams are open to adjusting
project scope, priorities, and deliverables based on feedback and new insights.

3. Collaboration and Empowerment: Agile project management emphasizes collaboration and self-organizing teams.
Team members work closely together, sharing knowledge, and collectively making decisions. This promotes a sense
of ownership and empowerment, allowing the team to respond effectively to challenges and make necessary
adjustments.

4. Continuous Delivery of Value: Agile projects focus on delivering value incrementally and frequently. By breaking
down the project into smaller deliverables, teams can prioritize and release features or components as they are
completed. This ensures that customers and stakeholders can see tangible progress and provide feedback early on,
which can influence subsequent iterations.

5. Feedback-Driven Improvement: Agile methodologies encourage frequent feedback loops to continuously improve
the project. Regular reviews, retrospectives, and stakeholder feedback help identify areas of improvement and inform
decision-making. By incorporating feedback into the project management process, teams can enhance their
performance and deliver better results over time.

Overall, agile project management provides a flexible and collaborative framework that enables teams to adapt,
respond to change, and deliver value in an iterative manner. It is particularly effective for complex and dynamic
projects where requirements are likely to evolve, and customer feedback is crucial for success.

6 Explain in detail design and development practices in agile project.


In Agile project management, the design and development practices are focused on iterative and incremental delivery
of software solutions, promoting collaboration, flexibility, and adaptability. The following are the key design and
development practices in Agile projects:
1. User Stories: Agile projects use user stories to capture the requirements from the user's perspective. User stories are
short, simple, and specific statements that describe a feature or functionality of the software. They serve as a means to
prioritize and plan the development activities.

2. Iterative Development: Agile projects follow an iterative approach, where the development is divided into short
time periods called iterations or sprints. Each iteration typically lasts for a few weeks, during which a small set of user
stories is selected for implementation. The development team delivers a working software increment at the end of each
iteration.

3. Continuous Integration: Agile projects emphasize continuous integration, where developers frequently integrate
their code changes into a shared repository. This practice helps identify integration issues early on and ensures that the
software is always in a releasable state. Continuous integration is supported by the use of version control systems and
automated build and test tools.

4. Test-Driven Development (TDD): Test-driven development is a practice where developers write automated tests
before writing the actual code. TDD helps ensure that the software meets the specified requirements and remains in a
working state even as new features are added or existing ones are modified. The tests are run frequently during
development to catch any regressions.

5. Pair Programming: Agile teams often practice pair programming, where two developers work together on the same
codebase. One developer writes the code while the other reviews it in real-time, promoting code quality, knowledge
sharing, and collaboration. Pair programming helps reduce defects and improves overall code design.

6. Continuous Refactoring: Agile projects prioritize code maintainability and adaptability. Continuous refactoring is
the practice of improving the code structure and design without changing its external behavior. Refactoring is done
incrementally and often to keep the codebase clean, reduce technical debt, and enable easier future enhancements.

7. Cross-functional Teams: Agile projects encourage cross-functional teams consisting of members with diverse skills
and expertise. This includes developers, testers, business analysts, and other relevant stakeholders. The team members
collaborate closely throughout the project, enabling quicker feedback, better decision-making, and a shared sense of
ownership.

8. Stakeholder Collaboration: Agile projects emphasize regular and ongoing collaboration with stakeholders, including
customers, end-users, and business representatives. This collaboration helps ensure that the software being developed
meets the users' needs and aligns with the business objectives. Stakeholders are involved in iterative reviews,
providing feedback, and participating in sprint planning and review meetings.

9. Continuous Improvement: Agile projects promote a culture of continuous improvement. Retrospectives are
conducted at the end of each iteration to reflect on what worked well and what could be improved. The team identifies
areas for improvement and takes actions to address them in subsequent iterations. This practice allows the team to
adapt and refine their processes over time.

Overall, Agile project management promotes a collaborative and iterative approach to design and development. By
focusing on delivering value early and often, while maintaining flexibility and adaptability, Agile practices aim to
enhance customer satisfaction, reduce risks, and improve the overall success of software projects.

7 Explain limitations of Extreme Programming

Extreme Programming (XP) is an agile software development methodology that aims to improve software quality and
responsiveness to changing customer requirements. While XP offers several benefits, it also has its limitations. Here
are some of the limitations of Extreme Programming in project management:

1. Limited scalability: Extreme Programming is primarily designed for small to medium-sized teams working on
relatively small projects. Scaling XP to larger projects or teams can be challenging as the level of coordination and
communication required may become unmanageable.

2. Reliance on customer availability: XP relies heavily on close collaboration with the customer throughout the
project. This can be a limitation when the customer is not readily available or lacks the necessary domain knowledge
to provide timely and accurate feedback.
3. Limited documentation: XP emphasizes working software over comprehensive documentation. While this can be an
advantage in terms of agility, it can be a limitation when there is a need for detailed documentation, such as in
regulatory environments or when maintaining the software in the long term.
4. High dependency on team dynamics: XP relies on effective teamwork and collaboration. If the team lacks
experienced or skilled members or if there are conflicts among team members, the effectiveness of XP practices may
be compromised, leading to delays or reduced quality.

5. Limited applicability to certain domains: Extreme Programming is most suitable for projects with rapidly changing
requirements and high levels of uncertainty. However, it may not be the best choice for projects with well-defined and
stable requirements or projects in highly regulated industries where strict documentation and traceability are required.

6. Potential for over-optimization: The focus on short iterations and continuous improvement in XP may lead to
excessive refactoring or over-optimization of code. This can result in unnecessary delays and increased complexity if
not managed carefully.

7. Lack of upfront planning: XP promotes a just-in-time planning approach, which means detailed planning is deferred
until the last responsible moment. While this can be beneficial in certain situations, it may not be suitable for projects
that require extensive upfront planning, resource allocation, or risk management.

It's important to note that while Extreme Programming has its limitations, it can still be highly effective in the right
context and with the appropriate adaptations to suit the specific project and team dynamics.

8 List and explain Agile methodology approaches.


Agile methodology is a set of project management approaches that prioritize flexibility, collaboration, and iterative
development. Here are eight popular Agile methodologies, along with brief explanations of each:
1. Scrum: Scrum is one of the most widely used Agile frameworks. It divides the project into short iterations called
sprints, typically lasting 1-4 weeks. The team works in cross-functional units and holds regular meetings (daily stand-
ups, sprint planning, review, and retrospective) to track progress and make adjustments.
2. Kanban: Kanban focuses on visualizing work and optimizing flow. It uses a visual board with columns representing
different stages of work, such as "To Do," "In Progress," and "Done." Tasks are pulled from one column to the next as
team members complete them. Kanban emphasizes limiting work in progress and continuous delivery.
3. Lean: Lean methodology aims to eliminate waste and optimize value creation. It focuses on delivering maximum
value to customers by minimizing non-value-adding activities, reducing cycle times, and fostering continuous
improvement. Lean principles originated from the manufacturing industry but have been applied to project
management.
4. Extreme Programming (XP): XP is a highly disciplined Agile methodology that emphasizes teamwork and customer
involvement. It emphasizes short development cycles, continuous integration, frequent testing, and pair programming.
XP promotes practices like Test-Driven Development (TDD) and encourages simple design and refactoring.
5. Feature-Driven Development (FDD): FDD is an Agile framework that organizes work around features or client-
valued functionality. It involves a five-step process: develop an overall model, build a feature list, plan by feature,
design by feature, and build by feature. FDD uses short iterations and emphasizes domain object modeling.
6. Crystal: Crystal is a family of Agile methodologies that vary based on project characteristics. Crystal methodologies
focus on communication, teamwork, and reducing complexity. They promote lightweight processes and adaptability,
tailoring practices to fit the project's unique needs.
7. Dynamic Systems Development Method (DSDM): DSDM is an Agile framework that provides an iterative and
incremental approach to project delivery. It emphasizes collaboration, active user involvement, and frequent delivery
of business value. DSDM follows eight principles, including delivering on time, meeting business needs, and fostering
a collaborative and cooperative environment.
8. Adaptive Software Development (ASD): ASD is an Agile methodology that emphasizes collaboration, self-
organization, and learning. It involves four phases: speculation, collaboration, learning, and adaptation. ASD focuses
on responding to changing requirements, using frequent feedback loops, and continuously improving the software.

These are just a few examples of Agile methodologies. Each approach offers unique principles and practices, allowing
teams to choose the most suitable one based on project requirements, team composition, and organizational context.

You might also like