Definition of hardware
Hardware is any physical device, which is in, on, or with your machine. Likewise, hardware development involves the creation of hardware designs that are meant to be manufactured. The keyboard I used to type this article is hardware, and so is the screen you are using to view it.
The computer chips and wiring that make up the core of every electronic device are also hardware. Developers use languages solely to drive the action of the hardware called Hardware Description Languages (HDL). These languages allow the designer to do things like turn on and off diodes and perform simple logic. There are many languages to choose from, but most derive from two popular languages.
Verilog (a portmanteau of “verification” and “logic”) is one of the most common languages. In many ways it mirrors the syntax of C/C++, making it more accessible to software developers. Offshoots of Verilog include SystemVerilog and e.
VHDL (VHSIC HDL, or Very High Speed Integrated Circuit Hardware Description Language) is a dataflow language. This essentially means that instead of running one line at a time in sequence, it is able to run several operations concurrently as soon as the data that drives them becomes available. This allows for faster processing speeds.
The Samsung issue
Because hardware must be designed and manufactured in the physical world, it is important that developers get it right the first time. Changing hardware can require an immense amount of time and money. When the Samsung Galaxy Note 7 phone batteries started exploding in 2016, the company recalled 2.5 million phones. It took the company four months to correctly identify the problem and come up with a solution.
In the event of a software issue, Samsung could have changed the code without the necessity of shipping the faulty devices back to them. Another approach would involve reverting to a software version that did not have an issue while they patched the new one. In the end, it turned out that there was simply not enough space in the enclosure for the batteries which resulted in them overheating. All in all, fixing this hardware bug cost Samsung $5.3 billion
Usually a team of specialized quality engineers do the software testing. Hardware is generally tested by the engineers who design it or a team of people working closely with them. This can lead to an additional weakness in hardware, as these design engineers are inclined to test the product in the manner it is meant to be used.
Unfortunately, people often use products in any way except the way they should use them. Engineers often overlook these cases. In the case of the Note 7 phone, the manufacturer tried to save material costs by making the cases slightly smaller, squishing the batteries and costing the parent company billions.
What is the relationship between hardware and software development?
The needs of the user and technological constraints form the basis for requirements related to both hardware and software. User-need requirements are generally referres to as “user-facing” while constraints that are invisible to the user are the “non-user-facing”. Software is often developed alongside hardware to optimize the functionality of both.
This is because they want to make the phone run as quickly and smoothly as possible. Unfortunately for people who haven’t upgraded their phone, upgraded software is no longer optimized for the old hardware. It causes that their phone may run slower and less smoothly when updated. This fact reflects the symbiotic relationship of hardware and software. Both software and hardware developers constantly try to push the boundaries of what is possible. However, neither is able to make large advancements without the other.
What’s the relationship between hardware, firmware and software development?
A third type of “ware” that straddles the line between hardware and software is firmware. Firmware is software that is developed in conjunction with hardware and embedded in read-only format. A great example of this is the software that make household appliances work. Your microwave has a set of complex rules that make it cook a potato at a different time than a bag of popcorn.
Since this type of software is developed specifically for that appliance, it cannot be altered. Advances in hardware technology, i.e. computer chips, allow firmware to take up less physical space in a device. Advances in software enable firmware to work more efficiently and seamlessly. These advances offer us more options than ever whether related to microwaves or any other technology that we interact with on a daily basis.