agile by suchenfz

VIEWS: 23 PAGES: 24

									            Agile Development Processes


                      Moving fast without falling…




AU Computer Science          Henrik Bærbak Christensen   1
                                    Learning Objectives

   Introduce terminology
    – About development process activities
   Introduce values in agile methods
    – Exemplify using Extreme Programming
   Comparison to waterfall model




AU Computer Science   Henrik Bærbak Christensen       2
                                  Development Activities

   Any development of software contain a set of
   activities with a special focus
    – Requirements
         • Collect user‟s functional and architectural specifications and
           make it communicable
    – Design
         • Divide the „whole‟ into manageable units of functionality and
           make it communicable
    – Realization
         • Implement the units, implement their interaction/protocol




AU Computer Science        Henrik Bærbak Christensen                        3
                                 Development Activities

   (continued)
    – Testing/Quality Assurance
         • Ensure product conforms with specifications


    – Deployment
         • Ensure product executes correctly at customer‟s site


    – Maintenance
         • Ensure product is corrected and enhanced




AU Computer Science       Henrik Bærbak Christensen               4
                                                  Exercise

   How are these activities organized in your
   company?



   How are these activities organized in a typical
   programming course teaching context?




AU Computer Science   Henrik Bærbak Christensen          5
                                        The Waterfall model

   Two observations has lead to the waterfall
   model.

    – There is a natural ordering of these activities
         • You cannot start by deploying 


    – Boehm: Fixing a misunderstood requirement is much
      cheaper early on than later on in the life cycle


   Result: Waterfall model
    – (actually never described, only criticized )
AU Computer Science       Henrik Bærbak Christensen       6
                                        The Waterfall model

   Waterfall model: A phase model




   Analysis:
    – Complete one phase before the next…
    – Analysis tar pit
         • Fear of getting requirements wrong extends the phase
         • Fear of getting design wrong extends the phase

AU Computer Science       Henrik Bærbak Christensen               7
                                              Agile Manifesto




AU Computer Science   Henrik Bærbak Christensen             8
                                                       A few notes

   Its written by practitioners
    – Programmers revolution against wrong dogmas?
   It is about values
    – These values are common to all agile methods
   It is about begin agile (da: væver)
    – It is about getting to the goal fast and safe
         • Which is different from fastest speed




AU Computer Science        Henrik Bærbak Christensen             9
                                              The four points

   Individuals and Interaction
    – People are not batteries nor cattle. People want to
      contribute and make a difference
   Working software
    – Once everything is said, software is defined by code
   Customer collaboration
    – Software changes its own requirements
   Responding to change
    – The plan made one year ago may not be the best
      route today. Development is like rock climbing

AU Computer Science   Henrik Bærbak Christensen              10
                      Extreme Programming


                An example of an agile process.
                      And the cradle of
                  Test-Driven Development.


AU Computer Science       Henrik Bærbak Christensen   11
                                 Beck’s ”Equation”

Beck explains why traditional development often
leads to products of low quality.

Beck suggests:
        Software product = f(p,t,s,q)
Parameters
–   p: price ≈ the number of staff on the project
–   t: time ≈ the time to the delivery deadline
–   s: scope ≈ the amount of functionality
–   q: quality ≈ the reliability (= ”works/no bugs”)

                                                       12
                           Beck’s ”Equation”

Software product = f(p,t,s,q)



                Question:
Which parameters are fixed by management?

                 Question:
  Which parameter is left for developers to
    tweak in order to adjust workload?

                                              13
                                The Usual Case

Software product = f(p,t,s,q)


                  Answer:
Which parameters are fixed by management?
            Price, Time, Scope
                  Answer:
 Which parameter is left for developers to
    tweak in order to adjust workload?
                 Quality 

                                             14
The Agile/XP Answer
                           Focus on parameter q

Agile methods‟ main new idea
       Projects fix [price, time, quality]
           Open parameter [scope]

Means
– Scope control important               Value should be pulled
   • On site customer / user feedback   into existence by
                                        demand, not pushed by
   • rapid release cycles
                                        implementation
– Quality control important
   • Testing & user feedback
   • Test-driven development

                                                           16
                                        Rapid release cycles

   Waterfall                                  XP




                1-3 years                               3 weeks /
                                                          Daily




AU Computer Science         Henrik Bærbak Christensen               17
                                        Core XP Practices

   Pair Programming
    – Roles: programmer and overseer
    – Collective code ownership (!= no ownership!)
    – Coding standards
   Automated testing
    – Test-driven development (to ensure tests are written)
    – Small releases (Scrum: Sprints)
    – Continuous integration (“nightly builds”)
   As such it is a process that is
    – Incremental: growing software instead of designing
    – Iterative: learning while doing
AU Computer Science   Henrik Bærbak Christensen            18
                                                  Summary

   Processes define how activities are controlled,
   ordered, and planned

   Agile processes
    – Manifesto: Interaction, working software, customers,
      responding to change
   XP
    – Speed while keeping reliability high
    – Core practices: pair programming, automated testing,
      …


AU Computer Science   Henrik Bærbak Christensen              19
                        Agile Learning


                      The idea of my book…




AU Computer Science      Henrik Bærbak Christensen   20
                                    The Learning Sprints

   Sprint:
    –   Short time frame
    –   Release of a product
    –   Product is self-contained (useful as it is)
    –   Product is step up (required for the next step)


   Each part of the book is a learning sprint




AU Computer Science     Henrik Bærbak Christensen         21
                                           The Book’s Parts

   1: Basic Terminology
    – Ensure we all speak the same language
   2: Programming Process
    – Get our TDD process in place
   3: First Design Pattern
    – The core problem that patterns set out to solve
   4: Variability Management
    – Formalizing the process to control variability
   5: Compositional Design
    – Formalizing the core techniques used in DP

AU Computer Science    Henrik Bærbak Christensen          22
                                          The Book’s Parts

   The last parts

   6: Design Pattern Catalog
    – A catalog


   7: Frameworks
    – Formalizing terminology in framework context


   8: Outlook
    –

AU Computer Science   Henrik Bærbak Christensen          23
                                                    The Courses

   ToolTech
    – Sprints
         • Basic terminology
         • Programming process
         • Outlook
   APF
    – Sprints
         • The rest…
   ProgProj
    – All of it…


AU Computer Science     Henrik Bærbak Christensen             24

								
To top