Advanced Topic 49 of 50 Software Engineering
Software Estimation
Predicting effort and schedule for development work.
How it works
Software estimation predicts the effort, time and cost needed to build software. Approaches include expert judgment, analogy with past projects, work breakdown structures, story points and relative sizing, planning poker, parametric models such as COCOMO and probabilistic forecasts based on throughput. Estimates are ranges with uncertainty, narrowing as the project learns more, described by the cone of uncertainty.
Step-by-step walkthrough
- Break work into small tasks.
- Estimate each, ideally with the team.
- Estimates are ranges, not promises.
- Early estimates have large uncertainty that narrows with progress.
- Track velocity and revisit the plan often.
Where it is used
Planning releases, budgeting, staffing, prioritizing the backlog and committing to deadlines all use estimates. Teams improve by tracking actual versus estimated work.
Common pitfall
Estimates are routinely optimistic because of unknowns, forgotten tasks, integration and testing, and the planning fallacy. Treating an estimate as a commitment, or a single number without range, causes conflict. Padding secretly or pressuring teams distorts them. Break work into small pieces, include risks, use historical data, give ranges and re-estimate as knowledge grows.
Where it fits in the course
Software Estimation is topic 49 of 50 in Software Engineering, rated Advanced. It follows Site Reliability Engineering. The next topic is Open Source Practices.
Practice and explore
- Open the interactive lesson, with a mini quiz.
- Take the Software Engineering quiz.
How to study this topic
- Read the explanation above and restate the definition in your own words.
- Open the interactive lesson and answer its mini quiz.
- Read the common pitfall, then write a short example that avoids it.
- Check your understanding in the Software Engineering quiz, and revisit the topic if you miss a question.
Frequently asked questions
What is Software Estimation?
Where do people use Software Estimation?
What is the most common mistake with Software Estimation?
What should I learn before this topic?
How can I practice it?
Is Software Estimation hard to learn?
How long does it take to learn Software Estimation?
Which topics are related to Software Estimation?
What should I study after Software Estimation?
Related topics
- Site Reliability Engineering (Software Engineering)
- Open Source Practices (Software Engineering)
- Chaos Engineering (Software Engineering)
- Property-Based Testing (Software Engineering)
- Software Transactional Memory (Concurrency & Parallelism)
- Software-Defined Networking (Computer Networks)
- Automotive Software (Mobile, Embedded & IoT)