agile development ultimate slides

36
Agile development Extreme Programming (XP) Abder-Rahman Ali M.S.Software Engineering DePaul CTI [email protected]

Upload: gilashikwa

Post on 29-Nov-2014

4.264 views

Category:

Technology


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Agile Development Ultimate Slides

Agile development

Extreme Programming (XP)

Abder-Rahman AliM.S.Software Engineering

DePaul [email protected]

Page 2: Agile Development Ultimate Slides

Just before we begin…

Agile development is a:

Software development process model.

.

Page 3: Agile Development Ultimate Slides

Software development Process

Task (1)

Task (2)

Task (3)

.

.

.

Task (n)

Goal HIGH QUALITY SOFTWARE

Action

Page 4: Agile Development Ultimate Slides

In other words…

Page 5: Agile Development Ultimate Slides

THE ROADMAP THAT YOU FOLLOW

Page 6: Agile Development Ultimate Slides

Software development Process Models

Page 7: Agile Development Ultimate Slides

Nature of SoftwareC

hange

Page 8: Agile Development Ultimate Slides

Change in what?

• Software being built (i.e. requirements).

• Team members.

• New technology appearing.

Page 9: Agile Development Ultimate Slides

Implications…

• Change is the HEART of software.

• Support for changes should be built in everything we do in software

Page 10: Agile Development Ultimate Slides

So, what is Agility?

A rapid and effective response to change.

Page 11: Agile Development Ultimate Slides

So, what is Agility?

Effective communication among stakeholders.

Page 12: Agile Development Ultimate Slides

So, what is Agility?

Drawing the customer into the team.

Page 13: Agile Development Ultimate Slides

This yields to…

Page 14: Agile Development Ultimate Slides

Rapid & incremental delivery of software.

Page 15: Agile Development Ultimate Slides

An Agile team…

A team that is able to appropriately to changes.

Page 16: Agile Development Ultimate Slides

Extreme Programming (XP)

PlanningDesign

Test

Coding

Release

The XP Process

The most widely used Agile process, and it is originally proposed by Kent Benck.

Page 17: Agile Development Ultimate Slides

Planning

Page 18: Agile Development Ultimate Slides

Design

KIS Principle

We just want the design to provide an implementation guidance for the story as it is written---nothing less, nothing more.

Don’t try to design extra functionality because you assume it will be required later.

Page 19: Agile Development Ultimate Slides

Design

CRC Cards

ClassResponsibility Collaborator

Page 20: Agile Development Ultimate Slides

Design

Spike Solutions

1- A design problem occurs.

2- Create a PROTOTYPE of that portion of the design.

3- Implement and evaluate the prototype.

Intent:

To lower risk when true implementation starts.

Page 21: Agile Development Ultimate Slides

Design

Refactoring

Changing a software system in such a way that:

1- The internal structure is improved.

2- The external behavior is not altered (not changed).

Design occurs CONTINUOUSLY as the system is constructed.

Also means:

Page 22: Agile Development Ultimate Slides

Testing

TEST FIRST

Page 23: Agile Development Ultimate Slides

Testing

Unit tests are written before the code.

Tests are run to ensure that our software fails.

A good test case is one that ensures that the software fails.

Test is rerun until it passes.

Page 24: Agile Development Ultimate Slides

Testing

All unit tests are executed daily.

This can raise warning flags early if things are going wrong.

Page 25: Agile Development Ultimate Slides

Testing

Acceptance tests (customer tests):

They are specified by the customer.

They focus on the overall system features and functionality that are visible and reviewable by the customer.

They are derived from user stories.

Page 26: Agile Development Ultimate Slides

Testing

Fixing small problems every few hours takes less time than fixing huge problems just before the deadline.

Fact:

Page 27: Agile Development Ultimate Slides

Coding

Pair P

rogramm

ing

Page 28: Agile Development Ultimate Slides

Coding

Two people work together at one computer to create code for a story.

This provides a mechanism for real-time problem solving and real-time quality assurance.

Keeps the developers focused on the problem at hand.

As pair programmers complete their work, the code they develop is integrated with the work of others.

Page 29: Agile Development Ultimate Slides

Coding

ROI

Page 30: Agile Development Ultimate Slides

Coding

ROI

Page 31: Agile Development Ultimate Slides

Release

Project Velocity

The number of stories that we performed in this release.

Page 32: Agile Development Ultimate Slides

When to use XP?

Dynamically changing requirements.

Risky projects.

Small development groups (up to 100).

Non-fixed price contract.

Page 33: Agile Development Ultimate Slides

XP Rules…

Planning• User Stories• Release Planning• Small Releases• Measure Project Velocity• Divide project to iterations• Iterations Planning• Move People around• Stand up meeting

Designing• Simplicity• CRC cards• Spike solutions• Refactor

Page 34: Agile Development Ultimate Slides

XP Rules…

Coding• Customer available• Code standards• Test-Driven• Pair Programming• Sequential change integration• Integrate often• Collective code ownership• Don’t optimize early• No overtime

Testing

• Unit test everything• All tests pass before release• Bug == new test• Acceptance tests

Page 35: Agile Development Ultimate Slides

We Must Ask Ourselves…

Do we need Agile or any other

Software Development Process

models in our lab?

Page 36: Agile Development Ultimate Slides

Questions?