Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
124 views

Agile Development

The document discusses Agile methodology for software development. Some key points: - Agile is an iterative approach that emphasizes flexibility, collaboration, and customer satisfaction. It focuses on delivering working software in short iterations to adapt quickly to changes. - Common Agile methodologies include Scrum, Kanban, Extreme Programming, Lean Software Development, and Crystal Methods. - The Agile Manifesto values individuals and interactions, working software, collaboration, and responding to change over processes, tools, documentation, and contract negotiations. - The Agile development cycle involves concepts, inception, iterative construction through sprints, release, production, and retirement of software.

Uploaded by

bright.keswani
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
124 views

Agile Development

The document discusses Agile methodology for software development. Some key points: - Agile is an iterative approach that emphasizes flexibility, collaboration, and customer satisfaction. It focuses on delivering working software in short iterations to adapt quickly to changes. - Common Agile methodologies include Scrum, Kanban, Extreme Programming, Lean Software Development, and Crystal Methods. - The Agile Manifesto values individuals and interactions, working software, collaboration, and responding to change over processes, tools, documentation, and contract negotiations. - The Agile development cycle involves concepts, inception, iterative construction through sprints, release, production, and retirement of software.

Uploaded by

bright.keswani
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 31

UNIT V

Agile Methodology of Software


Development
Agile programming is an iterative and incremental approach to
software development. It emphasizes flexibility, collaboration,
and customer satisfaction.

Agile methodologies prioritize delivering small, functional


pieces of software in short iterations, allowing teams to adapt
to changing requirements and feedback quickly.
Agile is a type of software development methodology that
anticipates the need for flexibility and ensures the timely
delivery of the finished product.

Agile software development requires a cultural shift in many


companies because it focuses on the clean delivery of
individual pieces or parts of the software and not on the
entire application.
Benefits of Agile include its ability to help teams in an evolving
landscape while maintaining a focus on the efficient delivery of
business value.

The collaborative culture facilitated by Agile also improves


efficiency throughout the organization as teams work together
and understand their specific roles in the process.

Finally, companies using Agile software development can feel


confident that they are releasing a high-quality product because
testing is performed throughout development. This provides the
opportunity to make changes as needed and alert teams to any
potential issues.
The Agile software development cycle

The Agile software development cycle can be broken down into the
following six steps:

1.Concept
2.Inception
3.Iteration/Construction
4.Release
5.Production
6.Retirement
The first step, Concept, involves the identification of business
opportunities in each potential project as well as an estimation of the
time and work that will be required to complete the project. This
information can then be used to prioritize projects and ensure
technical and economic feasibility.
During the second step, Inception, team members are identified,
funding is established and the initial requirements are discussed with
the customer. A timeline should also be created that outlines the
various responsibilities of teams and clearly defines when work is
expected to be completed for each sprint. (A sprint is a set period of
time during which specific work has to be completed and made ready
for review.)
The third step, Iteration/Construction, is when teams start creating working software
based on requirements and continuous feedback. The Agile software development cycle
relies on iterations or single development cycles that build upon each other and lead into
the next step of the overall development process until the project is completed. Each
iteration typically lasts between two to four weeks, with a set completion date. The goal is
to have a working product to launch at the end of each iteration. Multiple iterations occur
throughout the development cycle and they each possess their own workflow.

Iteration flow consists of the following:


1. Defining requirements based on the product backlog, sprint backlog and customer and
stakeholder feedback;
2. Developing software based on the set requirements;
3. Conducting QA testing, internal and external training and documentation;
4. Delivering and integrating the working product into production; and
5. Gathering customer and stakeholder feedback on the iteration in order to define new
requirements for the next sprint.
The fourth step, Release, involves final QA testing, resolution of
any remaining defects, finalization of the system and user
documentation and, at the end, release of the final iteration into
production.

After the release, the fifth step, Production, focuses on the


ongoing support necessary to maintain the software. The
development teams must keep the software running smoothly
while also teaching users exactly how to use it. The production
phase continues until the product is planned for retirement.
The final step, Retirement, incorporates all end-of-life activities,
such as notifying customers and final migration. The system
release must be removed from production.

This is usually done when a system needs to be replaced by a


new release or if the system becomes outdated, unnecessary
or starts to go against the business model.
Throughout the Agile cycle, different features can be added to the
product backlog, but the entire process should consist of repeating each
step over and over until every item in the backlog has been satisfied.
This makes the Agile cycle more of a loop than a linear process.

At any time, an enterprise can have multiple projects occurring


simultaneously with iterations that are logged on different product lines
and a variety of internal and external customers providing different
business needs.
Types of Agile Methodologies:

1. Scrum: Scrum is one of the most widely used Agile frameworks. It organizes work into time-boxed
iterations called sprints, typically lasting 2-4 weeks. Scrum includes roles like Product Owner, Scrum Master,
and the Development Team.
2. Kanban: Kanban is a visual management method that focuses on continuous delivery. Work items are
represented on a Kanban board, and teams pull work from the backlog based on capacity.
3. Extreme Programming (XP): XP emphasizes customer satisfaction and involves practices such as pair
programming, test-driven development (TDD), continuous integration, and frequent releases.
4. Lean Software Development: Lean principles, adapted from manufacturing, are applied to software
development. It aims to eliminate waste, optimize efficiency, and maximize customer value.
5. Crystal Methods: Crystal methodologies are a family of Agile approaches that vary based on project size,
criticality, and other factors. Each crystal methodology is tailored to fit the unique characteristics of a given
project.
Agile Manifesto/Strategy
The Agile Manifesto is a set of guiding values and principles. It was created by a
group of software developers in 2001.
The four core values outlined in the Agile Manifesto are as follows:
1. Individual interactions are more important than processes and tools:
People drive the development process and respond to business needs.
They are the most important part of development and should be valued
above processes and tools. If the processes or tools drive development,
then the team will be less likely to respond and adapt to change and,
therefore, less likely to meet customer needs.

2. A focus on working software rather than thorough


documentation: Before Agile, a large amount of time was spent
documenting the product throughout development for delivery. The list
of documented requirements was lengthy and would cause long delays in
the development process. While Agile does not eliminate the use of
documentation, it streamlines it in a way that provides the developer
with only the information that is needed to do the work.
3. Collaboration instead of contract negotiations: Agile focuses on
collaboration between the customer and project manager, rather than
negotiations between them. Collaborating with the customer means that they
are included throughout the entire development process, not just at the
beginning and end, thus making it easier for teams to meet the needs of their
customers.
For example, in Agile, the customer can be included at different intervals for
demos of the product. However, the customer could also be present and
interact with the teams daily, attend all meetings and ensure the product meets
their desires.

4. A focus on responding to change: Traditional software development used to


avoid change because it was considered an undesired expense. Agile eliminates
this idea. The short iterations in the Agile cycle allow changes to easily be made,
helping the team modify the process to best fit their needs rather than the
other way around. Overall, Agile software development believes change is
always a way to improve the project and provide additional value.
These values are supported by 12 principles that provide more detailed guidance on how to follow the
Agile Manifesto.
1. Satisfy customers through early and continuous delivery of valuable work.
2. Break big work down into smaller tasks that can be completed quickly.
3. Recognize that the best work emerges from self-organized teams.
4. Provide motivated individuals with the environment and support and trust them to get the job done timely.
5. Create processes that promote sustainable efforts.
6. Maintain a constant pace for completed work.
7. Welcome changing requirements, even late in a project.
8. Assemble the project team and business owners on a daily basis throughout the project.
9. Have the team reflect at regular intervals on how to become more effective, then tune and adjust behavior
accordingly.
10.Measure progress by the amount of completed work.
11.Continually seek excellence.
12.Harness change for a competitive advantage.
Refactoring Techniques

Refactoring involves making improvements to the internal structure of code without


changing its external behavior. It is an essential practice in Agile development. Some
common refactoring techniques include:

1. Extract Method: Breaking down a long method into smaller, more manageable ones.
2. Rename Variable/Method/Class: Improving code readability by giving variables,
methods, or classes more descriptive names.
3. Extract Class: Creating a new class to encapsulate part of the functionality of an
existing class.
4. Simplify Conditional Expressions: Making conditional statements more
straightforward and easier to understand.
5. Encapsulate Fields: Restricting direct access to class fields.
Limitations of the Agile Process

1. Not Suitable for All Projects: Agile may not be the best fit for large, complex projects with
rigid requirements.
2. Customer Involvement: Continuous customer involvement can be challenging, especially
if stakeholders are not readily available.
3. Documentation: Agile prioritizes working software over comprehensive documentation,
which can be a limitation in environments that require extensive documentation.
4. Skill Dependency: The success of Agile development depends on the skills and
collaboration of team members. Inexperienced teams may struggle to implement Agile
effectively.
Comparing Waterfall and Agile Modeling:
1. Flexibility:
 Agile modeling is more flexible, allowing for
iterative changes, whereas Waterfall is rigid and
sequential.
2. Client Involvement:
 Agile models encourage client involvement
throughout the development process, while
Waterfall typically involves clients at the
beginning and end.
3. Adaptability:
 Agile modeling is adaptable to changing
requirements, while Waterfall struggles with
modifications once the process has started.
4. Documentation:
 Waterfall emphasizes comprehensive upfront
documentation, while Agile modeling values
working software over extensive documentation.
SCRUM METHODOLOGY

Scrum is an agile project management and product development


methodology that provides a flexible and iterative approach to software
development. It was originally introduced for managing and developing
software products, but its principles and practices have been applied to
various fields beyond software development. Scrum emphasizes
collaboration, transparency, and adaptability to deliver high-value
products.
Features of Scrum methodology:

1. Iterative and Incremental:


a) Scrum breaks down the development process into small, manageable iterations
called sprints.
b) Each sprint typically lasts two to four weeks, during which a potentially shippable
product increment is produced.
2. Roles:
c) Product Owner: Represents the interests of stakeholders, defines the product
backlog, and prioritizes features.
d) Scrum Master: Facilitates the Scrum process, removes impediments, and ensures
adherence to Scrum principles.
e) Development Team: Cross-functional and self-organizing team responsible for
delivering the product increment.
3. Artifacts:
a) Product Backlog: A prioritized list of all desired features, enhancements, and fixes for a product.
b) Sprint Backlog: A subset of the product backlog chosen for a specific sprint.
c) Increment: The sum of all completed product backlog items at the end of a sprint.
4. Events:
d) Sprint Planning: Collaborative meeting where the team plans the work for the upcoming sprint.
e) Daily Scrum: A brief daily meeting for the team to synchronize and discuss progress.
f) Sprint Review: Meeting at the end of each sprint to review and demonstrate the completed work to
stakeholders.
g) Sprint Retrospective: Reflection meeting where the team discusses what went well and areas for
improvement.
5. Adaptability:
h) Scrum allows for flexibility and adaptability to changing requirements and priorities.
i) Regular feedback and inspection throughout the development process facilitate continuous
improvement.
6. Transparency:
a) Scrum promotes openness and transparency in communication.
b) Progress is visible through the use of artifacts like the product and sprint backlogs.
7. Customer Feedback:
c) Scrum encourages regular customer feedback through frequent product deliveries.
d) Stakeholders have the opportunity to provide input and adjust priorities during the
development process.
8. Continuous Improvement:
e) Sprint retrospectives provide a dedicated time for the team to reflect on their
processes and identify areas for improvement.
f) Scrum emphasizes a culture of continuous learning and adaptation.

Scrum is widely adopted in the software industry and beyond due to its ability to deliver
value in a dynamic and collaborative manner. It provides a framework for teams to work
together effectively, respond to change, and deliver high-quality products.
How Scrum Methodology works

Scrum methodology works by providing a structured framework for iterative and


incremental product development. It facilitates collaboration, adaptability, and
transparency throughout the development process.
1. Product Backlog: The process begins with the creation of a Product Backlog,
which is a prioritized list of all desired features, enhancements, and fixes for the
product. The Product Owner is responsible for managing and prioritizing the
items in the backlog based on their value to the customer and the business.
2. Sprint Planning: At the start of each sprint (a time-boxed iteration typically
lasting two to four weeks), the Scrum Team, which includes the Product Owner,
Scrum Master, and the Development Team, conducts a Sprint Planning meeting.
During this meeting, the team selects a subset of items from the Product
Backlog (Sprint Backlog) that they commit to completing during the sprint.
3. Daily Scrum: The team holds a brief Daily Scrum meeting, often standing, to
synchronize and discuss progress. Each team member answers three questions:
What did I do yesterday? What will I do today? Are there any impediments or
challenges?
4. Development: The Development Team works collaboratively to complete the items in the
Sprint Backlog. The work is self-organized, meaning the team decides how to best
accomplish the tasks.
5. Increment: At the end of the sprint, the team delivers a potentially shippable product
increment, which is the sum of all completed items in the Sprint Backlog. The product
increment must be in a usable condition and align with the definition of "done."
6. Sprint Review: The team holds a Sprint Review meeting to demonstrate the completed
work to stakeholders. Stakeholders provide feedback, and the Product Owner may adjust
priorities in the Product Backlog based on this feedback.
7. Sprint Retrospective: The team holds a Sprint Retrospective meeting to reflect on the
sprint. The focus is on what went well, what could be improved, and actions to take for
continuous improvement in the next sprint.
8. Repeat: The process repeats with a new Sprint Planning meeting for the next iteration.
The team continuously refines and adjusts the Product Backlog based on changing priorities
and feedback.
Key Principles:

a) Time-boxing: Events in Scrum are time-boxed, meaning they have a fixed duration,
promoting regularity and consistency.
b) Inspect and Adapt: Regular inspection of progress and adaptation based on
feedback is fundamental to Scrum.
c) Cross-functional Teams: Teams are self-organizing and cross-functional, meaning
they have all the skills needed to complete the work within the team.

By following this iterative and collaborative approach, Scrum enables teams to deliver
value quickly, respond to changing requirements, and continuously improve their
processes. The emphasis on transparency and communication helps create a shared
understanding of goals and progress among team members and stakeholders.
Comparing Waterfall, Agile and Scrum Modeling:

You might also like