Estimating Custom Software Development Projects

Estimating_Custom_Software_Development_Projects.jpgCost estimation is a critical aspect of the planning process when embarking on a custom software development venture. However, due to the dynamic nature of custom software development, accurate estimation of the development efforts and costs can be a difficult process that can even compromise the project success.

If done accurately, proper estimates of the development cost can allow your organization to gain control over the progress of development while reducing your risks and ensuring higher software quality.  Careful cost estimation also can help ensure the overall success in terms of budget and timeline adherence when it comes to your project.

With only 32% of software projects completed within budget and on time, a further 24% failing outright (incomplete or cancelled), and 44% of questionable status (meaning incurring cost overruns), robust cost estimation is a necessity [1].

Furthermore, as custom software solutions on average represent a core percentage of enterprise spending (25.6% to be exact) the need arises to be able to create accurate cost forecasts before and during the development process [2]. 

What Affects the Cost of a Custom Software Project?

When estimating the development project cost, the first question to ask is what are the cost-driving factors? From literature and research, the following seven items that influence software development costs have been identified as main cost drivers [3].

Project Requirement Accessibility

The more difficulty developers have obtaining and understanding the project requirements, the more time will be needed for development. Naturally, this raises the cost of the project.

Database Scale

The size of the database required can affect total project costs by influencing the requirements needed for data processing algorithms. Projects that rely on larger, more complex databases will naturally take more time and incur more costs.

Software Reliability

Depending on your exact needs, you may require extremely reliable software. This raises the workload for developers, leading to higher costs. For software that is of average reliability, the testing requirements rise instead.

Software Function

If your software requires more functions, the workload of the developers increases, slowing down the time of the project and raising costs.

Development Platform

The platform that the development team uses is also a cost-driving factor. Better platforms, with advanced features, allow for more efficient development, leading to shorter development cycles and overall lower costs.

Development Experience

Beyond the development platform, the experience of the team itself also affects the project costs. If the team has had prior experience on relevant projects, they can more accurately obtain the requirements and work with greater efficiency to result in a less costly total.  Further, the team’s experience with a common methodology and SDLC, will result in projects being completed closer to the estimate. 

Developer Capacity

Developers and architects with greater capability and talent to research and develop will produce more effective development and shorter cycles. This would ultimately reduce overall software costs.  This doesn’t necessarily mean that all developers need to be senior level, as junior developers working on clearly defined tasks can have a positive influence on overall costs as well.

Ultimately, the general basis of cost drivers is simple: the more complexity involved, the more time and costs are required.

Methods for Estimating Cost

Companies have a variety of methods at their disposal for estimating the costs of software development. Out of these, the most common methods in use today are the algorithm model, expert judgment, regression analysis, and analogous estimating [4].  As complex as this all sounds, time is a constant factor in determining costs. 

Algorithm Model

This method relies on an analysis of the factors that affect the development cost. The factors are weighted and used as parameters in a function that estimates the cost. Benefits of using algorithm models include their reusable nature and intuitive use. A drawback however to this form of cost estimation is it cannot accurately predict costs when there is a non-linear relationship between the cost factors.

Expert Judgment

Cost is estimated using the expert judgment method through the creation of voting rules based on the judgment and experience of experts. This model is simple to use, but arguably has too much uncertainty and too little objectivity due to the human factor.

Regression Analysis

Cost-driving factors are treated as independent variables with the development cost as a dependent variable. A linear or nonlinear relationship between these, based on historical data from previous projects, can then be sought out. While accuracy is usually high for this method, it unfortunately requires high data quality of a quantitative nature.

Analogous Estimating

The final major method used for calculating development costs essentially compares the costs of similar completed projects to estimate the cost of the new project, using particle swarm optimization, fuzzy theory, or other mathematical methods.

Cost Estimation: Implications for Your Business

After discussing the factors that drive costs and methods for estimation, the question remains: what does this mean for you and your business?

To begin with, you should analyze your custom software development project in terms of its cost drivers. In order to minimize costs while improving estimate accuracy, it's important to be realistic about your project requirements. The more complex your requirements, the higher your estimate should be.

To cut down on potential costs, you can take steps that range from improving communication with the development team, to reassessing the functions you actually need. 

Furthermore, it's arguably safer to err on the side of overestimation. Since it's impossible to end up with a 100% accurate estimate, overestimates have the benefit of ensuring that at least the work gets done, albeit at the expense of potentially wasted time.

The dangers in underestimating are far worse: the developers can stress about strict timelines resulting from cost-saving measures to meet the estimate, the project could be delayed when the need for more resources arises, the overall project quality could suffer, and at worst, the project could fail entirely.

To be safe, it's an option to provide a range of estimates as opposed to just one figure. Ranges better consider natural task variation and provide a buffer in case of unexpected and uncontrollable events. 

Finally, don’t let the desire to quickly move into the development phase of a project short change the effort to properly plan.  Take a little extra time to gather and analyze the requirements, dependencies and risks to produce an estimate that is likely to be more accurate.   Double or triple check the requirements and resulting estimates and be discerning.  Spending just an extra week or two upfront can save months of development time.  Remember it’s much more cost effective to change a requirement or a user story than it is to change the code. 

Final Thoughts

According to a study by Forrester, businesses see custom software as being a better fit for their unique organizational needs, providing competitive differentiation, and facilitating innovation [5].  High quality software that meets the exact needs of the business will produce a high return on investment even with some cost overruns on estimates that aren’t completely accurate.

However, these advantages of custom software solutions can be easily in danger of getting outweighed by unruly project cost estimates that can risk the entire success of the development.

In contrast, the ability to create reasonable project estimates can help ensure both development and implementation success.

How will you estimate your custom development project costs? 

Guide to Custom Software Solutions Ebook

References:

  1. Al-Qudah, S., Meridji, K., Al-Sarayreh, K., “A comprehensive survey of software development cost estimation studies.” In: Proceedings of the international conference on intelligent information processing, security and advanced communication, New York, USA: ACM, 2015. Pp. 53-58.
  2. Ried, S. "Ten Myths And Realities Of The Software Market In 2013: Forrester's Forrsights Survey Helps Sort The Myths From The Reality." Forrester Research, Inc. August 5, 2013. 
  3. Wang, R., Peng, P., Xu, L., Huang, X., Qiao, X. "A Novel Algorithm for Software Development Cost Estimation Based on Fuzzy Rough Set." In: Journal of Engineering Science and Technology Review, Volume 9, Issue 4, October 2016.
  4. Pandey, P., “Analysis of the techniques for software cost estimation.” In: Proceedings of the 3rd international conference on advanced computing and communication technologies, Rohtak, India: IEEE, 2013. Pp. 16-19.
  5. "Drive Innovation Using The Right Skills: The Value of Custom Software Development. A Forrester Consulting Thought Leadership Paper Commissioned By ThoughtWorks." Forrester Research, Inc. March 2015.

Posted in Business ROI, Custom Software Development