You can't schedule
what you can't size.
Estimating a software project is like guessing how long your drive home will take: you can use experience ("I've done this before"), an average, or run the numbers. None of it is exact — most software estimations are off by 25–100% — but a good estimate is a disciplined, repeatable guess, not a shrug. This chapter walks the full chain: size → effort → schedule, the math behind three-point and COCOMO estimating, and the human politics of presenting a number nobody wants to hear.
A disciplined guess, not a promise
Estimation is difficult because of evolving requirements, technical unknowns, team skill/availability, and external dependencies. Remember: an "exact estimate" is not possible.
Feasibility study / SOW (Statement of Work — defines scope, deliverables, timelines, responsibilities) — determines whether the project is viable.
Proposals — justify cost, scope, timeline to stakeholders/clients.
Vendor & sub-contractor evaluation — compares bids, assesses realism, negotiates.
Project planning (iteratively) — refines estimates as more information appears.
Committed date: what the team agrees to, based on actual planning, after a schedule has been developed.
As project size increases, so does uncertainty
post-requirements varianceVariance from post-requirements estimates grows sharply with size — measured in Function Points (FPs):
| Project size | FP range | Typical variance |
|---|---|---|
| Small | 10–99 FPs | 7% |
| Medium | 100–999 FPs | 22% |
| Large | 1,000–9,999 FPs | 38% |
| Very large | > 10,000 FPs | 51% |
Estimates converge as the project moves forward
The upper curve is the maximum possible overestimation; the lower curve is the maximum possible underestimation. Early estimates (feasibility/proposal stage) can swing from 0.25x to 4x the actual scope. As the project moves through requirements gathering, design, and development, the curves converge toward 1x — the estimate becomes more accurate and reliable.
Six ways to arrive at a number
Expert Judgment
Someone with recent experience on a similar project gives a "guesstimate." Accuracy depends on their real expertise, and the comparable application must be accurately chosen.
Top-down
Starts with an overall project estimate, then breaks it into components. Useful early, when only high-level scope is known.
Bottom-up
Build a WBS (Work Breakdown Structure), identify individual tasks, then sum from the bottom up. Needs a well-defined scope.
Analogy
Compares the current project to a sufficiently similar past project (technology, type, organization) using comparable attributes like # of inputs/outputs.
Priced to Win
Estimation driven by competitive pricing or client budget (via an RFQ — Request for Quote). The quote may not reflect actual cost or effort required.
Parametric / Algorithmic
Uses mathematical models and historical data to generate estimates automatically — COCOMO, Function Point analysis, and similar.
Priced to Win — the "priced to lose" trap
RFQ riskVendors need market intelligence (previous bids, client budget expectations — competitor pricing itself is not public) to price competitively. Some vendors intentionally underbid to win the contract, knowing they'll cut corners, request scope changes later, or absorb losses for strategic reasons (e.g. market entry). The purchaser must watch the trade-off: is the low price realistic, or will quality/scope suffer?
Wideband Delphi
group consensusA group-consensus approach — Rand Corp. used the original Delphi method in the 1940s to estimate future projects.
1. Present experts with a problem and
response form — they fill out initial estimates independently.
2. Conduct group discussion, collect anonymous opinions, then share feedback — this
surfaces hidden factors and clarifies misunderstandings.
3. Repeat discussion & iterate until consensus.
− Difficult to repeat; may fail to reach consensus, reach the wrong one, or everyone may share the same bias.
Lines of Code vs. Function Points
LOC and Function Points are the two most common algorithmic size measures — though most projects actually use neither. Other possible measures: number of bubbles on a DFD, number of ERD entities, number of processes on a structure chart.
Lines of Code (LOC)
code-basedFunction Points
functionality-basedSoftware size measured by the number and complexity of the functions it performs — more methodical than a raw LOC count. Language-independent, which is exactly what LOC is not. Variants include Feature Points and Object Points.
Four steps from function count to FP total
Count business functions per category
Categories: outputs, inputs, DB inquiries, files/data structures, and interfaces.
Apply a Complexity Factor to each
Rate each function Simple, Average, or Complex; apply a weighting multiplier (0–15). This produces the "unadjusted function-point total."
Compute and apply an "influence multiplier"
Based on 14 factors rated 0–5 (performance requirements, data communications, transaction rates, reusability, etc.).
Result: the "function point total"
Used in comparative estimates.
Complexity multiplier table
used in three-point FP example| Function type | Low | Average | High |
|---|---|---|---|
| External inputs | ×3 | ×4 | ×6 |
| External outputs | ×4 | ×5 | ×7 |
| External queries | ×3 | ×4 | ×6 |
| Internal logical files | ×7 | ×10 | ×15 |
| External interface files | ×5 | ×7 | ×10 |
Effort, duration, and the two clocks that never agree
Once you know the "size" (FPs, LOC, etc.), determine the "effort" needed to build it, in person-months / staff-months. Models are Empirical (historical data), Mathematical (formulas/algorithms, e.g. Effort = a × Sizeb), or Subjective (expert judgment / team intuition, e.g. Wideband Delphi). Effort depends on the efficiency/productivity of people: motivation, ability of the team, application experience, range of personnel.
Clock time: elapsed calendar time needed.
Example: a task needing 40 hours of labor typically needs at least 50 business hours of clock time. Why? Productivity is usually only 50–75% of a business day — a developer might get just 5–6 productive hours out of 8 office hours (meetings, email/communication, breaks, fatigue, task-switching/setup, etc.).
Unexpected events — natural events, vendor delays, power failures, etc.
Efficiency of work time — every interruption costs extra time to regain the prior productivity level.
Mistakes and misunderstandings — rework impacts duration even in organizations with a documented process.
Turning three guesses into one number
Used whenever there's potential variance in an estimate — because of uncertainties in Duration, Effort, and Size. Three-point techniques mathematically combine three estimates: Most likely (M), Optimistic (O), and Pessimistic (P) (i.e. best-case, worst-case, expected — gathered from experts).
Worked example — three-point LOC estimation of a CAD program
PERT formulaCAD program to represent mechanical parts. Estimated LOC = (Optimistic + 4×Most Likely + Pessimistic) / 6, applied per major software function:
| Major software function | ID | Optimistic | Most Likely | Pessimistic | Estimated LOC |
|---|---|---|---|---|---|
| User interface and control facilities | UICF | 1,500 | 2,300 | 3,100 | 2,300 |
| Two-dimensional geometric analysis | 2DGA | 3,800 | 5,200 | 7,200 | 5,300 |
| Three-dimensional geometric analysis | 3DGA | 4,600 | 6,900 | 8,600 | 6,800 |
| Database management | DBM | 1,600 | 3,500 | 4,500 | 3,350 |
| Computer graphics display features | CGDF | 3,700 | 5,000 | 6,000 | 4,950 |
| Peripheral control | PC | 1,400 | 2,200 | 2,400 | 2,100 |
| Design analysis modules | DAM | 7,200 | 8,300 | 10,000 | 8,400 |
| Estimated lines of code | 23,800 | 33,400 | 41,800 | 33,200 | |
Reserve analysis
contingency reservesTo improve schedule accuracy and resilience, contingency or time reserves can be added to allow for schedule risks (uncertainty). Contingency reserves may be used or adjusted as more precise project information becomes available — this is known as buffer time. Do not confuse it with slack time.
The COnstructive COst MOdel
An algorithmic software cost estimation model. Uses a basic regression formula with parameters derived from historical project data and current project characteristics. Input: LOC. Output: person-months (effort).
Organic
Small, simple projects, experienced teams, flexible requirements. 2–50 KLOC, stable, little innovation.
Semi-Detached
Medium complexity, mixed experience, some constraints. 50–300 KLOC, average abilities, medium time constraints.
Embedded
Complex, needs creativity, tightly coupled with strict requirements (e.g. real-time / safety-critical). >300 KLOC, large team, severe constraints.
Basic COCOMO constants
a, b, c, d| Mode | a | b | c | d |
|---|---|---|---|---|
| Organic | 2.4 | 1.05 | 2.5 | 0.38 |
| Semi-Detached | 3.0 | 1.12 | 2.5 | 0.35 |
| Embedded | 3.6 | 1.20 | 2.5 | 0.32 |
Worked example — 200 KLOC across all three modes
Effort only| Mode | Calculation | Effort (staff-months) |
|---|---|---|
| Organic | 2.4 × (200)1.05 | 626 |
| Semi-Detached | 3.0 × (200)1.12 | 1,133 |
| Embedded | 3.6 × (200)1.20 | 2,077 |
Complete example — Organic
7.5 KLOCSuppose an organic project has 7.5 KLOC:
| Item | Organic |
|---|---|
| Effort (staff-months) | 2.4×(7.5)1.05 = 20 |
| Development Time | 2.5×(20)0.38 = 8 |
| Average Staff | 20 ÷ 8 = 2.5 |
| Productivity | 7,500 ÷ 20 = 375 LOC/staff-mo |
Complete example — Embedded
50 KLOCSuppose an embedded project has 50 KLOC:
| Item | Embedded |
|---|---|
| Effort (staff-months) | 3.6×(50)1.20 = 394 |
| Development Time | 2.5×(394)0.32 = 17 |
| Average Staff | 394 ÷ 17 = 23 |
| Productivity | 50,000 ÷ 394 = 127 LOC/staff-mo |
Intermediate COCOMO — Cost Drivers
15 multipliersBasic COCOMO assumes effort is purely a function of LOC and a couple of constants — unrealistic, since no system's effort/schedule can be calculated from LOC alone. Intermediate COCOMO adds 15 cost drivers, each rated Very Low → Extra High, grouped into four attribute categories.
To obtain the multiplier: look up each driver's rating on the grid, then multiply them all together — the product is C, the effort adjustment factor.
The politics and pitfalls of a number
| Over-estimation risks | Project may not get funded (100%-success conservative estimates push funding probability toward zero); Parkinson's Law (work expands to fill time allowed); danger of feature/scope creep; "double-padding" — both the project member and the business manager pad the number. |
|---|---|
| Under-estimation risks | Quality issues (key phases like testing get shortened); inability to meet deadlines; morale and team motivation issues. |
Reuse, Agile, deadlines, and how you say the number
Code reuse & estimation
New / Modified / ReusedCode reuse is not free — understanding, adapting, testing, and integrating reused code still consumes time and effort.
Estimation for Agile
user storiesAgile estimation starts with user stories/scenarios, each treated as a mini-project.
Know your deadlines
real vs. artificialEstimation presentation (communication)
how you say the numberHow you present an estimate can have a huge impact. Techniques:
| Technique | Example |
|---|---|
| Plus-or-minus qualifiers | "6 months ± 1 month" — communicates a central estimate with a buffer. |
| Ranges | "6–8 months." |
| Risk quantification | ± with added info about uncertainty — e.g. "+1 month if new tool isn't working as expected," "−2 weeks if hiring new developers happens sooner." |
| Cases | Scenario-based estimates: Best / Planned / Current / Worst case. |
| Coarse dates | Useful when finer estimates aren't feasible, e.g. "Q3 of 2026." |
| Confidence factors | "April 1 with 10% probability, July 1 with 50% probability," etc. |
Final estimates — aggregation
Contingency vs. Management ReservesFor time/cost estimates: aggregate into larger units (Work Packages, Control Accounts, etc.), perform risk analysis to calculate Contingency Reserves (controlled by the PM), and add Management Reserves — set aside from total company funds to cover unforeseen risks/changes, which require Change Control activities to access.
Activity + Activity + Activity
Individually estimated tasks.
Work Package + Work Package + Work Package
Activities roll up into work packages.
Control Account + Control Account + Control Account
Work packages roll up into control accounts.
Project Estimate + Contingency Reserves
Control accounts + PM-controlled contingency = the project estimate.
Cost Baseline + Management Reserves
Project estimate + contingency, plus company-level management reserves.
Cost Budget
The final, fully aggregated number.
Every formula and method, one scroll away
| Concept | Formula / Rule |
|---|---|
| Basic estimation process | Size → Effort (person-months) → Schedule |
| Duration | Duration = Work Effort ÷ Number of People (scheduling) |
| Work Effort | Work Effort = Duration × Number of People (cost estimation) |
| Three-point (Basic) | Estimate = (M + O + P) / 3 |
| Three-point (PERT) | Estimate = (O + 4M + P) / 6 |
| COCOMO — Effort (Basic) | E = a(KLOC)b |
| COCOMO — Effort (Intermediate) | E = a(KLOC)b × C, where C = product of 15 cost-driver ratings |
| COCOMO — Development time | TDEV = c(E)d |
| COCOMO — Average Staff Size | SS = E ÷ TDEV |
| COCOMO — Productivity | P = Size (KLOC) ÷ E (staff-months) |
| COCOMO modes | Organic (2–50 KLOC) · Semi-Detached (50–300 KLOC) · Embedded (>300 KLOC) |
| Reserves | Contingency reserves (PM-controlled, known risks) vs. Management reserves (company funds, unforeseen risks, need change control) |
| Methodologies | Expert Judgment · Top-down · Bottom-up · Analogy · Priced to Win · Parametric/Algorithmic |
Where exam answers usually go wrong
Eight places this chapter's terminology and formulas get tangled — drill these until the "right" side is automatic.
Click a question to reveal the answer
No reload, no tracking — just click each question (or its "Reveal" button) to check yourself.
Full worked calculations, exam-style
Grab a calculator. These use the exact formulas above on new numbers, worked step by step.