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

  1. Gathering requirements
  2. Designing the system
  3. Implementing the system
  4. Testing and inspecting it
  5. 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
    1. All team members play a card, face down, at the same time
    2. All team members turn over their card, at the same time
    3. Discuss why your estimates are all different

Critical Path

Gantt Charts