Lecture2 - SW Processes and Agile
Lecture2 - SW Processes and Agile
Lecture2 - SW Processes and Agile
Topics covered
Software Process
Software process models
Process activities
Coping with change
Process improvement
Agile
Agile methods
Agile development techniques
Agile project management
Scaling agile methods
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.
The minimal useful set of functionality that provides business value is developed
Small releases first. Releases of the system are frequent and incrementally add functionality to
the first release.
Simple design Enough design is carried out to meet the current requirements and no more.
An automated unit test framework is used to write tests for a new piece of
Test-first development
functionality before that functionality itself is implemented.
All developers are expected to refactor the code continuously as soon as possible
Refactoring
code improvements are found. This keeps the code simple and maintainable.
The pairs of developers work on all areas of the system, so that no islands of
Collective ownership expertise develop and all the developers take responsibility for all of the code.
Anyone can change anything.
Continuous As soon as the work on a task is complete, it is integrated into the whole
integration system. After any such integration, all the unit tests in the system must pass.
Large amounts of overtime are not considered acceptable as the net effect is
Sustainable pace
often to reduce code quality and medium term productivity
Development team A self-organizing group of software developers, which should be no more than 7
people. They are responsible for developing the software and other essential project
documents.
Potentially shippable The software increment that is delivered from a sprint. The idea is that this should
product increment be ‘potentially shippable’ which means that it is in a finished state and no further
work, such as testing, is needed to incorporate it into the final product. In practice,
this is not always achievable.
Product backlog This is a list of ‘to do’ items which the Scrum team must tackle. They may be feature
definitions for the software, software requirements, user stories or descriptions of
supplementary tasks that are needed, such as architecture definition or user
documentation.
Product owner An individual (or possibly a small group) whose job is to identify product features or
requirements, prioritize these for development and continuously review the product
backlog to ensure that the project continues to meet critical business needs. The
Product Owner can be a customer but might also be a product manager in a
software company or other stakeholder representative.
05/12/2024 Chapter 2 Software Processes 65
Scrum terminology (b)
Scrum term Definition
Scrum A daily meeting of the Scrum team that reviews progress and prioritizes work to be
done that day. Ideally, this should be a short face-to-face meeting that includes the
whole team.
ScrumMaster The ScrumMaster is responsible for ensuring that the Scrum process is followed
and guides the team in the effective use of Scrum.
He or she is responsible for interfacing with the rest of the company and for
ensuring that the Scrum team is not diverted by outside interference. The Scrum
developers are adamant that the ScrumMaster should not be thought of as a project
manager. Others, however, may not always find it easy to see the difference.