agile software development

48
 SE/Agile 1 Agile Software Development Alistair Cockburn Addison Wesley

Upload: shubhra-srivastava

Post on 15-Jul-2015

18 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 1/48

SE/Agile 1

Agile Software Development

Alistair Cockburn

Addison Wesley

Page 2: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 2/48

SE/Agile 2

Three Levels of Learning Learning new skills

 ± Following: ³one procedure that works´, ³at

least this thing works´ ± Detaching:´when does it break down?´ ³learn

limits of procedure´, ³adapt it´, ³when is itappropriate?´ Survey paper.

 ± Fluent:´irrelevant whether following a particular technique´, ́ knowledge has becomeintegrated´.

Page 3: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 3/48

SE/Agile 3

The Three Levels and

Methodology Methodology: a series of related methods

and techniques (Miriam-Webster)

Level 1: processes, techniques and

standards in detail. Detailed templates in

RUP servel level 1 audience.

Page 4: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 4/48

SE/Agile 4

Three Levels of Methodology Level 2/3: The Pragmatic Programmer:

identifies techniques that a practitioner uses.

A useful library of ideas but the beginner 

finds it lacking specific rules.

Avoid level mixup! It confuses.

Page 5: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 5/48

SE/Agile 5

Shu-Ha-Ri Three levels are known in other skill areas:

Aikido (self defense technique)

Shu: learn. Build technical foundation for 

the art. Single instructor.

Ha: detach. Understand meaning and

 purpose; not just repetitive practice.

Ri: transcend. Practitioner; original thoughts

Page 6: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 6/48

SE/Agile 6

A Cooperative Game of 

Invention and Communication A fruitful way to think about software

development.

Games used by mathematicians and

corporate strategists.

Kinds of games: zero-sum, positional,

competitive, cooperative, finite, «

Page 7: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 7/48

SE/Agile 7

Software Development Group game

Non-zero-sum: multiple winners and losers.

Cooperative

Goal-seeking

Finite

Page 8: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 8/48

SE/Agile 8

Infinite Games Infinite games: organizations, corporations

and countries, a person¶s profession.

Do well in one game to be well positioned

for the next one.

Page 9: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 9/48

SE/Agile 9

Software and Rock Climbing Best comparison partner 

Cooperative and goal seeking

 ± How well they climbed together 

 ± How much they enjoyed themselves

 ± Reach the top?

Load bearing ± Climbers must support their weight. Software

must run.

Page 10: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 10/48

SE/Agile 10

Software and Rock Climbing Team

Individuals with talent

Skill sensitive

Training

Tools Resource-limited: before nightfall or the

weather changes.

Page 11: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 11/48

SE/Agile 11

Software and Rock Climbing Plan

Improvised

Page 12: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 12/48

SE/Agile 12

A Game of Invention and

Communication Software development: group game which

is goal seeking, finite and cooperative

Team: sponsor, manager, usage specialists,

designers, testers and writers

Next game: maintenance, build an entirely

different system

Page 13: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 13/48

SE/Agile 13

Cooperative Game of Invention

and Communication Measure of quality as a team: how well they

cooperate and communicate during game.

What are the moves of the game:

 ± There is nothing in the game but people¶s ideas

and the communication of those ideas to their 

colleages (including the sponsor) and to thecomputer.

Page 14: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 14/48

SE/Agile 14

Emotions, wishes and thoughts The task facing the developers:

 ± They are working on a problem they don¶t fully

understand and that lives in emotions, wishes andthoughts and that changes as they proceed.

 ± They need to understand.

Problem space.

Imagine some mechanism in a viable technology space.

Express in an executable language which lacks many features

of expression to a system that is unforgiving of mistakes.

Page 15: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 15/48

SE/Agile 15

What is

software development? Software Development is a resource-

limited) cooperative game of invention and

communication. ± The primary goal of the game is to deliver 

useful, working software.

 ± The secondary goal of the game is to set up for 

the next game. The next game may be to alter or replace the system or to create a neighboringsystem.

 Not many people have articulated this before

Page 16: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 16/48

SE/Agile 16

Software and Engineering Considering software

development as a game with

moves is profitable. ± Gives us a way to make meaningful

decisions on a project.

In contrast: speaking of software

development as engineering or model building does not help.

Page 17: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 17/48

SE/Agile 17

Engineering People mostly use engineering to create a

sense of guilt for not having done enough of 

something, without being clear of what that

something is.

Dictionary: The application of science and

mathematics by which the properties of matter and the sources of energy in nature

are made useful to man (Webster¶s Dic.).

Page 18: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 18/48

SE/Agile 18

What is ³doing engineering´ In my experience: involves creating a trade-

off solution in the face of conflicting

demands.

Also applies to software development.

Page 19: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 19/48

SE/Agile 19

Confusing act and outcome Outcome: The factory, which is run while

specific people watch carefully for 

variations in quantity and quality of the

items being manufactured.

Act: ill-defined creative process the

industrial engineer goes through to inventthe manufacturing plant.

Page 20: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 20/48

SE/Agile 20

More like Engineering? When people say: ³Make software

development more like engineering´ they

often mean, ³Make it more like running a

 plant, with statistical quality control´.

But: running the plant is not the act of doing

engineering.

Page 21: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 21/48

SE/Agile 21

Look up previous solutions The other part of ³doing engineering´

Civil engineers are not supposed to invent

new structures.

 ± Take soil samples and use the code books to

look for the simplest structure that handles the

required load over the given distance buildingon the soil at hand.

 ± Centuries of tabulation of known solutions

Page 22: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 22/48

SE/Agile 22

Fits marginally This only fits marginally the current state of 

software development

We are still in the stage where there iscompetition between designs.

Technologies are changing fast that few

code books exist Today there are more variations between

systems than there are commonalities.

Page 23: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 23/48

SE/Agile 23

Return Return to consider engineering as thinking

and making trade-offs.

Page 24: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 24/48

SE/Agile 24

Software and Model Building Ivar Jacobson: ³software development is

model building´

Leads to inappropriate project decisions

Page 25: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 25/48

SE/Agile 25

Interesting part not in models If software development were model

 building, then the valid measure of the

quality of the software or of thedevelopment process would be the quality

of the models (fidelity, completeness)

Page 26: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 26/48

SE/Agile 26

But successful project teams say The interesting part of what we want to

express doesn¶t get captured in those

models. The interesting part is what we sayto each other while drawing on the board.

We don¶t have time to create fancy or complete models

Paying attention to the models interferedwith developing the software

Page 27: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 27/48

SE/Agile 27

Sufficiency The work products of the team should be

measured for sufficiency with respect to

communicating with the target group.

It does not matter if incomplete, incorrect

syntax, « if they communicate sufficiently

to the recipients.

Page 28: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 28/48

SE/Agile 28

Modeling as team

communication Can be too much or too little.

How much modeling to do? Subject of this

 book.

Page 29: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 29/48

SE/Agile 29

Programmers as Communications

Specialists Game of communication: different light on

 programmers «

Stereotyped as noncommunicative individualswho like to sit in darkened rooms

High acceptance of programming in pairs «

Programmers thought they would not like it but

they like it! (Extreme Programming)

Page 30: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 30/48

SE/Agile 30

Game of invention So far not as a game of communication

Interest of programmers to discuss

 programming matters gets in the way of 

them discussing business matters with

sponsors, users and business experts.

Page 31: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 31/48

SE/Agile 31

Universities Can reverse the general characteristics by

creating software development curricula

that contain more communication-intensivecourses

Attracts different students (University of 

Aalborg, Denmark).

Page 32: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 32/48

SE/Agile 32

Gaming Faster  We should not expect orders of magnitude

improvement in program production.

As much as programming languages may

improve, programminvg will still be limited

 by our ability to think through the problem

and the solution.

Page 33: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 33/48

SE/Agile 33

Analogy Two other fields of thought expression

 ± Writing novels

 ± Writing laws: Lawyers won¶t get exponentially

faster at creating contracts and laws!

Page 34: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 34/48

SE/Agile 34

Diminishing Returns Because a software development project is

resource limited, spending extra to make an

intermediate work product better than itneeds to be for its purpose is wasteful.

Page 35: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 35/48

SE/Agile 35

What is

software development? Software Development is a resource-

limited) cooperative game of invention and

communication. ± The primary goal of the game is to deliver 

useful, working software.

 ± The secondary goal of the game is to set up for 

the next game. The next game may be to alter or replace the system or to create a neighboringsystem.  Not many people have articulated this before

Page 36: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 36/48

SE/Agile 36

Peter Naur 

Programming as Theory Building

From Computing: A Human Activity(1992, ACM Press)

Page 37: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 37/48

SE/Agile 37

What goes on in software

development? Intro. Most accurate account

Quality is related to the match between the

theory of the problem and the theory of the

solution.

The designer¶s job is not to pass along the

design but the theories that drive the design.

Page 38: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 38/48

SE/Agile 38

What is programming Should be regarded as an activity by which

the programmers form or achieve a certain

kind of insight, a theory, of the matters athand.

Not as a production of a program and other 

texts.

Page 39: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 39/48

SE/Agile 39

Programming and the

Programmer¶s Knowledge Programming = the whole activity of design and

implementation

Programming = building up knowledge What kind of knowledge?

A theory: a person who has or posses a theory

knows how to do certain things and can support

the actual doing with explanations, justifications

and answers to queries.

Page 40: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 40/48

SE/Agile 40

Theory transcends documentation

in at least 3 essential ways How are affairs of the world mapped into the

 program text? For any aspect of the world the

 programmer can state its manner of mapping intothe program text. [AOSD]

Can support the program text with some

 justification.

Is able to respond constructively to any demand

for a modification. Similarity of new demand to

similarities already in the system.

Page 41: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 41/48

SE/Agile 41

Problems and Costs of Program

Modifications Cost savings by modifying existing program

rather starting from scratch.

Cheaper? Not supported by other 

complicated man-made constructions:

 bridges, buildings, etc. Often demolish and

rebuild is most economical. Program modification is just text editing?

Page 42: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 42/48

SE/Agile 42

Program flexibility Build into the program operation facilities

that are not immediately demanded.

May be expensive.

 ± AOSD:

extend program by addition not modification.

Works best if program is very systematicallyorganized (easier to write pointcuts).

Page 43: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 43/48

SE/Agile 43

Similarity Similarity:

 ± Requirements for existing solution

 ± Requirements for new demands

To see the similarities we need to understand the

³theory´ behind the existing solution.

Person having the theory must already be prepared

to respond to questions that give rise to program

modifications (theory stays the same).

Page 44: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 44/48

SE/Agile 44

Decay Decay of program text if people are making

modifications without understanding theory

 behind the program.

We want theory conforming modifications

to the program text. Otherwise we get

unintegrated patches.

Page 45: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 45/48

SE/Agile 45

Life cycle of a program Birth: building of theory.

Life: programmer team possessing theory remains

in active control of the program. Death: programmer team is dissolved.

Revival: rebuilding of its theory by a new programmer team.

New programmers need to work in close contactwith programmers who have theory.

Start from scratch?

Page 46: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 46/48

SE/Agile 46

Method and theory building Method

 ± Set of work rules

 ± Which notations/languages

 ± Documents to produce

Theory cannot be expressed

 ± No right method

Contradiction?

Page 47: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 47/48

SE/Agile 47

Software Development Should be based on scientific manners?

 ± Are scientific methods helpful to scientists? Debatable.

 ± Not contradicted by such works as Polya¶s on problemsolving (How to solve it and Patterns of Plausible

Inference).

Does not present a method on how to proceed.

A collection of suggestions aiming at stimulating the mental

activity of the problem solver.

Highly relevant to programming.

Page 48: Agile Software Development

5/13/2018 Agile Software Development - slidepdf.com

http://slidepdf.com/reader/full/agile-software-development-55a7520668050 48/48

SE/Agile 48

Dismissal of method Have methods been successful?

Controlled experiments would be very

expensive.

AOSD

 ± Is it a method? Yes, e.g. combined with

Extreme Programming.

 ± Do we need a controlled experiment? No!