Iterative development and agile Incremental and iterative development process •Iterative: we develop

  • View
    1

  • Download
    0

Embed Size (px)

Text of Iterative development and agile Incremental and iterative development process •Iterative: we...

  • Iterative development and agile methods

    Maurício Aniche m.f.aniche@tudelft.nl

    @mauricioaniche Delft University of Technology, 2019

    mailto:m.f.aniche@tudelft.nl

  • 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 to February 2001 timeframe here in Chicago. The purpose of this conference 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 should approach.” – Robert Martin

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

    http://agilemanifesto.org/history.html

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

  • Individuals and interactions over

    processes and tools

    1

  • Working software over

    comprehensive documentation

    2

  • Customer collaboration over

    contract negotiation

    3

  • Responding to change over

    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_developme nt Flowers: 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

    https://openclipart.org/detail/230143/female-engineer-9 https://en.wikipedia.org/wiki/Iterative_and_incremental_development 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