Skip to content

Agile Software Development

  • Agile Methods
  • Plan-driven and agile development
  • Extreme Programming (XP)
  • Refactoring
  • Test First development
  • Pair programming
  • Scrum
  • Scale agile methods

Agile

Agile philosphy

  • break the problem into many little problems and deal with them seperatly

Rapid Development

  • now the most important requirement for software systems

Agile methods

  • Distatisfaction with overheads involved in software design in 80s and 90s
    • focus on code rather design

Agile manifesto (IMPORTANT)

That is while there is a vlaue in items on the rightm we value the items on the left more:

  • Indivuals and interations over processess and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

Question, which of the following is NOT apart of the manifestio (will take one of the 4 and flip them

Princple of agile methods

  • customer involvment: Customers should be closly involved throught development)
  • Incremental delivery (sprints)
  • People not process
  • Embrance change
  • maintain simplicity

Story (like a requirement)

Plan driven and agile development

Agile development == Light weight Approach

Waterfall Development == heavy weight approach

3 Agile Methodologies

  • XP
  • Scrum
  • Kamban

Extreme programming (XP)

  • Takes extreme approach to iterative dev.
    • New versions may be built several times per day
    • increments are delivered to customers every 2 weeks
    • All tests Must run for every build and build is only accepted if tests run successfully

XP practices

  • Incremental Planning
  • small releases
  • simple design
  • Test-first development (write tests then CODE)
  • Refactoring: (fixing up the code to be better at the end, continuous optimization)
  • Pair programming (checking each others work and providing the support to always do a good job)
  • Collective ownership
  • Continuous Integration: A-> AB-> ABC
  • Sustainable Pace: Large amount of overtime is not considered acceptable, as net effect is often to reduce code quality and medium term productivity
  • On-site customer: Customer should be available full time to use (not the best scrum does this differently)

Scrum

Exactly like XP, but 2 issues solved

  • No onsight customer
  • 2-4 week delieverables to customer

3 phrases in Scrum

  • Outline planning: Initial phase is an outline planning where you establish the general objctives for project and design
  • Sprint Series: This is folowed by a series of sprint cycles
  • Closure: The project closure phase wraps up the project

(can be shown as a diagram seen in the slides)

Sprint Cycle

  • Sprints are fixed length, normally 2-4 weeks. They correspond to the development.
    • 2 weeks for normal, 4 weeks for larger parts

Teamwork in scrum

Scrum Master:

  • is a facilitator who arranges daily meetings, tracks teh backlog of work to be done, records decisions, measures progress against backlog and communicates with customers and managmement outside of the team.
  • Ideal team size 7 +- 2
  • The whole team attends short daily meetings where all team members share info, describe progress since the last meetings, problems that have arisen (Called a DSM daily srum meetings)

Daily Standup(scrum but standup is better) Meeting DSM

  • have to standup and have a 10-15 meetings quick

Scaling Agile MEthods

  • Agile methods have proved to be successful for small and medium sized projects
  • It is sometimes argued that the success of these methods comes because of improved communications
  • Can this be scaled up?

Sclaing out and Scaling Up (IMPORTANTTT)

  • Scaling up: Concerned with using agile methods for dev. large software systems that cannot be dev. by a small team.
  • Scaling out: concerned with how agile methods can be introduced across a large organization with many years of software devlopment experience.
  • When scaling agile methods it is essential to maintain agile fundamentals
    • Flexible palnning, frequent system releases, continuous integrationm test driven dev. and good team comm.

Scaling out: convincing people to use it in large companies