Definitions:
- A unit of composition with a specified interface, that can be deployed independently and is subject to composition with other parts.
- A coherent package of software implementation that :
- Can be independently developed and deployed
- has explicit and well specified interface of services it provides
- has explicit and well defined set of interfaces for the servies it expect.
- can be composed with other components.
usually there exists an abstract component Model that defines the interaction and composition standards. then this component model is implemented in a framework like implementation that allows for conformed components to plug into .
Example :
- Component Model : Unix
- Implementation : Free BSD
- Components: Applications
Basic Elements of Component Model
- Interfaces: Specification of component behavior and properties
- Naming : Global unique names for interfaces and components
- Meta Data: Information about components interfaces and thier relationships
- Interoperability: Communication and data exchange among components from different vendors.
- Customization: Interfaces for customizing components
- Compositions : interfaces and rules for combing in components to create larger strcutrues
- Evolution Support: rules and services for replacing components or interfaces by newer versions
- packaging and Deployment:
In certain scenarios a more accurate specification of the components behavior can be acheived through contracts rather than interfaces .
Objects VS Components:
- Components usually use persistent state rather than local state
- Components usually have a more extensive set of intercommunication mechanisms rather than messaging .
- usually have more complex functions are their interfaces .
- Components names are not types
- Components implementation is more hidden
- Components standards.
a framework could be seen as the context in which we glue software pieces together, it's in general a reusable design of a system, or a skeleton on an application which can be customized by an application developer.
Eclipse framework ( www.eclipse.org)
Are Frameworks the same as design patterns ?
major differences lie in:
- Level of abstraction
- DPs are smaller architecture elements
- the level of specialization