A recently completed project inspired me to write this article. As in any other project, there were mistakes (including when assessing the software cost estimate), as well as problems, interesting solutions, and, in spite of everything, the fighting spirit of the team made it possible to finish the project on time and get a long-awaited vacation. All this is worth a separate article. But the main thing is that we gained an invaluable experience on the basis of which this article was created.
Very often we make mistakes when it comes to the costs of developing software. It seems like it happens because of the little things that appear during the development of the project, but in fact, we could have discovered and taken them into account in advance.
The article contains simple and, at the same time, useful recommendations as well as a method for calculating software costs. This will come in handy to a project manager, architect, system analyst, IT solution seller, and everyone else involved in estimating software development cost of fixed format.
We will only focus on how to calculate software development cost, estimating the duration is a completely different story.
I am going to describe my personal experience of how to estimate the cost of a software project, and, of course, you can have other situations and your own methods.
Guaranteed software project success with a free 30-minute strategy session!
Factors Affecting Software Costs
The vast majority of projects on the market are projects completed based on a fixed price cooperation (when the budget and terms are planned in advance, at the stage of sealing the deal). When evaluating a project, the team, besides standard risks and problems, must take into account the “modern and effective” approach of customers who want to combine:
- obtaining accurate estimates on the budget and terms before writing a technical task, including them in the contract, and then, during the implementation of the project, strictly controlling the budget and terms;
- flexibility on the part of the development team, the implementation of all customer requirements that appear during the project (since the customer often doesn’t know what they want until the middle of the project).
But, despite the misunderstanding of what and how should be implemented, clients mercilessly “cut” the tasks of the project plan (in order to reduce the cost), including the functions that the team will still have to perform.
The Positive and Negative Impact of Various Factors on the Cost
In case of unsuccessful project management (if the team follows the client’s lead), the team easily passes the deadlines and budget, because the contract is signed and the budget is agreed upon, thus they just work at a loss.
It is clear that the client is the only one to blame. The matter is that the estimated software project cost is often figured out without sufficient analysis of requirements, tasks are insufficiently and incorrectly scheduled, and very often, only programming is included in the estimate, while testing and management don’t get proper attention.
When signing a contract, the sellers meet the client halfway by lowering the price and the team, represented by the project manager, doesn’t defend its position firmly enough. At the same time, all participants are focused on the result – each participant sees/foresees the problem and informs the manager.
There is also another factor – the variety of projects, systems and technologies, and the lack of qualified specialists. This means that when planning a project, the architect or project manager may not take into account that they can get a specialist on the team who has not previously performed such tasks or somebody with insufficient qualifications. Surely, in this case, the performance will be lower than expected.
How to Calculate Software Project Cost So the Estimated Work Is Accurate Enough?
First, look at the problems and try to find a solution.
The client wants to know the exact figures for the cost and deadline of the project before signing the contract.
- Identify and formulate the acceptance criteria for work. How to do it? The customer needs to ask the right questions: “How do you know that the project is successful?” and “Who, to whom and how they will hand over the system?”, as well as ask the person who will make the decision “What needs to be done for the project to be accepted?”.
- Identify as many requirements and, most importantly, constraints to the project (i.e. not only functional but also non-functional requirements) as possible.
- Test requirements. In simpler terms, confirm that the written requirements are realistic, consistent, and formulated in such a way that it is possible to check whether the solution corresponds to them.
- From there on out, compose the list and options for solving problems as detailed as possible.
The client wants to see a more or less detailed list of works so that when agreeing on the cost of the project, he/she cuts in the most inappropriate things.
In the workflow plan, it is important to highlight all tasks, not just the “visible” ones. For instance, there are user requirements for viewing certain data. The team identified what tasks needed to be completed and estimated the total amount of work at 56 hours, breaking them down as follows:
- ability to view all records – 8 hours;
- filtration by field 1 – 8 hours;
- filtration by field 2 – 8 hours;
- sorting by field 1 – 8 hours;
- sorting by field 2 – 8 hours;
- grouping by field 1 – 8 hours;
- grouping by field 2 – 8 hours.
But as the matter of fact, these tasks have basic functionality – creating tables in the database, storing procedures or views for selection, creating business objects, connecting them to the security module, connecting to the logging module, configuration, and so on.
What happens if the customer says: no, it’s taking too long. Let’s reduce and remove the grouping and sorting tasks (minus 32 hours). At the same time, the seller, who is discussing the work on the project, has nothing to say. On the other hand, the entire volume cannot be reached in 24 hours.
How to calculate software costs in such a situation? I recommend highlighting the basic functionality. In this case, this “Fetch data from the database” task takes, say, 28 hours, and the other tasks take 4 hours.
This will allow the seller to behave more correctly. By removing unnecessary features, there will still be sufficient development time.
A detailed analysis of the requirements, the composition of a technical task, and a more or less clear area of work on the project occur after the signing of the contract.
- Identify as many requirements and constraints for the project as possible that need to be implemented in the system and figure out how to correctly formulate and check each requirement.
- Very often, it turns out that the tech reference points that the client removed previously still pop up. You have to handle them anyway and that’s why it’s best to set certain limits to the scope of the project in the contract. It should include all the items that the customer removed from the proposed plan, as well as other items that the team sees and considers clearly outside the scope of the project. All software development methodologies focus on this. In fact, this can be formalized as an addition to the contract or as part of a technical assignment.
- It’s very important to define the work that needs to be done by the customer. This should be recorded in the contract (annex to the contract, terms of reference) along with indicating the deadlines.
Almost until the middle of the project, the customer does not know what he/she wants (not to mention the stage of collecting requirements).
- Include a time frame for possible changes (i.e. at what stages changes are possible);
- Schedule periodic demonstrations (for example, during the requirements gathering and planning phase – once a week, during the development phase – once every two weeks) and take into account the labor costs of preparing and running them.
Demonstrations should be carried out not only for business clients but also for employees of other customer departments potentially involved in the project (system administrators, key users, security service, etc.)
This will allow receiving comments in the early stages, discuss problems, and allow the user to get used to the interface and functionality.
The client wants the team to be flexible about his/her wishes (changes, additions) and implement them within the project, and not within the framework of subsequent improvements. At the same time, the client absolutely doesn’t want to hear anything about the changes in the budget.
- In the project plan, we explicitly include time for possible changes (we lay a buffer in terms of time and budget, outside the inherent risks), which, at the request of the client, will be spent on the changes and improvements needed. This, firstly, makes it possible to work on changes within the project, and secondly, it makes the customer think carefully about the change requests since this resource is already clearly limited.
- Consider the possibility of an iterative design approach and plan these iterations. Take into account the number of meetings, performances, demonstrations, etc.
- As written above, in the contract (as an addition to the contract, or in the terms of reference), we include a condition describing everything that goes beyond the scope of the project.
The client wants to see a lot of documentation on the system.
Solution: we include the cost of creating documentation in the software development cost calculator.
If the project team is formed anew, there is a risk that the qualifications of one or another specialist may be lower than expected.
Solution: when calculating how much does it cost to have software developed, planning tasks, and time for their implementation, it is necessary to focus on specialists at a level lower than expected to be involved in the project
IT technologies and tasks are becoming more and more complex, which makes it more difficult to identify the pitfalls of the selected technologies at the early project stages.
- It is necessary to include a certain time for risks in the plan, which the team can use at its choice;
- Carry out tasks related to risky technologies as early as possible.
How to Estimate Software: Best Practices
IT technologies and tasks are becoming more complex. Identifying the pitfalls of selected technologies is not an easy task. How to estimate software cost, where to start? In short:
- understand what needs to be done to achieve the project goal and deliver in the best possible way;
- identify as many requirements and constraints for the project as possible;
- test the received requirements;
- in order to determine how much does it cost to develop a software program, involve all relevant professionals.
Costs of Developing Software – Useful Tips
To correctly estimate software costs, follow these rules:
- To achieve the goal of the project, break it down into custom actions, which break down into tasks, which break into subtasks, etc. And so on until each task becomes understandable to a junior specialist level person and has clear criteria for how to check its implementation.
- Remember to highlight basic tasks that cannot be ruled out.
Don`t forget to consider the following tasks:
- Creation of the installation utility.
- Creation of a configuration utility (there may be several of them: initial configuration, a configuration of system parameters, security configuration).
- Creation of a utility for initial data filling and, possibly, a utility for migration to a new version.
- Creation of diagnostic utilities (utilities that will help you check if everything is installed correctly and help you troubleshoot).
- Creation of a logging module (logging). Even if the customer does not need it, it will greatly help to identify errors and shortcomings.
- Creating a security module.
Guaranteed software project success with a free 30-minute strategy session!
How to Estimate a Software Project Example
At Diceus, we prefer employing well-tried-and-tested approaches – Work (or Project) Breakdown Structure (WBS) for dividing projects into milestones and elements and Critical Path Analysis (CPA) for sequencing tasks and activities. The convenience and efficiency of these approaches lies in breaking a big picture of the project down into smaller parts and components. Thus, you get to cover the whole project scope detail by detail, step by step, without missing any little things.
A CPA planning is based on WBS, meaning that the known project scope (terms, team composition, budget, etc.) must first be broken down into tasks, each with the respective number of hours required for completion. Everything should stay sorted.
Steps to Take to Estimate Software Project Cost
First, use Work Breakdown structuring to put everything into shape:
- Categorize and sort project tasks by priority, each task under the responsible employee;
- Set the time each task will take to complete based on your employee’s capabilities;
- Define connections and dependencies between the tasks;
- Establish milestones the project is to go through and deliverables it must bring as the result.
Critical Path Analysis should take place based on the sorted out tasks. Basically, you need to go through each task and work hours attached to it and build the most critical sequence (the longest path of completion.
Based on that, you can make adjustments – prioritize some tasks over others, move some activities in front of others, and see where possible downtime would bring least harm. With such planning in hand, you’ll easily calculate the most realistic deadlines and project frames, including the earliest and latest, most optimal dates of project start and finish, healthy downtime, and deadlines.
Example of Calculating the Costs of Developing Software
Here’s how we do things when it comes to in-house handling of projects by Diceus. Suppose, we need to create a new software feature that requires two specialists – Developer and QA Expert – to handle full-on frontend-backend development of an asset. Each specialist has the underlying stages to complete, including development, testing, deployment, review, etc.
We take our two specialists, assign the basic tasks to them, and define how many hours each would take to complete:
|Developer tasks||Hours||QA Expert tasks||Hours|
|Tech task breakdown||0,5 hrs||Specification review||1 hrs|
|Frontend||12 hrs||Test cases preparation||1 hrs|
|Backend||6 hrs||Test cases execution||6 hrs|
|Unit & integration testing||2 hrs||–|
|Code review||0,5 hrs||–|
|Code deployment||1 hrs||–|
|Total||22,5 hrs||Total||8 hrs|
All in all, we can see that the whole scope of work involving these two specialists would take approximately 30,5 hours. Always count the longest outcome possible to have back-up hours for unexpected situations. With this number of hours in hand, you can now easily calculate the cost of implementing an asset based on the rates you offer.
If you need to analyze a much more complex and multi-sided project with many features to be implemented, use the same scheme for every separate feature and activity.
How Much Does Custom Software Cost in Diceus?
Here you got an absolutely honest algorithm for calculating the costs of developing software. As you can see, we are not hiding anything and are not trying to make money where our competitors see the main source of income.
At Diceus, everything is 100 percent honest and transparent. If you want to know how much does it cost to have software developed – write to chat, email or call us. Our manager is always ready to answer all questions and offer the most profitable solutions to any problems.