Chapter III_Agile Software Development

Agile Method

Agile project management

Intro

Rapid development and delivery is the most important requirement

Specification, design and implementation are inter-leaved

System is developed as series of versions with stakeholders involved

User interfaces are often developed using an IDE

Focus on the code rather than design

Base on iterative approach to software development

Deliver working software quickly so that meet changing requirement

Reduce overheads in the software process

Manifesto page 10

Problems

Difficult to keep the interest of customers who are involved in the process

Team members maybe unsuited to the intense involvement

Prioritising changes can be difficult

Maintaining requires extra work

Contract maybe a problem

Problems may arise if original development team cannot maintain

Plan-driven & Agile development

Plan-driven

Output is to be produced at each of stages planned in advance

Not necessarily waterfall model

Iteration occurs within activities

Agile

Specification, design, implementation and testing are inter-leaved

Output from the development process are decided through a process of negotiation during software development process

Balancing

What type of system is being developed?

What is expected system lifetime?

What technologies are available to support system development?

How is the development team organized?

Are there cultural or organizational issues that affect the system development?

How good is the development team?

Agile requires better skill

Traditional engineering prefer plan-based

Long life prefer plan-driven

Complex system prefer plan-driven

Agile rely on good tools

Extreme programming

Intro

New version maybe built several times per day

Deliver to customer every 2 weeks

All tests must be run for every build

Principles

Small, frequent system releases

Full-time customer engagement with the team

Pair programming

Changes supported through regular system releases

Maintain simplicity through constant refactoring of code

practices

Incremental planning

Requirement are recorded on story cards and will be determined by time available and priority

Small release

Releases of the system are frequent and incrementally add fuctionality

Simple design

Enough design to meet current requirement

Test first development

Write tests for a new piece of functionality before it's implemented

Refactoring

Refactor the code continuously as soon as possible

Pair programming

Developers work in pairs, checking each other's work

Collective ownership

Developers work on all areas of the system and take responsibility for all of the code

Continuous integration

Integrate new work as soon as possible

Sustainable pace

On-site customer

Testing

Test-first development

Writing tests before code clarifies the requirements

Tests are written as program so that can be executed automatically

All previous and new tests are run automatically when new functionality is added

Customer Involvement

Customer help develop acceptance tests

Customer clarify what they need through their tests

Customer may not work full-time with the development team

Difficulties

Programmers take short cuts when writing tests

Some tests can be difficult to write incrementally

Test set may not provide complete coverage

Intro

Managers have to manage project so that the software is delivered on time

Agile project management require approach, which is adapted to incremental development

Scrum

Focus on managing iterative development rather than specific agile practices

3 phases

Initial phase

Out line planning

Establish the general objectives for the project and design software architecture

Sprint cycle

Each cycle develops an increment of the system

Project closure

Wrap up the project

Complete required documentation

Scrum process page 44

Benefits

The product is broken down into a set of manageable and understandable chunks

Unstable requirements do not hold up process

The whole team have visibility of everything

Improve team communication

On-time delivery and gain feedback

Trust between customer and developers is established