Ase Unit 3
Ase Unit 3
Introduction and background, Agile Manifesto and Principles, Stakeholders and Challenges,
Overview of Agile Development Models: Scrum, Extreme Programming, Feature Driven
Development, Crystal, Kanban, and Lean Software Development
The agile software development process frequently takes the feedback of workable product.
The workable product is delivered within 1 to 4 weeks of iteration.
“Agile is a software development methodology that emphasizes flexibility, collaboration, and
rapid delivery.”
Introduction:
Background:
Agile originated in the 1990s as a response to traditional, rigid, and linear software
development methodologies like Waterfall. The Agile Manifesto, created in 2001 by 17
software developers, laid the foundation for Agile principles and values.
Key Drivers:
Agile Values:
Agile Methodologies:
1. Scrum
2. Kanban
3. Lean
5. Crystal
Benefits:
1. Faster delivery
2. Improved quality
4. Enhanced collaboration
5. Greater flexibility
Roles in Agile
There are two different roles in a Agile methodology. These are the Scrum Master and
Product Owner.
1. Scrum Master
The Scrum Master is a team leader and facility provider who helps the team member to
follow agile practices, so that the team member meets their commitments and customers
requirements. The scrum master plays the following responsibilities:
o They enable the close co-operation between all the roles and functions.
o They work with the organization to track the progress and processes of the company.
o They ensure that Agile Inspect & Adapt processes are leveraged correctly which
includes
o Planned meetings
o Daily stand-ups
o Demo
o Review
The Product Owner is one who runs the product from a business perspective. The Product
Owner plays the following responsibilities:
o He accepts the user stories that meet the definition of done and defined acceptance
criteria.
Cross-functional team
Overview:
Explanation:
People and how they communicate are more important than the processes they
follow.
Effective communication leads to better understanding and problem-solving.
Scenario: Meet Emma, a skilled developer, and Ryan, a product owner, working on a new
feature for an e-commerce platform. They're part of a cross-functional team using Agile
methodologies.
Traditional Approach: In a traditional setting, Emma and Ryan would have limited
interactions. Emma would receive a detailed specification document from Ryan and work on
the feature independently. They might have a few meetings to discuss progress, but
communication would be mostly formal and infrequent.
Agile Approach:
In an Agile environment, Emma and Ryan work closely together. They attend daily stand-ups,
where they share progress, discuss challenges, and align on goals. They collaborate on
prioritizing tasks, and Ryan provides continuous feedback on Emma's work.
Benefits:
Conclusion:
In this scenario, the focus on individuals and interactions enables Emma and Ryan to
collaborate effectively, leading to better outcomes and a more successful project.
Explanation:
Explanation:
Trust: Collaboration fosters trust between the customer and development team, promoting
open communication and a shared understanding of project goals.
Emphasis on value: Agile focuses on delivering working software and value to the
customer, rather than adhering to a fixed contract.
Explanation:
Scenario: A software development team is working on a project to build a mobile app for a
client. They have a detailed project plan and timeline, but halfway through the project, the
client suddenly changes their requirements and wants to add a new feature that wasn't
originally planned for.
Following a Plan: - The team insists on sticking to the original plan and timeline, even
though the client's requirements have changed. They try to fit the new feature into the
existing plan, which causes delays and compromises on quality.- The team becomes
frustrated and stressed, and the client is not satisfied with the final product.
Responding to Change:- The team acknowledges the change in requirements and is open to
adjusting the plan.- They collaborate with the client to understand the new requirements and
prioritize the work.- They adapt their approach to accommodate the change, potentially
adjusting the timeline or resources as needed.- The team delivers a high-quality product that
meets the client's new requirements, and both parties are satisfied.
In Agile, responding to change is valued over following a plan because it allows teams to be
flexible, adaptable, and customer centric. By embracing change, teams can deliver better
outcomes and build stronger relationships with their clients.
Agile Principles:
1. Customer Satisfaction:
2. Welcome Change:
Embrace changing requirements. It is time consuming to handle large and
complicated work while managing project activities. Therefore, a better
strategy is to break the task into manageable, sizeable chunks. In addition, it
would be simpler for the team members to see possible bottlenecks and deal
with delays if the clients were always kept informed.
3. Frequent Delivery:
4. Collaboration:
Work together daily with business stakeholders. To ensure that the business
and development sides of the project can communicate effectively and, more
importantly, collaborate, a bridge between them must be built. To facilitate an
intellectual exchange that both parties can agree on, make use of the same tools you
would have used in managing remote teams.
5. Motivated Individuals:
6. Face-to-Face Conversation:
7. Working Software:
8. Sustainable Development:
Maintain a constant pace. Burnout will occur if you work on a project for a
long time. It's inevitable. Avoid placing too much of a workload on your employees.
The value of your project will be affected. So, assemble the best team for the job that
will work hard but refrain from overworking themselves and endangering the project's
quality.
9. Technical Excellence:
Enhance agility through good design. Any Agile team's main goal should be
to provide value to the client. Therefore, a multi-skilled team that can manage all the
project's technical components and offers the chance for continual improvement is
crucial.
10. Simplicity:
Maximize the amount of work not done. You should avoid adding extraneous
complexity to a project if you want to complete it swiftly. You can accomplish this in
various ways, including by using agile tools, which eliminate busywork and offer you
more significant influence over all project-related decisions.
The best solutions emerge from self-organizing teams. Simply said, a self-
organized workforce with decision-making autonomy would function better since
each team member would be responsible for meeting client expectations rather than a
lone project manager.
Regularly reflect and adjust. Agile techniques are constructed on the notion of
iteration, where teams consistently enhance their game by learning from their
previous wrongdoings. Project managers should inspire team meetings where
everyone evaluates their work and discusses how to develop their management and
technical skills.
Stakeholders:
A stakeholder is anyone who has an interest or concern in a project. They can be internal or
external to the organization.
Identifying Stakeholders:
1. Project Team
2. Customers/End-users
3. Business Leaders/Executives
4. Product Owners
6. Testers/QA Engineers
7. Designers
8. Project Sponsors
9. External Partners/Vendors
Categorizing Stakeholders:
Challenges:
Stakeholders:
1. Product Owner (PO): Responsible for defining and prioritizing product backlog items
3. Scrum Master: Facilitates Agile processes and ensures team follows framework
Engagement Plan:
By identifying and engaging stakeholders effectively, the Agile team ensures that the project
meets the needs of all parties involved.
The meaning of Agile is swift or versatile. “Agile process model" refers to a software
development approach based on iterative development. Agile methods break tasks into
smaller iterations, or parts do not directly involve long term planning. The project scope and
requirements are laid down at the beginning of the development process. Plans regarding the
number of iterations, the duration and the scope of each iteration are clearly defined in
advance.
Each iteration is considered as a short time "frame" in the Agile process model, which
typically lasts from one to four weeks. The division of the entire project into smaller parts
helps to minimize the project risk and to reduce the overall project delivery time
requirements. Each iteration involves a team working through a full software development
life cycle including planning, requirements analysis, design, coding, and testing before a
working product is demonstrated to the client.
Following are the phases in the Agile model are as follows:
1. Requirements gathering
2. Design the requirements
3. Construction/ iteration
4. Testing/ Quality assurance
5. Deployment
6. Feedback
1. Requirements gathering: In this phase, you must define the requirements. You should
explain business opportunities and plan the time and effort needed to build the project. Based
on this information, you can evaluate technical and economic feasibility.
2. Design the requirements: When you have identified the project, work with stakeholders
to define requirements. You can use the user flow diagram or the high-level UML diagram to
show the work of new features and show how it will apply to your existing system.
3. Construction/ iteration: When the team defines the requirements, the work begins.
Designers and developers start working on their project, which aims to deploy a working
product. The product will undergo various stages of improvement, so it includes simple,
minimal functionality.
4. Testing: In this phase, the Quality Assurance team examines the product's performance and
looks for the bug.
5. Deployment: In this phase, the team issues a product for the user's work environment.
6. Feedback: After releasing the product, the last step is feedback. In this, the team receives
feedback about the product and works through the feedback.
o Scrum
o Crystal
o Dynamic Software Development Method (DSDM)
o Feature Driven Development (FDD)
o Lean Software Development
o eXtreme Programming (XP)
Scrum:
SCRUM is an agile development process focused primarily on ways to manage tasks in team-
based development conditions.
o Scrum Master: The scrum can set up the master team, arrange the meeting and
remove obstacles for the process
o Product owner: The product owner makes the product backlog, prioritizes the delay
and is responsible for the distribution of functionality on each repetition.
o Scrum Team: The team manages its work and organizes the work to complete the
sprint or cycle.
prescribed events are used to create regularity. All events are time-boxed events, such that
every event has a maximum duration. Sprint
The heart of Scrum is a Sprint, a time-box of two weeks or one month during which a
potentially releasable product increment is created. A new Sprint starts immediately after the
conclusion of the previous Sprint. Sprints consist of the Sprint planning, daily scrums, the
development work, the Sprint review, and the Sprint retrospective.
Conclusion
Scrum is a process framework that defines certain rules, events, and roles to bring in
regularity. However, it can be adapted to any organization, based on needs, provided the basic
scrum rules are not violated.
This type of methodology is used when customers are constantly changing demands or
requirements, or when they are not sure about the system's performance. It is a type of agile
software development. It advocates frequent releases in short development cycles, which is
intended to improve productivity and introduce checkpoints where new customer
requirements can be adopted. The methodology takes its name from the idea that the
beneficial elements of traditional software engineering practices are taken to extreme levels.
(Extreme Programming is a software-development discipline that organizes people to
produce higher-quality software more productively.) XP addresses the analysis, development,
and test phases with novel approaches that make a substantial difference to the quality of the
end-product.
Writing unit tests before programming and keeping all of the tests running at all times.
The unit tests are automated and eliminates defects early, thus reducing the costs.
Starting with a simple design just enough to code the features at hand and redesigning
when required.
Programming in pairs (called pair programming), with two programmers at one
screen, taking turns to use the keyboard. While one of them is at the keyboard, the
other constantly reviews and provides inputs.
Integrating and testing the whole system several times a day.
Putting a minimal working system into the production quickly and upgrading it
whenever required.
Keeping the customer involved all the time and obtaining constant feedback.
Crystal:
1. Chartering: Multi activities are involved in this phase such as making a development
team, performing feasibility analysis, developing plans, etc.
2. Cyclic delivery: under this, two more cycles consist, these are:
3. Wrap up: According to the user environment, this phase performs deployment, post-
deployment.
This method focuses on "Designing and Building" features. In contrast to other smart
methods, FDD describes the small steps of the work that should be obtained separately per
function.
Short iterative: FDD lifecycle works in simple and short iterations to efficiently
finish the work on time and gives good pace for large projects.
Customer focused: This agile practice is totally based on inspection of each feature
by client and then pushed to main build code.
Structured and feature focused: Initial activities in lifecycle builds the domain
model and features list in the beginning of timeline and more than 70% of efforts are
given to last 2 activities.
Frequent releases: Feature-driven development provides continuous releases of
features in the software and retaining continuous success of the project.
Lean software development methodology follows the principle "just in time production." The
lean method indicates the increasing speed of software development and reducing costs. Lean
development can be summarized in seven phases.
1. Eliminating Waste
2. Amplifying learning
3. Defer commitment (deciding as late as possible)
4. Early delivery
5. Empowering the team
6. Building Integrity
7. Optimize the whole.
1. Frequent Delivery
2. Face-to-Face Communication with clients.
3. Efficient design and fulfils the business requirement.
4. Anytime changes are acceptable.
5. It reduces total development time.
1. Due to the shortage of formal documents, it creates confusion and crucial decisions
taken throughout various phases can be misinterpreted at any time by different team
members.
2. Due to the lack of proper documentation, once the project completes and the
developers allotted to another project, maintenance of the finished project can become
a difficulty.
Points to Remember
Introduction and Background
Agile Manifesto:
o Individuals and Interactions over processes and tools
o Working Software over comprehensive documentation
o Customer Collaboration over contract negotiation
o Responding to Change over following a plan
12 Principles:
o Customer satisfaction through early and continuous delivery
o Welcoming changing requirements
o Frequent delivery of working software
o Collaboration between stakeholders and developers
o Motivated individuals and self-organizing teams
o Technical excellence and good design
o Simplicity and regular reflection for improvement
Stakeholders:
o Customers
o Development Team
o Product Owners
o Scrum Masters
Challenges:
o Resistance to change
o Inconsistent communication
o Balancing flexibility with control
o Integrating Agile with existing processes
Overview of Agile Development Models
1. Scrum:
o Framework for managing work with an emphasis on iterative progress.
o Roles: Product Owner, Scrum Master, Development Team.
o Events: Sprints, Daily Stand-ups, Sprint Reviews, and Retrospectives.
2. Extreme Programming (XP):
o Focuses on technical excellence and customer satisfaction.
o Practices: Pair Programming, Test-Driven Development, Continuous
Integration, and Refactoring.
3. Feature Driven Development (FDD):
o Model-driven, focusing on designing and building features.
o Steps: Develop an overall model, build a feature list, plan by feature, design
by feature, and build by feature.
4. Crystal:
o Emphasizes people, interaction, community, skills, talents, and
communications.
o Variants: Crystal Clear, Crystal Orange, and Crystal Red, each suited for
different team sizes and project complexities.
5. Kanban:
o Visual system for managing work as it moves through a process.
o Focuses on continuous delivery, flexibility, and improving workflow.
6. Lean Software Development:
o Derived from Lean manufacturing principles.
o Principles: Eliminate waste, build quality in, create knowledge, defer
commitment, deliver fast, respect people, and optimize the whole.