0% found this document useful (0 votes)
31 views8 pages

CH 02. Agile Development

Uploaded by

shubhamhiray01
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
31 views8 pages

CH 02. Agile Development

Uploaded by

shubhamhiray01
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

CH 02.

AGILE DEVELOPMENT
INTRODUCTION -
Agile software development is a group of software development methodologies based
on iterative and incremental development, where requirements and solutions evolve
through collaboration between self-organizing, cross-functional teams.

Agile is a widely popular software development method. Agile methods break the
whole project into small/tiny incremental module build.

It is a method in which requirements and solutions evolve through collaboration


between cross-functional teams which broadly includes designing, coding and testing

WHAT IS AGILITY?
In software engineering, agility refers to the ability to adapt quickly and effectively to changes in project
requirements, market conditions, and customer needs. It is a core principle of Agile methodologies, which
prioritize flexibility, collaboration, and iterative development over rigid planning and processes.

Agility encourages team structures and attitudes that make communication


(among team members, between technologists and business/organization people,
between software engineers/developers and their managers) more facile.

AGILE PROCESS -
The Agile process in software engineering is a flexible approach to software development that focuses on
delivering small, functional parts of a project in short timeframes, called iterations or sprints. Unlike
traditional methods, where a complete plan is made from the start, Agile allows teams to adapt and make
changes as they go. This helps respond to new information or changes in customer needs quickly.

Here are the key assumptions of Agile -

1.Change is Expected:
Agile anticipates evolving requirements.

2.Customer Collaboration:
Frequent customer feedback is crucial.

3.Incremental Development:
Deliver small, usable parts frequently.

4.Self-Organizing Teams:
Teams manage their own tasks and decisions.

5.Focus on Working Software:


Working software is the main success measure.

6.Continuous Improvement:
Teams regularly review and improve processes.

ADVANTAGES OF AGILE -
1. Change is Embraced:
With shorter planning cycles, it is easy and to accommodate
and accept changes at any time during the software project.

2. End-goal can be Unknown:


Agile is very beneficial for projects where the end-goal is not clearly defined. As the project progresses,
the goals will come to light and
development can easily adapt.

3. Faster and High-quality Delivery:


Breaking down the project into iterations allows the software team to focus on high-quality
development, with faster delivery.

4. Strong Team Interaction:


Agile highlights the importance of frequent
communication and face-to-face interactions. Teams work together and people are
able to take responsibility and own parts of the projects.

5. Continuous Improvement:
Agile projects encourage feedback from users and team members throughout the whole project, so lessons
learned are used to improve future iterations.

DISADVANTAGES OF AGILE -
1. Planning can be Less Concrete:
Agile is based on time-boxed delivery and project
managers are often reprioritizing tasks, it is possible that some items originally
scheduled for delivery may not be complete in time.

2. Team must be Knowledgeable:


Agile teams are usually small, so team members
must be highly skilled in a variety of areas.

3. Time Commitment from Developers:


Active involvement and collaboration is
required throughout the Agile process, which is more time consuming than a
traditional approach.

4. Final Product can be very Different:


Agile is so flexible, new iterations may be
added based on evolving customer feedback, which can lead to a very different
final deliverable.

AGILE MODEL -
Agile SDLC model is a combination of iterative and incremental process models with
focus on process adaptability and customer satisfaction by rapid delivery of working
software products.

Agile methods break the product into small incremental builds. These builds are
provided in iterations. Each iteration typically lasts from about one to three weeks.

Iterative approach is taken and working software build is delivered after each
iteration. Each build is incremental in terms of features; the final build holds all the
features required by the customer.

ADVANTAGES OF AGILE MODEL -


1. It is a very realistic approach to software development.
2. Promotes teamwork and cross training.
3. Functionality can be developed rapidly and demonstrated.
4. Resource requirements are minimum.
5. Suitable for fixed or changing requirements.
6. Delivers early partial working solutions.
7. Minimal rules, documentation easily employed.
8. Easy to manage.

DISADVANTAGES OF AGILE MODEL -


1. More risk of sustainability, maintainability and extensibility.
2. Depends heavily on customer interaction, so if the customer is not clear, the team
can be driven in the wrong direction.
3. Not suitable for handling complex dependencies.
4. Strict delivery management dictates the scope, functionality to be delivered, and
adjustments to meet the deadlines.

HUMAN FACTORS -
agile development focuses on the
talents and skills of individuals and modeling the process to specific peoples and
teams.

1. Collaboration:
Team members must collaborate with each other to have smooth development of
software.
2. Common Focus:
The team members may perform various tasks and bring different skills to the project. All skills should
be focused on a same goal.

3. Decision Making Ability:


The project team must be allowed the freedom to
control its own destiny, so they can take individual decisions on various issues.

4. Self-Organization:
To get a number of technical benefits, the collaboration should be improved and team confidence should
be boosted.

5. Mutual Trust and Respect:


The agile software project team must exhibits respect and trust which is necessary to make them strongly
connected.

EXTREME PROGRAMMING (XP) -


Extreme Programming is a set of practices that conforms to the values and principles
of Agile.

eXtreme Programming (XP) is originally described by Kent Beck, which is one of the
most popular agile methodologies.

XP is a disciplined approach to delivering high-quality software quickly and


continuously.

It improves a software project in five essential ways i.e., communication, simplicity,


feedback, respect, and courage.

XP is the most specific of the agile frameworks regarding appropriate engineering


practices for software development.

Extreme Programming emphasizes teamwork. Managers, customers, and developers


together make a team.

XP VALUES -
The five values of XP are communication, simplicity, feedback, courage, and respect
and are described as,

1.Communication – Promote open, frequent collaboration.

2.Simplicity – Keep designs and solutions minimal.


3.Feedback – Use regular feedback to guide progress.

4.Courage – Embrace change and tackle challenges.

5.Respect – Value and support each team member’s contributions.

XP PROCESS -
XP is one of the Agile software development methodologies. It provides values and
principles to guide the team behavior. The team is expected to self-organize.
Extreme programming encompasses a set of rules and practices that occur within the
context of four framework activities, planning, design, coding, and testing.

1. Planning -
The planning activity begins with the creation of a set of stories that describe required features and
functionality for software to be built.

2. Design -
XP design follows the KIS (Keep It Simple) principle. A simple design is always
preferred over a more complex representation.

The design provides implementation guidance for a story as it is written – nothing less,
nothing more.

3. Coding -
Once the code completes, it can be unit tested immediately, thereby providing
instantaneous feedback to the developer.

4.Testing -
Comprehensive testing is performed continuously. This includes unit tests, integration tests, and
acceptance tests.

Regular feedback from tests helps the team make necessary adjustments and ensures that the software
meets quality standards.

ADVANTAGES OF EXTREME PROGRAMMING(XP)-


1.Incremental Development:
Consistent with most modern development methods.

2.Continuous Reviews:
A very important practice that can greatly improve any programming team’s performance.

3.Timely Delivery:
Slipped schedules and achievable development cycles ensure timely deliveries.
4.Emphasis on Customer Involvement:
A major help to projects where it can be applied.

Disadvantages of Extreme Programming (XP) -

1.High customer involvement required.


2.Needs skilled developers.
3.Frequent changes can cause bugs.
4.Limited documentation.
5.Not ideal for large projects.
6.Resistance to change in teams.

SCRUM -
Scrum is a framework within which people can address complex adaptive problems, while productively
and creatively delivering products of the highest possible value.

Scrum is also an agile development method, which concentrates particularly on how to manage tasks
within a team-based development environment.

Scrum is the most popular and widely adopted agile method as it is relatively simple to implement and
addresses many of the management issues.

Scrum is an iterative and incremental agile software development framework for managing software
projects and application development.

DYNAMIC SYSTEM DEVELOPMENT MODEL (DSDM) -


The DSDM is an agile software development approach that provides a framework for building and
maintaining systems, which meet tight time constraints through the use of incremental prototyping in a
controlled project environment.

The DSDM was developed to fill in some of the gaps in the RAD method by providing a
framework which takes into account the entire development cycle.

The main features of the DSDM method are as follows:


1. User involvement.
2. Iterative and incremental development.
3. Increased delivery frequency.
4. Integrated tests at each phase.
5. The acceptance of delivered products depends directly on fulfilling requirements.

Requirements are planned and delivered in short, fixed-length time-boxes, also


referred to as iterations, and requirements for DSDM projects are prioritized using
MoSCoW Rules which is stated as follows:
M – Must have requirements.
S – Should have if at all possible.
C – Could have but not critical.

Advantages of the DSDM:


1. DSDM provides a technique-independent process and is flexible in terms of requirement evolution.

2. DSDM is designed from the ground up by business people, so business value is identified and expected
to be the highest priority deliverable.

3. DSDM incorporates stakeholders into the development process.

4. An emphasis as DSDM on testing is so strong that at least one tester is expected to be on each project
team. Which improves software quality and performance.

Disadvantages of the DSDM:


1. DSDM focuses on RAD, which can lead to decrease in code robustness.

2. It requires significant user involvement.

3. DSDM requires a skilled development team in both the business and technical areas.

PAIR PROGRAMMING - IMP PYQ -


in Scrum is a collaborative technique where two developers work together at one workstation. One, the
driver, writes the code, while the other, the navigator, reviews and provides feedback. This practice
enhances code quality, promotes knowledge sharing, and fosters teamwork within Scrum's iterative
development framework.

AGILE UNIFIED PROCESS (AUP) -


It describes a simple, easy to understand approach to developing business application software using agile
techniques and concepts yet still remaining true to the RUP.

The AUP adopts a “serial in the large” and “iterative in the small” philosophy for building
computer-based systems. By adopting the classic UP phased activities—
inception, elaboration, construction, and transition.

AUP provides a serial overlay that enables a team to visualize the overall process flow for a software
project.

AUP activities -
1.Modeling: Create visual representations of requirements and system design.

2.Implementation: Write and integrate code iteratively.


3.Testing: Perform unit, integration, and system tests to ensure functionality.

4.Deployment: Release and configure the software in the production environment.

5.Configuration Management: Manage changes and maintain version control.

6.Project Management: Plan and monitor project progress and adapt to changes.

7.Environment: Set up and maintain development, testing, and production environments.

You might also like