iterative development and agile...

35
Iterative development and agile methods Maurício Aniche [email protected] @mauricioaniche Delft University of Technology, 2019

Upload: others

Post on 13-Jul-2020

30 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

Iterative development and agile methods

Maurício [email protected]

@mauricioanicheDelft University of Technology, 2019

Page 2: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

Requirements

Design

Implementation

Testing

Deployment

The “waterfall” method

Page 3: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

Minimizing risks

• The goal of waterfall was to minimize risks.• It totally makes sense. Waterfall seems systematic and thorough.• You may (optionally) read the paper: Royce, Winston. Managing the

Development of Large Software Systems, 1970.• Interestingly, the word “waterfall” does not appear in the paper…

Page 4: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

Requirements

Design

Implementation

Testing

Deployment

What problems do you see?

Pair up and write down at least three consequences of the waterfall process

“Because X happens in that moment of the process, we may expect Y to happen”

Page 5: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

Requirements

Design

Implementation

Testing

Deployment

• Hard to elicit all the requirements from the very beginning.

• Requirements change often (because the real world changes fast)

• Users might not really know precisely “what they need”.

Page 6: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

Requirements

Design

Implementation

Testing

Deployment

• Hard to decide which architecture to implement.

• Under- and over-engineering may happen.

Page 7: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

Requirements

Design

Implementation

Testing

Deployment

• In practice, this phase often starts when the project is “already late”.

• (No working software so far)

Page 8: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

Requirements

Design

Implementation

Testing

Deployment

• What’s testing? :/ • Often too expensive• In practice, huge loop

between testing and bug fixing.

Page 9: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

Requirements

Design

Implementation

Testing

Deployment

• First time your customer has a real ROI.

• The cost of change here is high.

Page 10: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

How can we mitigate these

problems?

Your task:1. Pair up with a colleague.2. You should create a new

development process that mitigates the problems we just discussed.

3. You should keep all the “boxes” from waterfall (requirements, design, implementation, testing, deployment).

4. You can change their order, frequency, and when they happen.

5. You can add new “boxes”, if needed.

Page 11: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop
Page 12: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

Iterative and incremental development

Page 13: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

Iterative and incremental development

Iterative!

Page 14: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

Iterative and incremental development

Incremental!

Page 15: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

A flower, developed in an incremental way

Page 16: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

Incremental and iterative development process• Iterative: we develop software through repeated iterations (cycles).• Incremental: we develop software in small portions at a time.

• IID enables: • software development teams to learn during the process.• Embrace changes

• You may (optionally) read "Iterative and Increment Development: A Brief History", by Larman and Basili, Computer, 36(6), 2003.

Page 17: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

(Rational) Unified Process

Page 18: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

Agile Manifesto (2001)

• "I'd like to convene a small (two day) conference in the January toFebruary 2001 timeframe here in Chicago. The purpose of thisconference is to get all the lightweight method leaders in one room.All of you are invited; and I'd be interested to know who else I shouldapproach.” – Robert Martin

• The Agile Manifesto came.• Read the full story: http://agilemanifesto.org/history.html

Page 19: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

https://insights.stackoverflow.com/survey/2018/

Page 20: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

Individuals and interactionsover

processes and tools

1

Page 21: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

Working softwareover

comprehensive documentation

2

Page 22: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

Customer collaborationover

contract negotiation

3

Page 23: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

Responding to changeover

following a plan

4

Page 24: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

Principles behind the agile manifesto

• 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.

Page 25: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

Principles behind the agile manifesto

• 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.

Page 26: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

Principles behind the agile manifesto

• 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.

Page 27: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

Principles behind the agile manifesto

• 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.

Page 28: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

An overview of an agile methodology

Page 29: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

Do you think agile methodologies always fit well?

Page 30: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

Evidences?• Strong (anecdotal) evidence that agile methodologies work.

• Adoption can take time and effort (S30).• Better communication with the customer (S29, S12, S4).• Customer satisfaction (S10, S17), but not easy for them to adapt (S19, S20).• Developers (S18, S2) and students (S1, S22) enjoy it.• More productive (average of 42% increase, S7, S10, S14, S32), better quality (S14,

S10)• “With respect to the quality of the studies, methods were not, in general,

described well; issues of bias, validity, and reliability were not always addressed”.

• 25 out of the 33 primary studies did not have a recruitment strategy that seemed appropriate.

• 23 of the studies did not use other groups or baselines with which to compare their findings.

Dybå, Tore, and Torgeir Dingsøyr. "Empirical studies of agile software development: A systematic review." Information and software technology 50.9-10 (2008): 833-859.

Page 31: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

To think: can we be agile without

technical practices?

Page 32: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

To think: can we be agile without

technical practices? • Pair programming• Test-Driven Development• Continuous Integration• Refactoring• … Extreme Programming (XP)

are very important if you aim to be agile! (we’ll get there!)

Page 33: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

Curious?

• Research for: • Extreme programming.• Lean software development (future lecture).• Scrum (future lecture).• the “DevOps” movement.

Page 34: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

License

• You can use and share any of my material (lecture slides, website).• You always have to give credits to the original author.• You agree not to sell it or make profit in any way with this.

• Material that I refer has its own license. Please check it out.

Page 35: Iterative development and agile methodsse.ewi.tudelft.nl/ti3115tu-2019/resources/02-iterative-development.pdf · Incremental and iterative development process •Iterative: we develop

Images in this presentation

• Female engineer by GDJ: https://openclipart.org/detail/230143/female-engineer-9

• Iterative model, agile project management, by Wikipedia: https://en.wikipedia.org/wiki/Iterative_and_incremental_developmentFlowers: https://openclipart.org/detail/236026/purple-flower-with-smile, https://openclipart.org/detail/146851/abstract-flower, https://openclipart.org/detail/191156/flower-4-petal-heart-template