Showing posts from December, 2011

Software design vs Hardware design

Recently, I designed a circuit for a home project. It got me thinking about the differences between circuit design and hardware design. In hardware design, we operate with a set of discrete components, furthermore our design is constrained by: time, money, space, availability and power. Based on these constraints we would find well defined functional building block (components) and function by function construct a device that produces the desired output, given a particular set of inputs. This process is iterative, the design of the system follows the same process and any of the sub-systems. In some ways the constraints and the fact that inputs and outputs are well defined (making system design the same as that for sub-systems) makes the design process uniform and relatively easy. I was amazed at how deterministic my circuit design was as compared to software design. In software design, we have become overwhelmed by the number of components, the complexity of the inputs and outputs,