31

Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Agile Software Development

ENGI 5895: Software Design

Andrew Vardy

Faculty of Engineering & Applied Science

Memorial University of Newfoundland

January 10, 2011

Andrew Vardy Agile Soft. Dev.

Page 2: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Software FailuresFigures from �Why Software Fails� by Robert N. Charette, IEEE Spectrum, 2005.

Software is ubiquitous and is constantly growing in size andcomplexity:

Cell phones: 2 million LOC in 2005, perhaps 20 million in 2010

Cars: 100 million LOC predicted in GM cars by 2010

(LOC = Lines of Code)Large software projects have a high failure rate. Estimated cost forfailed software projects in the US: $60-70 Billion / year.Software developers spend 40-50% of their time on �avoidablerework� as opposed to �work that's done right the �rst time�.

Andrew Vardy Agile Soft. Dev.

Page 3: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Software FailuresFigures from �Why Software Fails� by Robert N. Charette, IEEE Spectrum, 2005.

Software is ubiquitous and is constantly growing in size andcomplexity:

Cell phones: 2 million LOC in 2005, perhaps 20 million in 2010

Cars: 100 million LOC predicted in GM cars by 2010

(LOC = Lines of Code)Large software projects have a high failure rate. Estimated cost forfailed software projects in the US: $60-70 Billion / year.Software developers spend 40-50% of their time on �avoidablerework� as opposed to �work that's done right the �rst time�.

Andrew Vardy Agile Soft. Dev.

Page 4: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Software FailuresFigures from �Why Software Fails� by Robert N. Charette, IEEE Spectrum, 2005.

Software is ubiquitous and is constantly growing in size andcomplexity:

Cell phones: 2 million LOC in 2005, perhaps 20 million in 2010

Cars: 100 million LOC predicted in GM cars by 2010

(LOC = Lines of Code)Large software projects have a high failure rate. Estimated cost forfailed software projects in the US: $60-70 Billion / year.Software developers spend 40-50% of their time on �avoidablerework� as opposed to �work that's done right the �rst time�.

Andrew Vardy Agile Soft. Dev.

Page 5: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Software FailuresFigures from �Why Software Fails� by Robert N. Charette, IEEE Spectrum, 2005.

Software is ubiquitous and is constantly growing in size andcomplexity:

Cell phones: 2 million LOC in 2005, perhaps 20 million in 2010

Cars: 100 million LOC predicted in GM cars by 2010

(LOC = Lines of Code)Large software projects have a high failure rate. Estimated cost forfailed software projects in the US: $60-70 Billion / year.Software developers spend 40-50% of their time on �avoidablerework� as opposed to �work that's done right the �rst time�.

Andrew Vardy Agile Soft. Dev.

Page 6: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Software FailuresFigures from �Why Software Fails� by Robert N. Charette, IEEE Spectrum, 2005.

Software is ubiquitous and is constantly growing in size andcomplexity:

Cell phones: 2 million LOC in 2005, perhaps 20 million in 2010

Cars: 100 million LOC predicted in GM cars by 2010

(LOC = Lines of Code)Large software projects have a high failure rate. Estimated cost forfailed software projects in the US: $60-70 Billion / year.Software developers spend 40-50% of their time on �avoidablerework� as opposed to �work that's done right the �rst time�.

Andrew Vardy Agile Soft. Dev.

Page 7: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Software FailuresFigures from �Why Software Fails� by Robert N. Charette, IEEE Spectrum, 2005.

Software is ubiquitous and is constantly growing in size andcomplexity:

Cell phones: 2 million LOC in 2005, perhaps 20 million in 2010

Cars: 100 million LOC predicted in GM cars by 2010

(LOC = Lines of Code)Large software projects have a high failure rate. Estimated cost forfailed software projects in the US: $60-70 Billion / year.Software developers spend 40-50% of their time on �avoidablerework� as opposed to �work that's done right the �rst time�.

Andrew Vardy Agile Soft. Dev.

Page 8: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

The Waterfall Process

To mitigate failure, software engineers and managers establishprocesses, with scheduled outputs (documents, code, testresults,...). The classic software development process is known asthe waterfall process:

From http://en.wikipedia.org/wiki/Waterfall_process

The idea is to complete each phase in sequence before moving ontothe next. Adv.: Encourages getting things right before moving on.

Andrew Vardy Agile Soft. Dev.

Page 9: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

The Waterfall Process

To mitigate failure, software engineers and managers establishprocesses, with scheduled outputs (documents, code, testresults,...). The classic software development process is known asthe waterfall process:

From http://en.wikipedia.org/wiki/Waterfall_process

The idea is to complete each phase in sequence before moving ontothe next. Adv.: Encourages getting things right before moving on.

Andrew Vardy Agile Soft. Dev.

Page 10: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

The Waterfall Process

To mitigate failure, software engineers and managers establishprocesses, with scheduled outputs (documents, code, testresults,...). The classic software development process is known asthe waterfall process:

From http://en.wikipedia.org/wiki/Waterfall_process

The idea is to complete each phase in sequence before moving ontothe next. Adv.: Encourages getting things right before moving on.

Andrew Vardy Agile Soft. Dev.

Page 11: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Problems with the Waterfall Process

The waterfall process requires reports, meetings, andevaluations at every stage. Scheduling and executing all of thisextra work is time-consuming.

The artefacts and constraints of this process are not su�cientto prevent errors, so more artefacts and constraints areimposed.

Sounds paradoxical but this is how organizations often behave!

As the development process becomes more and morecumbersome, the schedule slips.

The customer may wish to modify the requirements, or it maybe realized that the original requirements were poorly speci�ed.

Leads to a massive cascade of changes through all subsequent

stages of the process!

Andrew Vardy Agile Soft. Dev.

Page 12: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Problems with the Waterfall Process

The waterfall process requires reports, meetings, andevaluations at every stage. Scheduling and executing all of thisextra work is time-consuming.

The artefacts and constraints of this process are not su�cientto prevent errors, so more artefacts and constraints areimposed.

Sounds paradoxical but this is how organizations often behave!

As the development process becomes more and morecumbersome, the schedule slips.

The customer may wish to modify the requirements, or it maybe realized that the original requirements were poorly speci�ed.

Leads to a massive cascade of changes through all subsequent

stages of the process!

Andrew Vardy Agile Soft. Dev.

Page 13: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Problems with the Waterfall Process

The waterfall process requires reports, meetings, andevaluations at every stage. Scheduling and executing all of thisextra work is time-consuming.

The artefacts and constraints of this process are not su�cientto prevent errors, so more artefacts and constraints areimposed.

Sounds paradoxical but this is how organizations often behave!

As the development process becomes more and morecumbersome, the schedule slips.

The customer may wish to modify the requirements, or it maybe realized that the original requirements were poorly speci�ed.

Leads to a massive cascade of changes through all subsequent

stages of the process!

Andrew Vardy Agile Soft. Dev.

Page 14: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Problems with the Waterfall Process

The waterfall process requires reports, meetings, andevaluations at every stage. Scheduling and executing all of thisextra work is time-consuming.

The artefacts and constraints of this process are not su�cientto prevent errors, so more artefacts and constraints areimposed.

Sounds paradoxical but this is how organizations often behave!

As the development process becomes more and morecumbersome, the schedule slips.

The customer may wish to modify the requirements, or it maybe realized that the original requirements were poorly speci�ed.

Leads to a massive cascade of changes through all subsequent

stages of the process!

Andrew Vardy Agile Soft. Dev.

Page 15: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Problems with the Waterfall Process

The waterfall process requires reports, meetings, andevaluations at every stage. Scheduling and executing all of thisextra work is time-consuming.

The artefacts and constraints of this process are not su�cientto prevent errors, so more artefacts and constraints areimposed.

Sounds paradoxical but this is how organizations often behave!

As the development process becomes more and morecumbersome, the schedule slips.

The customer may wish to modify the requirements, or it maybe realized that the original requirements were poorly speci�ed.

Leads to a massive cascade of changes through all subsequent

stages of the process!

Andrew Vardy Agile Soft. Dev.

Page 16: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Problems with the Waterfall Process

The waterfall process requires reports, meetings, andevaluations at every stage. Scheduling and executing all of thisextra work is time-consuming.

The artefacts and constraints of this process are not su�cientto prevent errors, so more artefacts and constraints areimposed.

Sounds paradoxical but this is how organizations often behave!

As the development process becomes more and morecumbersome, the schedule slips.

The customer may wish to modify the requirements, or it maybe realized that the original requirements were poorly speci�ed.

Leads to a massive cascade of changes through all subsequent

stages of the process!

Andrew Vardy Agile Soft. Dev.

Page 17: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Agile Software Development

A set of values established by a group of industry experts in 2001to allow software teams to work quickly and respond to change:

Manifesto for Agile Software Development

We are uncovering better ways of developing software by doing itand helping others do it. Through this work we have come tovalue:

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

That is, while there is value in the items on the right, we value theitems on the left more.

Andrew Vardy Agile Soft. Dev.

Page 18: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Agile Software Development

A set of values established by a group of industry experts in 2001to allow software teams to work quickly and respond to change:

Manifesto for Agile Software Development

We are uncovering better ways of developing software by doing itand helping others do it. Through this work we have come tovalue:

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

That is, while there is value in the items on the right, we value theitems on the left more.

Andrew Vardy Agile Soft. Dev.

Page 19: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Agile Software Development

A set of values established by a group of industry experts in 2001to allow software teams to work quickly and respond to change:

Manifesto for Agile Software Development

We are uncovering better ways of developing software by doing itand helping others do it. Through this work we have come tovalue:

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

That is, while there is value in the items on the right, we value theitems on the left more.

Andrew Vardy Agile Soft. Dev.

Page 20: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Agile Software Development

A set of values established by a group of industry experts in 2001to allow software teams to work quickly and respond to change:

Manifesto for Agile Software Development

We are uncovering better ways of developing software by doing itand helping others do it. Through this work we have come tovalue:

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

That is, while there is value in the items on the right, we value theitems on the left more.

Andrew Vardy Agile Soft. Dev.

Page 21: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Agile Software Development

A set of values established by a group of industry experts in 2001to allow software teams to work quickly and respond to change:

Manifesto for Agile Software Development

We are uncovering better ways of developing software by doing itand helping others do it. Through this work we have come tovalue:

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

That is, while there is value in the items on the right, we value theitems on the left more.

Andrew Vardy Agile Soft. Dev.

Page 22: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Agile Software Development

A set of values established by a group of industry experts in 2001to allow software teams to work quickly and respond to change:

Manifesto for Agile Software Development

We are uncovering better ways of developing software by doing itand helping others do it. Through this work we have come tovalue:

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

That is, while there is value in the items on the right, we value theitems on the left more.

Andrew Vardy Agile Soft. Dev.

Page 23: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Agile Software Development

A set of values established by a group of industry experts in 2001to allow software teams to work quickly and respond to change:

Manifesto for Agile Software Development

We are uncovering better ways of developing software by doing itand helping others do it. Through this work we have come tovalue:

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

That is, while there is value in the items on the right, we value theitems on the left more.

Andrew Vardy Agile Soft. Dev.

Page 24: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Agile Software Development

A set of values established by a group of industry experts in 2001to allow software teams to work quickly and respond to change:

Manifesto for Agile Software Development

We are uncovering better ways of developing software by doing itand helping others do it. Through this work we have come tovalue:

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

That is, while there is value in the items on the right, we value theitems on the left more.

Andrew Vardy Agile Soft. Dev.

Page 25: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Individuals and interactions over processes and toolsSome advice from �Agile Software Development� by Robert. C. Martin (Bob)

Individuals and interactions:

A strong player is not necessarily an ace programmer. Astrong player may be an average programmer, butsomeone who works well with others. Working well withothers, communicating and interacting, is more importantthan raw programming talent. A team of averageprogrammers who communicate well are more likely tosucceed than a group of superstars who fail to interact asa team.

Tools:

My advice is to start small. Don't assume you'veoutgrown a tool until you've tried it and found you can'tuse it. [...] Before you commit to the top-shelf behemothdatabase system, try �at �les. Don't assume that biggerand better tools will automatically help you do better.Often they hinder more than help.

Page 26: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Individuals and interactions over processes and toolsSome advice from �Agile Software Development� by Robert. C. Martin (Bob)

Individuals and interactions:

A strong player is not necessarily an ace programmer. Astrong player may be an average programmer, butsomeone who works well with others. Working well withothers, communicating and interacting, is more importantthan raw programming talent. A team of averageprogrammers who communicate well are more likely tosucceed than a group of superstars who fail to interact asa team.

Tools:

My advice is to start small. Don't assume you'veoutgrown a tool until you've tried it and found you can'tuse it. [...] Before you commit to the top-shelf behemothdatabase system, try �at �les. Don't assume that biggerand better tools will automatically help you do better.Often they hinder more than help.

Page 27: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Working software over comprehensive documentation

Software without documentation is a disaster. However,too much documentation is worse than too little. Hugesoftware documents take a great deal of time to produceand even more time to keep in sync with the code. If theyare not kept in sync, then they turn into large,

complicated lies and become a signi�cant source ofmisdirection.[...]

It is always a good idea for the team to write andmaintain a rationale and structure document, but thatdocument needs to be short and salient. By �short� Imean one or two dozen pages at most. By �salient,� Imean it should discuss the overall design rationale, andonly the highest-level structures in the system.

Andrew Vardy Agile Soft. Dev.

Page 28: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Working software over comprehensive documentation

Software without documentation is a disaster. However,too much documentation is worse than too little. Hugesoftware documents take a great deal of time to produceand even more time to keep in sync with the code. If theyare not kept in sync, then they turn into large,

complicated lies and become a signi�cant source ofmisdirection.[...]

It is always a good idea for the team to write andmaintain a rationale and structure document, but thatdocument needs to be short and salient. By �short� Imean one or two dozen pages at most. By �salient,� Imean it should discuss the overall design rationale, andonly the highest-level structures in the system.

Andrew Vardy Agile Soft. Dev.

Page 29: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Customer collaboration over contract negotiation

Successful projects involve customer feedback on aregular and frequent basis. Rather than depending on acontract or a statement of work, the customer of thesoftware works closely with the development team,providing frequent feedback on their e�orts.

Andrew Vardy Agile Soft. Dev.

Page 30: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Responding to change over following a plan

It is tempting for novice managers to create a nice PERTor Gantt chart of the whole project and tape it to thewall. [...] What really happens is that the structure of thechart degrades. As the team gains knowledge about thesystem, and as the customers gain knowledge about theirneeds, certain tasks on the chart become unnecessary.[...] In short, the plan undergoes changes in shape, notjust changes in dates.

A better planning strategy is to make detailed plans forthe next two weeks, very rough plans for the next threemonths, and extremely crude plans beyond that.

Andrew Vardy Agile Soft. Dev.

Page 31: Agile Software DevelopmentAgile Software Development ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland January 10,

Responding to change over following a plan

It is tempting for novice managers to create a nice PERTor Gantt chart of the whole project and tape it to thewall. [...] What really happens is that the structure of thechart degrades. As the team gains knowledge about thesystem, and as the customers gain knowledge about theirneeds, certain tasks on the chart become unnecessary.[...] In short, the plan undergoes changes in shape, notjust changes in dates.

A better planning strategy is to make detailed plans forthe next two weeks, very rough plans for the next threemonths, and extremely crude plans beyond that.

Andrew Vardy Agile Soft. Dev.