Cost of Software
Over the time, the Cost of Software or how much a software product or a custom software development feature will cost has become one of the most challenging things to refer to. What is also true is that the cost of software is one of the most important factors (in many cases the most important one) when deciding if you do the software development and/or, after the delivery, when outcoming if this was a successful project or not.
There are two stages where cost of software comes to interest (although it has importance in the whole software development lifecycle). The first stage is before you build anything. In this case, we talk about software cost estimation. We need software cost estimation in order to see how much it will cost us. Software houses and developers need this to price their software, managers need this in order to decide if and how they will proceed with software development and, of course, finance people and PMs need this for resources allocation.
The second stage is once we finish the development. In this case, we can calculate the actual cost. If it is a software product, we need to know how much it cost for pricing and marketing purposes as well as feasibility studies. If it is some custom software development we have to deliver to a customer, we need this in order to know how successful we were, what margins we finally have and to reorganize and re-evaluate our pre-development (pre-sales) costing methods in order to be more accurate in our pricing and resources allocation in the future.
Cost of software in both stages is very important and, at the same time, challenging and difficult, especially when we have to cost software in stage 1 (pre-development). The main reason for that is the fact that before we build a software tool we don't have all the elements of the actual product – deliverable (effort needed, lines of code etc.).
If you are going to build a table you know exactly what you need. You need 4 piles, one flat piece of something for the surface, 4 screws and 30 minutes to put everything together. If you have to build a simple contact form in a website, what will you need? You will actually have to write lines of code. Even if you know all the details of the form upfront, you can’t tell with accuracy how many lines of code you will need, you can’t tell exactly how much each line of code will take you and the things that may go wrong unexpectedly.
So, let’s see the differences for cost of software when it comes to pre-development or pre-sales and after the delivery of the product or the functionality.
Software cost before the development
-We have to estimate the time we need
-We have to guess what tools we will need
-We don't have all the details of the deliverable (most of the times)
-It is important to have a good idea about the cost since it may be a reason to even avoid doing the work
Software cost after the delivery
-We know the time it took us to build
-We know the tools we used
-Since we have built the product or function, cost of software is important mainly for future reference or to price a product on the shelf.
How to calculate the cost of software in the two main stages:
It is obvious that after the completion of software development it is easy to calculate the cost
-Take the time it took from the various people/roles to develop
-Multiply this by the rate/cost of these people
-Add the cost of tools you had to buy in order to build
Here is an example. The building of a web site took us 15 days of a senior designer, 30 days of a senior developer, 20 days of a PM and 10 days of a software tester. We also had to buy a third party tool of 2000 USD to integrate its functionality to our application.
In this case our software cost is:
15 * (senior designer daily cost)+ 30*( developer daily cost)+ 20*(PM daily cost)+10*(software tester daily cost) + 2000
To calculate the daily cost of the above roles get their yearly salary, multiply it by 1.25 to cover overhead costs (for some organizations this factor can go up to 3 depending on the benefits, luxuries offering to employees) and divide it by 260 to get their daily rate. If you have fixed costs for these roles (e.g. subcontractors whom you pay a standard daily rate fee) don’t add overheads.
But before the development at a pre-sales phase or early project stage you just don't have the details. You don't know how much time you will need; you are not even sure how many people you will need. So, here, you go for a cost estimate. In this case, you need a model, a method to make your software cost estimation.
There are plenty of methods available and all of them focus on estimating the effort we will need to build the software. In the previous example, you know the effort it took you to build the software, so you can calculate software cost easily. Now, you have to estimate the person days, multiply by the cost of person day and add any other costs you expect to occur, such as third party software licenses.
In order to make things simpler you can get the total effort you will make in order to build the software and multiply it by the average cost for the person day in your organization.
Here, the most challenging thing is to have accurate effort estimation. There is a good article on effort estimation here that can put you in the basics fast.
I would suggest the use of Effort Estimation Mobile Application that is optimized to give you fast and accurate effort estimations for mobile and web development, even to non experts. You can also try the free Orange Effort estimation tool for complex software development of general type, but it needs some field knowledge to use all models.