What's in a component, anyway? Why use them to develop software? Software developers have dreamed for decades of a future where applications could be built by simply plugging together off-the-shelf components. In some development environments, this is at least partly reality today. Many GUI programming tools let you construct at least the visual parts of an application by assembling components.
The promised benefits of component-based development architectures include reusability (and therefore less repetitive work), reliability (if each part works separately, and they are assembled correctly, the whole assembly should work), and ease of understanding/maintenance (because parts can be understood separately).
To be useful, a component architecture must include ways of:
Let's look at how PEAK addresses these issues.