Partial Agile-Lab Manual
Partial Agile-Lab Manual
&Engineering
LAB MANUAL
List of Practical’s
1. Understand the background and driving forces for
taking an Agile Approach to Software Development.
2. Understand the business value of adopting agile
approach.
3. Understand agile development practices
4. Propose a sample project with its Objectives, Vision statement,
use cases and UML diagrams.
5. Compile Project release map, user stories for proposed project.
6. Identify the story-boarding tasks and detailed release plan for
the project.
7. Design Product road-map for the proposed project.
8. Design Story-mapping for the proposed project.
9. Compile the Product-backlog for the Proposed project.
10. Compile the Sprint-Backlog for the Proposed Project.
11.Demonstration of the project with its Sprint-1, Sprint-2
releases…
12.Final Demonstration of the entire project as per proposal.
Practical No. 1
Understand the background and driving forces for taking an Agile Approach to
Software Development
Objective
1. Difference between agile software development model and waterfall model.
2. Why Agile is better?
3. Understanding the Agile Manifesto
4. Discussing Important Characteristics that make agile approach best suited for
Software Development.
Theory
Agile software development is a group of software development methods in which
requirements and solutions evolve through collaboration between self-organizing,
cross-functional teams. It promotes adaptive planning, evolutionary development,
early delivery, continuous improvement, and encourages rapid and flexible response to
change.
The Manifesto for Agile Software Development, also known as the Agile Manifesto, first
introduced the term agile i n the context of software development in 2001.
Manifesto for Agile Software Development
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on
the right, we value the items on the left
more.
Agile principles
The Agile Manifesto is based on 12 principles:
1. Customer satisfaction by rapid delivery of useful software
2. Welcome changing requirements, even late in development
3. Working software is delivered frequently (weeks rather than months)
4. Close, daily cooperation between business people and developers
5. Projects are built around motivated individuals, who should be trusted
6. Face-to-face conversation is the best form of communication (co-location)
7. Working software is the principal measure of progress
8. Sustainable development, able to maintain a constant pace
9. Continuous attention to technical excellence and good design
10.Simplicity—the art of maximizing the amount of work not done—is essential
11.Self-organizing teams
12.Regular adaptation to changing circumstance
What’s wrong with Traditional Approaches?
In 1970, Dr. Winston Royce presented a paper entitled “Managing the Development of
Large Software Systems,” which criticized sequential development. He asserted that
software should not be developed like an automobile on an assembly line, in which
each piece is added in sequential phases, each phase depending on the previous. Dr.
Royce recommended against the phase based approach in which developers first
gather all of a project’s requirements, then complete all of its architecture and design,
then write all of the code, and so on. Royce specifically objected to the lack of
communication between the specialized groups that complete each phase of work.
It’s easy to see the problems with the waterfall method. It assumes that every
requirement can be identified before any design or coding occurs. Could you tell a
team of developers everything that needed to be in a software product before any of it
was up and running? Or would it be easier to describe your vision to the team if you
could react to functional software? Many software developers have learned the answer
to that question the hard way: At the end of a project, a team might have built the
software it was asked to build, but, in the time it took to create, business realities have
changed so dramatically that the product is irrelevant. Your company has spent time
and money to create software that no one wants. Couldn’t it have been possible to
ensure the end product would still be relevant before it was actually finished?
Today very few organizations openly admit to doing waterfall or traditional command
and control. But those habits persist.
Why Agile?
Agile development provides opportunities to assess the direction throughout the
development lifecycle. This is achieved through regular cadences of work, known as
Sprints or iterations, at the end of which teams must present a potentially shippable
product increment. By focusing on the repetition of abbreviated work cycles as well as
the functional product they yield, agile methodology is described as “iterative” and
“incremental.” In waterfall, development teams only have one chance to get each
aspect of a project right. In an agile paradigm, every aspect of development —
requirements, design, etc. — is continually revisited. When a team stops and re-
evaluates the direction of a project every two weeks, there’s time to steer it in another
direction.
This “inspect-and-adapt” approach to development reduces development costs and
time to market. Because teams can develop software at the same time they’re
gathering requirements, “analysis paralysis” is less likely to impede a team from
making progress. And because a team’s work cycle is limited to two weeks,
stakeholders have recurring opportunities to calibrate releases for success in the real
world. Agile development helps companies build the right product. Instead of
committing to market a piece of software that hasn’t been written yet, agile empowers
teams to continuously replan their release to optimize its value throughout
development, allowing them to be as competitive as possible in the marketplace. Agile
development preserves a product’s critical market relevance and ensures a team’s
work doesn’t wind up on a shelf, never released.
Difference between agile software development model and waterfall model
It is worth mentioning here that the Waterfall model is the primitive model type and
has been implemented in the development phase time after time. Hence in the due
course if time developers found many drawbacks in this model which were later
rectified to form various other development models.
Advantages of the Agile Methodology
1. The Agile methodology allows for changes to be made after the initial planning.
Re- writes to the program, as the client decides to make changes, are expected.
2. Because the Agile methodology allows you to make changes, it’s easier to add
features that will keep you up to date with the latest developments in your industry.
3. At the end of each sprint, project priorities are evaluated. This allows clients to
add their feedback so that they ultimately get the product they desire.
4. The testing at the end of each sprint ensures that the bugs are caught and
taken care of in the development cycle. They won’t be found at the end.
5. Because the products are tested so thoroughly with Agile, the product could be
launched at the end of any cycle. As a result, it’s more likely to reach its launch date.
Conclusion
Both the Agile and waterfall methodologies have their strengths and weaknesses. The
key to deciding which is right for you comes down to the context of the project. Is it
going to be changing rapidly? If so, choose Agile. Do you know exactly what you need?
Good. Then maybe waterfall is the better option. Or better yet? Consider taking
aspects of both methodologies and combining them in order to make the best possible
software development process for your project.
Practical No. 2
Understand the business value of adopting Agile
Approaches Objective
1. Understanding the business values
2. Adopting Agile Software Development: Issues and Challenges
3. Overview of Scrum, Extreme Programming, Feature Driven development, Lean
Software Development, Agile project management
Theory
When it comes to creating custom applications, too many of us live in denial. We want
to believe that it’s possible to predict accurately how long a group of developers will
take to build software that meets our requirements. We also want to believe that we
can know what those requirements are up front, before we’ve seen any part of the
application, and that the requirements won’t change during development. Sadly, none
of these things are true for most projects. We can’t predict how long development will
take, largely because we can’t get the requirements right up front and we can’t stop
them from changing. Because we deny these realities, many organizations still use
software development processes that don’t work well. Fortunately, this is changing.
Agile development processes get more popular every day, primarily because they’re
rooted in reality: They’re designed to accommodate change. Doing software
development in this way can be scary at first, especially for the business leaders who
are footing the bill. This needn’t be the case, however. The truth is that agile processes
are usually better both for development teams and for the business people who pay
them. To understand why this is true, we need to start by understanding what an
agile process really is. What Agile Development Means The challenge is always the
same: We need to create software in the face of uncertainty. At the start of a
development project, we don’t know whether we’ve defined the project’s requirements
correctly. We also don’t know how those requirements will change while we’re building
the software. A traditional development process does its best to pretend this
uncertainty doesn’t exist. In the classic waterfall approach, for example, an
organization creates detailed plans and precise schedules before writing any code. But
real development projects rarely comply with these plans and schedules—they’re
notoriously unruly. The core reason for this is that even though we use the term
“software engineering”, writing code isn’t like other kinds of engineering. In traditional
engineering projects—building a bridge, say, or constructing a factory—it’s usually
possible to define stable requirements up front. Once you’ve done this, creating plans
and schedules based on previous experience is straightforward. Software development
just isn’t like this1 . Creating stable requirements up front is usually impossible, in
part because people don’t know what they want until they see it. And since every
development project involves some innovation—if it doesn’t, you should be buying
rather than building the software—uncertainty is unavoidable. Traditional
development processes work against these realities. Agile processes, however, are
designed for this situation. Because requirements change, an agile process provides a
way to add, remove, and modify requirements during the development process. Rather
than resisting change, an agile process embraces it. Just as important, the process
recognizes that short-term plans are more stable than long-term plans. You might not
know exactly what you want to be doing three months from now, but you probably do
know what you want to do in the next three weeks. To accomplish this, an agile
development process relies on iteration. Rather than the traditional approach of
defining all of the requirements, writing all of the code, then testing that code, an agile
process does these things over and over in smaller iterations. Each iteration creates
more of the finished product, with the requirements updated at the start of each one.
Challenges in adopting agile Methodology
Challenge 1: Missing the Agile Master Role Agile master or Agile coach is an essential
role during Agile adopting process in any organization. Agile coach is considered a
consultant for the team in every step of a project using any Agile method, such as
Scrum, that is responsible of providing guidance and helps to succeed in adopting
Agile. Entity's” management recognized the need to hire a contractor as an agile
master. However, the position was not filled due to financial constraints.
Challenge 2: The overzealous teams after attending a course on Agile methods, many
of entity “S” teams wanted to adopt Agile methods as soon as possible hoping it will
solve all their previous development challenges known for traditional methods. This
overzealous team fast adoption of Agile resulted in a decrease in productivity because
the development cycle took longer time due to many mistakes in implementation. This
decrease in productivity led many team members to be less optimistic and started to
lose interest in agile methods.
Challenge 3: The absent of a Pilot Project Another challenge is the absent of a pilot
project in the transition from the previous traditional method to the scrum method.
Conducting a pilot project was a recommended step in the adoption of agile
development for the first time. As a part of the plan to adopt agile method, the pilot
project is essential to evaluate how”S” environment will be able to move from the
previous heavy-weight method to a new light method. Many organizations went
through the same experience of running a pilot project especially those companies that
have large projects such as Amazon, Yahoo, Microsoft and Intel. After investing the
needed time and resources they have reached to a successful adoption of Agile.
Challenge 4: Scrum Implementation International Journal of Managing Value and
Supply Chains (IJMVSC) Vol. 2, No. 3, September 2011 7 Although the employees in
”S” were very experienced but yet none of them had any previous experience with agile
development methods or Scrum implementation in particular. This is in addition of
the absence of the agile master. For the team members, scrum implementation was
not easy as it appeared to be during the training session. The team members find
themselves, suddenly, in a completely new set up. The experience of traditional
methods is completely different than committing to daily meeting, working with time
boxes, finishing tasks in small period iteration and documenting the stories (or
backlogs) in a different way.
Challenge 5: Current Work Pressure Although”S” software development team serves a
very large organization of over 30 departments and developed numerous projects
through the years, the development projects require continues maintenance and
support. In addition, the team was working on a new project with firm deadlines. The
work environment was very demanding and team worked under pressure to produce
products according to the planned schedule. Scrum adoption process started while
every member of the team was engaged in his/her everyday tasks. With such work
pressure the daily Scrum meetings were considered waste of time and added extra
pressure to the employees. They used to meet weekly and later twice a month and
then only when required and usually after working hours. As teams started to skip
daily meetings it also affected the learning process of scrum between the team
members. That eventually leads to the failure of learning and implementing agile
method correctly.
Challenge 6: Upper Management Concerns The upper management of”S” had many
concerns about the effectiveness and success of the transition to a new method. They
were not easily convinced to invest in a new method.
Challenge 7: Governmental bureaucratic System The traditional method currently in
“S” was customized to comply with the governmental system of other department. The
new Agile method being introduced, Scrum, is developed in such highly bureaucratic
environment. The Agile team has to secure approvals and signatures before moving
from one step to another. This was perceived by the team members as unnecessary
and more time was taken into account to develop a new project. The scrum method
requires much less correspondence, less time in communication between the customer
and the team and requires significantly less paper work and approvals as the
customer is supposed to be involved in every step.
Challenge 8: Documentation requirements after years and years of extensive
documentation of every step in the traditional method, moving to a new method with
minimum documentation requirements was one of the greatest challenges. Every
project used to end up with dozens of document such as project charter, project plan,
testing plan, SRS, STS, technical documents, user manual, etc. Each of these
document contained large number of pages written by every member of the team and
consumed hours of the valuable development time. The documentation requirements
were driven basically from the previous challenge (the governmental system), upper
management, ISO certificate requirements and the traditional development method
that is currently used. Although agile development promises sufficient documentation
of the projects, it didn’t seem very convincing to the upper management when they
end up receiving few documents in comparison with the previous model of
documentation. Many attempts were made to try to balance between the upper
management requirement regarding documentation and between adopting Scrum
method. Agile teams started to increase the number of documents required for
documentation and started to customize Scrum as much as possible to conform to all
the upper management requirements of documentation norms. This did not work very
well and it created extra burden on the agile teams
Agile Process Examples
1. SCRUM
2. FDD
3. Lean software development
4. XP
SCRUM
Scrum is an iterative and incremental agile software development methodology for
managing product development. It defines "a flexible, holistic product development
strategy where a development team works as a unit to reach a common goal",
challenges assumptions of the "traditional, sequential approach" 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 in the project.
FDD
Feature-driven development (FDD) is an iterative and incremental software
development process. It is one of a number of lightweight or agile methods for
developing software. FDD blends a number of industry-recognized best practices into a
cohesive whole. These practices are all driven from a client-valued functionality
(feature) perspective. Its main purpose is to deliver tangible, working software
repeatedly in a timely manner.
Lean software development
Lean software development (L SD) is a translation of lean manufacturing and lean
IT principles and practices to the software development domain. Adapted from the
Toyota Production System,] a pro-lean subculture is emerging from within the Agile
community. Lean is most popular with startups that want to penetrate the market, or
test their idea and see if it would make a viable business.
XP
Extreme programming (X P) is a software development methodology which is intended
to improve software quality and responsiveness to changing customer requirements.
As a type of agile software development, it advocates frequent "releases" in short
development cycles, which is intended to improve productivity and introduce
checkpoints at which new customer requirements can be adopted.
Other elements of extreme programming include: programming in pairs or doing
extensive code review, unit testing of all code, avoiding programming of features until
they are actually needed, a flat management structure, simplicity and clarity in code,
expecting changes in the customer's requirements as time passes and the problem is
better understood, and frequent communication with the customer and among
programmers.The methodology takes its name from the idea that the beneficial
elements of traditional software engineering practices are taken to "extreme" levels. As
an example, code reviews are considered a beneficial practice; taken to the extreme,
code can be reviewed continuously, i.e. the practice of pair programming.
Critics have noted several potential drawbacks,[5] including problems with unstable
requirements, no documented compromises of user conflicts, and a lack of an overall
design specification or document.
Conclusion
Each agile methodology has a slightly different approach for implementing the core
values from the Agile Manifesto, just as many computer languages manifest the core
features of object-oriented programming in different ways. A recent survey shows that
about 50 percent of agile practitioners say that their team is doing Scrum. Another 20
percent say that they are doing Scrum with XP components. An additional 12 percent
say that they are doing XP alone. Because more than 80 percent of agile
implementations worldwide are Scrum or XP, MSF for Agile Software Development
v5.0 focuses on the core processes and practices of Scrum and XP
Practical No. 3
Understand the Agile development practices
Objective
Understanding SCRUM
Theory
Scrum is an iterative and incremental agile software development methodology for
managing product development. It defines "a flexible, holistic product development
strategy where a development team works as a unit to reach a common goal",
challenges assumptions of the "traditional, sequential approach" 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 in the project.
A key principle of scrum is its recognition that during a project the customers can
change their minds about what they want and need (often called "requirements
churn"), and that unpredicted challenges cannot be easily addressed in a traditional
predictive or planned manner. As such, scrum adopts an empirical approach—
accepting that the problem cannot be fully understood or defined, focusing instead on
maximizing the team's ability to deliver quickly and respond to emerging requirements.
History
Scrum was first defined as "a flexible, holistic product development strategy where a
development team works as a unit to reach a common goal" as opposed to a
"traditional, sequential approach" in 1986 by Hirotaka Takeuchi and Ikujiro Nonaka in
the New New Product Development Game. Takeuchi and Nonaka later argued in The
Knowledge Creating Company t hat it is a form of "organizational knowledge creation,
[...] especially good at bringing about innovation continuously, incrementally and
spirally".
The authors described a new approach to commercial product development that would
increase speed and flexibility, based on case studies from manufacturing firms in the
automotive, photocopier and printer industries. They called this the holistic o r rugby
approach, as the whole process is performed by one cross-functional team across
multiple overlapping phases, where the team "tries to go the distance as a unit,
passing the ball back and forth". (In rugby football, a scrum refers to a tight-packed
formation of players with their heads down who attempt to gain possession of the ball.)
In the early 1990s, Ken Schwaber used what would become scrum at his company,
Advanced Development Methods, and Jeff Sutherland, with John Scumniotales and
Jeff McKenna, developed a similar approach at Easel Corporation, and were the first to
refer to it using the single word scrum. In 1995, Sutherland and Schwaber jointly
presented a paper describing the scrum methodology at the Business Object Design
and Implementation Workshop held as part of Object-Oriented Programming, Systems,
Languages & Applications '95 (OOPSLA '95) in Austin, Texas, its first public
presentation. Schwaber and Sutherland collaborated during the following years to
merge the above writings, their experiences, and industry best practices into what is
now known as scrum.
In 2001, Schwaber worked with Mike Beedle to describe the method in the book Agile
Software Development with Scrum.Its approach to planning and managing projects is
to bring decision-making authority to the level of operation properties and
certainties. Although the word is not an acronym, some companies implementing the
process have been known to spell it with capital letters as SCRUM. This may be due to
one of Ken Schwaber's early papers, which capitalized SCRUM in the title.
Later, Schwaber with others founded the Scrum Alliance and created the Certified
Scrum Master programs and its derivatives. Schwaber left the Scrum Alliance in the
fall of 2009, and founded Scrum.org to further improve the quality and effectiveness of
scrum.
The sprint burndown chart is a public displayed chart showing remaining work in the
sprint backlog. Updated every day, it gives a simple view of the sprint progress. It also
provides quick visualizations for reference. 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 way the actual burndown chart is updated day by
day.
The following terms are often used in a scrum process.
Sprint burn-down chart
Daily progress for a sprint over the sprint's length.
Release burn-down chart
Feature level progress of completed product backlog items in the product backlog.
Product backlog (PBL) list
A prioritized list of high-level requirements.
Sprint backlog (SBL) list
A prioritized list of tasks to be completed during the sprint.
Sprint
A time period (typically 1–4 weeks) in which development occurs on a set of backlog
items that the team has committed to. Also commonly referred to as a time-box or
iteration.
Spike
A time boxed period used to research a concept and/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, and/or produce a proof of concept. The duration
and objective(s) of a spike will be agreed between the 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.
Tasks
Work items added to the sprint backlog at the beginning of a sprint and broken down
into hours. Each task should not exceed 12 hours (or two days), but it's common for
teams to insist that a task take no more than a day to finish.
Definition of Done (DoD)
The exit-criteria to determine whether a product backlog item is complete. In many
cases the DoD requires that all regression tests should be successful. The definition of
"done" may vary from one scrum team to another, but must be consistent within one
team.
Velocity
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 from the last sprint's backlog items.
The collection of historical velocity data is a guideline for assisting the team in
understanding how much work they can do in a future sprint.
Impediment
Anything that prevents a team member from performing work as efficiently as
possible.
Conclusion
Scrum is an agile process most commonly used for product development, especially
software development. Scrum is a project management framework that is applicable to
any project with aggressive deadlines, complex requirements and a degree of
uniqueness. In Scrum, projects move forward via a series of iterations called sprints.
Each sprint is typically two to four weeks long.