Monday, October 22, 2007

Software Components

Software components:
  1. A unit of composition with a specified interface, that can be deployed independently and is subject to composition with other parts.
  2. A coherent package of software implementation that :
    1. Can be independently developed and deployed
    2. has explicit and well specified interface of services it provides
    3. has explicit and well defined set of interfaces for the servies it expect.
    4. can be composed with other components.
Component, Model, Infrastructure:
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
Some of the problems this architecture ran into (for OS's) is the applications are rarely used as building blocks, and the lack os the domain specific standards, in that the services an OS provides is too general to be used effectively.

Basic Elements of Component Model
  1. Interfaces: Specification of component behavior and properties
  2. Naming : Global unique names for interfaces and components
  3. Meta Data: Information about components interfaces and thier relationships
  4. Interoperability: Communication and data exchange among components from different vendors.
  5. Customization: Interfaces for customizing components
  6. Compositions : interfaces and rules for combing in components to create larger strcutrues
  7. Evolution Support: rules and services for replacing components or interfaces by newer versions
  8. 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.
Application Frameworks:
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 (

Are Frameworks the same as design patterns ?
major differences lie in:
  • Level of abstraction
  • DPs are smaller architecture elements
  • the level of specialization
Reference: Prof M Robillard