iterative development and agile...

Post on 13-Jul-2020

31 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Iterative development and agile methods

Maurício Anichem.f.aniche@tudelft.nl

@mauricioanicheDelft University of Technology, 2019

Requirements

Design

Implementation

Testing

Deployment

The “waterfall” method

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…

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”

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

Requirements

Design

Implementation

Testing

Deployment

• Hard to decide which architecture to implement.

• Under- and over-engineering may happen.

Requirements

Design

Implementation

Testing

Deployment

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

• (No working software so far)

Requirements

Design

Implementation

Testing

Deployment

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

between testing and bug fixing.

Requirements

Design

Implementation

Testing

Deployment

• First time your customer has a real ROI.

• The cost of change here is high.

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.

Iterative and incremental development

Iterative and incremental development

Iterative!

Iterative and incremental development

Incremental!

A flower, developed in an incremental way

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.

(Rational) Unified Process

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

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

Individuals and interactionsover

processes and tools

1

Working softwareover

comprehensive documentation

2

Customer collaborationover

contract negotiation

3

Responding to changeover

following a plan

4

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.

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.

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.

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.

An overview of an agile methodology

Do you think agile methodologies always fit well?

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.

To think: can we be agile without

technical practices?

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!)

Curious?

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

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.

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

top related