Lecture 4 - Agile Software Development
Lecture 4 - Agile Software Development
ENGINEERING
Agile Software Development
BESE 28 (A,B,C)
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.
2
Agile Manifesto
■ In 2001 Kent Beck and 16 other software developers, referred to as
“Agile Alliance”, signed the “manifesto for Agile software
development”, which stated:
■ That is, while there is value in the items on the right, we value the
items on the left more.
3
Agile Principles
Agile Alliance defined 12 agility principles:
1. Highest priority is to satisfy the customer through early and continues delivery of valuable software.
2. Welcome changing requirements even late in the development (for customers competitive advantage).
4. Business people and developers must work together daily throughout the project.
5. Build project around motivated Individuals. Give them the environment and support they need and
trust them to get the job done.
6. Most efficient and effective method of conveying information to and with team is face to face
conversation.
4
Agile Principles
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.
10. Simplicity the art of maximizing the amount of work 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.
5
Key Principles of Agile Methods
Principle Description
Customer involvement Customers should be closely involved throughout the development
process. Their role is to provide and prioritize new system requirements
and to evaluate the iterations of the system.
Incremental delivery The software is developed in increments with the customer specifying
the requirements to be included in each increment.
People not process The skills of the development team should be recognized and exploited.
Team members should be left to develop their own ways of working
without prescriptive processes.
Embrace change Expect the system requirements to change and so design the system to
accommodate these changes.
Maintain simplicity Focus on simplicity in both the software being developed and in the
development process. Wherever possible, actively work to eliminate
complexity from the system.
6
Agile software development is a group of
software development methodologies that are
Agile based on similar principles.
Methods
Agile methodologies generally promote a project
management process that encourages:
Agile Software Development Most agile methods attempt to Each iteration is like a
is a conceptual framework for minimize risk by developing miniature software project of
undertaking software software in short timeboxes, its own, and includes all the
engineering projects called iterations, which may tasks necessary to release the
typically last one to four weeks mini-increment of new
functionality
8
Agile Methods vs Traditional Methods
A plan-driven approach is based around separate development stages with the outputs to be
produced at each of these stages planned in advance. Iteration occurs within activities.
In Agile Methods, specification, design, implementation and testing are inter-leaved and the
outputs from the development process are decided through a process of negotiation during the
software development process.
Agile methods emphasize Realtime communication, preferably face to face, over written
documents
Agile methods like XP relies on the close collaboration of actively engaged individuals with
ordinary talents and has the ability to flexibly schedule the implementation of functionality,
responding to changing business needs
9
Plan-driven and Agile Specification
10
Agile Method Applicability
■ Product development where a software company is developing a
small or medium-sized product for sale.
11
Problems with Agile Methods
It can be difficult to keep the Team members may be unsuited to the
interest of customers who are intense involvement that characterizes
involved in the process. agile methods
Scrum
13
Extreme Programming - XP
14
Extreme Programming
- All tests must be run for every build and the build is
only accepted if tests run successfully.
15
Extreme Programming
XP (according to inventor Kent Beck) is characterized by 12 practices:
Small Simple
Planning Metaphor
Releases Design
16
Extreme Programming
■ Planning programmers estimate effort of implementing customer stories and customer decides about
scope and timing of releases
■ Small releases new release every 2 3 months
■ Simple design emphasis on simplest design
■ Testing development test driven
■ Refactoring restructuring and changes to simplify
■ Pair Programming 2 people at 1 computer
■ Collective ownership anyone can change any part of the code at any time.
■ Continuous integration new builds as soon as code ready
■ 40-hour week maximum 40-hour week. No overtime
■ On site customer customer present and available full time for team
■ Coding standards rules exist and are followed
■ Open workspace large room small cubicles
■ Just rules team has own rules but can be changed any time 17
XP - Example
One of the most famous extreme programming real life examples is Google's
search engine.
18
Key Practices of XP
Planning
Iteration A stand-up
Move people Fix XP when it
planning starts meeting starts
around breaks.
each iteration. each day.
19
Key Practices of XP
Designing
Choose a system
metaphor . (system of Create spike
Use CRC cards for
Simplicity names for your solutions to reduce
objects that everyone design sessions.
risk.
can relate to)
• For example, Techniques for improving names and location of code: Move method or move field
move to a more appropriate class or source file
• Rename method or rename field changing the name into a new one that better reveals its
purpose
20
Class Responsibility
Collaborator (CRC)
cards
Example
21
Key Practices of XP
Coding
22
Key Practices of XP
Testing
23
XP Programming Methodology
24
XP Advantages and Disadvantages
Advantages Disadvantages
25
Example: A ‘prescribing medication’ story
26
Examples Of Task Cards For Prescribing Medication
27
Scrum
28
What is Scrum?
■ The Scrum approach is a general agile method, but its focus is on
managing iterative development rather than specific agile practices.
29
Scrum
■ There are three phases in Scrum.
– The initial phase is an outline planning phase where you
establish the general objectives for the project and design the
software architecture.
30
The Scrum Process
31
Key Scrum Concepts
32
33
Primary Scrum Roles
34
Key Planning Elements
35
Key Planning Elements
36
Putting it All Together
37
User Stories
■ Detail can be added to user stories in two ways:
– By splitting a user story into multiple, smaller user stories.
– By adding “conditions of satisfaction.”
40
Product Owner
■ Define the features of the product
■ Decide on release date and content
■ Be responsible for the profitability of the product (ROI)
■ Prioritize features according to market value
■ Adjust features and priority every iteration, as needed
■ Accept or reject work results
41
The Scrum Master
■ Represents management to the project
■ Responsible for enacting Scrum values and practices
■ Ensure that the team is fully functional and productive
■ Enable close cooperation across all roles and functions
■ Shield the team from external interferences
42
The Team
■ Typically, 5-9 people
– Cross functional
– Programmers, testers, user
■ experience designers, etc.
■ Members should be full time
■ May be exceptions (e.g., database administrator)
43
What happens during a Sprint?
44
The Daily Scrum
45
Everyone answers 3 questions
46
At the end of a Sprint?
Experience from
earlier increments It's always easier to
allows better estimates estimate shorter
and planning as development periods
project progresses.
47
The Sprint Review
Informal
• 2 hour prep time rule
• No slides
48
Sprint Retrospective
49
Scrum is a best fit for:
■ For brand new projects
■ Projects with volatile requirements, user feedback is required,
■ iterative nature.. Modular
Example:
■ Deploying an ERP application, such as SAP. The vendor has
done this many times, has a process with all steps clearly
defined and understood, and can proceed with a well practiced
waterfall process.
■ Creating custom reports for the ERP application. This is likely
to be an iterative process, as reports evolve towards greater
usefulness over time due to user feedback and is well suited to a
Scrum process.
50
Scrum Benefits
The product is broken down into a set of manageable and understandable chunks.
The whole team have visibility of everything and consequently team communication is
improved.
Customers see on-time delivery of increments and gain feedback on how the product
works.
Trust between customers and developers is established and a positive culture is created in
which everyone expects the project to succeed.
51
Scrum has been used for:
52
References
– “Software Engineering” by Ian Summerville
■ Chapter 3: Agile Software Development
53