A dark facade of angled balcony layersSoftwareRalve

June 1, 2026 · 6 min read

Software project planning: how to set scope, time and budget

A practical guide to software project planning: writing the scope, controlling scope creep, prioritising, shipping an MVP, and planning for maintenance.

Most software projects slip because of the uncertainty at the start, not because of the code. When the scope is vague, both the timeline and the budget are guesswork. This piece covers software project planning from the client side: what to decide, what to write down, and who signs off on it.

Write the scope down before anything starts

Scope is not only a list of what will be built. The list of what will not be built matters just as much. Anything discussed in a meeting but never written down becomes something the two sides remember differently a month later.

A usable scope document answers: the business problem the system solves, the user roles and what each role can do, the list of screens, the external systems to integrate with (accounting, payments, shipping, CRM), whether existing data has to be migrated, language and currency needs, and which fields the admin panel lets you edit. Then a short out-of-scope section for everything deliberately left to a later release.

The most concrete thing you can do is describe your current process exactly as it runs today. Software does not invent a process; it speeds up or repairs the one you already have. If you do not describe it, a developer will infer it, and inferences are expensive.

The written scope is also the only real basis for an estimate. Proposals built on conversation are always optimistic, because nobody prices work that was never mentioned. The more detailed the scope, the tighter the range you get back. A wide range is not evasion; it is an honest reading of an unfinished brief.

Decide who signs off. One name approves the scope. Projects where every department has an opinion and nobody has authority are the ones that run long.

How scope creep happens and how to manage it

Scope creep rarely arrives as one big request. It is the sum of things that each sound reasonable on their own: one more field here, a PDF export there, one extra report while we are at it. Individually small, collectively enough to break the schedule and the budget.

The second source is late information. An accounting rule that surfaces mid-project, or a legal requirement nobody flagged, reopens work that was already finished. Ask your finance, legal, and data protection people about their requirements during planning, not during testing.

Creep is unavoidable, but it is manageable. The method that works: every new request goes onto one list instead of being decided on the spot. The list is reviewed on a weekly or fortnightly rhythm. Each item carries three notes: business impact, rough effort, and which release it belongs to. When a request is accepted, you decide in the same meeting what comes off the schedule or the budget. "Let us add it, but keep the date" is the sentence that breaks projects.

Changes cost something. That is not an argument against making them; it is an argument for making them knowingly.

How to prioritise

If everything is important, nothing is prioritised. A simple method that holds up: sort items into must have, should have, nice to have, and next release. One question does most of the work. Can the system go live without this? If the answer is "yes, it would be awkward, but yes", it is not a must have.

Use two criteria together: business value and cost. High value and low cost goes first. High value and high cost gets planned and broken into pieces. Low value and high cost usually never gets built, which is a good outcome.

Pull the risky work forward. Payment integrations, third-party connections, and data migration carry the most uncertainty, and leaving them until the end means meeting the worst surprise at the worst moment. Tried early, you still have room to change the plan.

Keep the priority list written and in one place. A priority agreed verbally is a priority nobody remembers in two weeks.

MVP and phased delivery

An MVP is not an unfinished product. It is a narrow product that works end to end. In an MVP a user must be able to complete at least one real job from start to finish. For a system that takes payments, a product list and a basket are not enough; an order has to go through.

Phased delivery lowers both risk and budget pressure. Split the project into three or four phases, each ending in a version you can actually use. That means two things for you: you pay as work becomes visible, and if you need to change direction, you do it without throwing finished work away.

Define an outcome you can check at the end of each phase. "Design is done" is not an outcome. "Orders can be placed" and "a dealer can see their own stock" are. It keeps progress measured by working functionality rather than by screen count.

One thing usually left out of timeline estimates: the range depends on your response speed too. A screen waiting for approval, a page waiting for copy, a logo that never arrives, all of these consume calendar time exactly like development does. Put owners and dates on your own tasks as well.

The same logic applies to money. Talking about cost per phase rather than one total number keeps both sides honest about scope. A fixed price is only ever as fixed as the scope behind it.

Testing and acceptance criteria

If nobody writes down what "done" means, you will argue about it at delivery. An acceptance criterion is a measurable sentence for each item: "a user can remove an item from the basket and the total updates immediately". It describes behaviour, not taste.

Write the criteria while you write the scope, not the day before testing. The list also tells the team what to build; criteria written afterwards tend to describe whatever was built.

Your side's job in testing is clear: use real data and real scenarios. A developer tests assuming their own logic is right. You test as the person who knows the process. The most useful bugs are always found by whoever does the job daily.

Book a testing window in the calendar and make sure the right people are free during it. Testing that starts two days before launch is not testing, it is hope.

Report every issue through one channel: a screenshot, which user, which steps. Feedback scattered across channels gets lost, and lost feedback comes back as a production bug.

Planning for maintenance after launch

Launch is not the end of the project. It is the start of running the system. Projects that never discuss the post-launch period end up unowned the week after go-live.

Settle these before you start: who reports issues and where, the expected response time for a critical fault, how often updates ship, whose budget covers hosting, domain, certificates, and third-party services, how often backups run, and how a restore gets tested.

Sort out ownership early too. The domain, server accounts, code repository access, and analytics accounts should be in your name. Handle that at the start, not on the last day.

Finally, hold part of the budget back for after launch. The fixes you make in the first weeks, based on how people actually use the system, are often worth more than several features sitting in the plan. Good planning aims at the first year of the system running, not at the day the project ends.

NextHow to build a corporate website: step-by-step process guide
Have a project in mind?

By submitting, you accept our privacy notice.

Let's talk.

Tell us about your project — whether it is a website, a mobile app, SEO, or brand consulting.

Quick response.

A real person replies to your message within 24 hours.

Clear next steps.

After the call we hand you a clear scope, timeline, and budget frame.

© 2026 Ralve