Today, everyone knows what Agile is and what means of software development is, so let’s start with defining what means of hardware and hardware development.
“Hardware” is specifically one kind of electrical or electro-mechanical devices, which regularly include firmware or embedded software like networking equipment, phones, and other communications technology; consumer electronics; computers; medical devices; ASICs (Application-Specific Integrated Circuits), and so forth.
Also, “hardware development” is taken to mean the development of designs for devices that are intended to be manufactured.
Common Features between Hardware and Software Development
Three ways to define product behavior
– Users interact with the products in various ways
– products interact with other products
– Products produce outputs given inputs.
Two types of Functional Requirements
– user-facing functional Requirements
– non-user-facing functional Requirements
Any representation of product specifications invariably leads to a tree structure, as major features are decomposed into finer-grained features.
Differences between Hardware and Software Development
- The software is easier to change than hardware. The cost of change is much higher for hardware than for software.
- Software products evolve through multiple releases by adding new features and re-writing existing logic to support the new features. Hardware products consist of physical components that cannot be “refactored” after manufacturing, and cannot add new capabilities that require hardware changes.
- Designs for new hardware is often based upon earlier-generation products, but commonly rely on next-generation components not yet present.
- Hardware designs are constrained by the need to incorporate standard parts.
- Specialized hardware components can have much longer lead times for acquisition than is true for software.
- Hardware design is driven by architectural decisions. More of the architectural work must be done up front compared to software products.
- The cost of development for software products is relatively flat over time. However, the cost of hardware development rises rapidly towards the end of the development cycle. Testing software commonly requires developing thousands of test cases. Hardware testing involves far fewer tests.
- Software testing is done by specialized Quality Assurance (QA) engineers, while hardware testing is commonly done by the engineers who are creating the product.
- Hardware must be designed and tested to work over a range of time and environmental conditions, which is not the case for software.
Hardware development incorporates four parallel, synchronized projects:
1) The detailed design of the manufacturable product
2) The manufacturing process and tooling
3) The test and inspection process and equipment; and
4) The supply chain for purchased parts.
In software development, the detailed design is the product, and production deployment consists of moving the product into a context where it can be used.
Due to many of the above factors, it is possible to make major changes in direction for a planned software-product upgrade in mid-development, without massive disruption and waste.
Attempts to make such changes in hardware development come at a much higher cost, in terms of sunk costs wasted, and shipping schedules postponed.