If you talk to anyone with a smartphone or a laptop, you’ll inevitably hear them gripe about the “slow software” or the “spinning wheel.” But do they complain about the processor or other chips in the device? Not likely. Software is usually the scapegoat, due in part to how it is developed as compared to how the hardware is designed. Andreas Kuehlmann, senior vice president of R&D at Coverity, a leading provider of software quality and testing solutions, has outlined just a few of the key differences between hardware design and software development. Read on to learn more.
Click through for a few of the key differences between hardware design and software development, as identified by Andreas Kuehlmann, senior vice president of R&D at Coverity.
Hardware is designed; software is developed.
What is “design” for one is “development” for the other. While this might seem like a minor difference, it isn’t. “Chip designers” are “hardware engineers” – the terms are interchangeable. However, there is a significant difference between a designer and a developer in the software world — in this domain, developers write actual code while designers do the layout for best user experience, logos, etc. A good analogy is to compare the designer to an interior decorator (who comes up with the designs), while the developer is compared to a carpenter (who actually writes the code that performs the tasks). When you’re creating new software products, you don’t want to get these mixed up.
There are a lot more software developers than hardware designers.
Want to become a software developer? There are a lot of ways to learn how to write software code – and it doesn’t have to happen in a formal program. While you need to invest significant time (and money) to get the required education and experience to become a hardware designer, many people can learn to code at little or no cost. This is due in part to the open source software movement, as well as online organizations such as Code Academy. So it should come as no surprise that there are more than 15 million software developers in the world today, compared to fewer than 100,000 chip designers.
Escaped bugs in hardware are much more expensive than bugs in software.
The mantra for all hardware design is “right the first time” – as once the product has shipped, it can’t be changed. To support this, designers require comprehensive testing and verification tools, which are typically very expensive: Companies spend on average tens of thousands of dollars per engineer on hardware tools. This isn’t the case with software development. Developers often use a combination of tools, leveraging both inexpensive, commercially available solutions as well as free, open source options. As a result, companies spend on average only a few thousand dollars per developer on software testing tools.
Hardware design ends at ‘tape-out’ (the equivalent of a release), while software development is constantly in motion.
As mentioned earlier, once hardware ships to the customer, it can’t be changed. Moreover, chips made utilizing new technology nodes often require different circuit solutions. Both result in a tight control of the amount of “carry-over” from previous designs, limiting the amount of “technical debt” that accumulates over time. In software, the term “technical debt” is used as a synonym for the cost of bugs that are carried forward from release to release because they never seem critical enough to get fixed. As the code base evolves over time, it becomes more complex and technical debt can easily grow out of control. So it is critical to sufficiently invest in testing while the code is written in order to stay in the driver’s seat for quality.
When there’s a problem, you’ll blame the software…not the hardware.
When your computer starts giving you problems, odds are that you’re going to complain about your OS (whether it be Windows, Mac OS or Linux) or the application before you complain about the actual hardware it is running on. This reflects the fact that hardware verification tools and methodologies are 10-15 years ahead of software development tools. The world has been and still is getting away with buggy software. However, this is changing rapidly and the sooner organizations realize that software quality does affect their customers – and their bottom lines – and begin taking their software testing seriously, the better off we’ll all be.