Software Project Cost Estimation: How to Estimate Development Costs in 7 Steps

30/05/2023

2.21k

Key Takeaways

    • Software projects overrun more than most. McKinsey and the University of Oxford studied more than 5,400 IT projects and found large ones ran 45% over budget and 7% over time, delivering 56% less value than predicted.
    • Estimate effort first, then cost. Effort in person-days or person-weeks is portable; cost depends on who does the work and where.
    • Use more than one method. Bottom-up gives detail, analogous and parametric give a sanity check, and three-point gives a range.
    • Coding is only part of the cost. Plan explicitly for discovery, design, testing, project management, DevOps, data migration and post-launch support.
    • Uncertainty shrinks as the project progresses, so give ranges early and narrow them at each milestone rather than committing to one number on day one.
    • Contingency should come from risk analysis, not habit. Tie it to the spread in your three-point estimates and to named risks.

Software project cost estimation is the process of forecasting the effort, time and money needed to deliver a defined software scope, and stating how confident you are in that forecast. To do it well: fix the scope and assumptions, break the work into small pieces, estimate effort with at least two methods (for example bottom-up and three-point), add the non-coding work such as design, testing and project management, convert effort to cost with real rates, add contingency based on measured uncertainty, and re-estimate as you learn. A good estimate is a range with stated assumptions, not a single number.

Navigating Budgets: How to Do a Cost Estimate for a Project?

Why Software Cost Estimation Is Hard (and Why It Matters)

Software cost estimation is hard because software has no physical size you can measure before you build it, requirements change while you build, and productivity varies widely between teams. It matters because the estimate drives the decision to fund the project, the scope you commit to, the team you hire and the date you promise customers.

The track record is sobering. In a study with the University of Oxford covering more than 5,400 IT projects, McKinsey found that large IT projects run 45% over budget and 7% over time on average, while delivering 56% less value than predicted. The same research found that software projects carry the highest risk of cost and schedule overruns, that each additional year of project length increased cost overruns by 15%, and that 17% of IT projects go so badly they can threaten the existence of the company.

Those numbers are not an argument against estimating. They are an argument for estimating differently: in smaller pieces, with explicit assumptions, as ranges, and with regular re-estimation.

The Role of Project Cost Estimation in Project Management

What an estimate is used for

  • Go or no-go decisions: is the expected value worth the expected cost?
  • Scope decisions: what can we afford in the first release, and what should wait?
  • Resourcing: how many people, with which skills, for how long?
  • Vendor comparison: are two proposals estimating the same scope?
  • Contract terms: fixed price, time and materials, or a dedicated team?
  • Tracking: are we on plan, and if not, how far off?

Estimate, target and commitment are not the same

Many budget fights come from mixing three different things. An estimate is an analytical forecast with a confidence level. A target is what the business wants (“we need this by March for under a given budget”). A commitment is what the team promises after reconciling the two, usually by adjusting scope. Keep them separate in conversation and in documents. When a target is lower than the estimate, the fix is a scope or approach decision, not a smaller estimate.

The Cone of Uncertainty: Why Early Estimates Should Be Ranges

Most Common Cost Estimation Techniques

At the idea stage, you know very little about the final product, so any estimate has a wide range of possible outcomes. As you complete discovery, design and the first sprints, the range narrows. This pattern is known as the cone of uncertainty, described by Barry Boehm in Software Engineering Economics and discussed in the Carnegie Mellon Software Engineering Institute’s introduction to software cost estimation.

In practice, match the type of estimate to the stage of the project:

Project stageEstimate typeWhat you knowHow to present it
Idea or business caseRough order of magnitudeGoals, target users, a list of major featuresWide range, for funding decisions only
After discoveryBudgetary estimatePrioritized feature list, key integrations, non-functional needsNarrower range with a list of assumptions
After design and architectureDetailed estimateUser stories, wireframes, architecture, data modelRange per release, used for contracts and plans
During deliveryForecast from actualsMeasured velocity, remaining backlog, real risksUpdated every sprint or milestone

Our software product development process follows this pattern: a rough estimate is produced during Initiation, when the product concept, business purpose, technical stack and team are clarified, and it is refined as design and agile development progress.

What Goes Into the Cost of a Software Project

Development effort is usually the largest single item, but it is rarely more than part of the total. Estimates that only count coding hours are the most common source of overruns. Use this list to make sure nothing is missing.

Cost componentWhat it coversOften forgotten?
Discovery and business analysisWorkshops, requirements, process mapping, acceptance criteriaSometimes
UI/UX designUser research, wireframes, prototypes, visual design, design systemSometimes
DevelopmentFront end, back end, mobile, APIs, integrationsNo
Quality assuranceTest planning, manual and automated testing, regression, performance and security testingOften underestimated
Project and product managementPlanning, coordination, reporting, backlog management, stakeholder communicationOften
DevOps and environmentsCI/CD pipelines, staging and production setup, monitoringOften
Data migrationExtracting, cleaning, mapping and loading legacy dataVery often
Third-party costsCloud hosting, licenses, APIs, app store fees, payment providersOften
Security and complianceThreat modeling, penetration testing, audits, data protection workOften
Training and change managementUser training, documentation, rollout supportVery often
Maintenance and supportBug fixes, updates, monitoring, small enhancements after launchVery often

Labor is the biggest input, so use realistic rates. For reference, the US Bureau of Labor Statistics reports a median annual wage of $135,980 for software developers and $104,300 for software quality assurance analysts and testers (May 2025). Those are wages only. If you are estimating an in-house team, add benefits, equipment, office, recruitment and management overhead. If you are estimating an outsourced team, ask vendors for a rate card per role and what it includes.

Software Estimation Methods Compared

There is no single best method. Experienced estimators combine two or three and investigate when they disagree. Here are the four classic techniques, plus the agile methods most software teams now use.

MethodHow it worksBest used whenMain weakness
Analogous (top-down)Base the estimate on the actual cost of a similar past project, adjusted for differencesEarly stage, when you have a comparable projectOnly as good as the similarity; hidden differences cause big errors
Bottom-upBreak the scope into small work items, estimate each, then add them upAfter discovery, when scope is broken downTime-consuming; tends to miss integration and non-coding work
ParametricUse a statistical model linking a size measure (function points, story points, screens) to effortWhen you have historical data or a calibrated modelNeeds good data and a reliable size measure
Three-point (PERT)Estimate optimistic, most likely and pessimistic values, then compute a weighted expected value and a rangeAny stage, especially when uncertainty is highStill depends on the quality of the three inputs
Story points and velocity (agile)The team sizes backlog items relatively; measured velocity converts points to timeDuring delivery, with a stable teamPoints are team-specific; useless before the team has a velocity
Expert judgment and Wideband DelphiSeveral experts estimate independently, discuss differences, then re-estimateNovel work with little historical dataVulnerable to bias and anchoring if not structured

Analogous estimating

Analogous estimating uses a completed project as the reference point. If a previous customer portal took 400 person-days and the new one has roughly 30% more features plus one extra integration, you might start at around 520 person-days and then adjust. It is fast and useful for early go or no-go decisions. Its weakness is that projects that look alike often differ in exactly the details that drive cost: data quality, integration complexity, compliance and team experience.

Bottom-up estimating

Bottom-up estimating breaks the scope into a work breakdown structure: epics, features and tasks small enough that someone can estimate them with confidence (a common rule is no item larger than a few days). The people who will do the work estimate each item, and the estimates are summed. It is the most accurate approach once scope is known, but it systematically misses work that does not appear as a feature: integration testing, environment setup, meetings, code review, bug fixing and release work. Always add those explicitly.

Parametric estimating and COCOMO

Parametric estimating uses a mathematical relationship between a size measure and effort. The best-known public model is COCOMO II. As the SEI explains, a parametric model has three parts: a size metric (such as source lines of code or function points), cost drivers (product, process, personnel and environment factors such as reliability requirements and team experience), and a mathematical relationship. In COCOMO II, effort grows with size raised to an exponent that ranges from 0.91 to 1.23 depending on scale factors, so effort grows faster than size on large or complex projects. The model was calibrated with data from 16 organizations and is fully open, so organizations can recalibrate it with their own history.

Commercial models such as SEER-SEM and TruePlanning work on similar principles. The practical lesson for most teams is not to run COCOMO itself, but to collect your own history: actual effort per feature type, per screen or per story point, so your parametric estimates reflect your team rather than an industry average.

Three-point estimating (and how PERT fits in)

Three-point estimating asks for three values for each work item: optimistic (O), most likely (M) and pessimistic (P). There are two common ways to combine them. The simple triangular average is (O + M + P) / 3. The PERT formula, from the Program Evaluation and Review Technique, gives more weight to the most likely value: expected effort E = (O + 4M + P) / 6, with a standard deviation of roughly (P minus O) / 6. Three-point estimation is a technique; PERT is the broader planning method that popularized the weighted formula. The value of the technique is not the formula, it is forcing the estimator to think about what could go wrong and making the range visible.

Story points and velocity

Agile teams often size backlog items in story points, a relative measure of effort, complexity and uncertainty, using techniques such as Planning Poker. After a few sprints, the team’s average velocity (points completed per sprint) converts the remaining backlog into a forecast of sprints and cost. This is excellent for forecasting during delivery, but it does not work before a team exists. For a new project or a vendor proposal, use bottom-up and three-point estimates first, then switch to velocity-based forecasting once you have three or more sprints of data.

How to Estimate Software Development Costs in 7 Steps

This process combines the methods above into a sequence that works for most custom software projects, from a new product to a rebuild of a legacy system.

Step 1: Define the scope, boundaries and assumptions

Write down what is in scope, what is out of scope and what you are assuming. Include target platforms (web, iOS, Android), user roles, integrations, expected user volumes, languages, compliance requirements, and who provides content and test data. Every assumption is a cost driver; if it changes, the estimate changes. Overall budget constraints belong here too, because they shape scope choices from the start.

A useful format is a one-page scope statement with three lists: included, excluded, and assumptions. Ask stakeholders to sign off on it before you estimate in detail.

Step 2: Break the work down

Create a work breakdown structure: epics, then features, then tasks. Aim for items that take no more than a few days. Map the dependencies between them, because dependencies affect both sequence and cost (waiting time is still paid time). If you are also building a delivery plan, our guide on how to plan a software project covers how the breakdown feeds the timeline and milestones.

Step 3: Estimate effort for each item with three points

Ask the people who will do the work for optimistic, most likely and pessimistic effort for each item, in person-days or person-hours. Use the PERT formula to get an expected value and a spread per item. Large spreads are useful signals: they point to items that need a spike, a prototype or more discovery before you commit.

Step 4: Add the non-development work

Add design, quality assurance, project management, business analysis, DevOps, data migration, security testing and release work. Some teams estimate these bottom-up; others apply ratios from their own past projects (for example, QA effort as a share of development effort). If you use ratios, use your own history, and say so in the assumptions.

Step 5: Cross-check with a second method

Compare your bottom-up total with an analogous estimate from a similar past project, or with a parametric estimate from your historical effort per feature or per story point. If the two differ by a large margin, find out why before you go further. The gap usually reveals a missing feature, an underestimated integration or an optimistic assumption.

Step 6: Convert effort to cost and add contingency

Multiply effort by the rate of each role (or by a blended rate), then add third-party costs such as hosting, licenses and paid APIs. Add contingency based on measured uncertainty: the spread of your three-point estimates and a list of named risks with their likely impact. Keep contingency visible as a separate line rather than hiding it inside task estimates, so stakeholders can see what it is for and how it is used.

Step 7: Document, review and re-estimate

Present the estimate as a range with its assumptions, exclusions, risks and the confidence level. Have it reviewed by someone who was not involved in creating it. Then re-estimate at each milestone (after discovery, after design, every few sprints) and track actuals against estimates. Over time, that record becomes your best estimating tool.

Worked Example: Estimating a B2B Customer Portal

The example below is illustrative. The work items, effort figures and ratios are assumptions chosen to show the method, not benchmarks. Use your own team’s history in real estimates.

Scope: a web portal where business customers log in, view orders and invoices, and receive notifications, with data pulled from an existing ERP system and an admin panel for staff.

Development effort with three-point estimates (person-days)

Work itemOptimistic (O)Most likely (M)Pessimistic (P)Expected E = (O + 4M + P) / 6
Authentication and user roles46106.3
Customer dashboard6101810.7
Order history and search58148.5
ERP integration8153016.3
Invoice download (PDF)3595.3
Admin panel58158.7
Email notifications2474.2
Total development335610360.0

Two things stand out. First, the expected total (60 person-days) is higher than the sum of most likely values (56), because pessimistic outcomes are further from the most likely value than optimistic ones. That asymmetry is normal in software. Second, the ERP integration has by far the widest range (8 to 30 days). That is the item to investigate first, for example with a short technical spike to test the ERP’s API before committing to a price.

Using the PERT approximation, the standard deviation for each item is (P minus O) / 6. Combining them (the square root of the sum of the variances) gives a standard deviation of about 5 person-days for development. So a reasonable statement is “about 60 person-days of development, likely between 55 and 65”, which is far more useful than “56 days”.

Adding the rest of the work

Line itemAssumption used in this examplePerson-days
DevelopmentFrom the three-point table60
Quality assurance30% of development (example ratio)18
Project management and business analysis15% of development (example ratio)9
UI/UX designEstimated bottom-up10
DevOps and environmentsEstimated bottom-up5
Subtotal102
Contingency15% for named risks: ERP API quality, customer data cleanliness, late feedback15
Total effort117

To turn effort into cost, multiply each role’s days by its day rate, or multiply the total by a blended rate. Then add third-party costs (hosting, email service, PDF library license if any) and a separate line for post-launch support. If the business target is lower than the result, the conversation should be about scope: for example, launching without the admin panel and managing a few settings directly for the first months.

Cross-checking the example

Suppose a similar portal built last year took 95 person-days in total but had no ERP integration. Adding the expected 16 days for the integration gives about 111 person-days, close to the 117 above. The two methods agree within a reasonable margin, which builds confidence. If the analogous figure had been 70 days, you would have a gap to explain before presenting anything.

Estimating a Rebuild or Legacy Takeover

Estimating a rebuild of an existing system is different from estimating a new product. The scope looks known, because the system exists, but the real behavior is often undocumented, and the data carries years of exceptions. The most reliable way to estimate a rebuild is to audit before you estimate.

A SupremeTech project illustrates this. A long-standing crowdfunding platform, originally developed by another vendor, was built entirely in outdated PHP code with no structured framework. It suffered from instability, frequent bugs and poor scalability, and it could not support new features or user growth. Our team started with a comprehensive technical audit to identify limitations and opportunities, aligned the roadmap with the client, then rebuilt the platform on Laravel and migrated the infrastructure to AWS. You can read the details in the crowdfunding platform rebuild case study.

[SupremeTech detail: how the audit findings changed the scope or estimate for the crowdfunding rebuild, for example features dropped, modules prioritized or effort reallocated, confirmed by the project team]

For a rebuild or takeover, add these items to the estimate:

  • Technical audit: code quality, architecture, dependencies, security issues, test coverage and infrastructure.
  • Behavior discovery: document what the current system actually does, including undocumented business rules.
  • Data migration: profile the existing data early; cleaning is often a large share of the effort.
  • Parallel running: the cost of keeping the old system alive and in sync during the transition.
  • Knowledge transfer: time with the previous team or internal staff, if available.

If you are taking over a project from another vendor rather than rebuilding it, see our guide on switching software development teams.

How the Contract Model Changes the Estimate

The same estimate leads to different risks and prices depending on the contract model. The table below summarizes how each model uses the estimate. For a deeper explanation of engagement models and pricing, see our guide to offshore software development services, contracts and pricing.

Contract modelHow the estimate is usedWho carries estimation riskBest for
Fixed priceThe estimate becomes the price; the vendor adds a risk premiumMostly the vendor, but scope changes trigger change requestsSmall, well-defined scopes
Time and materialsThe estimate is a forecast; you pay for actual effortMostly the clientEvolving scopes where flexibility matters
Dedicated teamThe estimate sizes the team and duration; scope flexes within capacityShared, managed through backlog prioritiesLong-term products with ongoing development
Phased (discovery, then build)A small fixed discovery phase produces a detailed estimate for the buildReduced for both sidesProjects with unclear requirements

How to Compare Vendor Estimates

When two vendors quote very different prices for the same project, the difference is usually in scope and assumptions, not in efficiency. Before comparing totals, ask each vendor the same questions:

  • Which features, platforms and integrations are included, and which are explicitly excluded?
  • How many person-days of effort are behind the price, broken down by role?
  • Which estimation methods were used, and who on the delivery team produced the estimate?
  • What assumptions were made about data quality, third-party APIs, content and client feedback time?
  • How much contingency is included, and which risks is it for?
  • Are testing, project management, DevOps, data migration and post-launch support included?
  • How are change requests estimated and priced?

Put the answers side by side in one table. A low quote that excludes testing or migration is not cheaper; it simply moves the cost to later.

Common Software Cost Estimation Mistakes

Most overruns trace back to a small set of repeatable mistakes. Check your estimate against this list before you share it.

  • Estimating only coding. Testing, management, DevOps, migration and support are left out, then appear as overruns.
  • Single-number estimates. A point estimate hides uncertainty and is read as a commitment.
  • Anchoring on a target. The estimate is adjusted to match a budget someone already announced.
  • Estimates by people who will not do the work. Sales or management estimates without engineering input are consistently optimistic.
  • Ignoring integrations. Third-party APIs, legacy systems and data exchanges are the most volatile items.
  • No assumptions list. When scope changes, nobody can show why the estimate changed.
  • Contingency as a habit. A flat percentage with no link to risk is either too small or quietly spent.
  • Never re-estimating. The day-one estimate is still used months later, after the scope has moved.
  • No historical data. Without actuals from past projects, every estimate starts from scratch.
  • Treating long projects as safe. McKinsey’s finding that overruns grow with project length is a strong reason to split large programs into shorter releases.

Software Estimation Tools

Tools do not replace judgment, but they make estimates more consistent and easier to track. The right tool depends on your stage and team.

Tool typeExamplesUse it for
Spreadsheet templateExcel, Google SheetsWork breakdown, three-point calculations, cost roll-up and assumptions in one place
Backlog and planning toolsJira, Azure DevOps, LinearStory point estimates, velocity tracking and forecasts during delivery
Estimation sessionsPlanning Poker appsStructured team estimation that reduces anchoring
Parametric modelsCOCOMO II calculators, SEER-SEM, TruePlanningSize-based estimates and sanity checks for larger programs
Time trackingHarvest, Toggl, built-in tracking in project toolsCollecting actuals to calibrate future estimates

A simple estimation template

Step-by-Step Guide to Project Cost Estimation

If you do not have a template, start with a spreadsheet with these columns:

  1. Epic and feature
  2. Work item description
  3. Role (front end, back end, QA, design, DevOps)
  4. Optimistic, most likely and pessimistic effort
  5. Expected effort (PERT) and standard deviation
  6. Dependencies
  7. Assumptions and open questions
  8. Risk notes
  9. Rate per role and cost

Add a summary tab for non-development work, third-party costs, contingency and the final range, and a separate tab listing assumptions and exclusions.

Estimating With AI-Assisted Development

AI-assisted coding is changing how much effort some tasks take, especially boilerplate code, test generation and documentation. That makes historical data from a few years ago less reliable for those tasks. It does not change the need for discovery, architecture, review, testing and integration, which remain human-led. When you estimate a project that will use AI-assisted development:

  • Estimate review and testing explicitly; AI-generated code still needs engineer review.
  • Separate tasks that AI accelerates well (scaffolding, CRUD screens, tests) from tasks it does not (integration with poorly documented systems, complex business rules).
  • Validate any claimed speed-up with a short pilot before you rely on it in a fixed-price contract.
  • Budget the running cost of AI tools if they are part of the delivery.

For enterprise systems that will use AI in production, our guide to custom enterprise software development for AI-ready operations explains which architectural work to include in scope.

Software Cost Estimation Checklist

  • Scope statement with included, excluded and assumptions signed off
  • Work broken down into items of a few days or less
  • Three-point estimates from the people who will do the work
  • Design, QA, PM, BA, DevOps, migration, security and training included
  • Third-party costs listed (hosting, licenses, APIs)
  • Cross-check with a second method, with gaps explained
  • Contingency linked to named risks and shown as a separate line
  • Estimate presented as a range with a confidence level
  • Post-launch support and maintenance estimated separately
  • Re-estimation points scheduled at each milestone
  • Actuals tracked to improve the next estimate

How SupremeTech Approaches Estimation

Let SupremeTech Help You with Your Project Cost Estimation

We start every custom project with a rough estimate during Initiation, once the product concept, business purpose, technical stack and team are clear, and we refine it as design and development progress. Our Technical Leader leads estimation, so the person responsible for delivery is also responsible for the numbers. Development runs in sprints of one to three weeks, which gives regular points to compare actuals with the plan.

For clients in Japan, our business analysts speak Japanese and join requirement meetings directly, which reduces the misunderstandings that most often break estimates. Da Nang is two hours behind Tokyo, so questions raised during estimation get answered the same day. We are ISO/IEC 27001 certified, which matters when estimation requires access to existing systems or data during an audit.

If you have a project to estimate, our product development process page explains how we work, and you can contact us for a free consultation.

FAQ

What is software project cost estimation?

It is forecasting the effort, time and money needed to deliver a defined software scope, together with the assumptions and the level of confidence behind the forecast.

What is the most accurate software estimation method?

No single method is most accurate in every case. Bottom-up estimation is usually the most accurate once scope is broken down, and it is strongest when cross-checked with an analogous or parametric estimate and expressed as a range using three-point estimates.

How do you calculate a three-point estimate?

Estimate optimistic (O), most likely (M) and pessimistic (P) effort. The PERT expected value is (O + 4M + P) / 6, and the standard deviation is roughly (P minus O) / 6. A simple average, (O + M + P) / 3, is an alternative that weights all three equally.

How much contingency should a software estimate include?

Base it on risk, not a fixed habit. Use the spread of your three-point estimates and a list of named risks with likely impact, and show contingency as a separate line so its use can be tracked.

How accurate is an early software estimate?

Not very, and it should not pretend to be. At the idea stage the range of outcomes is wide; it narrows after discovery, design and the first sprints. Present early estimates as ranges and re-estimate at each milestone.

What is the difference between effort and cost?

Effort is the amount of work, measured in person-hours, person-days or person-months. Cost is effort multiplied by the rates of the people doing it, plus third-party costs such as hosting and licenses.

Should story points be converted to money?

Only through measured velocity. Once a stable team has completed several sprints, you can convert remaining points into sprints and then into cost. Before that, use bottom-up or three-point estimates in time units.

Why do software projects go over budget?

The most common reasons are incomplete scope, missing non-development work, underestimated integrations, requirement changes and single-number estimates that hide uncertainty. McKinsey’s research also found overruns grow with project length, so shorter releases help.

Meet the author

Linh Le

Linh Le

Product Marketer

An energetic and result-driven B2B product marketing specialist rooted in creative branding, event and digital operations. Plus 7-year fusion experience of topline strategic planning and deep-dive execution.

Solid circle

Sign me up
for the latest news!

Customize software background

Want to customize a software for your business?

Meet with us! Schedule a meeting with us!