CSCE 315 Lecture 13
« previous | Monday, February 20, 2012 | next »
Iterative Software Development
Rather than produce a single product "all at once", build incrementally
- Gather Requirements
- Plan and Design
- Implement
- Release a version; test and debug
- 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:
- Satisfy customer through early and continuous delivery of valuable software
- Welcome changing requirements, even late in development. (better for competitive advantage)
- Deliver working software frequently (a couple weeks to a couple months)
- Business people and developers must work closely together
- Build projects around motivated individuals, giving htem the environment and support they need; trust them to get the job done
- Most efficient and effective method of conveying information is face-to-face conversation
- Working software is the primary measure of progress
- Agile processes promote sustainable development. People should be able to work non-stop and still be making progress indefinitely
- Attention to excellence and good design (REFACTOR!)
- Keep It Simple, Stupid! (Maximize the amount of work not done)
- Best results come from self-organizing teams
- 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