Characteristics of Components in Conponent-based Computing or Component-based Software Engineering
Characteristics of components
·
Standardized: Component
standardization means that a component that is used in a CBSE process has to
conform to some standardized component model. This model may define component
interfaces, component meta-data, documentation, composition and deployment.
·
Independent: A component
should be independent – it should be possible to compose and deploy it without
having to use other specific components. In situations where the component
needs externally provided services, these should be explicitly set out in a ‘requires’
interface specification.
·
Composable: For a component
to be composable, all external interactions must take place through publicly
defined interfaces. In addition, it must provide external access to information
about itself such as its methods and attributes.
·
Deployable: To be
deployable, a component has to be self-contained and must be able to operate as
a stand-alone entity on some component platform that implements the component
model. This usually means that the component is a binary component that does
not have to be compiled before it is deployed.
·
Communicate: With regard to system-wide
co-ordination, components communicate with each other via interfaces.
When a component offers services to the rest of the system, it adopts a provided
interface that specifies the services that other components can utilize, and
how they can do so. This interface can be seen as a signature of the component
- the client does not need to know about the inner workings of the component
(implementation) in order to make use of it. This principle results in
components referred to as encapsulated.
·
Substitutable: Another important attribute of components is that they are substitutable,
so that a component can replace another (at design time or run-time), if the successor
component meets the requirements of the initial component (expressed via the
interfaces). Consequently, components can be replaced with either an updated
version or an alternative without breaking the system in which the component
operates.
·
Reusable: Reusability is an
important characteristic of a high-quality software component. Programmers
should design and implement software components in such a way that many different
programs can reuse them. Furthermore, component-based usability
testing should be considered when
software components directly interact with users. It takes significant effort
and awareness to write a software component that is effectively reusable. The
component needs to be:
i.
fully
documented
ii.
thoroughly
tested
a.
robust -
with comprehensive input-validity checking
- able to pass back appropriate error messages or return codes
iii.
designed
with an awareness that it will be put to unforeseen uses
·
Documented: Components have
to be fully documented so that potential users of the component can decide
whether or not they meet their needs. The syntax and, ideally, the semantics of
all component interfaces have to be specified.
Comments
Post a Comment