Estimating software development cost - Important factors to consider

Estimating software development cost - Important factors to consider

The majority of today's companies rely heavily on software programs that support their business processes. When business processes are modified to meet new requirements, software programs must make the corresponding changes or create new supporting software. This also happens when a company introduces new business processes. Since modern software programs are often interconnected and linked to heterogeneous systems landscapes, developing a new system often involves modifying older programs. This makes software development costs difficult to predict and development cost estimation methods are useful as decision support. The development of completely new software programs, as well as the modification of older programs, is often done on projects. Laird and Brennan confirm that 23% of all software projects are canceled before completion, because of unexplored, increasing, and unscheduled costs. Also, of the completed projects, only 28% were delivered on time through an intermediate project that exceeded the budget by 45%. Despite the existence of cost-effectiveness models established, the Standish Group reports that this trend has escalated over the past few years. The need for a well-established basis for a cost-effective decision is far greater. Therefore, the research question addressed here is: What factors contribute to the cost of a software development project? Other important factors have a clear relationship between the cost and the project, a scientific contribution from these results and therefore not mentioned. These factors include duration, moderators, and project participants. A brief overview of the highly correlated cost-driving factors identified from the literature is given below:

Team Size & Seniority

Most of the Software development costs are related to programmers' salaries and recent evidence suggests that team-related factors may affect project performance and cost. Choosing the right group size for our Scrum or Waterfall continues to be a challenge for many project managers. Larger groups represent a better distribution of skills but lead to higher communication and integration costs. Smaller groups lead to reduced communication and coordination costs but lead to system configuration that makes software maintenance expensive. Smaller groups, because of related program domains, may not have a problem solving large-sized large projects.

Understanding the relationships and impact of group size on software development costs is important because many managers when faced with tight deadlines, are tempted to increase team size. Among the reasons for the increase in the group size are:

1.     The pressure to meet the schedule, as the competitive advantage of technology decreases over time

2.     Dedicating one person to a project does not mean linear completion time

3.     Dividing the work into smaller projects allows more people to work on the project at the same time, which reduces the time it takes to complete the project.

Although increasing team size for strict deadlines seems to be a good idea, it is not clear if it works well. For example, Biffl and Gutjahr point out that increasing the size of the group will significantly increase the number of defects experienced by the team and may not mean that the project will be completed on time. Most software quality experts agree that team size should be greater at the beginning or in the middle of a project than at the end of a project. Larger team sizes at the beginning of the project allow for rigorous software product testing in the early stages of SDLC.

Quality of Management

Managing software development has been a major challenge for decades. Boehm has warned that mismanagement can increase software costs faster than anything else. Negative acts such as lack of motivation environment; lack of roles definition; and gaps in the requirements specification are responsible for doubling the cost of software development. The author emphasizes that "if management does not want to improve software production, the organization will not be able to improve it". Management quality is the key to a successful project. This can create chaos and lead to more wasteful efforts and lower productivity. Group productivity is strongly influenced by how their integration efforts are distributed. Coordination specialized/experienced plays an important role in explaining the team's performance above and beyond traditional factors. When a team manager acts as a motivator, coordinator, and supporter, the team's overall efficiency productivity increases.

Project Complexity

This is the first thing a client needs to understand. For an outsourcing company to successfully calculate the potential cost of a project, it is important that to get to the root of the project and discuss what kind of software you want to build. If you, as a client, want something that is still “shapeless", has a lot of unknowns and uncertainties, and demands constant back and forth work - that will have a huge impact on the cost of the project. For example, if a development company needs to create a functional model that will change over time depending on user feedback, this will not be cheaper. Logically, every hour someone spends working on your solution and rewriting the lines of code will be considered an additional task. Therefore, if you do not want to exceed your initial budget, it is advisable to invest in getting what you need before entering the development phase.

Functionality & Ammount of Features

Functionality can be one of the biggest software development cost drivers. The more commands the program needs to have, the higher the price will be. The logic behind this is simple - more people will need to work on a specific project and invest more hours into its development. Every function of the software needs to be completed by the developer or it won’t work. Simple as that. This means that every element, everything you want the program to do based on every command - needs to be in place for it to work properly. Of course, specific functionalities require specific skills set that not all developers have. For instance, if you’re building an app that demands attention from senior developers, it’s only logical to assume that their hourly rates are much higher than those of devs who are still on the junior level.

Novelty of used Technology

Novelty is also an important factor when it comes to understanding the complexity of a particular project. The use of cutting-edge technology that our developers don’t use and will need to study for a particular project, also has an impact on the final price.

IT-Security

If you are doing a project where high-level security is important and requires additional development efforts and special arrangements for the development process - that will also add extra dollars to the final cost.

Integration and Interfaces

Integration is the factor that affects the cost of particular software. If a client wants to integrate its solution with more than a couple of third-party business applications, such as CRM and various intelligence tools and HR tools - that will require additional hours and thus, more money to see all the requests through. Some combinations are easy to set up, like APIs, for example. Others tend to be a big challenge. In this case, the development team will need to invest a lot of time and energy in analyzing, planning, and validating results.

Overhead

Further, Robert Lagerstr?m et al. conducted a preliminary study on project documentation at one of Sweden's largest banks to compile a list of factors that could have a significant impact on every software development project as well, namely risk classification, budget revisions, primary platform, and project priority.


___

REFERENCES

Laird, L. & Brennan, C. (2006). Software measurement and estimation: A practical approach. New York: IEEE Computer Society/Wiley.

The Standish Group. (2009). Chaos summary 2009. Available on https://www.standishgroup.com, accessed February 5, 2010

Gorla, N. and Lam, Y. W. Who should work with whom? Building effective software project teams. Comm. ACM47, 6 (June 2004) 79?82.

Pendharkar, P.C. and Rodger, J.A. An empirical study of the impact of team size on software development effort, Information Technology and Management 8 (2007), 253?262.

Faraj, S. and Sproull, L. Coordinating expertise in software development teams. Management Science 46,12, (2000), 1554?1568.

Brooks, F. The Mythical Man-Month. Addison-Wesley. Reading, MA, 1975

Biffl, S. and Gutjahr, W. Influence of team size and defect detection technique on inspection effectiveness. Proceedings of Seventh International Software Metrics Symposium, London, UK, 2001, 63?75.

B. Boehm, "Software Engineering Economics" in, Upper Saddle River, NJ, USA: Prentice Hall PTR, 1981

D. B. Simmons, "Software Organization Productivity", 2007.

R. I. Chiang and V. S. Mookerjee, "Improving software team productivity", Commun. ACM, pp. 89-93, 2004.

S. Faraj and L. Sproull, "Coordinating Expertise in Software Development Teams", Manage. Sci, vol. 46, pp. 1554-1568, Dec. 2000.

Lagerstr?m, Robert, Liv Marcks von Würtemberg, Hannes Holm, and Oscar Luczak. "Identifying factors affecting software development cost and productivity." Software Quality Journal 20, no. 2 (2012): 395-417.







Thank you, Christos Zois Very interesting and well-written article. Dealing with cost estimation and budget issues is a bread and butter for every company that provides software solutions.

要查看或添加评论,请登录

社区洞察

其他会员也浏览了