A framework is usually considered some kind of software "infrastructure" that is the pre-requisite to an expandable system, i.e. the environment where components live. A framework for components enables an application to use a component it has never heard of - and was not specifically adapted for - because both the application and the component comply to the framework and know what to expect from each other.
A software component is a system element offering a predefined service and able to communicate with other components. Components are reusable, non-context-specific and composable with other components. The main purpose of creating components is to enable use of the same component in applications needing similar functionality. An existing component can be replaced with a new implementation of the same functionality, without changing a single line of code in the application, because the interface remains the same. From the programmer point of view in ERF, the role of a Component is to provide a Extensible Markup Language (XML) input/output for encapsulated C++ methods and data access; The ERF component implementation was inspired by the component features available in the Objective-C programming language. ERF component features are the following: message passing between components, dynamic loading, and introspection (allow querying what services/data the component provides). When developing components it is crutial to verify that new features do not break the existing framework, that components interoperate seamlessly, and that authors provide documentation.
is a set of functionality that are to be merged in a composite application. In ERF the Components inherit from the base Plugin
class, augmenting the Plugin
with new functionalities like XML communication.