CSCE 431 Lecture 2

From Notes
Jump to navigation Jump to search

« previous | Thursday, January 16, 2014 | next »


Process

Solving problems given a set of constraints (time, resources, etc.)

  • Code and run.
  • Code, run, fix defects and try again.
  • Design, code, run, fix defects and try again.
  • Design, code, test, fix, run.
  • Design, code, test, fix, document, run.
  • Specify, design, code, test, fix, document, run.
  • Requirements, specify, design, code, test, fix, document, run
  • "no-method" (hacking): sketch, code immediately, get feedback, repeat.

Which is best? (highly subjective)

Waterfall

Initial, flawed concept of one-way development with no feedback

Even with added feedback to predecessor phases, the entire process is still slow and long

Designed when computer time was scarce (had to sign up to use computer) and documentation was emphasized more than code.

Treats software development as a manufactuing process, not a problem-solving process.

Assumes it is possible to precisely and fully define all requirements up front (false)

V-Model

Each development phase has a corresponding test phase.

Still a sequential process


Evolutionary Model

Build a prototype and allow users to play with it before building the final version

Still mostly sequential

Spiral Model

A bunch of little waterfalls in a spiral:

Continuous assessment of risk with 6-month iterations

Overkill for small projects

Agile

Moderation:

  • Embraces modeling
  • Embraces documentation, but doesn't overdo it
  • Insists on planning, but recognizes limits in changing environments

Core emphasis: schedule

Typical practices:

  • test-first
  • regular refactoring
  • continuous integration
  • pair programming
  • shared code
  • coding standard
  • common work area
  • customer on site
  • user stories
  • "manager-servant"
  • timeboxing

Each iteration is a mini-project geared toward a stable updated release

Most requested features aren't even used: YAGNI

Agile Manifesto