Software is developed or engineered, it is not manufactured.
Although some similarities exist between software development and hardware manufacture, the two activities are fundamentally different.
In both activities, high quality is achieved through good design, but the manufacturing phase for hardware can introduce quality problems that are nonexistent (or easily corrected) for software.
Software costs are concentrated in engineering.
Software projects cannot be managed as if they were manufacturing projects.
Software development presents a job shop environment.
Software does not wear out.
The failure rate of the hardware is high as the hardware components suffer from the Cumulative effects of dust, vibration, abuse, temperature extremes, and many other environmental maladies.
Stated simply, the hardware begins to wear out.
Software is not susceptible to the environmental maladies that cause hardware to wear out.
Undiscovered defects will cause high failure rates early in the life of a program.
However, these are corrected ideally, without introducing other errors
Software does not wear out, but it deteriorates.
Software maintenance involves considerably more complexity than hardware maintenance.
Time and effort for software development are hard to estimate.
Testing of software is extremely difficult.
Software development can’t address each and every requirements of customer.
It is very difficult to manage software and hardware simultaneously.