Unit 1
Unit 1
Module I: Introduction: The Agile manifesto, Agile methods, XP: Extreme Programming, DSDM,
SCRUM, feature- Driven Development, Test Driven Development, modelling misconceptions,
agile modelling, tools of misconceptions, updating agile models.
Learning Outcomes:
After completion of this unit, the student will be able to:
1. Understand Agile concepts (L1)
2. Distinguish different agile methods for software development(L2)
3. Describe the origins and motivations of the Agile Manifesto(L3)
4. Analyse requirements to prepare features and user stories (L4)
5. Construct different agile models(L6)
Introduction
Agile
• Dictionary meaning - quick moving, nimble
• In terms of Computing – it is a group of various methods that aim to nimble and quick moving
in response to
o changes in requirements
o the people that comprise the development teams
o issues that arise during the software development process
• The agile software development process primary goal is to be
o Effective - producing working, detect-free software
o Sufficient - meeting requirements both in the short-term and in the long-term
• Agile Methodology is a method
o tries to be responsive to the needs of the software development process
o based on practise and experience
o focuses on being effective and sufficient
• Agile is a project management methodology that breaks down larger projects into smaller,
manageable chunks known as iterations.
• At the end of every iteration (which typically takes places over a consistent time interval),
something of value is produced.
• The product that’s produced during every iteration should be able to be placed into the
world to receive feedback from stakeholders or users.
Agile Manifesto
The manifesto proposed the following values to produce better software
• Individuals and interactions over processes and tools
o the people involved and how they communicate that typically leads on the success
(or failure) of a software project.
o the best people and group interactions are encouraged
1
Dr.P.M.MANOHAR, DEPT. OF CSE, GITAM SCHOOL OF TECHNOLOGY, VISAKHAPATNAM
AGILE SOFTWARE DEVELOPMENT – MODULE-1
2
Dr.P.M.MANOHAR, DEPT. OF CSE, GITAM SCHOOL OF TECHNOLOGY, VISAKHAPATNAM
AGILE SOFTWARE DEVELOPMENT – MODULE-1
Agile Methods
• Dissatisfaction with the overheads involved in software design methods of the
1980s and 1990s led to the creation of agile methods
These methods:
• Focus on the code rather than the design
• Are based on an iterative approach to software development
• Are intended to deliver working software quickly and evolve this quickly to meet
changing requirements.
• The aim of agile methods is to reduce overheads in the software process (e.g. by
limiting documentation) and to be able to respond quickly to changing
requirements without excessive rework.
• Main theme - to produce a working solution and be able to respond to changing user/client
requirements.
• Difference between agile methods compared to more traditional methods
o Traditional methods - considered the functionality to be fixed, but the time
available and the number of resources that can be applied are variable
o Agile methods - the time available and the resources available considered to be
fixed, while the functionality is considered more flexible
• Five core methods under the umbrella of the term Agile being worked on and with at the
present time
1. Agile Modelling
2. eXtreme Programming (or XP)
3. Dynamic Systems Development Method (or DSDM),
4. SCRUM and
5. Feature-Driven Development (or FDD)
3
Dr.P.M.MANOHAR, DEPT. OF CSE, GITAM SCHOOL OF TECHNOLOGY, VISAKHAPATNAM
AGILE SOFTWARE DEVELOPMENT – MODULE-1
Agile Modelling
• At design stage, it tries to find an appropriate balance between too little modelling, and
too much modelling.
• Agile Modelling provides guidelines how to create effective models and how to be an
efficient modeller
• The three main goals
o The definition and promotion of a set of values, principles and practices that help
to produce the appropriate models
o Guidance on how to apply modelling to an agile software development
o Guidance on how to apply agile modelling to other software processes (such as
RUP)
4
Dr.P.M.MANOHAR, DEPT. OF CSE, GITAM SCHOOL OF TECHNOLOGY, VISAKHAPATNAM
AGILE SOFTWARE DEVELOPMENT – MODULE-1
5
Dr.P.M.MANOHAR, DEPT. OF CSE, GITAM SCHOOL OF TECHNOLOGY, VISAKHAPATNAM
AGILE SOFTWARE DEVELOPMENT – MODULE-1
o For example, place a customer representative in the team, so that you have access
to them all of the time.
Create tests before coding then test heavily
o Developers should write the unit tests before the code to be tested.
o You should then automate testing so that you can regularly re-run the tests to make
sure that nothing that has been done breaks earlier results.
Short iterations
o Each iteration should be relatively short allowing for rapid and frequent feedback.
o Thus, a minimal system may be produced and possibly even put into production
quickly and the system will grow in whatever directions prove most valuable.
Keep it simple
o Start projects with a simple design that can evolve later as required by future
iterations.
o This removes unnecessary complexity from early iterations.
o It also removes the need to code in additional functionalities believed to be required
by future iterations, but which may actually never be needed.
Don’t anticipate: code for current needs
o Don’t over-engineer solutions based on what they may one day need to do, rather
focus on what they need to do now and leave tomorrow’s functionality to tomorrow
Collective ownership
o Everyone within the team owns the software and has responsibility for it.
o When something goes wrong, no one should ever consider it not to be his or her
problem
o In turn, XP does not support a culture of blame and recrimination – everyone is
responsible for all the code.
o As a result of this, everyone is responsible for fixing a problem when they find it
rather than ignoring it.
The XP Project Lifecycle
• XP provides a software development lifecycle model as well as guidelines on the
organisation of a software development team
6
Dr.P.M.MANOHAR, DEPT. OF CSE, GITAM SCHOOL OF TECHNOLOGY, VISAKHAPATNAM
AGILE SOFTWARE DEVELOPMENT – MODULE-1
XP Lifecycle
Fig. 2 XP lifecycle
User Stories
• User stories are similar in some respects to Use Cases
• aim to capture how the user will use the system
• they are written by the users themselves and not by the development team
• User Stories are not detailed requirements
• should be short - should use the terminology of the user and not the terminology of the
software development team
Architectural Spike
Spike
• Spike is an attempt to reduce the risk associated with an unknown area of the system,
technology or application domain
• Research and analysis of the architecture to use should be carried out and fed into the
release planning meeting
Release Planning
• A release-planning meeting is used to create the release plan, which lays out the overall
project.
• The release plan indicates which user stories will be implemented and in which release
this will happen
• Also indicates how many iterations are planned and when each iteration will be
delivered
• This is done by negotiation between the interested parties using estimates derived from
the user stories.
• The estimates are produced by the technical members of the team potentially with input
from the users.
• The users priorities the user stories possibly with input from the technical team members.
7
Dr.P.M.MANOHAR, DEPT. OF CSE, GITAM SCHOOL OF TECHNOLOGY, VISAKHAPATNAM
AGILE SOFTWARE DEVELOPMENT – MODULE-1
Iterations
• Each iteration within the project adds to the agility of the development team.
• development team at each iteration adds - changes can be made to what will be done
and when it will be done.
• The shorter the iteration, the quicker the development team can respond to changes
• At the beginning of each iteration, an Iteration Planning meeting is held to determine
exactly what will happen within that iteration
• further iteration planning meetings should be called during the iteration for the
unachieved
• to concentrate on completing the most important tasks as chosen by your users
Acceptance Testing
• The acceptance tests are created from the user stories, written at the start of the project.
• Each iteration implements one or more user stories; these stories will be translated into
a series of acceptance tests during the iteration.
• the users assess the results of the acceptance tests and reviewing test scores to decide
which failed tests are of highest priority
• in each iteration, all previous Acceptance tests should be run to ensure that nothing has
been broken
Release
8
Dr.P.M.MANOHAR, DEPT. OF CSE, GITAM SCHOOL OF TECHNOLOGY, VISAKHAPATNAM
AGILE SOFTWARE DEVELOPMENT – MODULE-1
• The first three phases (namely, the Pre-Project, Feasibility and Business Studies phases)
are done sequentially in order - provides ground rules
• The Feasibility Study phase outputs feasibility report to assesses whether or not to use
DSDM for the project
• The Business Study phase of the project should have three outputs; the Business Area
Definition (BAD), the System Architecture Definition (SAD) and the Outline Prototyping
plan
Business Area Definition. Identifies the high-level requirements and provides
a process description of the end product.
System Architecture Definition. Sketches out the architecture of end system.
9
Dr.P.M.MANOHAR, DEPT. OF CSE, GITAM SCHOOL OF TECHNOLOGY, VISAKHAPATNAM
AGILE SOFTWARE DEVELOPMENT – MODULE-1
• After the project has delivered the end product, the project team can be disbanded and
the Post-Project activities initiated.
• This phase may cover such diverse activities as providing a help desk for users to ensure
that the product operates effectively and checking that the expected business benefits
have been achieved.
• DSDM refines the concept of timeboxing by nesting shorter timeboxes of 2–6 weeks
within the overall time frame.
• Each timebox will typically pass through three phases.
o Investigation – a quick pass to see whether the team is taking the right direction.
o Refinement – to build on the comments resulting from the review at the end of
investigation.
o Consolidation – the final part of the timebox to tie up any loose ends.
10
Dr.P.M.MANOHAR, DEPT. OF CSE, GITAM SCHOOL OF TECHNOLOGY, VISAKHAPATNAM
AGILE SOFTWARE DEVELOPMENT – MODULE-1
SCRUM
• SCRUM aims to manage and control the production of software using iterative,
incremental and lightweight processes
Benefits
1. The management and control of development work in an agile manner
2. It explicitly acknowledges that requirements may be changing rapidly within its iterative
and incremental approach to product development
3. It can still use existing engineering practices within SCRUM
4. team-based approach and helps to improve communications and co-operation
5. scales from small projects up to very large projects
6. helps to identify and then remove any obstacle to the smooth development of the end
product
• SCRUM is a set of rules, procedures, and practices that are all interrelated and that
work together to improve the development environment, reduce organisational
overheads and ensure that iterative deliverables match the end users requirements.
Fig.4. SCRUM
Feature-Driven Development
Feature-Driven Development
• potential for managing an agile project
• for handling the uncertainties that an agile approach introduces
11
Dr.P.M.MANOHAR, DEPT. OF CSE, GITAM SCHOOL OF TECHNOLOGY, VISAKHAPATNAM
AGILE SOFTWARE DEVELOPMENT – MODULE-1
12
Dr.P.M.MANOHAR, DEPT. OF CSE, GITAM SCHOOL OF TECHNOLOGY, VISAKHAPATNAM
AGILE SOFTWARE DEVELOPMENT – MODULE-1
4. Once an iteration starts, each iteration is addressed in turn based on their priorities. At any
one time, one or more features will be worked on depending on the size of the feature and the
resources available.
5. The iteration stops when the timebox finishes. At the end of the iteration, the current version
of the software is tested to ensure it does what it should.
6. If this is the final iteration, then the final version of the system is delivered (if it is not the final
iteration, then the current system may still be delivered to end users for early and frequent
feedback).
Thus, being feature-centric allows control to be regained over the agile development process
as: features combine requirements with planning, timeboxes provide a structure to the plan and
define how much time is available to implement the features, each iteration identified the
features to be implemented based on the timebox and the current set of features and their
priorities.
13
Dr.P.M.MANOHAR, DEPT. OF CSE, GITAM SCHOOL OF TECHNOLOGY, VISAKHAPATNAM
AGILE SOFTWARE DEVELOPMENT – MODULE-1
14
Dr.P.M.MANOHAR, DEPT. OF CSE, GITAM SCHOOL OF TECHNOLOGY, VISAKHAPATNAM
AGILE SOFTWARE DEVELOPMENT – MODULE-1
Modelling Misconceptions
Models equal documentation
• A model is part of the documentation, but it is by no means sufficient as documentation.
• That is, a (UML) model, as good as it may be, cannot adequately represent all the
information needed to describe how the requirements (functional and nonfunctional),
behavioral and structural of a software system are to be implemented.
Modelling implies a heavyweight software process
• Again this is not true. The fact that you are using some form of modelling to describe your
system does not mean that you must be using a formal software development process.
• It may well be that placing the modelling task within the context of a development
methodology may well help, but modelling does not equate to a software process.
You must “freeze” the requirements
• The point here is that many people believe that you must be able to freeze the requirements
before you start to model. In theory this would be great. If you had all the requirements
presented to you before you start modelling, then all the questions about what the system
should do would be answered at the start.
• It would also make deciding on what should be in the model easier. However, that is
theoretical, in reality requirements change (even in the smallest projects). This can be for a
variety of reasons.
Your design is carved in stone
• This is a leftover from the more traditional waterfall-based approaches to software
development. In an ideal world, you would like to remove as many unknowns and variable
elements from software development as possible.
• Therefore, to have the design “fixed” and never changing would be great. Again this does
not work in reality. This is for a variety of reasons, including changing requirements, but also
the fact that designs are an abstraction of the implementation. This means that as an
implementation is progressing some elements of the design may be found to be
unimplementable, inefficient or fatally flawed.
• Thus, during the implementation some changes may be required to the design to ensure a
working system, etc. In addition, there may be some situations in which it is difficult to define
more than a highly abstract model, as not enough is known at that point about how the
system should work.
• Thus, the model will need refinement at a later date when some missing information or
understanding becomes available. You may be thinking that you should not move on from
the modelling phase until you have this information, but in the real world there are times
when you don’t have a choice.
You must use a CASE tool
• This means that if you are going to do some modelling you must use some form of
Computer Aided Software Engineering tool such as Together Soft's Together Control
Centre or Rational’s Rose.
• Of course, these tools may well make things easier, but they are not mandatory.
15
Dr.P.M.MANOHAR, DEPT. OF CSE, GITAM SCHOOL OF TECHNOLOGY, VISAKHAPATNAM
AGILE SOFTWARE DEVELOPMENT – MODULE-1
• An extension of the last point is that if you are going to create models as part of your design
you need a CASE tool that can manage, manipulate, cross reference, etc., your models.
• While these features may well be useful, they are not necessary. I can (and indeed have)
used simpler tools such as Visio to perform all the modelling necessary for the design of a
system. Obviously, the larger the system and the larger the amount of modelling performed,
the better a CASE tool may be.
Agile modellers don’t use CASE tools
• This is a common misconception by those starting with Agile Modelling. This is partly due to
the emphasis of Agile Modelling on using the simplest appropriate tool and if that tool is a
white board or a piece of paper, use it.
• The key word here is appropriate. If I need to work something through with one of my
colleagues, we might well use a white board or a piece of paper and not worry too much
about the accuracy of the UML notation being used.
• If however, I am trying to describe a complex structure that will need to be referenced by
a variety of developers, possibly in multiple locations, then a CASE tool might well be the
most appropriate.
UML is all you need!
• Some take the view that UML is all you need in terms of notation – if you can’t do it in UML
(aka the design tool you are using), then it is either not relevant to an object-oriented system
or not important enough to document.
• This is not true. There are many aspects of a software project that you may wish to document,
but do not fit within the remit of a UML diagram, for example, GUI storyboarding, data
modelling, etc.
The CASE tool is master
• This is more a perception than a misconception. It is a perception because users often feel
that they are battling with the CASE tool and that they have to work in the way prescribed
by the CASE tool.
• The important thing is that the CASE tool should not be the master but the servant. It should
help you with your work and not hinder it.
• Thus, finding an appropriate tool (or tools) is important. For example, in one case Together
proved to be particularly well suited to the organisations way of working and to the
developers experience and background.
Updating Agile Models
Update Only When It Hurts
• You should update a model only when you absolutely need to, when not having the model
updated is more painful than the effort of updating it.
• With this approach you discover that you update a smaller number of models than you
would have in the past because the reality is that your models don't have to be perfect to
provide value.
• Example: The street map that I have to my town is over five years old, I know this because
my own street doesn't appear on it and it's been in place for a little over five years, yet
17
Dr.P.M.MANOHAR, DEPT. OF CSE, GITAM SCHOOL OF TECHNOLOGY, VISAKHAPATNAM
AGILE SOFTWARE DEVELOPMENT – MODULE-1
the map is still useful to me. Yes, I could purchase an updated map, one comes out every
year, but why bother? Missing a few streets isn't painful enough to warrant this investment,
it simply doesn't make sense to spend the money to purchase a new map every year when
the one that I have is good enough. Too much time and money is wasted trying to keep
models and documents in sync with source code, an impossible task to begin with, time and
money that could be better spent developing new software. This practice is particularly
important for agile documentation.
18