CSCE 315 Lecture 13

From Notes
Jump to navigation Jump to search

« previous | Monday, February 20, 2012 | next »


Iterative Software Development

Rather than produce a single product "all at once", build incrementally

  1. Gather Requirements
  2. Plan and Design
  3. Implement
  4. Release a version; test and debug
  5. Get feedback; restart process


Prototyping

Deliver early versions of the software that are not fully functional (or poor functionality)

Spiral Model

Start with basic requirements (center)

Create better and better prototype (spiraling out) until good enough

Freeze prototype as release


Cleanroom Development

Iterative process with very detailed evaluation

Similar to test-driven design.


Agile Development

Newer trend in software developmment (now a standard; less hype now)

Meant to contrast "heavytweight" programming methods:

  • changes quickly
  • responds to user feedback
  • lots of collaboration (smaller, co-located teams)
  • Good for small projects

A bunch of people with too much time on their hands (the "Agile Alliance") wrote a manifesto.

12 Principles:

  1. Satisfy customer through early and continuous delivery of valuable software
  2. Welcome changing requirements, even late in development. (better for competitive advantage)
  3. Deliver working software frequently (a couple weeks to a couple months)
  4. Business people and developers must work closely together
  5. Build projects around motivated individuals, giving htem the environment and support they need; trust them to get the job done
  6. Most efficient and effective method of conveying information is face-to-face conversation
  7. Working software is the primary measure of progress
  8. Agile processes promote sustainable development. People should be able to work non-stop and still be making progress indefinitely
  9. Attention to excellence and good design (REFACTOR!)
  10. Keep It Simple, Stupid! (Maximize the amount of work not done)
  11. Best results come from self-organizing teams
  12. Team should reflect on how to become more effective and adjust behavior accordingly

Valuing Individuals and Interactions over Processes and Tools

People make biggest impact on success, not necessarily the tools and coding environment (I beg to differ with Visual Studio)

Strong individuals are not enough without good team interactions.


Working software over Comprehensive Documentation

Keep documentation short and to-the-point

Code should document itself (does not eliminate need for commenting)

Customer Collaboration over Contract Negotiation

Get Constant feedback from the customer.

Contracts should specify interaction rather than requirement, schedule, and cost.

Responding to Change over Following a Plan

Environment, requirements, and estimates of work required will change over the course of a large project

Keep planning realistic and know tasks for the next few weeks. A very vague idea of the requirements over the next months, and a general goal of what needs to be done a year in advance


Extreme Programming (XP)

Developed in the 1990s

Chrysler Comprehensive Compensation Project