16
Agile Software Development

Agile Software Development

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Agile Software Development

Agile Software Development

Page 2: Agile Software Development

Traditional Software Development

1. Initiation (RFP) 2. Feasibility study

• Technical – can we build it?• Economic – should we build it?• Operational – if we build it, will it be used?• Schedule – will it be ready in time?

3. Requirements definition4. Specifications5. Project plan

Page 3: Agile Software Development

Traditional Software Development

6. Logical design (external view)7. Physical design (internal view)8. Coding (or code acquisition)9. Testing10. MaintenanceSDLC – Investigate, Analyze, Design, Implement

and Maintain

Page 4: Agile Software Development

Plan Driven Approach

• Roots may be traced to engineering concepts• Standards and well-defined processes –

process discipline• Adherence to processes• Completeness of documentation• Traceability across requirements, design, and

code is mandatory

Page 5: Agile Software Development

Plan driven Approach

• Processes are defined, standardized, and incrementally improved

• Standardization allows for comparisons and repeatability

• Training, getting information, and estimating are supposedly easier

• Less need for retraining• People can be replaced! Loss of key personnel

does not doom a project!

Page 6: Agile Software Development

Advantages• Easy to understand, easy to use• Provides structure to inexperienced staff• Milestones are well understood• Sets requirements stability• Good for management control (plan, staff, track)• Aim for predictability and stability• Plan extensively at the outset to anticipate

changes/variations• They try to tame change• Emphasis on quality of software and predictability• Exemplified by the Capability Maturity Model

Page 7: Agile Software Development

Capability Maturity Model

• A bench-mark for measuring the maturity of an organization’s software process• CMM defines 5 levels of process

maturity based on certain Key Process Areas (KPA)• SEI rates organization on their

maturity levels.

Page 8: Agile Software Development

Level Focus Key Process Area

5 – Optimizing (1%) Continual process improvement

Defect Prevention, Technology Change Management, Process Change Management

4 – Managed (5%) Product and process qualityQuantitative process and software quality management

3 – Defined (10%) Engineering processes and organizational support

Organizational process focus, organizational process definition, training program, integrated software management, software product engineering, inter-group coordination, peer reviews

2 – Repeatable (15%) Project management processes

Requirements management, software project planning, sw project tracking & oversight, sw subcontract management,

1 – Initial (a little less than 70%) Competent people & heroics - ad hoc

Capability Maturity Model

Page 9: Agile Software Development

Disadvantages

However• All requirements must be known upfront• Deliverables created for each phase are

considered frozen – inhibits flexibility• Can give a false impression of progress• Does not reflect problem-solving nature of

software development – iterations of phases• Integration is one big bang at the end• Little opportunity for customer to preview the

system (until it may be too late)

Page 10: Agile Software Development

Challenges

Standish Group: > 50% of software projects fail to meet their productivity, cost or functionality goals

• Changing requirements (25%?)• User involvement (13%?)• Executive Support (7.5%?)• Lack of skills/technical incompetence (7%)• Lack of resources (6.4%)• Unrealistic expectations (6%?)• Unclear objectives (5.3%)• Unrealistic deadlines/time-frames (4.3%)

Page 11: Agile Software Development

Discipline vs Agility

• Discipline creates well-organized memories, history, and experience

• Agility makes use of memory and history to adapt, react, and to be opportunistic

• What do you think is more important? Why?

Page 12: Agile Software Development

Agile Manifesto

Value:• Individuals and their interactions over

processes and tools• Working software over comprehensive

documentation• Customer collaboration over contract

negotiation• Responding to change over following a plan

Page 13: Agile Software Development

Agile Methods• Agile software development is a conceptual framework for

undertaking software engineering projects. • Most agile methods attempt to minimize risk by developing

software in short timeboxes, called iterations, which may typically last one to four weeks.

• Each iteration is like a miniature software project of its own, and includes all of the tasks necessary to release the mini-increment of new functionality.

• Agile methods emphasize realtime communication, preferably face-to-face, over written documents.

• Agile methods rely on the close collaboration of activity engaged individuals with ordinary talents and has the ability to flexibly schedule the implementation of functionality, responding to changing business needs.

Page 14: Agile Software Development

Examples

• Extreme Programming ( X P)• Adaptive Software Development• Crystal• Scrum• Feature-Driven Development

Page 15: Agile Software Development

Extreme programming Practices1. Planning game – determine scope of the next release by

combining business priorities and technical estimates2. Small releases – put a simple system into production,

then release new versions in very short cycle3. Metaphor – all development is guided by a simple shared

story of how the whole system works4. Simple design – system is designed as simply as possible

(extra complexity removed as soon as found)5. Testing – programmers continuously write unit tests;

customers write tests for features6. Refactoring – programmers continuously restructure the

system without changing its behavior to remove duplication and simplify

Page 16: Agile Software Development

Extreme programming Practices7. Pair-programming -- all production code is written

with two programmers at one machine8. Collective ownership – anyone can change any code

anywhere in the system at any time.9. Continuous integration – integrate and build the

system many times a day – every time a task is completed.

10. 40-hour week – work no more than 40 hours a week as a rule

11. On-site customer – a user is on the team and available full-time to answer questions

12. Coding standards – programmers write all code in accordance with rules emphasizing communication through the code