The success of the digital hardware component model is the primary inspiration for my interest in a software equivalent. The ability of digital hardware designers to choose from a large pool of components varying in complexity from simple to mind-numbingly complex and to arrange these into new, more powerful applications has resulted in the accelerating advancement of computer hardware over the last decades. The component approach has had similar effects in most other engineering endeavors, such as civil engineering and building architecture. Standard components are used to construct systems, avoiding the "reinvention of the wheel", and resulting in higher quality systems of increased complexity and sophistication.
The practice of writing software, on the other hand, has yet to evolve to this hallowed state. Since digital hardware is the foundation upon which software executes, it seems that the two must have similarities. By recognizing the similarities and differences between the two domains, lessons may be learned that can benefit the state of the art in the development of software.
When a system needs to push the limits of technology in terms of processing speed, the processing is designed into specialized hardware. This is possible because individual hardware components can and do operate in parallel, whereas software components generally execute sequentially on a single processor.
Top Level Schematic == main.cpp
PLD == creator
Breakdown at static/dynamic diffs.