Академический Документы
Профессиональный Документы
Культура Документы
Section A
Unit 1
Unit 2
Unit 3
Section B
Unit 4
1. What are the SOLID principles? Explain OCP with suitable example
2. What is the role of design principles in agile? Explain with open closed principle
3. Explain single responsibility design principles
4. Explain the symptoms of bad software design write the statement of single
responsibility and interface segregation principle
5. Explain interface segregation principle
6. Explain Liskov substitution design principle with suitable example
7. Explain why agile design practices important
Unit 5
Unit 6
Section A
Unit 1
5. Each Agile methodology applies the 4 values in different ways. However, all of them
rely on these values to guide the development and delivery of high-quality, working
software.
4 values of the Agile Manifesto
According to Waterfall, customers negotiate the requirements for the product, often in great
detail, prior to any work starting. The Agile Manifesto describes a customer who collaborates
throughout the development process, making. It’s easier for development to meet their needs of
the customer.
According to Agile methods, the customer may be included at intervals for periodic demos, but a
project could just as easily have an end-user as a daily part of the team.
According to Agile, the shortness of an iteration means priorities can be shifted from iteration to
iteration and new features can be added into the next iteration. Changes always improve a
project and provide additional value.
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.
Pair programming is what it sounds like: programming in pairs. Two programmers work together
at the same computer on a single task. The “pair programmers” switch between two roles:
the driver and the navigator (or observer).
The driver controls the keyboard and mouse. They are responsible for writing the code. The
driver’s focus is usually on a single section of code, and the mechanics of modifying that code.
The navigator oversees the code entered by the driver, and is responsible for making sure the
pair is not only working, but doing the right work. The driver is focused on the current task, and
the navigator is more of a visionary. They will be thinking a step or two ahead, while maintaining
an open dialog with the driver.
The driver and the navigator should have a constant back-and-forth. An effective pair
communicates fluidly, mutually motivated to find the best solution to the problem at hand.
Benefits
increased code quality: "programming out loud" leads to clearer articulation of the complexities
and hidden details in coding tasks, reducing the risk of error or going down blind alleys
better diffusion of knowledge among the team, in particular when a developer unfamiliar with a
component is pairing with one who knows it much better
better transfer of skills, as junior developers pick up micro-techniques or broader skills from more
experienced team members
large reduction in coordination efforts, since there are N/2 pairs to coordinate instead of N
individual developers
improved resiliency of a pair to interruptions, compared to an individual developer: when one
member of the pair must attend to an external prompt, the other can remains focused on the task
and can assist in regaining focus afterwards
Two heads are better than one. If the driver encounters a hitch with the code, there will be
two of them who’ll solve the problem.
More efficient. Common thinking is that it slows down the project completion time
because you are effectively putting two programmers to develop a single program, instead
of having them work independently on two different programs. But studies have shown
that two programmers working on the same program are only 15% slower than when these
programmers work independently, rather than the presupposed 50% slow down.
Fewer coding mistakes. Because there is another programmer looking over your work, it
results in better code. In fact, an earlier study shows that it results in 15% fewer bugs than
code written by solo programmers. Plus, it allows the driver to remain focus on the code
being written while the other attends to external matters or interruption.
An effective way to share knowledge. Code Fellows talks about how it could help
programmers learn from their peers in this blog post. It would allow programmers to get
instant face-to-face instruction, which is much better than online tutorials and faster than
looking for resources on the Internet. Plus, you can learn things better from your partner,
especially in areas that may be unfamiliar to you. Developers can also pick up best practices
and better techniques from more advanced programmers. It can also facilitate mentoring
relationships between two programmers.
Develops your staff’s interpersonal skills. Collaborating on a single project helps your team
to appreciate the value of communication and teamwork.
In sum, it helps your programmers learn from each other while coming up with programs and
applications with better code quality and fewer bugs.
Alistair Cockburn of Humans and Technology and Laurie Williams of the University of Utah –
Computer Science Department have come up with a bullet list of benefits:
Fewer mistakes are introduced into your code because a lot of errors are caught as they are
being typed. This level of continuous code reviews gives rise to fewer bugs in your code.
You have shorter and tighter code.
Two people can solve the problems that crop up along the way faster and quicker.
Your developers learn more about things that are specific to the applications that they are
working on as well as software development in general, best practices, and other areas.
You have more people who know how the new program works. This means that if one of
the pair leaves the company, it will not kill the project.
Your team develops better interpersonal and social skills. Team members can learn to
communicate with each other, work together, and share information.
Your team members are more satisfied.
Waterfall Model methodology which is also known as Liner Sequential Life Cycle Model.
Waterfall Model followed in the sequential order, and so project development team only
moves to next phase of development or testing if the previous step completed successfully.
Agile methodology is a practice that helps continuous iteration of development and testing in
the software development process. In this model, development and testing activities are
concurrent, unlike the Waterfall model. This process allows more communication between
customers, developers, managers, and testers.
It is one the easiest model to manage. Because of its nature, each phase has specific
deliverables and a review process.
It works well for smaller size projects where requirements are easily understandable.
Faster delivery of the project
Process and results are well documented.
Easily adaptable method for shifting teams
This project management methodology is beneficial to manage dependencies.
It is focused client process. So, it makes sure that the client is continuously involved
during every stage.
Agile teams are extremely motivated and self-organized so it likely to provide a better
result from the development projects.
Agile software development method assures that quality of the development is
maintained
The process is completely based on the incremental progress. Therefore, the client and
team know exactly what is complete and what is not. This reduces risk in the
development process.
Agile is quite a flexible method which allows There is no scope of changing the
changes to be made in the project requirements once the project development
development requirements even if the starts.
initial planning has been completed.
Agile methodology, follow an iterative All the project development phases like
development approach because of this designing, development, testing, etc. are
planning, development, prototyping and completed once in the Waterfall model.
other software development phases may
appear more than once.
Test plan is reviewed after each sprint The test plan is rarely discussed during the
test phase.
Agile development is a process in which the The method is ideal for projects which have
requirements are expected to change and definite requirements and changes not at all
evolve. expected.
Agile introduces a product mindset where This model shows a project mindset and
the software product satisfies needs of its places its focus completely on accomplishing
end customers and changes itself as per the the project.
customer's demands.
Agile methdology works exceptionally well Reduces risk in the firm fixed price contracts
with Time & Materials or non-fixed funding. by getting risk agreement at the beginning of
It may increase stress in fixed-price the process.
scenarios.
Test team can take part in the requirements It is difficult for the test to initiate any change
change without problems. in requirements.
The Agile Team members are In the waterfall method, the process is always
interchangeable, as a result, they work straightforward so, project manager plays an
faster. There is also no need for project essential role during every stage of SDLC.
managers because the projects are
managed by the entire team
Conclusion:
Agile and Waterfall are very different software development methodologies and are good in
their respective way.
Waterfall model is ideal for projects which have defined requirements, and no changes
are expected. On the other hand, Agile is best suited where there is a higher chance of
frequent requirement changes.
The waterfall is easy to manage, sequential, and rigid method.
Agile is very flexible and it possible to make changes in any phase.
In Agile process, requirements can change frequently. However, in a waterfall model, it
is defined only once by the business analyst.
In Agile Description of project, details can be altered anytime during the SDLC process
which is not possible in Waterfall method.
1. Eliminate waste
2. Amplify learning
3. Decide as late as possible
4. Deliver as fast as possible
5. Empower the team
6. Build integrity in
7. See the whole
Eliminate waste[edit]
Lean philosophy regards everything not adding value to the customer as waste (muda). Such
waste may include:[5]
11. What is FDD? Explain the process of FDD with neat labelled diagram
As the name implies, features are an important aspect of FDD. A feature is a small, client-valued
function expressed in the form <action><result><object>. For example, "Calculate the total of a
sale", "Validate the password of a user", and "Authorize the sales transaction of a customer".
Features are to FDD as use cases are to the Rational Unified Process (RUP) and user stories are
to Scrum - they're a primary source of requirements and the primary input into your planning
efforts.
As you see in Figure 1 there are five main activities in FDD that are performed iteratively. The
first is Develop An Overall Model, the initial result being a high-level object model and notes. At
the start of a project your goal is to identify and understand the fundamentals of the domain
that your system is addressing, and throughout the project you will flesh this model out to
reflect what you're building. The second step is Build A Features List, grouping them
into related sets and subject areas. These first two steps map to the initial envisioning effort of
AMDD (see Figure 2). Next you Plan By Feature, the end result being a development, the
identification of class owners (more on this in a minute), and the identification of feature set
owners. The majority of the effort on an FDD project, roughly 75%, is comprised of the fourth
and fifth steps: Design By Feature and Build By Feature. These two activities are exactly what
you'd expect, they include tasks such as detailed modeling, programming, testing, and
packaging of the system.
There are six primary roles on an FDD project: Project Manager, Chief Architect, Development
Manager, Chief Programmer, Class Owner, and Domain Expert. An individual will take on one or
more roles on a project as you would expect. The concept of a class owner is where FDD differs
from XP. XP includes a practice called Collective Ownership the idea of which is that any
developer can update any artifact, including source code, as required. FDD takes a different
approach in that it assigns classes to individual developers, so if a feature requires changes to
several classes then the owners of those classes must work together as a feature team to
implement it. Just like programming pairs will model storm to think something through before
they code it, so will feature teams.
Domain Manager
Release Manager
Language Guru
Build Engineer
Toolsmith
System Administrator
Tester
Deployer
Technical Writer
FDD's five steps are supported by several practices. The first is domain object modeling, the
creation of a high-level class diagram and supporting artifacts that describes the problem
domain. Developing by feature and individual class ownership are also good practices, as is
having developers work together in feature teams. Inspections are an important aspect of FDD.
FDD also insists on regular builds, similar to XP, and configuration management. Finally, FDD
promotes a best practice called reporting/visibility of results, similar to XP and AM's philosophy
of open and honest communication.
How would Agile Modeling (AM) be applied on an FDD project? The principles and practices can
be clearly applied to FDD's two modeling-oriented steps - develop an overall model and design
by feature. The only apparent mismatch between the two processes is FDD's practice of class
ownership and AM's practice of collective ownership, but I would argue that this isn't the case.
FDD's practice pertains to coding but does not to modeling, on a FDD project people work
together in teams to model, along the lines of AM's model with others practice, and therefore
several people will be working on your shared collection of modeling artifacts.
12. What is agile development model? Explain the different methodologies in agile
software development
In case of some software deliverables, especially the large ones, it is difficult to assess
the effort required at the beginning of the software development life cycle.
There is lack of emphasis on necessary designing and documentation.
The project can easily get taken off track if the customer representative is not clear
what final outcome that they want.
Only senior programmers are capable of taking the kind of decisions required during the
development process. Hence it has no place for newbie programmers, unless combined
with experienced resources.
When new changes are needed to be implemented. The freedom agile gives to change
is very important. New changes can be implemented at very little cost because of the
frequency of new increments that are produced.
To implement a new feature the developers need to lose only the work of a few days, or
even only hours, to roll back and implement it.
Unlike the waterfall model in agile model very limited planning is required to get
started with the project. Agile assumes that the end users’ needs are ever changing in a
dynamic business and IT world. Changes can be discussed and features can be newly
effected or removed based on feedback. This effectively gives the customer the finished
system they want or need.
Both system developers and stakeholders alike, find they also get more freedom of time
and options than if the software was developed in a more rigid sequential way. Having
options gives them the ability to leave important decisions until more or better data or
even entire hosting programs are available; meaning the project can continue to move
forward without fear of reaching a sudden standstill.
You can refer to our introduction to Agile Methodology if you would like to understand Agile
better however, the above information is sufficient for the ISTQB Foundation Level exam.
1. Waterfall model
2. V model
3. Incremental model
4. RAD model
5. Iterative model
6. Spiral model
The Agile Testing Quadrants provide a helpful taxonomy to help teams identify, plan and
execute the testing needed.
Quadrant Q1 − Unit Level, Technology Facing, and supports the developers. Unit tests
belong to this Quadrant. These tests can be Automated tests.
Quadrant Q2 − System level, business facing, and conform product behavior. Functional
tests belong to this quadrant. These tests are either manual or automated.
Quadrant Q3 − System or User Acceptance Level, Business Facing and focus on real
time scenarios. User Acceptance Tests belong to this quadrant. These tests are manual.
Quadrant Q4 − System or Operational Acceptance Level, Technology Facing and Focus
on Performance, Load, Stress, Maintainability, Scalability Tests. Special tools can be
used for these tests along with automation testing.
Combining these, the Agile Testing Quadrants that reflect What-Testing-When can be
visualized as follows −
Agile Quadrant I consists of test cases that are technology driven and are performed to
support the team
This quadrant focuses mainly on internal code quality. The unit testing done in this quadrant
acts as an initial safety net for the product and helps developer get the story right. By
performing the tests in Q1, instant feedback about the product can be obtained. When Test
Driven Development is adapted, design becomes better and stronger. The testability is
build into the code in this quadrant. Very few bugs will be found after coding is done. The kinds
of tests in this quadrant are –
1. Unit Tests including testing a piece of code and ensuring that it fulfills the requirements.
2. Component Tests including testing architect intent and ensuring that components work
together.
Agile Quadrant II consists of test cases that are business driven and are performed to support
the team
This quadrant focuses on eliciting the requirements. In this quadrant, developers can code as
long as the test cases give the expected results. The test cases are business facing and so
development is driven keeping the business objectives in mind. The objective of this quadrant is
to obtain enough requirements so that coding can commence without any hiccups. An
increased customer-tester-developer collaboration is possible in this quadrant. The kind of tests
in this quadrant are –
3. Pair testing.
Agile Quadrant III consists of business facing test cases that critique the product
The main focus in this quadrant is to provide feedback to quadrants one and two. This quadrant
enables one to learn as test progresses. The test cases can be used as the basis to
perform automation testing. The product can be evaluated since realistic use of the product is
kept in mind in this quadrant. The process can be changed as needed. The many number of
iteration reviews in this quadrant builds confidence in the product and ensures the presence of
a quick feedback loop. The demo can be given even on unfinished code to gain insight into the
working of the product. Exploratory testing can be paired with the customer. The kind of tests
in this quadrant are -
1. Exploratory Testing
2. Usability Testing
5. Collaborative Testing
Agile Quadrant IV consists of technology-driven test cases that critique the product
This quadrant focuses on the non-functional requirements such as performance, security,
stability etc. This quadrant is responsible to deliver the ultimately finished product. The
application is made to deliver the expected value and non-functional qualities with help of this
quadrant. Kind of tests in this quadrant -
3. Infrastructure testing.
5. Scalability testing
6. Load testing
Agile Waterfall
It separates the project development Software development process is divided into
lifecycle into sprints. distinct phases.
Agile is quite a flexible method which allows There is no scope of changing the
changes to be made in the project requirements once the project development
development requirements even if the starts.
initial planning has been completed.
Agile methodology, follow an iterative All the project development phases like
development approach because of this designing, development, testing, etc. are
planning, development, prototyping and completed once in the Waterfall model.
other software development phases may
appear more than once.
Test plan is reviewed after each sprint The test plan is rarely discussed during the
test phase.
Agile development is a process in which the The method is ideal for projects which have
requirements are expected to change and definite requirements and changes not at all
evolve. expected.
Agile introduces a product mindset where This model shows a project mindset and
the software product satisfies needs of its places its focus completely on accomplishing
end customers and changes itself as per the the project.
customer's demands.
Agile methdology works exceptionally well Reduces risk in the firm fixed price contracts
with Time & Materials or non-fixed funding. by getting risk agreement at the beginning of
It may increase stress in fixed-price the process.
scenarios.
Test team can take part in the requirements It is difficult for the test to initiate any change
change without problems. in requirements.
The Agile Team members are In the waterfall method, the process is always
interchangeable, as a result, they work straightforward so, project manager plays an
faster. There is also no need for project essential role during every stage of SDLC.
managers because the projects are
managed by the entire team
The Scrum Framework usually deals with the fact that the requirements are likely to change or
most of the time not known at the start of the project.
Scrum is an agile framework for managing knowledge work, with an emphasis on software
development, although it has wide application in other fields and is slowly starting to be
explored by traditional project teams more generally.[1] It is designed for teams of three to nine
members, who break their work into actions that can be completed within timeboxed
iterations, called sprints, no longer than one month and most commonly two weeks, then track
progress and re-plan in 15-minute time-boxed stand-up meetings, called daily scrums.[2][3]
Approaches to coordinating the work of multiple scrum teams in larger organizations
include large-scale scrum (LeSS), scaled agile framework (SAFe), scrum of scrums,
and Scrum@Scale, the Nexus, among others.
Scrum is a lightweight, iterative and incremental framework for managing product
development.[4][5] It defines "a flexible, holistic product development strategy where a
development team works as a unit to reach a common goal",[6] challenges assumptions of the
"traditional, sequential approach"[6] to product development, and enables teams to self-
organize by encouraging physical co-location or close online collaboration of all team members,
as well as daily face-to-face communication among all team members and disciplines involved.
A key principle of Scrum is the dual recognition that customers will change their minds about
what they want or need (often called requirements volatility[7]) and that there will be
unpredictable challenges—for which a predictive or planned approach is not suited. As such,
Scrum adopts an evidence-based empirical approach—accepting that the problem cannot be
fully understood or defined up front, and instead focusing on how to maximize the team's
ability to deliver quickly, to respond to emerging requirements, and to adapt to evolving
technologies and changes in market conditions.
There are three roles in the scrum framework. These are ideally co-located to ensure optimal
communication among team members. Together these three roles form the scrum team. While
many organizations have other roles involved with defining and delivering the product, Scrum
defines only these three.[16]
Scrum framework
Product owner[edit]
The product owner represents the product's stakeholders and the voice of the customer, is
responsible for the product backlog and accountable for maximizing the value that the team
delivers. The product owner defines the product in customer-centric terms (typically user
stories), adds them to the product backlog, and prioritizes them based on importance and
dependencies.[21] A scrum team should have only one product owner (although a product
owner could support more than one team).[22] This role should not be combined with that of
the scrum master. The product owner should focus on the business side of product
development and spend the majority of their time liaising with stakeholders and the engineers
which are part of their Team. The product owner should not dictate how the team reaches a
technical solution, but rather will seek consensus among the team
members.[23][better source needed] This role is crucial and requires a deep understanding of both sides:
the business and the engineers (developers) in the scrum team. Therefore a good product
owner should be able to communicate what the business need, ask why they need it (because
there may be better ways to achieve that), and convey the message to all stakeholders
including the delivery Team using a technical language, as required. The role is crucial because
the product owner needs to be technical enough to understand the architecture of the solution
in order to be credible by the Team.
Communication is a core responsibility of the product owner. The ability to convey priorities
and empathize with team members and stakeholders is vital to steer product development in
the right direction. The product owner role bridges the communication gap between the team
and its stakeholders, serving as a proxy for stakeholders to the team and as a team
representative to the overall stakeholder community.[24][25]
As the face of the team to the stakeholders, the following are some of the communication tasks
of the product owner to the stakeholders:[26]
organize further meetings to demonstrate the solution to key stakeholders who were not
present at a sprint review;
defines and announces releases;
communicates delivery and team status;
share progress during governance meetings
share RAID (Risks, Assumptions, Issues and Dependencies) with stakeholders
negotiates priorities, scope, funding, and schedule;
ensures that the product backlog is visible, transparent and clear.
Empathy is a key attribute for a product owner to have—the ability to put one's self in
another's shoes. A product owner converses with different stakeholders, who have a variety of
backgrounds, job roles, and objectives. A product owner must be able to see from these
different points of view. To be effective, it is wise for a product owner to know the level of
detail the audience needs. The development team needs thorough feedback and specifications
so they can build a product up to expectation, while an executive sponsor may just need
summaries of progress. Providing more information than necessary may lose stakeholder
interest and waste time. A direct means of communication is the most preferred by seasoned
agile product owners.[22]
A product owner's ability to communicate effectively is also enhanced by being skilled in
techniques that identify stakeholder needs, negotiate priorities between stakeholder interests,
and collaborate with developers to ensure effective implementation of requirements.
Development team[edit]
The development team is responsible for delivering potentially releasable product increments
every sprint. The sprint goal is a short description of what the team is supposed to deliver at the
end of the sprint, and is important for both the Team and the stakeholders.
The team has from three to nine members who carry out all tasks required to build the product
increments (analysis, design, development, testing, technical writing, etc.).[21] Although there
will be several disciplines represented in the team, its members are referred to generically
as developers. To avoid potential confusion that this only refers to programmers, some
organizations call this a delivery team and its members just team members.
The development team in Scrum is self-organizing, and any interaction outside the team is
managed by the scrum master (who will protect the team), or the product owner (who has
regular interactions with all stakeholders).
Scrum master[edit]
Scrum is facilitated by a scrum master, who is accountable for removing impediments to the
ability of the team to deliver the product goals and deliverables. The scrum master is not a
traditional team lead or project manager but acts as a buffer between the team and any
distracting influences. The scrum master ensures that the scrum framework is followed. The
scrum master helps to ensure the team follows the agreed processes in the scrum framework,
often facilitates key sessions, and encourages the team to improve. The role has also been
referred to as a team facilitator[27] or servant-leader to reinforce these dual perspectives.
The core responsibilities of a scrum master include (but are not limited to): [28]
Helping the product owner maintain the product backlog in a way that ensures the needed
work is well understood so the team can continually make forward progress
Helping the team to determine the definition of done for the product, with input from key
stakeholders
Coaching the team, within the Scrum principles, in order to deliver high-quality features for
its product
Promoting self-organization within the team
Helping the scrum team to avoid or remove impediments to its progress, whether internal
or external to the team
Facilitating team events to ensure regular progress
Educating key stakeholders on Agile and Scrum principles
Coaching the development team in self-organization and cross-functionality
One of the ways the scrum master role differs from a project manager is that the latter may
have people management responsibilities and the scrum master does not. Scrum does not
formally recognise the role of project manager, as traditional command and control tendencies
would cause difficulties.[29]
Workflow[edit]
Sprint[edit]
A sprint (or iteration) is the basic unit of development in Scrum. The sprint is
a timeboxed effort; that is, it is restricted to a specific duration.[30][irrelevant citation] The duration is
fixed in advance for each sprint and is normally between one week and one month, with two
weeks being the most common.[2]
Each sprint starts with a sprint planning event that aims to define a sprint backlog, identify the
work for the sprint, and make an estimated forecast for the sprint goal. Each sprint ends with a
sprint review and sprint retrospective,[14] that reviews progress to show to stakeholders and
identify lessons and improvements for the next sprints.
Scrum emphasizes working product at the end of the sprint that is really done. In the case of
software, this likely includes that the software has been fully integrated, tested and
documented, and is potentially releasable.[29]
Sprint planning[edit]
At the beginning of a sprint, the scrum team holds a sprint planning event[30] to:
Mutually discuss and agree on the scope of work that is intended to be done during that
sprint
Select product backlog items that can be completed in one sprint
Prepare a sprint backlog that includes the work needed to complete the selected product
backlog items
The recommended duration is four hours for a two-week sprint (pro-rata for other sprint
durations) [16]
o During the first half, the whole scrum team (development team, scrum master, and
product owner) selects the product backlog items they believe could be completed in
that sprint
o During the second half, the development team identifies the detailed work (tasks)
required to complete those product backlog items; resulting in a confirmed sprint
backlog
As the detailed work is elaborated, some product backlog items may be split or put
back into the product backlog if the team no longer believes they can complete the
required work in a single sprint
Once the development team has prepared their sprint backlog, they forecast (usually by
voting) which tasks will be delivered within the sprint.
Daily scrum[edit]
Each day during a sprint, the team holds a daily scrum (or stand-up) with specific guidelines:
All members of the development team come prepared. The daily scrum:
o starts precisely on time even if some development team members are missing
o should happen at the same time and place every day
o is limited (timeboxed) to fifteen minutes
Anyone is welcome, though only development team members should contribute.
During the daily scrum, each team member typically answers three questions:
o What did I complete yesterday that contributed to the team meeting our sprint goal?
o What do I plan to complete today to contribute to the team meeting our sprint goal?
o Do I see any impediment that could prevent me or the team from meeting our sprint
goal?
Any impediment (e.g., stumbling block, risk, issue, delayed dependency, assumption proved
unfounded)[31] identified in the daily scrum should be captured by the scrum master and
displayed on the team's scrum board or on a shared risk board, with an agreed person
designated to working toward a resolution (outside of the daily scrum). No detailed discussions
should happen during the daily scrum.
Sprint review[edit]
At the end of a sprint, the team holds two events: the sprint review and the sprint
retrospective.
At the sprint review, the team:
reviews the work that was completed and the planned work that was not completed
presents the completed work to the stakeholders (a.k.a. the demo)
collaborates with the stakeholders on what to work on next
Guidelines for sprint reviews:
Three main questions are asked in the sprint retrospective: What went well during the
sprint? What did not go well? What could be improved for better productivity in the next
sprint?
The recommended duration is one-and-a-half hours for a two-week sprint (proportional for
other sprint duration(s))
This event is facilitated by the scrum master
Extensions[edit]
The following activities are commonly done, although not considered as a core part of Scrum:
Backlog refinement[edit]
Backlog refinement (formerly called grooming) is the ongoing process of reviewing product
backlog items and checking that they are appropriately prepared and ordered in a way that
makes them clear and executable for teams once they enter sprints via the sprint planning
activity. Product backlog items may be broken into multiple smaller ones. Acceptance criteria
may be clarified. Dependencies may be identified and investigated.
Although not originally a core Scrum practice, backlog refinement has been added to the Scrum
Guide and adopted as a way of managing the quality of product backlog items entering a sprint,
with a recommended investment of up to 10% of a team's sprint capacity.[16][32]
The backlog can also include technical debt (also known as design debt or code debt). This is a
concept in software development that reflects the implied cost of additional rework caused by
choosing an easy solution now instead of using a better approach that would take longer.
Cancelling a sprint[edit]
The product owner can cancel a sprint if necessary.[16] The product owner may do so with input
from the team, scrum master or management. For instance, management may wish the
product owner to cancel a sprint if external circumstances negate the value of the sprint goal. If
a sprint is abnormally terminated, the next step is to conduct a new sprint planning, where the
reason for the termination is reviewed.
Artifacts[edit]
This section needs additional citations for verification. Please
help improve this article by adding citations to reliable sources.
Unsourced material may be challenged and removed.
Find sources: "Scrum" software development –
news · newspapers · books · scholar · JSTOR (March 2013) (Learn how
and when to remove this template message)
Product backlog[edit]
The product backlog is a model of work to be done[33] and contains an ordered list of product
requirements that a scrum team maintains for a product. The format of product backlog items
varies, common formats include user stories, use cases, or any other requirements format the
team finds useful.[29] These will define features, bug fixes, non-functional requirements, etc.—
whatever must be done to successfully deliver a viable product. The product owner prioritizes
product backlog items (PBIs) based on considerations such as risk, business value,
dependencies, size, and date needed.
The product backlog is what will be delivered, ordered into the sequence in which it should be
delivered. It is visible to everyone but may only be changed with the consent of the product
owner, who is ultimately responsible for ordering product backlog items for the development
team to choose.
The product backlog contains the product owner's assessment of business value and the
development team's assessment of development effort, which are often, but not always, stated
in story points using the rounded Fibonacci scale. These estimates help the product owner to
gauge the timeline and may influence the ordering of product backlog items; for example, if
two features have the same business value, the product owner may schedule earlier delivery of
the one with the lower development effort (because the return on investment is higher) or the
one with higher development effort (because it is more complex or riskier, and they want to
retire that risk earlier).[34]
The product backlog and the business value of each product backlog item is the responsibility of
the product owner. The effort to deliver each item is estimated by the development team in
story points, or time. By estimating in story points the product owner decouple each item from
the developer, and this can be useful especially in dynamic teams where developers are often
assigned to other projects after sprint delivery. For instance if a user story is 5 (using Fibonacci
sequence) it remains 5 regardless of how many developers are working on it. Story points
define the effort in a time-box, so they do not change with time. For instance in one hour we
can walk, run, or climb, but the effort is clearly different. Also the gap between each number in
Fibonacci (or other sequences), is suggesting the team to deliver accurate estimates. For
example 1,2 or 3 have similar efforts, 1 being trivial, but if the team estimate an 8 for 13, the
impact on both delivery and budget can be significant. the value of using story points is that we
can reuse them by comparing similar work from previous sprints, but we need to remember
that estimates are relative to the team. For instance a 5 for one team, could be a 2 for another
having senior developers and higher skills.
Every team should have a product owner, although in many instances they will work with more
than one team.[22] The product owner is responsible for maximizing the value of the product.
The product owner gathers input and takes feedback from, and is lobbied by, many people, but
ultimately makes the call on what gets built.
The product backlog:
Management[edit]
A product backlog, in its simplest form, is merely a list of items to work on. Having well-
established rules about how work is added, removed and ordered helps the whole team make
better decisions about how to change the product.[35]
The product owner prioritizes product backlog items based on which are needed soonest. The
team then chooses which items they can complete in the coming sprint. On the scrum board,
the team moves items from the product backlog to the sprint backlog, which is the list of items
they will build. Conceptually, it is ideal for the team to only select what they think they can
accomplish from the top of the list, but it is not unusual to see in practice that teams are able to
take lower-priority items from the list along with the top ones selected. This normally happens
because there is time left within the sprint to accommodate more work. Items at the top of the
backlog, the items to work on first, should be broken down into stories that are suitable for the
development team to work on. The further down the backlog goes, the less refined the items
should be. As Schwaber and Beedle put it "The lower the priority, the less detail until you can
barely make out the backlog item."[2]
As the team works through the backlog, it must be assumed that change happens outside their
environment—the team can learn about new market opportunities to take advantage of,
competitor threats that arise, and feedback from customers that can change the way the
product was meant to work. All of these new ideas tend to trigger the team to adapt the
backlog to incorporate new knowledge. This is part of the fundamental mindset of an agile
team. The world changes, the backlog is never finished.[24]
Sprint backlog[edit]
The sprint backlog is the list of work the development team must address during the next
sprint.[36] The list is derived by the scrum team progressively selecting product backlog items in
priority order from the top of the product backlog until they feel they have enough work to fill
the sprint. The development team should keep in mind its past performance assessing its
capacity for the new-sprint, and use this as a guideline of how much 'effort' they can complete.
The product backlog items may be broken down into tasks by the development team. [36] Tasks
on the sprint backlog are never assigned (or pushed) to team members by someone else; rather
team members sign up for (or pull) tasks as needed according to the backlog priority and their
own skills and capacity. This promotes self-organization of the development team and
developer buy-in.
The sprint backlog is the property of the development team, and all included estimates are
provided by the development team. Often an accompanying task board is used to see and
change the state of the tasks of the current sprint, like to do, in progress and done.
Once a sprint backlog is committed, no additional work can be added to the sprint backlog
except by the team. Once a sprint has been delivered, the product backlog is analyzed and
reprioritized if necessary, and the next set of functionality is selected for the next sprint.
Product increment[edit]
The potentially releasable increment is the sum of all the product backlog items completed
during a sprint, integrated with the work of all previous sprints. At the end of a sprint, the
increment must be complete, according to the scrum team's definition of "done" (DoD), fully
functioning, and in a usable condition regardless of whether the product owner decides to
actually release it.
Extensions[edit]
The following artifacts are commonly used, although not considered by all as a core part of
Scrum:
Sprint burn-down chart[edit]
A sample burn-down chart for a completed sprint, showing remaining effort at the end of each
day.
The sprint burn-down chart is a publicly displayed chart showing remaining work in the sprint
backlog.[37] Updated every day, it gives a simple view of the sprint progress. It also provides
quick visualizations for reference. The horizontal axis of the sprint burn-down chart shows the
days in a sprint, while the vertical axis shows the amount of work remaining each day (typically
representing the estimate of hours of work remaining).
During sprint planning, the ideal burndown chart is plotted. Then, during the sprint, each
member picks up tasks from the sprint backlog and works on them. At the end of the day, they
update the remaining hours for tasks to be completed. In such a way, the actual burndown
chart is updated day by day.
It should not be confused with an earned value chart.
Release burn-up chart[edit]
A sample burn-up chart for a release, showing scope completed each sprint
The release burn-up chart is a way for the team to provide visibility and track progress toward a
release. Updated at the end of each sprint, it shows progress toward delivering a forecast
scope. The horizontal axis of the release burn-up chart shows the sprints in a release, while the
vertical axis shows the amount of work completed at the end of each sprint (typically
representing cumulative story points of work completed). Progress is plotted as a line that
grows up to meet a horizontal line that represents the forecast scope; often shown with a
forecast, based on progress to date, that indicates how much scope might be completed by a
given release date or how many sprints it will take to complete the given scope.
The release burn-up chart makes it easy to see how much work has been completed, how much
work has been added or removed (if the horizontal scope line moves), and how much work is
left to be done.
Definition of ready (DoR)[edit]
The start-criteria to determine whether the specifications and inputs are set enough to start
the work item, i.e. a user story.
Definition of done (DoD)[edit]
The exit-criteria to determine whether a product backlog item is complete. In many cases, the
DoD requires that all regression tests be successful. The definition of done may vary from one
scrum team to another but must be consistent within one team.[38]
Velocity[edit]
The total effort a team is capable of in a sprint. The number is derived by evaluating the work
(typically in user story points) completed in the last sprint. The collection of historical velocity
data is a guideline for assisting the team in understanding how much work they can likely
achieve in a future sprint.
Spike[edit]
A time-boxed period used to research a concept or create a simple prototype. Spikes can either
be planned to take place in between sprints or, for larger teams, a spike might be accepted as
one of many sprint delivery objectives. Spikes are often introduced before the delivery of large
or complex product backlog items in order to secure budget, expand knowledge, or produce a
proof of concept. The duration and objective(s) of a spike is agreed between product owner
and development team before the start. Unlike sprint commitments, spikes may or may not
deliver tangible, shippable, valuable functionality. For example, the objective of a spike might
be to successfully reach a decision on a course of action. The spike is over when the time is up,
not necessarily when the objective has been delivered.[39]
Tracer bullet[edit]
Also called a drone spike, a tracer bullet is a spike with the current architecture, current
technology set, current set of best practices that result in production quality code. It might just
be a very narrow implementation of the functionality but is not throwaway code. It is of
production quality, and the rest of the iterations can build on this code. The name has military
origins as ammunition that makes the path of the bullet visible, allowing for corrections. Often
these implementations are a 'quick shot' through all layers of an application, such as connecting
a single form's input field to the back-end, to prove the layers connect as expected.[40]
Limitations[edit]
Scrum works less well in the following circumstances:[41][42]
The Product Owner is responsible for maximizing the value of the product and the work of the
Development Team. It's a one-person role that brings the customer perspective of the product
to a Scrum Team.
Embraces, shares and socializes the product vision. A great Product Owner represents the
customers voice and creates a product vision together with the stakeholders. Every decision is
taken with the product vision in mind. This ensures sustainable product development, provides
clarity for the development team and increases the chances of product success drastically.
Exceeds the customer’s expectation. A great Product Owner truly understands the customer’s
intentions and goals with the product and is able to outstrip its expectations. Customer delight
is the ultimate goal!
Is empowered. A great Product Owner is empowered to take decisions related to the product.
Sure, creating support for his decisions might take some time, but swiftly taking important
decisions is a primary condition for a sustainable pace of the development team.
Orders the product backlog. A great Product Owner understands that the product backlog
should be ordered. Priority, risk, value, learning opportunities and dependencies are all taken
into account and balanced with each other. For example, when building a house the roof might
have the highest priority considering possible rain. But still it's necessary to realize the
foundation and walls earlier and therefore order them above the construction of the roof.
Prefers face-to-face communication. A great Product Owner understands that the best way to
convey information is face-to-face communication. User stories are explained in a personal
conversation. If a tool is used for backlog management, its function is to support the dialogue. It
never replaces the good old-fashioned conversation.
Knows modeling techniques. A great Product Owner has a backpack full of valuable modeling
techniques. He knows when to apply a specific model. Examples are Business Model
Generation, Lean Startup or Impact Mapping. Based on these models he knows how to drive
product success.
Shares experiences. A great Product Owner shares experiences with peers. This might be within
the organization, and outside it: seminars and conferences are a great way to share experiences
and gather knowledge. In addition, writing down your lessons learned can be valuable for other
Product Owners.
Owns user story mapping. A great Product Owner should master the concept of user story
mapping. It's a technique that allows you to add a second dimension to your backlog. The
visualization enables you to see the big picture of the product backlog. Jeff Patton wrote some
excellent material about the concept of story mapping.
Has a focus on functionality. A great Product Owner has a focus on functionality and the non-
functional aspects of the product. Hours or even story points are less important. The goal of the
Product Owner is to maximize value for the customer. It’s the functionality that has value;
therefore this is the main focus for the Product Owner.
Is knowledgeable. A great Product Owner has in depth (non-)functional product knowledge and
understands the technical composition. For large products it might be difficult to understand all
the details, and scaling the Product Owner role might be an option. However the Product
Owner should always know the larger pieces of the puzzle and hereby make conscious, solid
decisions.
Understands the business domain. A great Product Owner understands the domain and
environment he's part of. A product should always be build with its context taken into account.
This includes understanding the organization paying for the development but also being aware
of the latest the market conditions. Shipping an awesome product after the window of
opportunity closes is quite useless.
Acts on different levels. A great Product Owner knows how to act on different levels. The most
common way to define these levels is strategic, tactical and operational. A Product Owner
should know how to explain the product strategy at board level, create support at middle
management and motivate the development team with their daily challenges.
Knows the 5 levels of Agile planning. Within Agile, planning is done continuously. Every
product needs a vision (level 1) which will provide input to the product roadmap (level 2). The
roadmap is a long range strategic plan of how the business would like to see the product
evolve. Based on the roadmap, market conditions and status of the product the Product Owner
can plan releases (level 3). During the Sprint Planning (level 4) the team plan and agree on
Product Backlog Items they are confident they can complete during the Sprint and help them
achieve the Sprint Goal. The Daily Scrum (level 5) is used to inspect and adapt the team's
progress towards realizing the Sprint Goal.
Is available. A great Product Owner is available to the stakeholders, the customers, the
development team and the Scrum Master. Important questions are answered quickly and
valuable information is provided on time. The Product Owner ensures his availability never
blocks the progress of the development team.
Is able to say 'no'. A great Product Owner knows how and when to say no. This is probably the
most obvious but most difficult characteristic to master. Saying yes to a new idea or feature is
easy, it's just another item for the product backlog. However, good backlog management
encompasses creating a manageable product backlog with items that probably will get realized.
Adding items to the backlog knowing nothing will happen with them only creates 'waste' and
false expectations.
Acts as a "Mini-CEO". A great Product Owner basically is a mini-CEO for his product. He has a
keen eye for opportunities, focuses on business value and the Return On Investment and acts
proactive on possible risks and threats. Everything with the growth (size, quality, market share)
of his product taken into account.
Knows the different types of valid Product Backlog items. A great Product Owner can clarify
the fact that the Product Backlog consists of more than only new features. Fore example:
technical innovation, bugs, defects, non-functional requirements and experiments, should also
be taken into account.
Takes Backlog Refinement seriously. A great Product Owner spends enough time refining the
Product Backlog. Backlog Refinement is the act of adding detail, estimates and order to items in
the Product Backlog. The outcome should be a Product Backlog that is granular enough and
well understood by the whole team. On average the Development Team spends no more than
10% of the capacity of the Development Team on refinement activities. The way it is done isn’t
prescribed and is up to the team. The Product Owner can involve stakeholders and the
Development Team in backlog refinement. The stakeholders because it gives them the
opportunity to explain their wishes and desires. The Development Team because they can
clarify functional and technical questions or implications. This will ensure common
understanding and increases the quality of the Product Backlog considerably. As a
consequence, the opportunity to build the right product with the desired quality will also
increase.
According to the Scrum Guide the Scrum Master is responsible for ensuring Scrum is
understood and enacted. Scrum Masters do this by ensuring that the Scrum Team adheres to
Scrum theory, practices, and rules. The Scrum Master is a servant-leader for the Scrum Team.
The Scrum Master helps those outside the Scrum Team understand which of their interactions
with the Scrum Team are helpful and which aren’t. The Scrum Master helps everyone change
these interactions to maximize the value created by the Scrum Team.
The role of a Scrum Master is one of many stances and diversity. A great Scrum Master is aware
of them and knows when and how to apply them, depending on situation and context.
Everything with the purpose of helping people understand and apply the Scrum framework
better.
Servant Leader whose focus is on the needs of the team members and those they serve (the
customer), with the goal of achieving results in line with the organization's values, principles,
and business objectives;
Facilitator by setting the stage and providing clear boundaries in which the team can
collaborate;
Coach coaching the individual with a focus on mindset and behaviour, the team in continuous
improvement and the organization in truly collaborating with the Scrum team;
Conflict navigator to address unproductive attitudes and dysfunctional behaviors;
Manager responsible for managing impediments, eliminate waste, managing the process,
managing the team's health, managing the boundaries of self-organization, and managing the
culture;
Mentor that transfers agile knowledge and experience to the team;
Teacher to ensure Scrum and other relevant methods are understood and enacted.
A Great Scrum Master...
Involves the team with setting up the process. A great Scrum Master ensures the entire team
supports the chosen Scrum process and understands the value of every event. The daily Scrum
for example is planned at a time that suits all team members. A common concern about Scrum
is the amount of 'meetings', involving the team with planning the events and discussing the
desired outcome will increase engagement for sure.
Understands team development. A great Scrum Master is aware of the different phases a team
will go through when working as a team. He understands Tuckman's different stages of team
development: forming, storming, norming, performing and adjourning. The importance of a
stable team composition is therefore also clear.
Understands principles are more important than practices. Without a solid, supported
understanding of the agile principles, every implemented practice is basically useless. It's an
empty shell. An in-depth understanding of the agile principles by everyone involved will
increase the chances of successful usage of practices drastically.
Recognizes and acts on team conflict. A great Scrum Master recognizes team conflict in an
early stage and can apply different activities to resolve it. A great Scrum Master understands
conflict isn't necessarily wrong. Healthy conflict and constructive disagreement can be used to
build an even stronger team.
Dares to be disruptive. A great Scrum Master understands some changes will only occur by
being disruptive. He knows when it's necessary and is prepared to be disruptive enough to
enforce a change within the organization.
Is aware of the smell of the place. A great Scrum Master can have an impact on the culture of
the organization so that the Scrum teams can really flourish. He understands that changing
people's behavior isn't about changing people, but changing the context which they are in:
the smell of the place.
Is both dispensable and wanted. A great Scrum Master has supported the growth of teams in
such a manner they don't need him anymore on daily basis. But due to his proven contribution
he will get asked for advice frequently. His role has changed from a daily coach and teacher to a
periodical mentor and advisor.
Let his team fail (occasionally). A great Scrum Master knows when to prevent the team from
failing but also understands when he shouldn't prevent it. The lessons learned after a mistake
might be more valuable than some good advice beforehand.
Encourages ownership. A great Scrum Master encourages and coaches the team to take
ownership of their process, task wall and environment.
Has faith in self-organization. A great Scrum Master understands the power of a self-organizing
team. "Bring it to the team" is his daily motto. Attributes of self-organizing teams are that
employees reduce their dependency on management and increase ownership of the work.
Some examples are: they make their own decisions about their work, estimate their own work,
have a strong willingness to cooperate and team members feel they are coming together to
achieve a common purpose through release goals, sprint goals and team goals.
Values rhythm. A great Scrum Master understands the value of a steady sprint rhythm and
does everything to create and maintain it. The sprint rhythm should become the team’s
heartbeat, which doesn't cost any energy. Everyone knows the date, time and purpose of every
Scrum event. They know what is expected and how to prepare. Therefore a complete focus on
the content is possible.
Knows the power of silence. A great Scrum Master knows how to truly listen and is
comfortable with silence. Not talking, but listening. He is aware of the three levels of listening -
level 1 internal listening, level 2 focused listening, level 3 global listening, and knows how to use
them. He listens carefully to what is said, but also to what isn't said.
Observes. A great Scrum Master observes his team with their daily activities. He doesn't have
an active role within every session. The daily Scrum, for example, is held by the team for the
team. He observes the session and hereby has a more clear view to what is being discussed
(and what isn't) and what everyone’s role is during the standup.
Shares experiences. Great Scrum Masters shares experiences with peers. This might be within
the organization, but also seminars and conferences are a great way to share experiences and
gather knowledge. Of course writing down and sharing your lessons learned is also highly
appreciated. And yes, for the attentive readers, this is exactly the same as for the Product
Owner and the Development Team.
Has a backpack full of different retrospective formats. A great Scrum Master can apply lots of
different retrospective format. This ensures the retrospective will be a fun and useful event for
the team. He knows what format is most suitable given the team's situation. Even better: he
supports the team by hosting their own retrospective. To improve involvement this is an
absolute winner!
Can coach professionally. A great Scrum Master understands the power of professional
coaching and has mastered this area of study. Books like Coaching Agile Teams and Co-Active
Coaching don't have any secrets for him. He knows how to guide without prescribing. He can
close the gap between thinking about doing and actually doing; he can help the team members
understand themselves better so they can find news ways to make the most of their potential.
Yes, these last few sentences are actually an aggregation of several coaching definitions, but it
sounds quite cool!
Has influence at organizational level. A great Scrum Master knows how to motivate and
influence at tactic and strategic level. Some of the most difficult impediments a team will face
occur at these levels; therefore it's important a Scrum Master knows how to act at the different
levels within an organization.
Prevent impediments. A great Scrum Master not only resolves impediments, he prevents them.
Due to his experiences he is able to 'read' situations and hereby act on them proactively.
Isn't noticed. A great Scrum Master isn't always actively present. He doesn't disturb the team
unnecessary and supports the team in getting into the desired 'flow'. But when the team needs
him, he's always available.
Forms a great duo with the Product Owner. A great Scrum Master has an outstanding
partnership with the Product Owner. Although their interests are somewhat different, the
Product Owner 'pushes' the team, the Scrum Master protects the team. A solid partnership is
extremely valuable for the Development Team. Together they can build the foundation for
astonishing results.
Allows leadership to thrive. A great Scrum Master allows leadership within the team to thrive
and sees this as a successful outcome of their coaching style. They believe in the motto
"leadership isn't just a title, it's an attitude". And it's an attitude everyone in the team can
apply.
Is familiar with gamification. A great Scrum Master is able to use the concepts of game thinking
and game mechanics to engage users in solving problems and increase users' contribution.
Understands there's more than just Scrum. A great Scrum Master is also competent with XP,
Kanban and Lean. He knows the strengths, weaknesses, opportunities and risks of every
method/framework/principle and how & when to use them. He tries to understand what a
team wants to achieve and helps them become more effective in an agile context.
Leads by example. A great Scrum Master is someone that team members want to follow. He
does this by inspiring them to unleash their inner potential and showing them the desired
behavior. At difficult times, he shows them how to act on it; he doesn't panic, stays calm and
helps the team find the solution. Therefore a great Scrum Master should have some
resemblance to Gandalf. The beard might be a good starting point :)
Is a born facilitator. A great Scrum Master has facilitation as his second nature. All the Scrum
events are a joy to attend, and every other meeting is well prepared, useful and fun, and has a
clear outcome and purpose.
According to the Scrum Guide the Development Team consists of professionals who do the
work of delivering a potentially releasable Increment of “Done” product at the end of each
Sprint. Only members of the Development Team create the Increment. Development Teams are
structured and empowered by the organization to organize and manage their own work. The
resulting synergy optimizes the Development Team’s overall efficiency and effectiveness.
Self-organizing. They decide how to turn Product Backlog Items into working solutions.
Cross-functional. As a whole, they've got all the skills necessary to create the product
Increment.
No titles. Everyone is a Developer, no one has a special title.
No sub-teams in the Development team.
Committed to achieving the Sprint Goal and delivering a high quality increment
Pursues technical excellence. Great Development Teams use Extreme Programming as a source
of inspiration. XP provides practices and rules that revolve around planning, designing, coding
and testing. Examples are refactoring (continuously streamlining the code), pair programming,
continuous integration (programmers merge their code into a code baseline whenever they
have a clean build that has passed the unit tests), unit testing (testing code at development
level) and acceptance testing (establishing specific acceptance tests).
Applies team swarming. Great Development Teams master the concept of 'team swarming'.
This is a method of working where a team works on just a few items at a time, preferably even
one item at a time. Each item is finished as quickly as possible by having many people work on
it together, rather than having a series of handoffs.
Uses spike solutions. A spike is a concise, timeboxed activity used to discover work needed to
accomplish a large ambiguous task. Great Development Teams uses spike experiments to solve
challenging technical, architectural or design problems.
Refines the product backlog as a team. Great Development Teams consider backlog
refinement a team effort. They understand that the quality of the Product Backlog is the
foundation for a sustainable development pace and building great products. Although the
Product Owner is responsible for the product backlog, it's up to the entire team to refine it.
Respects the Boy Scout Rule. Great Development Teams use the Boy Scout Rule: always leave
the campground cleaner than you found it. Translated to software development: always leave
the code base in a better state than you've found it. If you find messy code, clean it up,
regardless of who might have made the mess.
Criticizes ideas, not people. Great Development Teams criticize ideas, not people. Period.
Share experiences. Great Development Teams share experiences with peers. This might be
within the organization, but also seminars and conferences are a great way to share
experiences and gather knowledge. Of course writing down and sharing your lessons learned is
also highly appreciated. And yes, for the attentive readers, this is exactly the same as for the
Product Owner.
Understands the importance of having some slack. Great Development Teams have some slack
within their sprint. Human beings can't be productive all day long. They need time to relax,
have a chat at the coffee machine or play table football. They need some slack to be innovative
and creative. They need time to have some fun. By doing so, they ensure high motivation and
maximum productivity. But slack is also necessary to handle emergencies that might arise; you
don't want your entire sprint to get into trouble when you need to create a hot-fix. Therefore:
build in some slack! And when the sprint doesn't contain any emergencies: great! This gives the
team the opportunity for some refactoring and emergent design. It's a win-win!
Has fun with each other. Great Development Teams ensure a healthy dose of fun is present
every day. Fostering fun, energy, interaction and collaboration creates an atmosphere in which
the team will flourish!
Don't have any Scrum 'meetings'. Great Development Teams consider the Scrum events as
opportunities for conversations. Tobias Mayer describes this perfectly in his book ‘The Peoples
Scrum': “Scrum is centered on people, and people have conversations. There are conversations
to plan, align, and to reflect. We have these conversations at the appropriate times, and for the
appropriate durations in order to inform our work. If we don’t have these conversations, we
won’t know what we are doing (planning), we won’t know where we are going (alignment), and
we’ll keep repeating the same mistakes (reflection).”
Knows their customer. Great Development Teams know their real customer. They are in direct
contact with them. They truly understand what they desire and are therefore able to make the
right (technical) decisions.
Can explain the (business) value of non-functional requirements. Great Development Teams
understand the importance for non-functional requirements like e.g. performance, security and
scalability. They can explain the (business) value to their Product Owner and customer and
hereby ensure its part of the product backlog.
Trust each other. Great Development Teams trust each other. Yes, this is obvious. But without
trust it's impossible for a team to achieve greatness.
Keep the retrospective fun. Great Development Teams think of retrospective formats
themselves. They support the Scrum Master with creative, fun and useful formats and offer to
facilitate the sessions themselves.
Deliver features during the sprint. Great Development Teams deliver features continuously.
Basically they don't need sprints anymore. Feedback is gathered and processed whenever an
item is ‘done’; this creates a flow of continuous delivery.
Don't need a sprint 0. Great Development Teams don't need a sprint 0 before the 'real' sprints
start. They are able to deliver business value in the first sprint.
Acts truly cross-functional. Great Development Teams not only have a cross-functional
composition and act truly cross-functionally. They don't talk about different roles within the
team but are focused on delivering a releasable product each sprint as a team. Everyone is
doing the stuff that's necessary to achieve the sprint goal.
Updates the Scrum board themselves. Great Development Teams ensure the Scrum/team
board is always up-to-date. It's an accurate reflection of the reality. They don't need a Scrum
Master to encourage them; instead they collaborate with the Scrum Master to update the
board.
Spends time on innovation. Great Development Teams understand the importance of
technical/architectural innovation. They know it's necessary to keep up with the rapidly
changing environment and technology. They ensure they have time for innovation during
regular working hours, and that it's fun and exciting!
Don't need a Definition of Done. Great Development Teams deeply understand what 'done'
means for them. For the team members, writing down the Definition of Done isn't necessary
anymore. They know. The only reason to use it is to make the 'done state' transparent for their
stakeholders.
Knows how to give feedback. Great Development Teams have learned how to give each other
feedback in an honest and respectful manner. They grasp the concept of the 'Situation -
Behavior - Impact Feedback Tool' and hereby provide clear, actionable feedback. They give
feedback whenever it's necessary, and don't postpone feedback until the retrospective.
Manages their team composition. Great Development Teams manage their own team
composition. Whenever specific skills are necessary, they collaborate with other teams to
discuss the opportunities of 'hiring' specific skills.
Practice collective ownership. Great Development Teams understand the importance of
collective ownership. Therefore they rotate developers across different modules of the
applications and systems to encourage collective ownership.
Fix dependencies with other teams. Great Development Teams are aware of possible
dependencies with other teams and manage these by themselves. Thereby ensuring a
sustainable development pace for the product.
Don't need story points. Great Development Teams don't focus on story points anymore.
They've refined the product backlog so that the size for the top items don’t vary much. They
know how many items they can realize each sprint. Counting the number of stories is enough
for them.
User stories are one of the primary development artifacts for Scrum and Extreme Programming
(XP) project teams. 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. This article covers the following topics:
A good way to think about a user story is that it is a reminder to have a conversation with your
customer (in XP, project stakeholders are called customers), which is another way to say it's a
reminder to do some just-in-time analysis. In short, user stories are very slim and high-level
requirements artifacts.
As you can see in Figure 1 user stories are small, much smaller than other usage requirement
artifacts such as use cases or usage scenarios. It's important to recognize that each of the
statements in Figure 1 represents a single user story.
Students can
purchase monthly
parking passes
online.
Parking passes can
be paid via credit
cards.
Parking passes can
be paid via PayPal.
Professors can input
student marks.
Students can obtain
their current
seminar schedule.
Students can order
official transcripts.
Students can only
enroll in seminars
for which they have
prerequisites.
Transcripts will be
available online via a
standard browser.
1. Stakeholders write user stories. An important concept is that your project stakeholders
write the user stories, not the developers. User stories are simple enough that people
can learn to write them in a few minutes, so it makes sense that the domain experts
(the stakeholders) write them.
2. Use the simplest tool. User stories are often written on index cards as you see in Figure
2 (at least when your project team is co-located). Index cards are very easy to work with
and are therefore an inclusive modelingtechnique.
3. Remember non-functional requirements. Stories can be used to describe a wide variety
of requirements types. For example in Figure 1 the Students can purchase parking
passes online user story is a usage requirement similar to a use case whereas
the Transcripts will be available online via a standard browser is closer to a technical
requirement.
4. Indicate the estimated size. You can see in Figure 2 that it includes an estimate for the
effort to implement the user story. One way to estimate is to assign user story points to
each card, a relative indication of how long it will take a pair of programmers to
implement the story. The team then knows that if it currently takes them on average 2.5
hours per point; therefore the user story in Figure 2 will take around 10 hours to
implement.
5. Indicate the priority. Requirements, including defects identified as part of
your independent parallel testing activities or by your operations and support efforts,
are prioritized by your project stakeholders (or representatives thereof such as product
owners) and added to the stack in the appropriate place. You can easily maintain a stack
of prioritized requirements by moving the cards around in the stack as appropriate. You
can see that the user story card includes an indication of the priority; I often use a scale
of one to ten with one being the highest priority. Other prioritization approaches are
possible – priorities of High/Medium/Low are often used instead of numbers and some
people will even assign each card it's own unique priority order number (e.g. 344, 345,
…). You want to indicate the priority somehow in case you drop the deck of cards, or if
you're using more sophisticated electronic tooling. Pick a strategy that works well for
your team. You also see that the priority changed at some point in the past, this is a
normal thing, motivating the team to move the card to another point in the stack. The
implication is that your prioritization strategy needs to support this sort of activity. My
advice is to keep it simple.
6. Optionally include a unique identifier. The card also includes a unique identifier for the
user story, in this case 173. The only reason to do this would be to do this is if you need
to maintain some sort of traceability between the user story and other artifacts, in
particular acceptance tests.
For example, the user story of Figure 2 could be rewritten as "As a Student I
want to purchase a parking pass so that I can drive to school", as you see
in Figure 3. My experience is that this approach helps you to think about who
a certain feature is built for and why, and as a result is the approach that I
typically prefer to take. The best advice that I can give is to try both and see
which approach works best for you.
There are two areas where user stories affect the planning process on agile projects:
1. Scheduling. Figure 4 depicts the agile change management management process where
work items, including stories, are addressed in priority order. So, the implication is that
the priority assigned to a story affects when the work will be done to implement that
requirement. As discussed earlier, project stakeholders are responsible for prioritizing
requirements. Note that in Figure 2 a numerical prioritization strategy was taken
(perhaps on a scale of 1 to 20) whereas in Figure 3 a MoSCoW (Must Should Could
Won't) approach was used. Stakeholders also have the right to define new
requirements, change their minds about existing requirements, and even reprioritize
requirements as they see fit. However, stakeholders must also be responsible for
making decisions and providing information in a timely manner.
2. Estimating. Developers are responsible for estimating the effort required to implement
the things which they will work on, including stories. The implication is that because you
can only do so much work in an iteration, the size of the work items (including stories),
affect when those work items will be addressed. Although you may fear that developers
don't have the requisite estimating skills, and this is often true at first, the fact is that it
doesn't take long for people to get pretty good at estimating when they know that
they're going to have to live up to those estimates. If you've adopted the pair
programming practice then a user story must be able to be implemented by two people
in a single iteration/sprint. Therefore if you're working in one week iterations each user
story must describe less than one week worth of work. Of course, if you aren't taking a
non-solo development approach such as pair programming the user story would need to
be implementable by a single person within a single iteration. Large stories, sometimes
called epics, would need to be broken up into smaller stories to meet this criteria.
1. Inception. You often create a stack of user stories during Inception as part of
your requirements envisioning activities to identify the scope of your system.
2. Construction. During construction iterations you will identify new stories, split existing
stories when you realize that they're too large to be implemented in single iteration,
reprioritize existing stories, or remove stories that are no longer considered to be in
scope. The point is that your stories evolve over time just like other types of
requirements models evolve. Furthermore, enhancement requests may be identified by
your support staff during theproduction phase and then forwarded to a development
team as they are working on an upcoming release. These enhancement requests are
effectively new stories (albeit in a different format).
3. Transition. Sometimes new stories will be identified during the Transition phase,
although this isn't very common as the focus of release is on hardening the system and
not on new functionality. But it does happen, and these stories would be prioritized and
placed on the stack in priority order just as you normally would.
Figure 6. The AMDD lifecycle: Modeling activities throughout the life cycle of a project.
6. Detailing a User Story
Because user stories contain so little information you will need to flesh them out a bit when you
first work with them. There are three common times when you would do this:
1. During JIT analysis/model storming with stakeholders. Remember the early definition
of "user stories are a reminder to have a conversation with your stakeholders"? Well,
during that conversation you're going to explore the details behind that user story. It is
quite common the create screen sketches with stakeholders to explore what they want.
It is also common to identify the acceptance criteria, or confirmations, which the
stakeholders will use to validate that the user story has been implemented
correctly. Figure 7 shows how the back side of a user story card can be used to capture
the confirmations. Of course, other tools which are more sophisticated than index cards
can be used for this purpose as well.
2. During iteration planning. As part of the estimation effort it is quite common to list
programming tasks required to implement the user story.
3. During implementation. When you start to work on implementing the user story you
may decide to create some rough sketches of what you're going to build, perhaps a flow
chart or UML activity diagram representing the relevant business logic.
7. Epics
Epics are large user stories, typically ones which are too big to implement in a single iteration
and therefore they need to be disaggregated into smaller user stories at some point.
Epics are typically lower priority user stories because once the epic works its way towards the
top of the work item stack, see Figure 4, it is reorganized into smaller ones. It doesn't make
sense to disaggregate a low-priority epic because you'd be investing time on something which
you may never get to addressing, unless a portion of the epic is high priority and needs to be
teased out. Remember to defer commitment, in this case model on a just-in-time (JIT) basis, to
increase your overall productivity.
8. Themes
A theme is a collection of related user stories. For example, for a university registration system
there might be themes around students, course management, transcript generation, grade
administration, financial processing.
Themes are often used to organize stories into releases or to organize them so that various
subteams can work on them.
A good user story should be complete enough to provide a user with some value.
The good user story should be user-centric, normally people write user story too much
centric around components or system aspects.
When writing a user story, focus on what the user is doing or getting out of the story.
The goal is that, when the user story is done, the user story has some value for users.
Group the user stories which offers a feature in same domain, or its good to grouping a
certain feature or use case into a single or multiple Epics.
A good user story is written in one to three lines.
Some user stories have attached files to elaborate the user story more clearly.
Good user story is well-defined, well-detailed and comprehensive.
A good user story is helpful to capture a specific functionality.
Involvement of development team in the user story is important.
A good user story is simple and concise.
Good user story should always be in active voice. Do not use ambiguous and confusing
terms.
Good user story only focus on important part and leave out the rest.
Start with an epic, when writing a user story about new product and feature because it
allow to capture the rough idea about product with less detail.
User Stories are used to communicate information, so make them visible and accessible.
Good user stories are complemented with other techniques like, story maps, sketches,
mockups, storyboards and workflow diagrams etc.
Try to avoid dependencies between stories, dependencies between stories will have
priority and planning issues.
The story should be negotiable. User story should be changed or removed without
impact to everything else.
The best valuable user story is that one, which is written by user or customer. Give value
to each user story which writes by user of customer.
Developers should be able to predict (at least rough guess). They predict about time
scale of stories , and to achieve the desired encoding.
The story of scale is depend on team size, capacity development group , as well as
technical realization.
Good user story is a story which is easily testable. We cannot develop, what we cannot
test. A non-testable user story is : “software should be easy and pleasant to use”.
There are two helping methods for writing user stories:
To build a good user story , we focus on six characteristics. A good story should have
characteristics. Bill Wake described six characteristics of a good user story. We entitle his
formula as “Invest”.
Invest
I) Independent
N) Negotiable
V) Valuable
E) Estimable
S) Small
T) Testable
Independent
We must try to avoid the interdependence between the story. When the story prioritize, plan
to do or when to use the story, the story of the interdependence between the estimated
workload will cause more difficult. Usually we can reduce the dependence of two ways:
Negotiable
Story card is a brief description of the function, the details of the discussion will result in
customers and development teams in. The story is a reminder of the role of card developers
and customers to engage in dialogue on demand, it is not a skill specific needs. A user story is a
cassette with too many details, effectively limiting and user communication.
Valuable
User Stories should clearly reflect the values of the user or customers, the best approach is to
allow customers to write the story. Once a client realize that this user story is not in contract
and can be negotiated, they will be happy to write the story.
Estimatable:
Development team needs to estimate a user story in order to determine priorities, workload
scheduling. But let developers is difficult to estimate story Problems from:
Small
A good story on the amount of work to be as small as possible , preferably not more than 10
people over the workload / day, at least make sure that in one iteration or Sprint that can be
completed. User Stories larger scheme of arrangement at risk , effort estimation and other
aspects will be.
Testable
The story must be testable . Successfully passed the test developers can prove that correctly
implements the story. If a user is not able to test the story , then you will not know when it can
be done . An example of a non- test user stories : The user must find the software very easy to
use.
Smart:
SMART is not for user stories but for the tasks of a user story.
S) Specific
M) Measurable
A) Achievable
R) Relevant
T) Time-Boxed
Specific
A task needs to be specific enough so that everyone can understand it. It helps to keep other
tasks from overlapping, and also helps people to understand either the tasks add up to the full
story or not.
Measurable
The key of measure is, “can we mark it as done?” Team needs to agree on what that means, but
it should also include:
Achievable
The task owner must be able to achieve task. In XP methodology, teams have a rule, in which
anybody can ask for help whenever they need; this is certainly includes ensuring that task
owners are up to the job.
Relevant
Every task must be relevant and story contributing. User stories are broken into tasks for the
developers benefit, but customer should still be able to expect that each task can be justified
and explained.
Time-Boxed
A task should be limited to a specific duration. This doesn’t need to be a formal estimate in
hours or days, but there must be an expectation so people know, when they should seek help.
If a task is harder than expectation, then the team needs to split the task, change players, or do
something to help the task (and story) to get done.
10. How agile estimation and planning is done? Explain planning poker
Agile teams use straightforward planning tools to get a handle on their projects. Scrum teams
plan their projects together so that everybody on the team commits to each sprint’s goal. To
maintain the team’s collective commitment, planning, estimating, and tracking need to be
simple and easy for the whole team to do as a group. From user stories and planning
pokerto velocity and burndown charts, Scrum teams always know what they’ve done and
what’s left to do.
Each estimator is holding a deck of Planning Poker cards with values like 0, 1, 2, 3, 5, 8, 13, 20,
40 and 100, which is the sequence we recommend. The values represent the number of story
points, ideal days, or other units in which the team estimates.
The estimators discuss the feature, asking questions of the product owner as needed. When the
feature has been fully discussed, each estimator privately selects one card to represent his or
her estimate. All cards are then revealed at the same time.
If all estimators selected the same value, that becomes the estimate. If not, the estimators
discuss their estimates. The high and low estimators should especially share their reasons. After
further discussion, each estimator reselects an estimate card, and all cards are again revealed
at the same time.
The poker planning process is repeated until consensus is achieved or until the estimators
decide that agile estimating and planning of a particular item needs to be deferred until
additional information can be acquired.
Because product backlog items (usually in the form of user stories) will continue to be added
throughout the project, most teams will find it helpful to conduct subsequent agile estimating
and planning sessions once per iteration. Usually this is done a few days before the end of the
iteration and immediately following a daily standup, since the whole team is together at that
time anyway.
One reason Planning Poker leads to better estimates is because it brings together multiple
expert opinions. Because these experts form a cross-functional team from all disciplines on a
software project, they are better suited to the estimation task than anyone else.
After completing a thorough review of the literature on software estimation, Magne Jørgensen,
Ph.D., of the Simula Research Lab concluded that “the people most competent in solving the
task should estimate it.”
Second, a lively dialogue ensues during poker planning, and estimators are called upon by their
peers to justify their estimates. Researchers have found that this improves estimate accuracy,
especially on items with a lot of uncertainty as we find on most software projects.
Further, being asked to justify estimates has also been shown to result in estimates that better
compensate for missing information. This is important on an agile project because the user
stories being estimated are often intentionally vague.
Additionally, studies have shown that averaging individual estimates during agile estimating
and planning leads to better results as do group discussions of estimates.
At the beginning of a sprint, the scrum team holds a sprint planning event [30] to:
Mutually discuss and agree on the scope of work that is intended to be done during that
sprint
Select product backlog items that can be completed in one sprint
Prepare a sprint backlog that includes the work needed to complete the selected product
backlog items
The recommended duration is four hours for a two-week sprint (pro-rata for other sprint
durations) [16]
o During the first half, the whole scrum team (development team, scrum master, and
product owner) selects the product backlog items they believe could be completed in
that sprint
o During the second half, the development team identifies the detailed work (tasks)
required to complete those product backlog items; resulting in a confirmed sprint
backlog
As the detailed work is elaborated, some product backlog items may be split or put
back into the product backlog if the team no longer believes they can complete the
required work in a single sprint
Once the development team has prepared their sprint backlog, they forecast (usually by
voting) which tasks will be delivered within the sprint.
b. Sprint review
At the end of a sprint, the team holds two events: the sprint review and the sprint
retrospective.
At the sprint review, the team:
reviews the work that was completed and the planned work that was not completed
presents the completed work to the stakeholders (a.k.a. the demo)
collaborates with the stakeholders on what to work on next
Guidelines for sprint reviews:
Three main questions are asked in the sprint retrospective: What went well during the
sprint? What did not go well? What could be improved for better productivity in the next
sprint?
The recommended duration is one-and-a-half hours for a two-week sprint (proportional for
other sprint duration(s))
This event is facilitated by the scrum master
d. Daily scrum
Each day during a sprint, the team holds a daily scrum (or stand-up) with specific guidelines:
All members of the development team come prepared. The daily scrum:
o starts precisely on time even if some development team members are missing
o should happen at the same time and place every day
o is limited (timeboxed) to fifteen minutes
Anyone is welcome, though only development team members should contribute.
During the daily scrum, each team member typically answers three questions:
o What did I complete yesterday that contributed to the team meeting our sprint goal?
o What do I plan to complete today to contribute to the team meeting our sprint goal?
o Do I see any impediment that could prevent me or the team from meeting our sprint
goal?
Any impediment (e.g., stumbling block, risk, issue, delayed dependency, assumption proved
unfounded)[31] identified in the daily scrum should be captured by the scrum master and
displayed on the team's scrum board or on a shared risk board, with an agreed person
designated to working toward a resolution (outside of the daily scrum). No detailed discussions
should happen during the daily scrum.
Story points are a unit of measure for expressing an estimate of the overall effort that will be
required to fully implement a product backlog item or any other piece of work.
When we estimate with story points, we assign a point value to each item. The raw values we
assign are unimportant. What matters are the relative values. A story that is assigned a 2 should
be twice as much as a story that is assigned a 1. It should also be two-thirds of a story that is
estimated as 3 story points.
Instead of assigning 1, 2 and 3, that team could instead have assigned 100, 200 and 300. Or 1
million, 2 million and 3 million. It is the ratios that matter, not the actual numbers.
When estimating with story points, be sure to consider each of these factors. Let’s see how
each impacts the effort estimate given by story points.
An epic is a large user story that cannot be delivered as defined within a single iterationor is large
enough that it can be split into smaller user stories.
There is no standard form to represent epics. Some teams use the familiar user story formats (As
A, I want, So That or In Order To, As A, I want) while other teams represent the epics with a short
phrase.
Expected Benefits
Epics allow you to keep track of large, loosely defined ideas in your backlog without the need to
overpopulate your backlog with multiple items. You can remember a vague idea with one backlog
item until your team identifies the need to deliver the outcome that the epic enables. At that point
your team can split the epic into smaller user stories during backlog refinement.
Epics allow you a way to establish a hierarchy for your backlog items where the Epic represents the
original idea often closely related to a particular outcome. The user stories associated with that
epic represent the various aspects of the solution you need to deliver, or the options you have for
satisfying that need.
You may also see the concept of themes used for grouping user stories dealing with the same
topic. The theme concept is frequently used to group user stories that were identified separately
together and can be used as a decision filter of sorts to decide what stories to group into a
particular sprint or delivery. Themes are typically not used as a level in a backlog hierarchy.
Common Pitfalls
Teams can over complicate their use of epics by viewing them as more than just large user stories.
This is apparent when the team creates complex mechanisms to differentiate between epics and
user stories (and potentially other backlog hierarchies) as well as creates extensive tools for
tracking epics separately from other backlog items.
Both of these actions result in wasted effort in the form of whether something is an epic or a user
story and time spent tracking information about a backlog item that is intended to be a
placeholder for future discussions that will result in more finely grained backlog items.
Teams may also try to estimate epics even though these items typically are very vague in nature
and prone to a great deal of uncertainty, reducing the likelihood of reliable or useful estimates.
When Applicable
The concept of epics is particularly useful when you are following a framework such as Scrum that
has explicit timeboxed iterations (ie sprints). Since you organize your work into 2 - 4 week sprints,
you may find a placeholder that represents work that cannot be finished within that time frame
helpful.
Epics are also useful when there is value in having a simple hierarchy in your product backlog.
14. Spike
A time-boxed period used to research a concept or create a simple prototype. Spikes can either
be planned to take place in between sprints or, for larger teams, a spike might be accepted as
one of many sprint delivery objectives. Spikes are often introduced before the delivery of large
or complex product backlog items in order to secure budget, expand knowledge, or produce a
proof of concept. The duration and objective(s) of a spike is agreed between product owner
and development team before the start. Unlike sprint commitments, spikes may or may not
deliver tangible, shippable, valuable functionality. For example, the objective of a spike might
be to successfully reach a decision on a course of action. The spike is over when the time is up,
not necessarily when the objective has been delivered.
Unit 3
Section B
Unit 4
1. What are the SOLID principles? Explain OCP with suitable example
2. What is the role of design principles in agile? Explain with open closed
principle
3. Explain single responsibility design principles
4. Explain the symptoms of bad software design write the statement of single
responsibility and interface segregation principle
5. Explain interface segregation principle
6. Explain Liskov substitution design principle with suitable example
7. Explain why agile design practices important
Unit 5
Unit 6