Chapter 3 - Agile Development Flashcards

1
Q

Agile Development

A

Software Development Agile Methodologies refer to
a group of methodologies based on iterative
development, where requirements and solutions
evolve through collaboration between self‐organizing
cross‐functional teams.

The term was coined in the year 2001, when the
Agile Manifesto was formulated.

Agile methods generally promote a disciplined
project management process that encourages
frequent inspection and adaptation, a leadership
philosophy that encourages teamwork,
self‐organization and accountability, a set of
engineering best practices that allow for rapid
delivery of high‐quality software, and a business
approach that aligns development with customer
needs and company goals.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Agile Principles

A

Principle #1: Our highest priority is to satisfy the customer through early
and continuous delivery of valuable software.

Principle #2: Welcome changing requirements, even late in
development. Agile processes harness change for the customer’s
competitive advantage.

Principle #3: Deliver working software frequently, from a couple of
weeks to a couple of months, with a preference to the shorter timescale.

Principle #4 :Business people and developers must work together daily
throughout the project.

Principle #5 :Build projects around motivated individuals. Give them the
environment and support they need, and trust them to get the job done.

Principle #6: The most efficient and effective method of conveying
information to and within a development team is face‐to‐face
conversation.

Principle #7: Working software is the primary measure of progress.

Principle #8: Agile processes promote sustainable development. The
sponsors, developers, and users should be able to maintain a constant
pace indefinitely.

Principle #9: Continuous attention to technical
excellence and good design enhances agility.

Principle #10: Simplicity‐‐the art of maximizing the
amount of work not done‐‐is essential.

Principle #11: The best architectures, requirements,
and designs emerge from self‐organizing teams.

Principle #12 :At regular intervals, the team reflects
on how to become more effective, then tunes and
adjusts its behavior accordingly.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Advantage of Agile Software Development

A

Flexibility:
Agile allows for changes and adjustments to be
made throughout the project, which is beneficial in situations
where requirements may change frequently or the end
product is not yet clearly defined.

Continuous delivery:
Agile focuses on delivering working
software in small, incremental iterations, which allows for continuous delivery and faster time to market.

Customer satisfaction:
Agile puts a strong emphasis on
customer collaboration and feedback, which helps ensure that the final product meets the customer’s needs and
expectations.

Transparency:
Agile provides transparency into the
development process, making it easier to identify issues and address them in a timely manner.

Improved quality:
By testing and integrating code regularly,
Agile helps to improve the quality of the end product and reduce the number of defects.

Team collaboration:
Agile encourages team collaboration,
communication, and self-organization, which helps to
improve team morale and productivity.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Disadvantage of Agile Software Development

A

Lack of predictability:
Agile methodology is based on an iterative
approach, which means that the final product may not be fully defined at the start of the project. This can make it difficult to predict project timelines, scope, and costs.

Emphasis on customer involvement:
While customer collaboration is a
key benefit of Agile, it can also be a disadvantage if the customer is unavailable or unable to provide the necessary feedback and input.

Potential for scope creep:
Agile can be prone to scope creep, which occurs when the project scope expands beyond the original plan due to changing requirements or customer feedback.

Lack of documentation:
Agile values working software over comprehensive documentation, which can make it difficult to maintain a detailed record of the development process.

Dependency on team dynamics:
Agile requires close collaboration
between team members and relies on team self-organization. This can be challenging if team members have different work styles or if there is a lack of communication and cooperation.

Skill requirements:
Agile methodology requires skilled team members
who are familiar with the methodology and its practices. This can be a challenge if team members are not familiar with Agile or if there is a lack of training and support.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

When to use Agile Method

A

Agile software development is a methodology that is best suited for projects where
requirements are not well defined or may evolve over time.
Here are some situations where the
use of Agile methodology may be appropriate:

When the customer’s needs are constantly changing:

If the customer does not have a clear idea of what they want, Agile can be used to develop the product iteratively with regular feedback and adaptation to changing requirements.

When the project is complex:

Agile can help to break down complex projects into smaller, manageable chunks, making it
easier to deliver a working product in a timely manner.

When the development team is cross-functional:

Agile is ideal for teams with members possessing diverse skill sets, as the iterative nature of Agile development can help to promote collaboration and knowledge sharing.

When the project has tight timelines:

Agile methodology can be used to deliver a working product in shorter iterations, allowing the team to meet tight deadlines.

When the project has a high degree of uncertainty:

Agile can help to reduce risk by providing regular feedback and adapting to changing requirements as the project progresses.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Plan-Driven v/s Agile Development

A

Plan-Driven vs Agile

Process

Emphasizes planning and
documentation

Emphasizes flexibility and
adaptation

Requirements

Requirements are defined upfront

Requirements may evolve over
time

Delivery

Delivery is done in a single release

Delivery is done in multiple
iterations

Customer involvement

Customer involvement is limited

Customer involvement is high and
ongoing

Changes

Changes are difficult and costly to
make

Changes can be made easily and
frequently

Team structure

Team structure is hierarchical and
specialized

Team structure is collaborative
and cross-functional

Risk management

Risk management is done upfront
and throughout the project

Risk management is ongoing
throughout the project

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Agile development techniques:

A

Agile development techniques are a set of
practices and principles that enable teams to
work collaboratively, respond to change, and
deliver high-quality software continuously.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

list Agile development techniques:

A

Scrum:
Scrum is an Agile framework that emphasizes collaboration, regular feedback, and iterative development. It
involves short sprints, where the team works to deliver a working product increment at the end of each sprint.

Kanban:
Kanban is an Agile methodology that focuses on visualizing work and limiting work in progress. It involves using a board to visualize the status of work items and limiting the number of items in progress to avoid overburdening the team.

Continuous Integration:
Continuous Integration is a practice where developers regularly integrate their code changes into a shared repository to detect and fix issues early. It involves using automated tests and builds to
ensure that the code is always in a working state.

Test-Driven Development (TDD):
TDD is a development approach that involves writing tests before writing code. It involves writing a failing test, writing the code to make the test pass, and then refactoring the code to improve its
quality.

Pair Programming:
Pair Programming is a practice where two developers work together on the same code. It involves one developer writing the code while the other reviews it and provides feedback, with the roles alternating
regularly.

User Stories:
User Stories are short descriptions of a feature or functionality written from the user’s perspective. They help to keep the focus on the customer’s needs and provide a clear understanding of what the user wants.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Extreme Programming (XP)

A

Extreme Programming is an Agile methodology that emphasizes practices
such as TDD, Pair Programming, Continuous Integration, Simple Design,
Planning Game, and On-Site Customer.

By adopting these practices, teams can deliver high-quality software that
meets the customer’s needs in a timely and efficient manner.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

XP Practices:

A

Test-Driven Development (TDD):
Writing automated tests
before writing the code to ensure that the code is always
tested and any issues are caught early.

Pair Programming:
Working in pairs, where one person
writes the code and the other reviews it, to promote
collaboration, knowledge sharing, and code quality.

Continuous Integration:
Regularly integrating and testing
code changes to ensure that the software is always in a
working state.

Simple Design:
Keeping the design of the code as simple
and maintainable as possible, through techniques such
as refactoring and code reviews.

Planning Game:
Collaborating with the customer to
prioritize and estimate the work to be done, and breaking
it down into small, manageable tasks.

On-Site Customer:
Having the customer as an active
member of the team, providing ongoing feedback and
direction.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

XP Principles:

A

Communication:
Promoting open and frequent
communication between team members and the
customer.

Feedback:
Continuously seeking and incorporating
feedback from the customer and team members to
improve the software and development process.

Simplicity:
Striving for simplicity in design and
implementation to reduce complexity and improve
maintainability.

Courage:
Encouraging the team to take risks and
make bold decisions to improve the software and
development process.

Respect:
Respecting the skills, knowledge, and
contributions of team members, the customer, and
other stakeholders.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Agile Project Management

A

Agile Project Management is an iterative
approach to project management that
focuses on delivering high-quality
products and services in a flexible and
adaptive manner.

It is based on the Agile methodology,
which emphasizes collaboration,
flexibility, and continuous improvement.

In Agile Project Management, the project
is broken down into smaller iterations,
called sprints, where the team works to
deliver a working product increment at
the end of each sprint.

The requirements are continuously reviewed
and updated based on the customer’s
feedback and evolving needs, allowing the
team to adapt to changes quickly.

The Agile Project Management approach
involves a number of practices and
techniques, such as Scrum, Kanban,
Test-Driven Development (TDD), Pair
Programming, Continuous Integration, and
User Stories.

These practices and techniques promote
collaboration, flexibility, and continuous
improvement, enabling the team to deliver
high-quality products and services that meet
the customer’s needs.

Agile Project Management also
emphasizes the importance of
communication and collaboration
between team members, stakeholders,
and customers.

It involves regular meetings, such as
daily stand-up meetings, sprint planning
meetings, and sprint review meetings, to
ensure that everyone is on the same
page and the project is moving in the
right direction.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly