Professional Documents
Culture Documents
Concepts
A New Software Development Paradigm
Pritam Dey
PRITAM DEY
AGILE CONCEPTS
A NEW SOFTWARE
DEVELOPMENT PARADIGM
CONTENTS
Table of Figures 6
Acknowledgement: 7
1 Introduction to Agile 8
What is Agile? 8
Agile Manifesto 8
Agile Values 9
AGILE Principles 12
History of Agile 16
2 Agile Thinking 20
Waterfall Approach 22
Waterfall vs. Agile 25
3 Benefits of Agile 26
Leadership skills
Learn how to think strategically and become a better leader
Click here
10 Glossary 74
11 References 86
TABLE OF FIGURES
Figure 1: Waterfall Model 23
Figure 2: Generic Agile Process 28
Figure 3: Agile Stories Breakdown 36
Figure 4: Agile Planning – 1 38
Figure 5: Agile Planning – 2 39
Figure 6: Agile Testing Quadrants 40
Figure 7: Test Driven Development 42
Figure 8: Daily Standup 46
Figure 9: Sample Burndown Chart 49
Figure 10: Release Burnup 50
Figure 11: Waterfall Model 55
Figure 12: Predictive vs. Adaptive 55
Figure 13: Extreme Programming Project 59
Figure 14: XP Process 60
Figure 15: Scrum 62
Figure 16: Dynamic Systems Development Method (DSDM) 63
Figure 17: Adaptive Software Development 69
Figure 18: 3-Level SAFe 73
Figure 19: 4-Level SAFe 73
ACKNOWLEDGEMENT:
This eBook is a compilation of various Agile framework thoughts and concepts summarized
and put together in an easily readable and digestible format. My deep gratitude goes to the
Agile pioneers in the industry, framework-provider organizations, and colleagues whom I have
worked with in the Agile discipline. The intent of this eBook is to explain Agile concepts in
a nutshell and propagate the adoption of Agile. It is not my intent to introduce materials
as my own creation. I am, as always, indebted to the industry from which I learned so
much. As far as possible, I have tried to cite the source of my references. Any omission is
purely unintentional and accidental.
1 INTRODUCTION TO AGILE
WHAT IS AGILE?
Agile is the ability to create and respond to change to succeed in an uncertain and turbulent
environment.(Source: www.agilealliance.org)
Agile Software Development is an umbrella term for a set of methods and practices based
on the values and principles expressed in the Agile Manifesto. Solutions evolve through
collaboration between self-organizing, cross-functional teams utilizing the appropriate practices
for their context. (Source: www.agilealliance.org)
AGILE MANIFESTO
In early 2001, a group of seventeen independent-minded software practitioners – called
The Agile Alliance – met to define Agile and outline the development and delivery of Agile
frameworks. They were motivated to create an Agile framework that would allow quick design,
development and delivery of software. The industry until then (and still is) were struggling
with extremely slow software delivery and the associated processes and methodologies. The
initial workings of the Agile Alliance let to the first-ever creation of The Manifesto of the Agile
Alliance. Even though the manifesto says ‘The Manifesto for Agile Software Development’,
the Agile values and principles can easily be applied to many types of product development.
We are uncovering better ways of developing software by doing it and helping others do it.
Through this work we have come to value
That is, while there is value in the items on the right, we value the items on the left more.
1. Our highest priority is to satisfy the customer through early and continuous delivery
of valuable software.
2. Welcome changing requirements, even late in development. Agile processes harness
change for the customer’s competitive advantage.
3. Deliver working software frequently, from a couple of weeks to a couple of months,
with a preference to the shorter timescale.
4. Business people and developers must work together daily throughout the project.
5. Build projects around motivated individuals. Give them the environment and support
they need, and trust them to get the job done.
6. The most efficient and effective method of conveying information to and within a
development team is face-to-face conversation.
7. Working software is the primary measure of progress.
8. Agile processes promote sustainable development. The sponsors, developers, and
users should be able to maintain a constant pace indefinitely.
9. Continuous attention to technical excellence and good design enhances agility.
10. Simplicity – the art of maximizing the amount of work not done – is essential.
11. The best architectures, requirements, and designs emerge from self-organizing teams.
12. At regular intervals, the team reflects on how to become more effective, then tunes
and adjusts its behavior accordingly.
AGILE VALUES
The four Agile Manifesto statements or values are described briefly below:
The key aspect of people is the ability to work collaboratively with others. A strong team
member may not be an expert in his/her field. But what matter is the ability to work well
with others, communicating and interacting with them in a transparent manner. Building
the right team is more important than building the environment with processes and tools.
Therefore, in Agile, individuals and interactions are valued more than processes and tools.
This is typically what happens with software development too. Too many software
development projects fail mainly for the reasons outlined above.
Successful projects involve customer feedback on a regular and frequent basis. Customer
collaborate closely with the development team, providing frequent feedback on their
work along the journey. Customer is aware what is being developed, the developers the
customer requirements. There is minimum surprise on customer acceptance test criteria
or requirement changes.
It is not that contracts are not negotiated and created. In Agile, the contracts are written
to govern the way customers and suppliers would collaborate for a mutually satisfactory
conclusion. Agile contract concentrates on enabling inspection and adaptation of the
product, prioritization and collaboration between all stakeholders.
Often we create a plan hoping that it will stand the test of time. But the ground reality
is that no plan is intelligent enough to consider the future. Things change every moment.
And therefore, to execute on a plan that is undergoing invisible changes means setting
up ourselves for failure.
A software project plan is also like above; it cannot be planned very far into the future.
Things are always likely to change. Conditions in the marketplace changes, business
strategy changes, software requirements change. The people and cost of things changes;
due to unforeseen events, the schedule may change. Therefore, it is almost impossible to
deliver an effective software product if change mechanism is not built into it.
A better planning strategy is one where the plan is created around certainty, tentativeness,
and best guess. We know for certain what is going to happen in the next two weeks; we
guess what may happen tentatively in the next 2–8 weeks; and we may take a guess what
might happen beyond 8 weeks. Project requirements and functionality also follow the
same visibility path. We certainly know what requirements are in the next 2–4 weeks;
we roughly know the requirements for the next three months; and we barely know the
requirements 12 months out.
Therefore, Agile believes that up-front project plans are not commitment plans; it is
understood that the plans are merely forecast best guesses based on experience and facts;
and change is inevitable as the project develops.
Agile recommends that a plan is built with the understanding that it is flexible and ready
to adapt to change in business or technical environment.
Therefore, in Agile, responding to change is a better plan than following an inflexible plan.
AGILE PRINCIPLES
1. Our highest priority is to satisfy the customer through early and continuous
delivery of valuable software.
Instead of big bang approach, Agile focuses on deliver incremental value to customer by
delivering software product in a frequent, consistent, regular, and incremental manner.
Agile refutes the myth that the more functionality is packaged in the product, the higher
the quality of the product will be. On the contrary, Agile believes that the quality of the
product is inversely proportional to the level of functionality. The less functional the initial
delivery, the higher the quality in the final product.
As a corollary, Agile also believes that the more frequent the deliveries, the higher the final
quality. This will eventually lead to a more satisfied and involved customer. It is likely to
make them more likely to accept the product being delivered. And if something is amiss,
they would eagerly report on changes they want addressed.
In Agile delivery, the business requirements are broken down into smaller features or
components that can be well understood, defined, designed, tested and delivered. The
team keeps the architecture of the software flexible so that when changes are addressed,
the impact to the product is minimal.
This approach significantly reduces the risk of the poor quality of the product being
delivered;
A key metric that is used is ‘cost of delay.’ This means what is the cost to the business
of not completing a requested functionality or product feature. This allows customer to
identify the opportunity cost of requirements. The most valuable product features may
not make the best economic decision. With this metric, customers can understand the
cost of delaying the implementation of one feature over another.
4. Business people and developers must work together daily throughout the project.
Collaboration is a key Agile principle. Agile encourages face-to-face communication and
frequent interaction between the customer, developers, and stakeholders using a language
that is easy for all to understand. The intent is to eliminate all surprises and ambiguities.
Software project needs constant monitoring and guidance, and collaboration provides that.
5. Build projects around motivated individuals. Give them the environment and
support they need, and trust them to get the job done.
Agile considers the team of right people most important factors of successful software
delivery. The other factor such as process, environment, management, and ambience are
considered secondary and therefore these factors are built around the requirements of
the team.
Agile believes in empowering the team so that it stays motivated and productive. If the
team members can trust one another, Agile can be successful.
6. The most efficient and effective method of conveying information to and within
a development team is face-to-face conversation.
In Agile, the default mode of communication is face-to-face conversation. The usage of
emails and other non-human mode of communication is kept limited. Even if situations
where the teams are distributed geographically, virtual collaboration or co-location is
encouraged. Written communication is not able to convey everything; it is prone to
misunderstanding. A lot of communication happens through body language and visual
cues. Hence Agile stresses the importance of face-to-face communication. Agile team (the
typical size of the team is anywhere between 3 to 10 people) members meets together
every day for 10–15 minutes. This huddle is called daily standup which we will discuss
more in later sections.
Communication skills
Discover how to be a better communicator
Click here
10. Simplicity – the art of maximizing the amount of work not done – is essential.
Agile team do not believe in big-bang approach; they keep things simple. The team
members practice simplicity by focusing on existing requirements, and concentrating on
delivery value that is fit-for-purpose and meets customer needs. They don’t think too much
into the future because they know that changes are inevitable to happen. They focus on
delivering highest-quality work in the most effective way possible.
11. The best architectures, requirements, and designs emerge from self-organizing
teams.
An Agile team is a self-organizing team with the right delivery environment and
organization culture. The team members are mature individuals and they know best how
to share responsibilities and create a healthy working environment for high-quality work.
They work on all aspects of the projects together and chart the best way forward to achieve
the desired goal (i.e. working software product).
12. At regular intervals, the team reflects on how to become more effective, then
tunes and adjusts its behavior accordingly.
An Agile team devotes sufficient time for retrospection. At regular intervals, they assess that
elements of their approach have worked, what elements of the environment has changed,
and what they must improve upon to remain agile. In other words, this approach is called
continuous improvement.
HISTORY OF AGILE
Taiichi Ohno, Shigeo Shingo and Eiji Toyoda create the ‘Toyota Way’. Many
1948
Agile concepts relate to Lean thinking
Creation of the “make” tool for Unix systems – the principle of automating
1977
software builds is not a new idea.
The term “Scrum” appears in an article by Takeuchi and Nonaka “The New
Product Development Game”, often cited as an inspiration for Scrum, the
1986
framework; however, it only appears once (in the title of a section: “Moving
the scrum downfield”) and does not at this point refer to any sort of meeting.
Ward Cunningham describes the CRC technique in a joint article with Kent
1989 Beck; the specific format used for the cards derives from an application
designed by Cunningham to store design documentation as a Hypercard stack.
Bill Opdyke coins the term “refactoring” in an ACM SIGPLAN paper with
1990 Ralph Johnson, “Refactoring: An aid in designing application frameworks
and evolving object-oriented systems”
Owing to the rise in popularity of RAD tools and IDEs, “make” type tools
1990’s
acquire a mixed reputation
RAD, possibly the first approach in which time-boxing and “iterations” in the
looser sense of “one repetition of the entire software development process”
1991 are closely combined, is described by James Martin in his “Rapid Application
Development”. This book also describes the details of the timebox in one
of its chapters.
1996 Steve McConnell describes the “Daily Build and Smoke Test” technique
1998–2002 “Test First” is elaborated into “Test Driven”, in particular on the C2.com Wiki.
Continuous integration and the “daily stand-up” are listed among the core
1998
practices of Extreme Programming.
The term “Big Visible Chart” is coined by Kent Beck in “Extreme Programming
1999
Explained”
The “three questions” of Scrum’s daily meeting format are largely adopted
2000
by Extreme Programming teams.
Early Scrum training materials hint at the future importance of the “Definition
2003
of Done”, initially only in the form of a slide title: “The story of Done”
The daily meeting is generalized as a core Agile practice, and with widespread
2004–2006 use of task boards gains one final key guideline, “hold the daily meeting
near the task board”
Source: www.agilealliance.org
2 AGILE THINKING
Before we get into the details of Agile, it is extremely important to get into the mindset
of an Agile practitioner and understand the thinking behind Agile. Every endeavor in life
involves the mechanics of doing it, and the mood (or thought process) associated with it.
Similarly, in Agile journey it is paramount to understand what Agile thinking is, and what
should be the mindset of an Agile specialist.
The first and foremost thing about Agile Thinking is that Agile is not only about doing
something. It is not a packaged solution that we buy to solve something. Indeed, it is
about ‘being’ Agile in all aspects of software development & delivery. It’s not only about
understanding ‘how’ we are doing Agile; it is more about ‘why’ we are doing Agile. The ‘how’
aspect of Agile is accomplished by the numerous tools & processes, practices, principles,
and values that Agile framework provides.
• Agile practitioners consider that the knowledge world is dynamic and variable. Things
are hardly ever constant. Change is going to happen no matter what. Hence an
Agile practitioner expects unexpected changes to happen and is prepared to handle
them. He is comfortable working in an environment of uncertainty and volatility.
• It is rare that IT environments will be simple and predictable. Since IT is closely
associated with business by being its close enabler, any change in business environment
is going to impact IT as well. IT environments typically tend to be complex; there
is uncertainty in terms of technology variation and requirements.
• IT is not like a civil engineering field where there is a fixed defined outcome and
a defined process. For instance, building a bridge does not see much variation.
Once the construction is started as per the requirements and design, there is very
little variability in design or construction techniques. Before the construction is
started, the requirements, analysis, design, construction, and delivery is planned
and finalized. This is an example of Waterfall model that we will discuss later. On
contrary, IT projects hardly follows this rigid path.
• The best mindset to have during Agile is to apply an empirical approach. Learn and
apply learning as you go along. You build small increments, get is reviewed and
tested by the product owners, get feedback, apply feedback, and release the product
to the end user. Once this first cycle is complete, start with the next iteration and
build on what you have already delivered. It is important to experiment, observe
and understand the results, and then adapt processes to achieve the best results.
Therefore, empirical mindset is an important agile thinking concept.
• The empirical approach, which is learning through experience, consists of three
main pillars – Transparency, Inspection, and Adaption. Transparency means that
the process of developing the product must be easily visible to everyone involved
in the project. Inspection requires that the product being created is inspected at
regular intervals so that any unexpected variance can be detected and corrected.
Adaption requires that the process is adjusted to minimize the unexpected and
unacceptable variances.
• Agile thinking derives a lot of its concepts from Toyota Production System (TPS).
Per Wikipedia, Toyota Motor Corporation has published an ‘official’ description of
TPS for the first time in 1992; this booklet was revised in 1998. In the foreword, it
is said: “The TPS is a framework for conserving resources by eliminating waste. People
who participate in the system learn to identify expenditures of material, effort and time
that do not generate value for customers and furthermore we have, avoid a ‘how-to’
approach. The booklet is not a manual. Rather it is an overview of the concepts, that
underlie our production system. It is a reminder that lasting gains in productivity and
quality are possible whenever and wherever management and employees are united in
a commitment to positive change”. TPS is grounded on two main conceptual pillars:
○○ Just-in-time: “Making only what is needed, only when it is needed, and only
in the amount that is needed”
○○ Jidoka: – (Auto-nomation) meaning “Automation with a human touch”
• Agile too adheres to TPS concepts of just-in-time by releasing software products in
small increments based on defined needs/requirements; Agile places more emphasis
on human-to-human communication and less on documentation.
• Agile thinking follows a product development lifecycle. The lifecycle of a product
spans from commissioning and decommissioning. The journey between these
two ends is accomplished through small delivery phases based on specific set
of requirements (or backlog of stories as called in product development world).
Typically, the features or functionalities are created as story cards that are added as
product backlog. The backlog exists throughout the product development lifecycle.
The stories are prioritized by the product owners based on how coarse-grained or
fine-grained the stories are, and taking into consideration the aspects of time, cost,
and quality.
• Agile follows the ‘time-boxing’ concept. According to Peter Measey and Radtac’s
book – Agile Foundations, “Time-boxing divides the delivery of increments of the
product into short, manageable time periods (called sprints or iterations) of days
or weeks, and varies, based on priority, the functionality to be delivered within
these time-boxes.”
• Finally, a key aspect of Agile thinking is it gives more importance to Time, Cost,
and Quality of software product delivery rather than the features/functionalities.
Agile considers Time, Cost and Quality to be fixed elements whereas features/
functionalities as dynamic elements. This variable aspect of features is demonstrated
by the Agile process where the features are released in increments. On the other
hand, the traditional Waterfall model believes in features being fixed element, and
time, cost and quality to be variable elements. This restructuring of time, cost,
quality and features works better in Agile projects because business expect software
delivery to be on time, within the cost boundaries, and of right quality. They are
not too concerned whether all features are implemented or not if there is a backlog
of their requirements, and they have the transparency that the development team
will release them in subsequent iterations.
In summary, Agile is a journey, not a destination. The best results can be derived out of
Agile practice when the team and the organization get into the right Agile mindset.
WATERFALL APPROACH
Before we get further into the Agile approach, it is important to understand what led to
Agile. In the early days of the IT industry, software development followed a sequential
development process. In 1970, Dr. Winston W. Royce wrote an article titled Managing the
development of large software systems that described the first formal description of the waterfall
model. Note that Royce did not use the term Waterfall in his article. Rather he presented
his model as an example of a flawed, non-working model.
In 1985, the United States Department of Defense captured this approach in DOD-STD-
2167A, their standards for working with software development contractors, which stated that
“the contractor shall implement a software development cycle that includes the following
six phases: Preliminary Design, Detailed Design, Coding and Unit Testing, Integration, and
Testing”. (source: Wikipedia – Waterfall model).
As stated above, the Waterfall model contains the following sequential phases:
Waterfall Model
Requirements
Specifications
Test Plan
Design
Coding
Testing RELEASE
These phases above are considered sequential because it is expected that one should complete
a phase before moving on to the next.
The Waterfall model originated in the manufacturing and construction industries that are highly-
structured physical environments. Due to lack of formal software development methodologies
at the time, the hardware-oriented Waterfall model was adapted for software development.
• If more effort is spent early in the initial phases analyzing and designing to
understand the requirements better, better would be the quality of the solution/
product being implemented.
• Higher quality means fewer errors at later stages thereby reducing costs.
• From a scheduling standpoint, Waterfall adopters usually spend 30–40% of the
time in the first two phases (Requirements and Analysis), 30–40% of the time to
coding, and rest to testing and operations.
• The key mode of communication is via documentation. The idea is if any team
member leaves the project, no knowledge is lost and the next team member can
get up to speed through the documentation.
The Waterfall model has its own set of drawbacks too, as noted below:
• It is assumed that customers know exactly what their requirements are. Unfortunately,
this is hardly the case. Requirements get changed; this leads to redesign, redevelopment,
retesting. All these leads to increased costs.
• If requirements change but the delivery schedule is not adjusted, the quality is
impacted because all work and re-work needs to be completed within the timeframe.
For example, testing time may get shortened, design and architectures may be short-
changed, corners may be cut – all to meet the final delivery date.
• Architects are hardly aware what the future difficulties while implementing the final
software would be or how the technology landscape would turn out. In such a
case, it would be counterproductive to persist with a design that may not account
for newly discovered constraints, requirements, or challenges.
• Waterfall does not work very well in dynamic IT environment where variability is
high and cost of change is not prohibitive.
Time management
Find out how to manage your time better
Click here
Therefore, advocates of Agile software development argue that the waterfall model is ineffective
when it comes to software development due to high variability involved.
Agile Waterfall
3 BENEFITS OF AGILE
The key benefits of Agile approach are:
• Rapid delivery of software product: Agile helps in delivering early value to a project
by regularly, and frequently, releasing software code in small units of features that
satisfies the product owner needs.
• Iterative approach: Releasing software code in small units of functionality gives
the benefit of an iterative approach.
• Fail fast: Releasing software code in small units of functionality helps in receiving
quick feedback from the customer. So, if things do not work, they can be fixed
far. This means failing fast and correcting the course.
• High responsiveness to change: Since detail planning of the project is done in
small phases or increments, the project is not impacted much due to change to
business requirements.
• Better management of risk: Risk is managed better by focusing on implementation
of small units of functionality and by keeping the attention on the immediate and
next release.
• Higher business value: Since functionalities are defined by the business and software
is released in small chunks of functionality, the customer or product owner can
release quick and high value faster.
• Higher quality: Because of small iteration, the development effort and time is
planned better. Development work does not get accumulated at the end; there is
no borrowing of time from other areas such as testing. This prevents in any short-
cuts leading to higher quality of the final product.
• Transparency: The whole Agile process is completely transparent. The product owner
sees the functionalities being implemented gradually in phases; the developers can
get quick feedback from the product owner and takes satisfaction from the fact
that the accepted functionality is valuable to the business.
1. The Product Owner (usually the Customer) provides a list of desired features of
the product that are compiled into a Product Backlog. Based on the input from
the team, the items in the Product Backlog are prioritized and reprioritized at the
start of every sprint. These features form the high-level requirements of the project.
Most items are expressed in the form of a “user story.”
2. The team, collaboratively, selects user stories from the product backlog they can
commit to delivering. A high-level design is developed, and a sprint backlog is
created. The tasks are identified, estimated and self-assigned.
3. The team performs planning at different levels (release and/or iteration/sprint).
4. The delivery team gets equipped with Agile technical practices to be able to deliver
the project successfully.
5. Stand-ups are performed daily (usually at the start of the day) for about 15 mins.
6. Visual boards are used to monitor the status of the iteration/sprint.
7. RAID log is created where risks, issues, assumptions and dependencies are added
to and monitored.
8. ‘Show and tell’ meetings are held at the end of a sprint, iteration or release for
the team to demonstrate to the stakeholders all user stories completed during
the iteration/sprint; feedback is sought from the stakeholders about the product
being delivered.
9. Sprint retrospective is conducted to discuss what went wrong, what didn’t go well
and what needs to be done differently next time.
10. The Agile Lead facilitates and enables the Agile process and coaches the team.
• The Customer: In Agile delivery, customer refers to the person who owns the product
being built, who makes decisions about what product will be built, and what work
will be done in what order to build the product. The customer understands the
vision and business rationale behind why the product is being built.
The customer also defines what stories are to be delivered, decides the order of the stories
on the backlog, and signs off stores when they are done at the end of each iteration/sprint
or release.
A commonly used mnemonic for remembering the key criteria of a good customer is
DARKA, which stands for:
(D)esire: The customer should have a keen desire to see the product being built as per
the vision. He should be excited about the product.
(A)uthority: The customer should have the authority to make decisions about the product
and its delivery, and enforce them. The Agile team must have a clear understanding what
level of authority the customer has, and who to approach if decisions beyond the authority
of the customer is needed.
(R)esponsibility: The customer is responsible for defining what the team will deliver and
in which order.
(K)knowledge: The customer must be knowledgeable about the product being delivered;
he should know where to find the information in a timely manner.
(A)availability: The customer must be available at critical juncture of the project to take
key decisions.
Self-organizing teams: Agile teams are self-organizing teams, because they have the authority
to decide how work gets done, who does it and how long it should take. Self-organizing
teams can take initiative, focus on team contributions, concentrate on solutions, cooperate
with each other, innovate for better ways of working, finding ways to deliver better solution,
manage constraints, and take measures to manage any contingencies and emergencies.
Self-organizing teams lead to faster decision making, higher motivation, increased brain
power, and increased levels of initiative and continuous improvement.
Feature teams: An Agile feature team are usually structured as feature teams as it enables
delivery of features from the backlog. The Agile feature team concentrates on delivering
value-add features to the customer.
Component teams: Component teams come into play when it is not possible for feature
teams to delivery features to the customer as the delivery cycle may require one or more
components to be delivered first. Components teams are responsible for producing components
that can be combined with other components from other teams and integrated together
into a feature.
Core and support teams: An Agile team may be broken up into core and support teams.
This can be typically seen in large and complex projects. The core team is focused on
delivering across the value chain; support teams provide support to core teams to do
things right first time. Example of areas where support team enable the core team are
architectural support, user interface support, or research support.
• The Agile Lead: The Agile lead is mainly responsible for enabling the team to self-
organize and continually improve. The Agile lead understands the overall delivery
cycle, understand the team, their skills, and their mode of working. The Agile lead
does not command and control the team; he or she rather facilitates and enable the
team to self-organize. An Agile lead removes impediments that block a task from
being executed or a feature being delivered.
Workshop facilitator: The Agile Lead sometimes puts on the hat of an Agile facilitator
to facilitate the delivery of Agile framework and activities through workshops. This needs
coordination, planning, and structuring of the workshops. Since a facilitator needs to be
independent from the people attending the workshops, it is advisable that the facilitator
be from a different team.
Process facilitator: The Agile Lead also helps in the organization, program, project and
team to define the Agile process and operating model. The Agile Lead ensures that Agile
processes are being followed, the Agile activities are respected, and the sizing of the stores
are correct. The Agile Lead also works closely with the team to identify any scope for
Agile process improvement.
Coach or trainer: The Agile Lead also plays the role of coach or trainer to propagate
the knowledge of Agile principles, processes and practices to the team. If there is a new
practice or process that needs to be implemented, the Agile Lead acts as enables to helping
the team implement them.
• The Stakeholders: Stakeholders are people who have interests in the project, may
be involved actively in the project, may exert influence over the project, and their
interests may positively or negatively impact the performance or completion of
the project. Therefore, identifying and effectively managing stakeholders is key
to successful Agile delivery. The key role of the stakeholder is to ensure that the
interests of the group they are part of are represented. For example, if the customer
is the stakeholder, he/she would be interested to ensure that the project team is
delivering the product per the requirements set by the customer.
Summary
Scenario
INDEPENDENT
NEGOTIABLE
ESTIMABLE
SMALL
TESTABLE
FRONT OF CARD
As a – Customer
I want – the ability to update my personal details (password, email, address, etc.) on
the website
BACK OF CARD
Acceptance Criteria:
Well-formed stories will meet the criteria of Bill Wake’s INVEST acronym:
Agile Planning Pyramid: Now that we have an idea of what a story card should contain,
the question is how to define the story cards. Are there any best practices available? The
answer is Yes. Below are some of the best practices:
Inc easin
Inc
rea
r
sin prio
gd
g
Mid-range (4-10 iterations out)
eta ity
il
r
Long-range (10+ iterations out)
• As the delivery progresses, stories are broken down from coarse-grained into
fine-grained stories. Basically, more details are brought in as the priority of the
story increases.
• From a timeline perspective, stories are defined fine-grained closer to the immediate
iteration sprint. If the iterations are far out, it is better to leave the stories coarse-
grained. This is because it is highly likely that the product will change during the
development cycle. Hence it may be counter-productive to define too fine-grained
stories if they are not going to be taken up in the immediate upcoming release.
Agile Estimation: Once the story cards are defined, the next activity is to estimate them.
Estimation is the process of agreeing on a size measurement for the stories, as well as the
tasks required to implement those stories, in a product backlog. Estimation is usually a
forecast of how many stories can be delivered in a release iteration/sprint. Estimation is
mostly done as a team so that every team member is committed to the work being planned.
The default unit type used to estimate the stories is Points. A sample example of point value
set is: 2, 3, 5, 8, 13, 20, 40 or 100 points. This is a Fibonacci sequence.
Prior to iteration planning, point estimates are entered the Planned Velocity field of iteration.
This value indicates the total number of story points that team believes it can complete in
an iteration. Different teams will have different velocity. Another way to calculate velocity
is to average total number of accepted points from past iterations. Over a period, the team
will have a pretty good idea of its velocity.
If the story estimate calculated by the team is greater than the total velocity for an upcoming
iteration, it is likely that the team will not be able to meet the target. Therefore, it is
advisable to break down large stories into smaller child stories.
How to Estimate the Stories: A popular technique to estimate the story points is through a
‘Planning Poker’ workshop. Here the team decides on a relative effort (story points) required
to deliver stories to ‘done’ status. Planning poker typically uses a relative sizing based on
fine and coarse grained differences between numbers. The relative difference between stories
that are near to delivery will be fine-grained, whereas the relative difference between stories
that are further away from delivery will be coarse-grained.
1. Create or purchase a set of planning cards for each team member. Have a card for
each value in your point system: 2, 3, 5, 8, 13, 20, 40, 100 (or similar)
2. Bring up the proposed story on a monitor or board. Explain what value the story
will provide, and the initial requirements.
3. Give team members a minute or two to select a card, face down.
4. On the count of three, all team members raise their hand, displaying the card.
5. Find the lowest and highest card values.
6. Have the lowest and highest card holders each take two minutes to explain why
they think a story is a certain size.
7. Provide a few moments for others to weigh in, should the discussion uncover any
problems or requirements.
8. Re-vote until a consensus value is reached.
9. Record the estimate value.
Source: https://help.rallydev.com/sizing-and-estimates
AGILE PLANNING
Planning in Agile is done to enable change. In simple terms, agile planning is measuring
the speed a team can turn user stories into working, production-ready software and then
using this information to determine when they’ll be done.
The planning process usually starts with a master story list that contains a list of features
that customer wants to see in the end-product. The speed at which the user stories are
turned into working software is called the team velocity. Velocity sets expectations about
delivery dates in the future. Then using agile iteration, planning is done for one to two
week sprints of work.
Example:
Effort
Master story list
1 pt Add user
Te
2 pt Print itinerary Iteration 1 a m
Ve
5 pt Cancel trip locit
y
3 pt Book permit
User stories 1 pt Update permit Iteration 2
& Estimates
... ...
5 pt Create device
3 pt Add swap trade Iteration (n)
——
160pts Time
Once the velocity and number of iterations are determined, we can identify whether (a) we
are going faster than expected or (b) we are going slower than originally anticipated.
Effort
remaining
Slower than
expected
Faster than
expected
Time
Top-down planning:
Top-down planning is used to create estimated for longer time frames. Top-down plans are
quick and not accurate always (they are not intended to be); they are especially suited to
environments that are variable and somewhat risky to plan in detail.
Top-down planning can be performed with either ‘story points’ or ‘ideal days’. Previous
experience or past data are also used in the planning process.
Bottom-down planning:
Bottom-down planning is used when a more detailed estimate is required. In this process,
teams have a good idea which stories are likely to be delivered in the iteration/sprint. Based
on this, the team determines the capacity of delivery (represented in ‘total available hours
within an iteration/sprint’), plans the tasks required to get the storied to ‘done’ status, and
estimates the hours needed to deliver the planned tasks. This is normally expressed as ‘total
required hours’ in the iteration/sprint. The ‘total required hours’ are then compared against
the ‘total available hours’. If the figures differ, the team may remove, replace, add or split
some stories till the required hours match.
Iteration/sprint planning:
Iteration/spring planning is usually performed in two parts – ‘Planning part 1’ and ‘Planning
part 2’.
AGILE TESTING
Agile testing generally means the practices of testing software for defects or performance
issues within the context of an agile workflow. Conforming with Agile practices, the testing
cycle must be Agile too. Leaving the testing at the end of a release is harmful because
significant defects found at that point my derail the quality and delivery of the product. Just
like multiple iterations/sprint in Agile delivery cycle, the testing cycle must be frequent too.
The figure below shows a simple-to-understand Agile testing model; it provides guidance
on the types of testing typically used in Agile delivery, the objective of testing, and how it
should be delivered.
Functional Useability
Critique Product
Simulations UAT
Story Alpha/Beta
Automated Tools
Technology Facing
Many testing-based development practices are used in Agile deliveries. A brief description
of them is provided below:
Once the tests have been written, a test-build-cycle is implemented until all bugs associated
with the build have been fixed and the customer is ready to sign off the story.
TFD validates that the delivery/product meets the story acceptance criteria agreed by the
customer.
TDD is normally implemented at the unit or component testing level. It includes the Agile
practice of ‘refactoring’. What this means is that tests and production code are written to steer
the design as we go. Basically, we refactor to simplify and clarify. The presumption behind
TDD is that it is difficult to tell what design will work best until the code is written. As
we learn about what works and what does not, we are in the best possible position to apply
those insights, while they are still fresh in our mind. And all this activity is protected by
the suites of automated unit tests. In TDD, the team focuses on conditions in the test that
could cause the code to fail. Once there are no more failure conditions, the development
is considered complete. The focus in TDD is on design and ensuring that products are
designed in a fit-for-purpose way.
Change code
functionality
No
Yes
No
End
• Apply the “Five Why’s” principle to each proposed user story, so that its purpose
is clearly related to business outcomes
• Thinking “from the outside in”, in other words implement only those behaviors
which contribute most directly to these business outcomes, to minimize waste
• Describe behaviors in a single notation which is directly accessible to domain
experts, testers and developers, to improve communication
• Apply these techniques all the way down to the lowest levels of abstraction of
the software, paying attention to the distribution of behavior, so that evolution
remains cheap
SPECIFICATION BY EXAMPLE
Specification by example ensures that what it being created matches the customer’s requirements
and that testing is focused on the parts of the system that create the greatest business value.
Gojko Adzic coined the term Specification by Example and it is the title of his book (Adzic,
2011). He chose this name over names, such as Behaviour Driven Development (BDD), as
the phrase put the focus on the nature of the requirements, “examples”, rather than other
things such as the development process or the user interface. He defines specification by
example as “…a set of process patterns that facilitate change in software products to ensure
that the right product is delivered efficiently. When I say the right product, I mean software
that delivers the required business effect or fulfills a business goal set by the customers or
business users and it is flexible enough to be able to receive future improvements with a
relatively flat cost of change.”
Leadership skills
Learn how to think strategically and become a better leader
Click here
• Face-to-face conversations
• Daily stand-ups
• Show and tells
• Pair programming
• Unit testing
• Pair negotiation
• Release
FACE-TO-FACE COMMUNICATION
Face-to-face communication enables fast feedback loops, improves relationships, creates
mutual trust, and defines centers of influence within an organization. In collaborative work,
such as Agile, face-to-face interaction is a more favorable and productive choice. Therefore,
Agile teams are physically co-located because it enables face-to-face communication better.
DAILY STAND-UPS
Daily stand-ups, as the name suggests, are daily meetings where the whole team meets every
day for a quick status update. It allows the team to inspect the progress that has been made,
plan the day’s work, and resolve any bottlenecks in the work.
The daily stand-up meets are limited to a maximum of 15 minutes. The meeting is, in most
cases, is done first working hour in the morning. This helps to set the agenda for the rest
of the day. Usually these meetings follow a simple format, with each member answering
each of the following three questions:
• What did I do yesterday that helped the development team meet the sprint/
iteration goal?
• What will I do today to help the development team meet the sprint/iteration goal?
• Do I see any impediment that prevents me or the development team from meeting
the sprint/iteration goal?
The meeting is usually centered around the visual board on which the tasks and/or stories
are laid out. The team would start from the rightmost point on the board and talk about
the tasks that are nearest completion. Then they work their way across the board. This helps
in focusing on the tasks that are nearing completion.
Show and tells could also be a live demonstration of a new working product or feature; the
stakeholders get a chance to see, touch and feel the real working product.
Show and tells meetings provide a good opportunity to highlight risks, issues, roadblocks
and assumptions to the stakeholders so that they can provide feedback or insights that may
assist with the resolution of these.
Show and tells should be an open and transparent discussion. It offers the attendees the
chance to understand and see for themselves the progress that has been made on the product.
The meetings also offer the team a chance to bring closure to their work for the duration
of the sprint. It gives the team an opportunity to celebrate their success on meeting their
goals and it is an opportunity for any senior management present to recognize and affirm
the efforts of the team.
• A PowerPoint presentation
• Document review meeting
• Fault-finding and finger-point meeting
RETROSPECTIVES
An Agile retrospective is a meeting that’s held at the end of an iteration in Agile software
development (ASD). During the retrospective, the team reflects on what happened in the
iteration and identifies actions for improvement going forward. The purpose of retrospectives
is to continually improve the product as it is being delivered and how to continuously
improve how the products are delivered. During retrospectives, each team member will
answer the following questions:
EMERGENT DOCUMENTATION
The Manifesto for Agile Software Development values “working software over comprehensive
documentation”. Documentation should be minimized and can only be produced when
it adds value, and should be fit for purpose. They key is to find right balance between
documentation and discussion. Three criteria could be applied to decide how much
documentation should be written:
Why is it called emergent documentation? This is because it follows the motto ‘we
document as we discover’. Too much documentation ahead is a waste of time. The team
should document only what they DID, as opposed to what they think they will do next.
Documentation should be part of the overall process, not a separate activity. It should be
a collaborative effort.
VISUAL BOARDS
Visual boards in Agile take on various forms. The key ones are explained below.
• Information Radiator
Information radiator, also known as Big Visible Chart (BVC), is a large graphical
representation of project information kept plainly in sight within an agile development
team’s shared workspace. It should be radiating information to everyone who sees it. It
is a great way to convey information about the current state of a delivery. Information
radiator could be handwritten, drawn, printed or electronic displays. It could be deployed
physical like mounting on a wall.
Information radiators are key source of information for daily stand-up meetings, show
and tells, and retrospectives. For daily stand-up meetings, team members can talk about
daily progress of stories and tasks represented on the board. For show and tell, information
radiators provide information on completed tasks and stories. And for retrospectives, the
board can show information on what needs attention. At a minimum, the information
radiator should show the current state of tasks/stories the team is working on and how
much progress they are making to get to ‘done’ status.
250 25
200 20
Remaining and completed tasks
Remaining effort (hours)
150 15
Completed tasks
Remaining effort
100 10 Ideal burndown
Remaining tasks
50 5
0 0
Day Day Day Day Day Day Day Day Day Day Day Day Day Day Day Day Day Day Day Day Day Day
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
A burn-up chart tracks the total work required vs. the actual work completed. When the
two lines intersect, the iteration/sprint is considered ‘done’.
300
• RAID Log
A RAID log is a single repository of all key information about a delivery that is not
expressed on the backlog or in other documentation. RAID stands for
○○ Risks
○○ Assumptions
○○ Issues/Actions
○○ Dependencies
SUSTAINABLE PACE
Sustainable Pace is an essential part of both Extreme Programming and the Agile Manifesto.
It means that the team aims for a work pace that is sustainable in the long-run. This is
intended to improve productivity by eliminating burnout.
The foundation for sustainable pace had been established by XP guru Kent Beck in the
first edition of “Extreme Programming Explained” (1999), where he suggested working no
more than 40 hours a week, and never working overtime a second week in a row. One of
the principles behind the Agile Manifesto was dedicated to “Sustainable Pace”, which can
be regarded as the most widely accepted definition:
“Agile processes promote sustainable development. The sponsors, developers, and users should be
able to maintain a constant pace indefinitely.”
Sustainable Pace is not about taking it easy and going slow. It is about expending energy
wisely, and regaining strength by taking adequate rest.
FOCUS ON QUALITY
Agile practice focuses on two kinds of qualities – Functional and Technical.
REFACTORING
Refactoring means changing the design of a system (internal structure) without changing
its external behavior. Refactoring does NOT mean rewriting code, fixing bugs or improving
observable aspects of software such as its interface. Refactoring is mainly focused on improving
the quality of the design of the system; it should be a continuous normal software development
practice to avoid the software incur too much technical debt. Refactoring improves objective
attributes of code that correlate with ease of maintenance; it makes code understandable and
maintainable, it encourages each developer to think about and understand design decisions,
in the context of collective ownership/collective code ownership, and it favors the emergence
of reusable design elements (such as design patterns) and code modules.
CONTINUOUS INTEGRATION
Continuous Integration (CI) involves producing a clean build of the system several times
per day. Agile teams typically configure CI to include automated compilation, unit test
execution, and source control integration. Sometimes CI also includes automatically running
automated acceptance tests. Continuous integration allows agile software development teams
to check in code frequently to detect problems early.
While performing continuous integration, it is important that the team use the latest working
version of a product, which is usually maintained in a central source control system. The
team must checkout the latest version, make changes, and check-in their updated code. The
continuous integration system detects the new checked in code, rebuilds the changed software
environment, and runs unit and integration tests to see if everything works correctly. If the
test failed, the build fails and the developer who checked-in the code will be notified. The
developer then fixes the code to resolve the problem.
AUTOMATED BUILDS
As mentioned in the section on Continuous Integration, automated build and testing is critical
to performing a successful continuous integration. Building the deployment and integration
testing manually is time-consuming and defeats the purpose of continuous integration.
Automated build is, therefore, a process of creating scripts that automatically perform key
developer tasks such as compiling code, running tests, performing code analysis, deploying
to environments, and creating system documentation.
It is important that Agile delivery teams can run automated build continuously. The
automated builds should be run on a regular basis, at least once daily.
In peer review, the developer submits the completed code to a peer for review before
committing the code. The reviewer could be of similar level of experience to the person
who wrote the code.
In pair programming, two programmers work together at one workstation. One types in
code while the other reviews each line of code as it is typed in. The person typing is called
the driver. The person reviewing the code is called the observer (or navigator). The two
programmers switch roles frequently.
In both these approaches, it is important that the review does not slow down the agile process.
Common sense should prevail in determining the amount and rigor of code review. The
review process should be in line with the complexity and rigor of the product being built.
Communication skills
Discover how to be a better communicator
Click here
Waterfall Model
Requirements
Specifications
Test Plan
Design
Coding
Testing RELEASE
While these traditional methodologies have obvious benefits (such as better planning of
team structure and distribution, predictable budgets, etc.), they have their own challenges
too. These methodologies lack flexibility, a clear disconnect from the customer expectation
(if the projects are too big), difficulty in addressing scope or requirements changes, and
inability to detect design flaws until the integration and testing phase.
The waterfall method was developed using engineering approach. It is understandable to plan
everything ahead when building bridges or buildings. Unfortunately, software development
does not work that way because conditions are different. Therefore, as a correction to the
shortcomings of traditional methodologies, Agile methodology was introduced. Agile replace
the rigid and predictive nature of traditional methodology with adaptive and agile methods.
Predictive Adaptive
Rigid Iterative Agile
methodologies methodologies methodologies
These are specific criteria identified by the customer for each functional requirement. The
acceptance criteria are written in simple terms and from a perspective of the customer.
Agile methodologies do not refer to one specific approach but are a group of individual
methodology that implement agile principles. Several agile methods that have been
developed are:
• Scrum
• Dynamic Systems Development Method (DSDM)
• Crystal Methods
• Feature Driven Development
• Lean Development
• Extreme Programming (XP)
• Adaptive Software Development
• Agile Project Management
• Kanban
• Scaled Agile Framework (SAFe)
Key elements of XP are: pair programming, extensive code review, unit testing of all code,
avoiding programming of features until they are needed, a flat management structure, code
simplicity and clarity, expecting changes in the customer’s requirements as time passes and
the problem is better understood, and frequent communication with the customer and
among programmers.
The differentiating aspect of XP is its simple rules. These rules, when combined, provide a
powerful tool to achieve extreme programming. A summary of the XP rules is listed below:
• Simplicity.
• Choose a system metaphor.
• Use CRC cards for design sessions.
Designing
• Create spike solutions to reduce risk.
• No functionality is added early.
• Refactor whenever and wherever possible.
Extreme programming (XP) originated in 1990s; it was conceptualized by Kent Black who
tried to find a better way to do software development. He realized that software development,
unlike waterfall model, is a fluid process; requirements will change during the project.
Therefore, the software development method must be able to adapt to changing requirements.
The four basic activities that XP proposes for software development process are:
• Coding: In XP, coding starts very early in the project as it is considered the most
important product of the software development process.
• Testing: XP emphasized on the efficacy of testing to check whether the developed
code is working. Programmers use automated unit tests, and write tests as many as
possible to break the code being written. This improves the robustness of the code.
• Listening: Listening is considered an extremely important soft skill in XP. It is
expected of each developer to listen attentively so that they can understand customer
needs and develop products as close to the requirements as possible.
• Designing: XP emphasized on creating simple and fit-for-purpose design structure
that avoids too much dependency.
XP is associated with 28 rules and practices. Of these the key ones are:
• User Stories: User stories are viewed as smaller use cases. This makes it easier for
planning and cost estimation.
• Small releases: XP emphasizes on small, simple and frequent releases incorporating
one or more requirements in each release.
• Standards: Team adheres to standards on names, class names and methods are
followed.
• Collective ownership: All code is the property of the whole team and not of an
individual. Code is reviewed and updated by everyone.
• Simple design: The design and implementation are kept as simple as possible while
providing the required functionality.
• Refactoring: The product is continually adjusted and improved by all team members.
• Testing: Every small release must pass through successful tests. Tests are created
first and then coding is done to pass the pre-written tests.
• Pair programming: Programmers work in pairs; they work together at a single machine.
One person writes code and the other person reviews; the role is then reversed.
• Continuous integration: Software is built several times a day. This avoids last minute
software integration challenges.
• 40-hour workweek: Team work 40-hours per week to avoid burnout.
• On-site customer: The customer must be accessible to the team as frequent as
possible so that there is no gap in communication.
XP Process
Project
Stories Test Cases Tasks Completion
Requirements
Story Metrics
Iteration
Iteration
Customer Customer Acceptance
Planning
Input Testing Tests
Meeting
Iteration
In conclusion, XP is best applied to projects that are exposed to changing technologies, where
small frequent releases are possible, where projects are small and can be easily managed.
SCRUM
Scrum is a popular Agile framework for completing complex projects. The term ‘scrum’ is
taken from the scrum formation used by Rugby teams that are high-performing and cross-
functional. Originally meant for software development projects, Scrum can be used for any
complex, innovative scope of work. What is unique to Scrum is its commitment to short
iterations of work. Scrum used fixed-length iterations called Sprints. Sprints are usually
no more than 30 days; the team try to build a potentially releasable product increment
every Sprint.
• Product Backlog:
○○ A product owner creates a prioritized wish list called a product backlog.
• Sprint Planning:
○○ During sprint planning, the team pulls a few pieces from the top of that wish
list, creates a sprint backlog, and decides how to implement those pieces.
○○ The team decides in how much time to complete the work. It is usually two
to four weeks – called a Sprint.
• Daily Stand-up:
○○ The team meets each day to assess its progress (daily Scrum). Also, called
daily stand-up, it is usually a quick 15-minute meeting.
○○ The Scrum Master tracks the overall progress and keeps the team focused on
its goal.
• Sprint Demo:
○○ A demo is given to the Product Owner and other stakeholders on what the
final shippable product will contain.
○○ At the end of the sprint, the work should be potentially shippable.
• Sprint Retrospective:
○○ The sprint ends with a sprint review and retrospective. The team discussed
what did and did not go well, and take actions to make the next sprint better.
Scrum
Scrum has three main roles – Product Owner, Scrum Master, and Scrum Team.
• Product Owner: The product owner is responsible for the overall product vision.
He re-prioritizes the Product Backlog, and adjusts it per release plans. He sets the
priorities to the development team. He has a leadership role, and carries significant
authority. He considers stakeholder interests, and takes a call on what goes in the
Sprint cycle. To the Scrum Team, Product Owner availability is very important as
he has clarity on customer requirements, and can answer questions.
• Scrum Master: The Scrum Master acts as a facilitator for the Product Owner and
the team. He does not manage the team, but ensures that any impediments that
obstructs the team from achieving its sprint goals are removed. He works with the
Product Owner and the organization to make Scrum possible. He works with the
Product Owner on how to maximize Return on Investment of the development
effort. The Scrum Master helps the team remain creative and productive.
• Scrum Team: The Scrum development team is usually self-managing and cross-
functional. The team plans one Sprint at a time with the Product Owner, and has
autonomy and responsibility to meet the goals of the Sprint. The team is intensely
collaborative, and is in one room to be massively productive. The constitution
of the Scrum Team is officially 3–9 members; it includes members with business
analysis, programming, testing, designer, domain, and software engineering skills.
DSDM is vendor-independent, covers the entire lifecycle of a project and provides best
practice guidance for on-time, in-budget delivery of projects, with proven scalability to
address projects of all sizes and for any business sector.
Project Structure:
The DSDM project consists of 7 phased steps which are organized and embedded in a rich
set of roles and responsibilities and are supported by several core techniques.
Time management
Find out how to manage your time better
Click here
○○ Must have: MUST have this requirement to meet the business needs.
○○ Should have: SHOULD have this requirement if possible, but the project
success does not rely on this.
○○ Could have: COULD have this requirement if it does not affect the fitness
of business needs of the project.
○○ Want to have: WON’T represents a requirement that stakeholders have agreed
will not be implemented in each release, but may be considered for the future.
CRYSTAL METHODOLOGY
Crystal Methodology is a lightweight, adaptable approach to software development. Developed
by Alistair Cockburn, Crystal Methodology focuses primarily on people and their interaction
during a software development project.
• Crystal is “human-powered” – This means that people are the most important aspect
of Crystal, and all processes and tools are built around them. Crystal emphasized
that development teams are self-sufficient and self-organizing, so they can streamline
the processes as the work progresses and become more effective.
• Crystal is “adaptive” – Crystal processes and tools are adjusted to the requirements
and context of the project. They are adapted to suit the business and technical
requirements of the project.
• Crystal is “ultra-light” – Crystal tries to keep simple (or light) by minimizing
documentation, overhead management and reporting. It removes the unnecessary
clutter by focusing on business value and functional software. Open communication
and transparent information flow is, therefore, encouraged between the team members.
The Crystal family of methodologies consists of the following variants: Crystal Clear, Crystal
Yellow, Crystal Orange, Crystal Orange Web, Crystal Red, Crystal Maroon, Crystal Diamond
and Crystal Sapphire. The weight of the Crystal methodology is determined by the project
environment and team size. For example, a team of six developers will go for Crystal clear;
a team of 10–40 members and a lifespan of 1–2 years will go for Crystal Orange. For
extremely large and risky projects, Crystal Sapphire or Crystal Diamonds methods may be
more appropriate.
For the successful implementation of the Crystal approach, Crystal is precise that the
development approach should be iterative and incremental, user involvement should be
active, and commitments on delivery are met.
FDD consists of five basic activities namely the development of an overall model, the
building of a feature list, the planning by feature, the designing by feature, and the building
by feature.
• Eliminating Waste
• Amplifying Learning
• Deciding as Late as Possible
• Delivering as Fast as Possible
• Empowering the Team
• Building Integrity In
• Seeing the Whole
The following table shows how the above Lean principles apply to Lean Software Development.
Avoid:
Encourage:
• Pair Programming
• Code reviews
• Documentation
Amplifying Learning
• Wiki – to let the knowledge base build up incrementally
• Thoroughly commented code
• Knowledge sharing sessions
• Training
• Use tools to manage requirements/user stories
• Do not over-engineer
• Build a simple solution first and enhance incrementally later
Delivering as Fast • Have the right team so that the team objectives are
as Possible achieved with minimum bureaucracy
• Have the right people so that they can trouble-shoot,
solve problems and make quick decisions
• Pair programming
• Test Driven Development
Building Integrity In
• Constant Feedback – Inspect and Adapt
• Minimize time between stages
• Frequent Integration
• Automation
• Manage Trade-offs
• Speculate
• Collaborate
• Learn
Speculate
Learn Collaborate
In ASD, the term speculate is used in place of the term plan. This, however, does not
replace planning; but acknowledges the reality of uncertainty in complex problems. Speculate
encourages exploration and experimentation. Short iterative cycles are encouraged.
Learn part of the ASD enhances team knowledge constantly through practices such as
technical reviews, project retrospectives, and customer focus groups.
Following the Agile approach, Agile project management reduces complex projects into small,
usable features that are delivered in two-to-four-week cycles. It achieves this by dividing
responsibilities among three key agile roles:
• The Product Owner handles setting project goals, tradeoff of schedule vs. scope,
adapting to changing project requirements and setting priorities for product features.
• The Scrum Master guides the team to prioritize their tasks and removes impediments
to handling their tasks.
• The Team Members directly handle their daily tasks, progress reporting, and quality
control of their product.
KANBAN
Kanban is a method for managing creation of products with an emphasis on continual delivery
while not overburdening the development team. Kanban is based on three basic principles:
Kanban originated from the world of Lean Manufacturing as a way of doing “Just-in-Time”
production. It was developed by Toyota in the 1950s.
Like other Agile frameworks, Kanban focus on iterative delivery where teams work in two-
to-four-week “sprints” to deliver a small batch of User Stories. The flow of work is visualized
on a Kanban board. You can visualize how the work is flowing during the sprint through
the very fast iterations of design, develop, and test that happen within each sprint. The
Kanban board also helps us to determine the capacity for more work (depending on Work
in Progress status). If there is capacity, the team pulls the next item to work on. And when
the task is done, each item is marked Done.
Focusing on Agile process flow using Kanban can sometimes be even more efficient, resulting
in shorter lead times and higher productivity.
Note than Kanban is a process improvement approach, and not a process of its own. It
can be applied to Agile or Scrum; Kanban complements them rather than replace them.
Source: www.versionone.com/what-is-kanban/
SAFe synchronizes alignment, collaboration, and delivery for large numbers of Agile teams.
It supports both software and systems development, from the modest scale of well under
100 practitioners to the largest software solutions and complex cyber-physical systems,
systems that require thousands of people to create and maintain. SAFe was developed in the
field, based on helping customers solve their most challenging scaling problems. It leverages
three primary bodies of knowledge: Agile development, Lean product development, and
systems thinking.
SAFe can be configured with the three or four organizational levels described above, plus
a Foundation layer, as described below:
The SAFe Core Values are the guiding principles that dictate behavior and action. These
values can help people know what is right from wrong, where to put their focus, and how
to help companies to determine if they are on the right path to fulfill their business goals.
SAFe’s practices are grounded on nine fundamental principles that have evolved from Agile
principles and methods, Lean product development, systems thinking, and observation of
successful enterprises. There is a specific article for each principle on the SAFe website, and
the embodiment of the principles appears throughout the Framework.
SAFe’s interactive “Big Picture” (Figure 1) provides a visual overview of the Framework. It
has two views. The default “3-level view” is well suited for solutions that require a modest
number of Agile teams, as well as smaller systems, products and services that are largely
independent of each other. The “4-level view” supports those building large, integrated
solutions that typically require hundreds or more practitioners to build and maintain.
10 GLOSSARY
Acceptance Criteria: These are specific criteria identified by the customer for each functional
requirement. The acceptance criteria are written in simple terms and from a perspective of
the customer.
Agile: A conceptual framework for undertaking software projects. Agile methods are a family
of development processes, not a single approach to software development.
Automated Build: Refers to an automated process that converts files and other assets under
the developers’ responsibility into a software product in its final or consumable form.
Backlog: A backlog is a list of features or technical tasks which the team maintains and
which, at a given moment, are known to be necessary and sufficient to complete a project
or a release. The backlog is the primary point of entry for knowledge about requirements,
and the single authoritative source defining the work to be done.
Backlog Grooming: Backlog grooming is when the product owner and some, or all, of the
rest of the team review items on the backlog to ensure the backlog contains the appropriate
items, that they are prioritized, and that the items at the top of the backlog are ready
for delivery.
Behavior Driven Development: Behavior driven development (or BDD) is an agile software
development technique that encourages collaboration between developers, QA and non-
technical or business participants in a software project. BDD focuses on obtaining a clear
understanding of desired software behavior through discussion with stakeholders. It extends
TDD by writing test cases in a natural language that non-programmers can read.
Bugs: A software bug is a problem causing a program to crash or produce invalid output.
It is caused by insufficient or erroneous logic and can be an error, mistake, defect or fault.
Burndown Chart: A burndown chart is a visual tool for measuring and displaying progress.
Visually, a burndown chart is simply a line chart representing remaining work over time.
Burndown charts are used to measure the progress of an agile project at both an iteration
and project level.
Business Application Owner (AKA Product Owner): The product owner is responsible
for the project vision, business case realization, high level requirements, prioritization, and
final acceptance. The product owner or their delegate is expected to interact heavily with
the core team. Product Owners will sometimes delegate the day-to-day team interactions
to a business lead. In either case, the team needs to have someone who can quickly answer
requirements questions and make tradeoff decisions.
Business Lead: The Business Lead works with Solution Analysts to translate business processes
and solution requirements to solution delivery methodology work products that can be
used for development, they sign off on project business process and solution requirements
work products, and ensure consistency of requirements across process, requirements, and
user interface.
Business Value: Items that are of tangible and generally near term value to the business.
Examples of Business Value could be a new screen, report, or feature for an asset. It is
important to note that items not designated as Business Value still produce value for the
business. However, the value is either a long-term benefit or something not tangible to
the user.
Collective Ownership: Collective code ownership, as the name suggests, is the explicit
convention that “every” team member is not only allowed, but in fact has a positive duty,
to make changes to “any” code file as necessary: either to complete a development task, to
repair a defect, or even to improve the code’s overall structure.
CRC Cards: CRC cards (for Class, Responsibilities, Collaborators) are an activity bridging
the worlds of role-playing games and object-oriented design.
Daily Standup/Daily Meeting: Daily Standup is a whole team meeting that happens at the
same time every day that usually lasts 15 minutes or less. The meeting is designed to allow
the entire team to synchronize with each other and to understand the flow and challenges
of the development process. Each team member should provide the following information:
what did I do yesterday, what am I planning to do today, and what impediments do I
currently have?
Defect: An undesired outcome that is discovered after the appropriate party has signed off
on some functionality as working. This is typically found outside of the current Iteration.
Dependency: A dependency arises when one task relies upon the completion another task.
For example, completion of feature X may depend upon feature Y working. In this case,
feature X is dependent upon feature Y.
Done: Also, referred to as “Done Done”, this term is used to describe all the various tasks
that need to happen before a story is considered potentially releasable.
Epic: A very large user story that is eventually broken down into smaller stories.
Estimation: The process of agreeing on a size measurement for the stories, as well as the
tasks required to implement those stories, in a product backlog.
Facilitation: A facilitator is a person who chooses or is given the explicit role of conducting
a meeting. This role usually entails that the facilitator will take little part in the discussions
on the meeting’s topic, but will focus primarily on creating the conditions for effective group
processes, in the pursuit of the objectives for which the meeting was convened.
Feature: Features are high level business needs. Features typically undergo more detailed
analysis and decompose into more fully defined user stories prior to implementation by
the team.
Feature Creep: Feature creep occurs when software becomes complicated and difficult to
use because of too many features.
Frequent Releases: A process where product is frequently released to end users for feedback.
Heartbeat Retrospective: The team meets regularly, usually adhering to the rhythm of its
iterations, to explicitly reflect on the most significant events to have occurred since the
previous such meeting, and take decisions aiming at remediation or improvement.
Incremental Development: The means by which each successive version of the product is
built upon the previous version by adding user-visible functionality.
Information Radiators: Generic term used for any of several handwritten, drawn, printed or
electronic displays which a team places in a highly visible location, so that all team members
as well as passers-by can see the latest information at a glance: count of automated tests,
velocity, incident reports, continuous integration status, and so on.
Integration: Refers to any efforts still required, after individual programmers, or sub-groups
of programmers working on separate components, for a project team to deliver a product
suitable for release as a functional whole.
Invest: It is an acronym to assess the quality of a user story. It stands for Independent (of
all others), Negotiable (not a specific contract for features), Valuable (or vertical), Estimable
(to a good approximation), Small (so as to fit an iteration), and Testable.
Iteration: A short, 2–4 week, development and test cycle during which the team will develop
working, tested software for a selected few user stories and demo the working software to
stakeholders.
Iteration Backlog: The short-list of user stories that have been selected from the product
backlog for a specific iteration.
Lead Time: “Lead time” is a term borrowed from the manufacturing method known as Lean
or Toyota Production System, where it is defined as the time elapsed between a customer
placing an order and receiving the product ordered. Translated to the software domain, lead
time can be described more abstractly as the time elapsed between the identification of a
requirement and its fulfillment.
Milestone Retrospective: An event spanning over several days that is invested to conduct
a detailed analysis of the project’s significant events.
Mock Objects: A technique commonly used in the context of crafting automated unit
tests. It consists of instantiating a test-specific version of a software component (typically a
class), which instead of the normal behaviors provides pre-computed results, and often also
checks that it’s invoked as expected by the objects being tested.
Niko-niko Calendar: The team installs a calendar one of the room’s walls. The format of
the calendar allows each team member to record, at the end of every workday, a graphic
evaluation of their mood during that day. This can be either a hand-drawn “emoticon”, or
a colored sticker, following a simple color code, for instance: blue for a bad day, red for
neutral, yellow for a good day. Over time, the niko-niko calendar reveals patterns of change
in the moods of the team, or of individual members.
Personas: When the project calls for it – for instance when user experience is a major factor
in project outcomes – the team crafts detailed, synthetic biographies of fictitious users of
the future product: these are called “personas”.
Planning Poker: Also, called Scrum poker, is a consensus-based technique for estimating,
mostly used to estimate effort or relative size of tasks in software development.
Points: Unit used for estimating of efforts needed for development of user stories.
Product Backlog: Acts as a repository for requirements targeted for release at some point.
These are typically high level requirements with high level estimates provided by the product
stakeholders. The requirements are listed on the backlog in priority order and maintained
by the product owner.
Product Owner: The Product Owner represents the voice of the customer and is accountable
for ensuring that the Team delivers value to the business. The Product Owner writes customer-
centric items (typically user stories), prioritizes them, and adds them to the product backlog.
Scrum teams should have one Product Owner.
Project Chartering: A high-level summary of the project’s key success factors that can be
displayed on one wall of the team room as a flipchart-sized sheet of paper.
Quick Design Session: A session where two or more developers meet to discuss the design
choices that may have far-reaching consequences.
Release Activity: Any activity that is necessary to help implement some functionality into
production.
Relative Estimation: Relative estimation is one of the several distinct flavors of estimation
used in Agile teams, and consists of estimating tasks or user stories, not separately and in
absolute units of time, but by comparison or by grouping of items of equivalent difficulty.
Retrospective: A team meeting that happens at the end of every development iteration to
review lessons learned and to discuss how the team can be more efficient in the future.
It is based on the principles of applying the learning from the previous sprint to the
upcoming sprint.
Rules of Simplicity: A set of criteria, in priority order, proposed by Kent Beck to judge
whether some source code is “simple enough” that the code is verified by automated tests,
and all such tests pass, the code contains no duplication, the code expresses separately each
distinct idea or responsibility, the code is composed of the minimum number of components
(classes, methods, lines) compatible with the first three criteria.
Scrum: A framework within which people can address complex adaptive problems, while
productively and creatively delivering products of the highest possible value. It is based on
the adaptive and iterative methodology of software development.
Scrumban: Scrumban is a mix between Scrum and Kanban, which supposedly contains the
best features of both methods.
Scrum of Scrums: A technique to scale Scrum up to large groups (over a dozen people),
consisting of dividing the groups into Agile teams of 5–10. Each daily scrum within a sub-
team ends by designating one member as “ambassador” to participate in a daily meeting
with ambassadors from other teams, called the Scrum of Scrums.
Scrum Master: Scrum Master is accountable for removing impediments to the ability of
the team to deliver the sprint goal/deliverables. The Scrum Master is not the team leader
but acts as a buffer between the team and any distracting influences. The Scrum Master
ensures that the Scrum process is used as intended. The Scrum Master is the enforcer of
rules. A key part of the Scrum Master’s role is to protect the team and keep them focused
on the tasks at hand. The role has also been referred to as servant-leader to reinforce these
dual perspectives.
Show & Tell: A demonstration of working software that occurs at the end of each iteration.
The goal of the Show and Tell is to get valuable feedback from the product owner and
other stakeholders.
Sign Up for Tasks: Members of an Agile development team normally choose which tasks
to work on, rather than being assigned work by a manager.
Simple Design: A team adopting the “simple design” practice bases its software design
strategy on the following principles: design is an ongoing activity, which includes refactoring
and heuristics such as YAGNI (You Aren’t Gonna Need It); design quality is evaluated
based on the rules of code simplicity; all design elements such as “design patterns”, plugin-
based architectures, etc. are seen as having costs as well as benefits, and design costs must
be justified; design decisions should be deferred until the “last responsible moment”, so
as to collect as much information as possible on the benefits of the chosen option before
incurring its costs.
Sizing: The process of relating the effort of one item to another. It will either be the same
size, bigger or smaller. We do sizing instead of estimating, because estimation is time based
and difficult to do well, and sizing is effort based and easier to do well.
Spike: A short, time-boxed piece of research, usually technical, on a single story that is
intended to provide just enough information that the team can estimate the size of the story.
Sprint/Iteration: A fixed duration period of time where user stories are chosen to work
on. The term Sprint comes from the Scrum methodology and is analogous to the term
Iteration. A sprint is defined as a 2–4 week increment of software development activities
that delivers working software and the end of the increment. External influences are not
allowed to change the requirements of the stories being worked on.
Spring Backlog: At the beginning of each sprint, the team has sprint planning with an end
result being a backlog of work that the team anticipates completing at the end of the sprint.
These are the items that the team will deliver against throughout the duration of the sprint.
Sprint Planning: Is a pre-sprint planning meeting attended by the core agile team. During
the meeting the Product Owner describes the highest priority features to the team as
described on the product backlog. The team then agrees on the number of features they can
accomplish in the sprint and plans the tasks required to achieve delivery of those features.
The planning group works the features into User Stories and assigns Acceptance criteria to
each story.
Sprint Review: Each Sprint is followed by a Sprint review. During this review the software
developed in the previous Sprint is reviewed and if necessary new backlog items are added.
Story Card: A place holder for a user-story. Story cards are typically 3×5 or 5×7 cards or
stickies that are put on the wall so that they can be easily tracked.
Story Mapping: Story mapping consists of ordering user stories along two independent
dimensions. The “map” arranges user activities along the horizontal axis in rough order of
priority (or “the order in which you would describe activities to explain the behavior of the
system”). Down the vertical axis, it represents increasing sophistication of the implementation.
Story Splitting: Splitting consists of breaking up one user story into smaller ones, while
preserving the property that each user story separately has measurable business value.
Sustainable Pace: The team aims for a work pace that they would be able to sustain
indefinitely.
Task: A user story can be broken down in to one or more tasks. Tasks are estimated daily
in hours (or story points) remaining by the developer working on them.
Taskboard/Storyboard: A wall chart with cards and sticky notes that represents all the work
for in each sprint. The notes are moved across the board to show progress.
Team: The Team is responsible for delivering the product. A Team is typically made up of
5–9 people with cross-functional skills who do the actual work (analyze, design, develop,
test, technical communication, document, etc.). It is recommended that the Team be self-
organizing and self-led, but often work with some form of project or team management.
Team Room: A dedicated space set for the Agile team for the duration of the project, set
apart from other groups’ activities.
The Three C’s: “Card, Conversation, Confirmation”; this formula that captures the components
of a User Story.
Technical Card: A card that doesn’t provide business value in and of itself. This is typically
used to implement some technical functionality or reduce technical debt, that will help to
deliver future story cards.
Three Amigos: Three amigos refer to the primary perspectives to examine an increment
of work before, during, and after development. Those perspectives are: Business – What
problem are we trying to solve? Development – How might we build a solution to solve
that problem? Testing – What about this, what could possibly happen?
Three Questions: The daily meeting is structured around some variant of the following
three questions: What have you completed since the last meeting? What do you plan to
complete by the next meeting? What is getting in your way?
Ubiquitous Language: A design approach described in Eric Evans’ “Domain Driven Design”
(2003), which consists notably of striving to use the vocabulary of a given business domain,
not only in discussions about the requirements for a software product, but in discussions
of design as well and all the way into “the product’s source code itself ”.
Unit Testing: A unit test, as Agile teams understand the term, is a short program fragment
written and maintained by the developers on the product team, which exercises some narrow
part of the product’s source code and checks the results. The outcome of a unit test is
binary: either “pass” if the program’s behavior is consistent with the recorded expectations,
or “fail” otherwise.
User Persona: Personas are a description of the typical users of a given software.
Leadership skills
Learn how to think strategically and become a better leader
Click here
User Story: A user story is a very high-level definition of a requirement, containing just
enough information so that the developers can produce a reasonable estimate of the effort to
implement it. A user story is one or more sentences in the everyday or business language of
the end user that captures what the user wants to achieve. A user story is also a placeholder
for conversation between the users and the team. The user stories should be written by or
for the customers for a software project and are their main instrument to influence the
development of the software. User stories could also be written by developers to express
non-functional requirements (security, performance, quality, etc.)
Velocity: It is a relative number which describes how much work the team can get done
over a period.
Vertical Slice: Showing off a feature in an application that works from start to finish but
may be limited in scope. For example, a rope bridge crossing a chasm is immediately useful
and allows people to cross. Having that in place can help to build a better bridge later.
WIP: Also, known as Work in Progress, it is any work that has been started but has yet
to be completed.
XP: A software development methodology which is intended to improve software quality and
responsiveness to changing customer requirements. As a type of agile software development,
it advocates frequent “releases” in short development cycles (timeboxing), which is intended
to improve productivity and introduce checkpoints where new customer requirements can
be adopted.
11 REFERENCES
Bibliography:
1. Measey, Peter, and Radtac. Agile Foundations: Principles, Practices, and Frameworks.
Swindon, United Kingdom: BCS – The Chartered Institute for IT, 2015.
2. Martin, Robert C. Agile Software Development: Principles, Patterns, and Practices.
Upper Saddle River, New Jersey: Prentice Hall, 2003.
3. Leyton, Ryland. The Agile Business Analyst: Moving from Waterfall to Agile. San
Bernandino, CA: www.RylandLeyton.com, 2015.
4. Scaled Agile. SAFe 4.0 Introduction – A Scaled Agile, Inc. White Paper.
Scaledagileframework.com/scaled agile.com, 2016.
5. Heuther, Derek. An Introduction to Cost of Delay. www.leadingagile.com, 2015.
• http://www.extremeprogramming.org/
• https://www.tutorialspoint.com/adaptive_software_development/adaptive_software_
development_lifecycle.htm
• https://www.versionone.com/agile-project-management/
• https://www.versionone.com/what-is-kanban/
• https://leankit.com/learn/kanban/kanban-agile/
• http://www.scaledagileframework.com/
Source: blog.crisp.se