In the make-versus-buy thinking for embedded firmware, be sure to understand the total cost of ownership.
Innovation can be an exciting endeavor but on occasion management and developer decisions will optimistically estimate the cost implications for a project. That optimism can sometimes come from a short-sightedness or knowledge gap in understanding what is involved in the total cost of ownership for developing embedded software. Let’s look at the five major cost contributors that affect the total cost of ownership.
Contributor #1 – Software licensing
The number one misunderstood cost contributor for developing embedded software is the cost of licensing third party software. Now don’t misunderstand me; using third party software is absolutely critical to controlling costs and getting to market in a reasonable timeframe. Yet despite the development costs to create software from scratch, many development teams hate paying for someone else's software. Rather than license a commercially available product that has exemplary support, they would rather use open source software.
Open source software can be excellent but teams habitually underestimate the time it will take to get up to speed on the free software, the time spent in lonely debug sessions with no support, and the time spent integrating the software with other components. So even if the software is “free," the cost to use that software is not zero because time must be spent learning, educating, integrating, testing, debugging, and maintaining it. I suspect the price tag for all time that is not low, but many teams that I encounter overlook these critical points.
Contributor #2 – Software development
The cost contributor that most teams are familiar with and focus the most on is the development costs! How many hours will it take to build widget X? Teams always seem to get empowered by throwing out some imaginary number that is based on intuition and guesswork rather than any metric or historical data, and then marching madly towards the time abyss. Yet at the project's end, development costs involve more than the time to build X. They include all the hardware, software, and infrastructure required to develop a system in addition to the fully loaded labor costs (salary, vacations, benefits, taxes, insurance, etc.) associated with the developers, managers, interns and their favorite source of caffeine.
Contributor #3 – Software maintenance
The cost to maintain embedded software can be the single greatest factor in the total ownership cost. For most teams all the focus is on what it takes to get to market. Rarely does anyone consider up front the cost to maintain the software so that it remains marketable.
Software maintenance requires keeping key personal available to the project after all the fun development has been completed. Maintenance must deal with team member turn-over, undoubtedly requiring investment in training junior engineers or new personal. Maintenance engineers must add new features, remove bugs, and handle tool updates, revision control, and customizations to name a few key tasks. Depending on the product, just maintaining and keeping software versions straight can require a significant investment. Despite all these factors, usually only the development costs are initially considered when developing a new product.
Continue reading on EE Times' sister site, EDN.com.