CPE 308 Estimation Process
Determine your budget
If you have historical data from a previous project:
Calculate total team hours on first
project (from status reports)
Calculate total LOC on first project (suggest JD's LOC tool)
Compute team productivity rate (LOC/hr).
Consider adjusting using judgement for different factors in this
project.
Otherwise, if no historical data is
available, use 5 LOC/hr. (Previous student teams range from 3 - 13).
Determine resources available for project 2
- Have each team member commit to number of hours available each
week (8 - 12).
- Add up all hours available for all team members.
- Multiply by weeks in project.
Multiply by productivity rate to get "LOC capability", your budget.
Example: Productivity rate is 5 LOC/hr.
5 developers @ 10 hours per week * 10 weeks = 500 hours
500 hrs * 5 LOC/hr = 2500 LOC.
Estimate Product Size
As
a team, use preliminary features list, decompose the problem and do a
quick conceptual design to identify major classes in solution.
If possible, identify similar classes ("proxies") from previous
projects, class assignments, open source repositories, or elsewhere.
Use these to help you gauge the size of your classes.
Create 3 size (LOC) estimates for each class: probable, least,
&
most.
Calculate a weighted estimate:
(least + most + 4 * probable) / 6
Create a table showing estimate for each class. (post this on the team
wiki)
Sum estimates for all classes in design.
Compare total Estimated LOC against LOC capability.
Subtract classes until total estimated LOC < LOC capability.
Use this number in scheduling (below).
Example
Student
Calculations (.pdf)
Here are some detailed directions for how to do a group
estimating activity. They are intended for a project of
longer duration than ours, but the techniques are the same.
Alternate Process
If historical data is not available about productivity rate, you may consider
doing feature-based estimation. Use intuition to estimate hours per
feature, then add them all up. It's really just guessing.
Create Schedule
Use project plan - process & deliverables - to understand what
activities you will be engaged in.
Do cost estimation as described in the text or other resources.
Create a WBS (work breakdown structure) shows tasks and durations.
View example.
Create a task network to visually represent dependencies, sequences,
parallelism.
View example.
Convert the task network to a table format that shows for each
activity the Earliest Start and Earliest Finish times.
Create a timeline (aka Gantt) chart (without calendar dates) from the
information in the previous table.
Map chart onto actual calendar (taking into account weekends, holidays,
etc.).
Draw in schedule format (e.g. ASCII or wiki table). View
example 1.
Last 3 steps can be combined if using a tool, for example, GanttProject or Gnome Planner (available in
lab).
Either manually or with the tool, identify the critical path.
For a simple
Gantt chart the critical path can often be determined by inspection.
For complex charts, a tool will determine the critical path
automatically.
See a complete
worked example.