Professional Documents
Culture Documents
SE1 Agile-2
SE1 Agile-2
Session 10
• Software processes
– Software process models
– Waterfall, iterative and incremental development,
integration and configuration, …
– Plan-driven approaches:
• each of these stages is planned in advance;
• not necessarily waterfall
– plan-driven, incremental development is possible;
• The core agile principles are set out in the Agile Manifesto
(http://agilemanifesto.org/)
Agile Manifesto
Customer Focus Satisfy the customer through early and continuous delivery
of useful software.
Embrace Change Welcome changing requirements, even late in
development.
Incremental Deliver working software frequently, in the shortest
Delivery possible timeframe.
Customer Work together with customers throughout a project
Involvement lifetime.
People over Build projects around motivated individuals. Build a
Process positive environment, based on trust.
Team Dynamics The most efficient and effective method of team
communication is regular face-to-face conversation.
• Continued >>
Agile Manifesto
• Product development
– where a software company is developing a small or medium-sized product for
sale
– Virtually all small software products and apps are now developed using an
agile approach
XP Practice Description
User stories and Functional requirements are created from user stories. Developers
task cards. break user stories into development tasks.
Refactoring Code is continually reworked and finessed, with the aim of keeping it
simple and maintainable.
Test-first An automated unit test framework is used to write tests for a new
development piece of functionality, before that functionality itself is implemented.
The customer helps write the tests.
Pair programming Developers work in pairs, checking each other’s work and providing
peer support.
User stories and task cards
XP – User Stories and Task Cards
• After several months and new versions, many codebases reach one
of the following states:
– rewritten: little remains from the original code.
– abandoned: The original code is thrown out and rewritten from scratch.
– … even if the code was initially reviewed and well-designed at the time of
commit, and even if changes are reviewed
• Why is this?
– Systems evolve to meet new needs and add new features
– If the code's structure does not evolve accordingly, it will "rot"
Code maintenance …
• Purposes:
– fixing bugs
– improving performance
– improving design
– adding features
• Test-first development
• All previous and new tests are run automatically when new
functionality is added
– ensuring that new functionality has not introduced errors (regression test)
Example
• Each task generates one or more unit tests that check the
implementation described in that task.
Test-first Development: Benefits
• Benefits • Drawbacks
– Supports the idea of collective • the model of operating may not
ownership and responsibility suit non-vocal individuals.
– Avoids knowledge silos
– Reduce the overall risks to a project • It costs more man-hours to produce
when team members leave the same features. Balance must be
– Acts as an informal review process. maintained between quality of code
and increased coding cost.
– Encourages refactoring
– Fosters peer learning • "watch the master"
– Encourages communication between
team members. Assists team
bonding.
Agile project management
Agile Planning
Task C Task D
Story Points
2 3 5 8 13 21 34 55
Task C Task A
Value Points
2 3 5 8 13 21 34 55
The Planning Game – Scheduling –
Estimation
• The bang for the buck (BFTB) score is then calculated:
BFTB = value points/story points
• The BFTB score represents the most value attainable in
the shortest time.
Task E
Story points: 21
Value Points: 55
BFTB = 55/13 = 2.62
The Planning Game – Scheduling –
Estimation
• Stories are then ranked in terms of BFTB score (high to low)
– This gives an initial sequence in which tasks should be performed
• However, tasks will normally need to be reordered again to account
for dependencies.
• Issues are:
– Contracts
– Software maintenance
– Team integrity
– Organisational culture
Wrap up
• Understand software development processes
– What are the stages I will go through?
– At each stage what I am goanna do?
– Keywords: requirements, UML, design, evaluation, testing
• Project management side of software engineering
– Project planning, risk management
– Quality control, configuration management