Fabio Casati 1. Learning objectives What is a software development process Why we need it Different...

41
Fabio Casati 1

Transcript of Fabio Casati 1. Learning objectives What is a software development process Why we need it Different...

Page 1: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

Fabio Casati

1

Page 2: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

Learning objectivesWhat is a software development processWhy we need itDifferent process types

waterfallSpiralRUPAgile methods (XP, Scrum, Crystal)Open source development

Understand basic principles, benefits, limitations, and applicability of each

2

Page 3: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

Software process modelAttempt to organize the software lifecycle

by defining activities involved in software production order of activities and their relationships

Goals of a software dev processstandardization, predictability (?), productivity,

high product quality, ability to plan (?) time and budget requirements

Enable the consistent delivery of quality products and solutions

3

Page 4: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

A waterfall modelfeasibility

Requirements

Design

Coding

Test/Fix

Deployment

Maintenance

Page 5: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

Waterfall with feedbackfeasibility

Requirements

Design

Coding

Test/Fix

Deployment

Maintenance

Page 6: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

Critical evaluation of the waterfall model+sw process subject to discipline, planning, and

management+postpone implementation to after understanding

objectives– Assumes you understand objectives before

implementation – linear, rigid, monolithic

– Assumes requirements are clear and do not change– Assumes perfect execution of all phases– Assumes underlying technology does not change

during the process (or that we do not capture the benefits of new products, e.g. a new app server )

6

Page 7: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

Incremental and Iterative modelsIncremental: Build and deliver in increments –

possibly build one part at a time, integrate progressivelyOpposite of big bang integrationNot necessarily build the whole system and improve

Iterative: go through improvement cycles In practice, terms used together, or mixed. Benefits:

Deliver early (based on what is needed, and what can be done)

Get feedbackRevise goals and plan

Many variants available: "do it twice" (F. Brooks, 1995), evolutionary prototype, “extreme” variants

Some mix of waterfall and evolutionary is commonly used

7

Page 8: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

8

Spiral modelB. Boehm, 1988(simplified)

Page 9: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

9

Define goals, alternatives, constraints

eval alternatives, resolve risks

Develop - next iteration

Plan

Page 10: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

Rational Unified ProcessDeveloped at rational software, late 80s,

90sDevelopment of an OO systemUses the UML notation throughout the

processSupports an iterative and incremental

processDecomposes a large process into controlled

iterations (mini projects)

10

Page 11: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

Six principles1. Adapt the process2. Balance stakeholder priorities3. Collaborate across teams4. Demonstrate value iteratively5. Elevate the level of abstraction6. Focus continuously on quality

11

Page 12: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

12

Objective milestone

Agreements on scope, estimates. Main use cases.

Operational capability milestone

Iterations of development. Generates release 1

Architecture milestone

Most use cases, dev plan, architecture, prototype

Product release milestonetraning, beta testing, depolyment

Page 13: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

13

Page 14: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

14

Page 15: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

The manifesto: “we value…Individuals and interactions over processes

and toolsWorking software over comprehensive

documentationCustomer collaboration over contract

negotiationResponding to change over following a plan

http://agilemanifesto.org/

15

Page 16: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

The Agile [email protected]

July 2008

© ThoughtWorks 2008

Page 17: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

17

Page 18: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

18

Page 19: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

19

Page 20: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

20

Page 21: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

21

Page 22: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

Manifesto: the principles (1-6)Our highest priority is to satisfy the customer through early and

continuous delivery of valuable software.Welcome changing requirements, even late in development. Agile

processes harness change for the customer's competitive advantage.

Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

Business people and developers must work together daily throughout the project.

Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

22

Page 23: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

Manifesto: the principles (7-12)Working software is the primary measure of progress.Agile processes promote sustainable development. The

sponsors, developers, and users should be able to maintain a constant pace indefinitely.

Continuous attention to technical excellence and good design enhances agility.

Simplicity --the art of maximizing the amount of work not done-- is essential.

The best architectures, requirements, and designs emerge from self-organizing teams.

At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

23

Page 24: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

Iterations

Common Agile Practices

© ThoughtWorks 2008

Release

UserStories

UserStories

UserStories

UserStories

UserStories

UserStories

UserStories

UserStories

Iterations Iterations

Page 25: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

25

Page 26: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

26

stories

Exploration

storiesstoriesstories

Planning

Priorities,

Effort estimates

Iterations to release

Analysis, design, implementation, unit

test

testing Collective codebase

Page 27: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

XP PrinciplesTest-driven, continuous integration (see

test cases) - tests firstRefactoringCustomer on sitePair programming (code+tests)Small releasesSimplicityCollective ownershipNo overtime

27

Page 28: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

SCRUM

28

Page 29: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

Scrum

29

Page 30: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

PreparationBusiness case

show it is makes sense for your companyProject vision

Short doc that describes goalsInitial project backlog

All reqs, even bold or strange ones. Put em there Anybody contributes. Owner prioritizes

Initial Release Plan And effort estimate

Stakeholder buy-inAssemble team, and logistics

30

Page 31: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

31

Page 32: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

Scrum rolesOwner

ROI, scope

Team~7 self-organized

members

Scrum masterProtect team, manage

process, call meetings

32

Page 33: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

Scrum process

33

Page 34: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

Scrum daily meetingEach Team member should respond to the

following questions:What have you done?What will you do? What impedes you from performing your work as

effectively as possible?

Team members should not digress. The ScrumMaster is responsible for moving the meeting along briskly from person to person.

Team members should address the Team, not the master

Chickens can attend, not talk.34

Page 35: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

Sprint rulesNo one outside the Team should provide directionThe Team commits to deliver Backlog items during

the Planning meeting. No changes from outside. If the Sprint proves to be not viable, the

ScrumMaster can modify or terminate the Sprint Team members have admin responsibilities

attend the Daily Scrum Meetingkeep the status of Sprint Backlog items up-to-date, e.g.

estimated hours remaining. If Team members report the same item more than

one day, they need to decompose the tasksThe Team must conform to existing standards

35

Page 36: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

Open source development processOpen/collaborative development vs open

sourceCollaboration on everything, including

requirements definitionBased on free will contributions

Essentially made possible by:The WebSoft eng tools (collaboration, versioning)Rigorous testing

36

Page 37: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

Principles (Karl Fogel)Participants are people, not companiesMake it rewarding to do things rightMake it easy to do things rightMake decisions in publicDocument the cultureDon't work – amplify other people's workNo obstacles: act now, audit later

37

Page 38: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

REWARD

I N V E S T M E N T

Step Function = High-Barrier Community

Page 39: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

REWARD

I N V E S T M E N T

Linear Function = Low-Barrier Community

Page 40: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

Up Next: CMMI for DevelopmentMaturity levels for development processs

40

Page 41: Fabio Casati 1. Learning objectives What is a software development process Why we need it Different process types waterfall Spiral RUP Agile methods (XP,

References Agile overview: “Agile software development methods -

review and analysis”http://www.inf.vtt.fi/pdf/publications/2002/P478.pdf

XP: http://advisor.com/doc/13571RUP: reference above, the book, or the wikipedia article is

well done http://en.wikipedia.org/wiki/Rational_Unified_Process

Spiral: original article http://www.sce.carleton.ca/faculty/ajila/4106-5006/Spiral%20Model%20Boehm.pdf

Scrum: http://scrumforteamsystem.com/ProcessGuidance/ProcessGuidance.html

Open source: http://producingoss.com/41