2. Agile Software Engineering
2. Agile Software Engineering
2. Agile Software Engineering
An Awesome Introduction to
System Analysis and Design
Ian Sommerville
© BIS301 2023
Agile software engineering
• It depends on who is using the technique, the development team and the type of
product being developed
While there is value on the items on the right, we value the items on
the left more.
• Users or surrogate users can try it out and provide feedback to the
development team. You then go on to define and implement the next
feature of the system.
Embrace change
Expect the features of the product and the details of these features to
change as the development team and the product manager learn
more about it. Adapt the software to cope with changes as they are
made.
Maintain simplicity
Focus on simplicity in both the software being developed and in the
development process. Wherever possible, do what you can to
eliminate complexity from the system.
• The name was coined by Kent Beck in 1998 because the approach was
developed by pushing recognized good practice, such as iterative
development, to ‘extreme’ levels.
• Some of these techniques are now widely used; others have been less
popular.
Test-first
development
Continuous
integration Refactoring
Incremental
Small
planning
releases
Extreme
programming
Collective Simple
ownership design
Pair On-site
programming customer
Sustainable
pace
Small releases
The minimal useful set of functionality that provides business value is
developed first. Releases of the system are frequent and incrementally
add functionality to the previous release.
Test-driven development
Instead of writing code then tests for that code, developers write the tests
first. This helps clarify what the code should actually do and that there is
always a ‘tested’ version of the code available. An automated unit test
framework is used to run the tests after every change. New code should
not ‘break’ code that has already been implemented.
Continuous integration
As soon as the work on a task is complete, it is integrated into the
whole system and a new version of the system is created. All unit
tests from all developers are run automatically and must be
successful before the new version of the system is accepted.
Refactoring
Refactoring means improving the structure, readability, efficiency and
security of a program. All developers are expected to refactor the
code as soon as potential code improvements are found. This keeps
the code simple and maintainable.
Product
The software product that is being developed by the Scrum team.
Product owner
A team member who is responsible for identifying product features and
attributes. They review work done and help to test the product.
Product backlog
A to-do list of items such as bugs, features and product improvements
that the Scrum team have not yet completed.
Development team
A small self-organising team of five to eight people who are responsible
for developing the product.
Sprint
A short period, typically two to four weeks, when a product increment is
developed.
Scrum
A daily team meeting where progress is reviewed and work to be
done that day as discussed and agreed.
ScrumMaster
A team coach who guides the team in the effective use of Scrum.
Velocity
An estimate of how much work a team can do in a single sprint.
• During a sprint, the team has daily meetings (Scrums) to review progress
and to update the list of work items that are incomplete.
Select items
to implement
Review Product
sprint backlog
Plan
sprint
Shippable Sprint
product increment
Test Sprint
software Scrum
backlog
Develop
software
Scrum
benefits
Progress People
• Product backlog
This is a to-do list of items to be implemented that is reviewed and
updated before each sprint.
• Timeboxed sprints
Fixed-time (2-4 week) periods in which items from the product backlog
are implemented,
• Self-organizing teams
Self-organizing teams make their own decisions and work by discussing
issues and making decisions by consensus.
• The items on this list are called product backlog items (PBIs).
• The product backlog should always be prioritized so that the items that
be implemented first are at the top of the list.
PBI 1.1
PBI 1 Refinement
PBI 1.2
PBI 2
PBI 2E
Estimation
PBI 3
PBI 3E
PBI 4
Prioritization
Creation PBI 4
PBI 5
PBI 5
Creation PBI 6
• Refinement
Existing PBIs are analysed and refined to create more detailed PBIs. This may
lead to the creation of new product backlog items.
• Estimation
The team estimate the amount of work required to implement a PBI and add this
assessment to each analysed PBI.
• Creation
New items are added to the backlog. These may be new features suggested by
the product manager, required feature changes, engineering improvements, or
process activities such as the assessment of development tools that might be
used.
• Prioritization
The product backlog items are reordered to take new information and changed
circumstances into account.
• Effort required
• This may be expressed in person-hours or person-days i.e. the number of hours
or days it would take one person to implement that PBI. This is not the same as
calendar time. Several people may work on an item, which may shorten the
calendar time required.
• Story points
• Story points are an arbitrary estimate of the effort involved in implementing a
PBI, taking into account the size of the task, its complexity, the technology that
may be required and the ‘unknown’ characteristics of the work.
• They were derived originally by comparing user stories, but they can be used for
estimating any kind of PBI.
• Story points are estimated relatively. The team agree on the story points for a
baseline task and other tasks are estimated by comparison with this e.g.
more/less complex, larger/smaller etc.
• Sprints are short duration activities (1-4 weeks) and take place between
a defined start and end date. Sprints are timeboxed, which means that
development stops at the end of a sprint whether or not the work has
been completed.
• During a sprint, the team work on the items from the product backlog.
Time-
boxing
benefits
• Sprint planning
Work items to be completed in that sprint are selected and, if necessary,
refined to create a sprint backlog. This should not last more than a day at
the beginning of the sprint.
• Sprint execution
The team work to implement the sprint backlog items that have been
chosen for that sprint. If it is impossible to complete all of the sprint
backlog items, the sprint is not extended. The unfinished items are
returned to the product backlog and queued for a future sprint.
• Sprint reviewing
The work done in the sprint is reviewed by the team and (possibly)
external stakeholders. The team reflect on what went well and what went
wrong during the sprint with a view to improving their work process.
Sprint
execution
Sprint
Integrate Scrum
backlog
Develop
software
• Decide on the list of items from the product backlog that should be
implemented
Functional
Sprint
goals
• In a sprint plan, the team decides which items in the product backlog
should be implemented during that sprint.
• Key inputs are the effort estimates associated with PBIs and the team’s velocity
• Scrum does not suggest the technical agile activities that should be
used. However, I think there are two practices that should always be
used in a sprint.
• Test automation
As far as possible, product testing should be automated. You should
develop a suite of executable tests that can be run at any time.
• Continuous integration
Whenever anyone makes changes to the software components they are
developing, these components should be immediately integrated with
other components to create a system. This system should then be tested
to check for unanticipated component interaction problems.
Reviewed
The code has been reviewed by another team member who has checked that it meets
agreed coding standards, is understandable, includes appropriate comments, and has
been refactored if necessary.
Unit tested
All unit tests have been run automatically and all tests have executed
successfully.
Integrated
The code has been integrated with the project codebase and no integration errors
have been reported.
Integration tested
All integration tests have been run automatically and all tests have executed
successfully.
Accepted
Acceptance tests have been run if appropriate and the product owner or the
development team have confirmed that the product backlog item has been completed.
• At the end of each sprint, there is a review meeting, which involves the
whole team. This meeting:
• reviews whether or not the sprint has met its goal.
• sets out any new problems and issues that have emerged during the sprint.
• is a way for a team to reflect on how they can improve the way they work.
• The product owner has the ultimate authority to decide whether or not
the goal of the print has been achieved. They should confirm that the
implementation of the selected product backlog items is complete.
• The sprint review should include a process review, in which the team
reflects on its own way of working and how Scrum has been used.
• The aim is to identify ways to improve and to discuss how to use Scrum more
productively.
Self-organizing
team
coordinates the work limits the involvement of makes its own decisions
of the team members engineers in external on schedule and
by discussing tasks and interactions with deliverables.
reaching a consensus on management and
who should do what. customers.
External interactions
Team-focused Product-focused
external interactions external interactions
• The developers of Scrum did not envisage that the ScrumMaster should
also have project management responsibilities.
• In many companies, however, the ScrumMaster has to take on project
management responsibilities.
• They know the work going on and are in the best position to provide accurate
information and project plans and progress.
Reporting
Budget
Schedule
Risks
Problems
Progress
Project
management
Administration People
Finance Vacations
Compliance Absence
Procurement Work quality
Liaison Reviewing
Hiring
• The best way to develop software products is to use agile software engineering
methods that are geared to rapid product development and delivery.
• Agile methods are based around iterative development and the minimization of
overheads during the development process.