Overview
- SE centres around coding
What Happens in SE
- Programming
- Co-ordinating a team, and plan and manage a project
- Understand user requirements
- Design the software (components/modules)
- Implement the components/modules
- Test the software
- Verify the software meets its goals
- Maintaining software
Software Lifecycle
- Gathering requirements
- Designing the system
- Implementing the system
- Testing and inspecting it
- Maintaining (fixing and improving) it
Life Cycle Models
- Many different approaches
Common Categories
- Predictive life cycle: traditional, bulk of planning at the beginning, executing in a single pass - sequential
- Iterative life cycle: allows for feedback for unfinished work
- Incremental life cycle: provides finished deliverables that the customer may be able to use immediately
- Agile life cycle: both iterative and incremental
TODO: Finish this section from lecture notes
Activities
- Break up a project into a series of tasks → sub-tasks → bite-sized
- Helps identify how each task depends on each other
- Helps estimate duration for each task
- Helps the team understand what needs to be done
- Different tasks get assigned to different team members
Estimation
- Effort = time * number of people (in person-hours/months/etc)
Planning Poker
- A card game for estimating things (e.g. activity duration)
- Based on Wideband Delphi
- Each team member holds a set of cards: 0, 1/2, 1, 2, 3, 5, 8, 13, 20, 40, 100, ?,
- Pick units, e.g. 3 weeks, 3 person hours, etc
- Play the game for each task in the WBS
- All team members play a card, face down, at the same time
- All team members turn over their card, at the same time
- Discuss why your estimates are all different