Designing Class based components, traditional Components
An
individual software component is a software
package, a web service, a web resource, or a module
that encapsulates a set of related functions (or data).
All system processes are
placed into separate components so that all of the data and functions inside
each component are semantically related (just as with the contents of classes).
Because of this principle, it is often said that components are modular and cohesive.
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.
The UML illustrations within this article represent provided interfaces by
a lollipop-symbol attached to the
outer edge of the component.
However, when a component
needs to use another component in order to function, it adopts a used interface that specifies the
services that it needs. In the UML illustrations in this article, used interfaces are represented by an
open socket symbol attached to the outer edge of the component.
A simple example of several
software components - pictured within a hypothetical holiday-reservation system
represented in UML 2.0.
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.
As a general rule of thumb
for engineers substituting components, component B can immediately replace
component A, if component B provides at least what component A provided and
uses no more than what component A used.
Software components often
take the form of objects (not classes) or collections of objects
(from object-oriented programming), in some binary or textual form,
adhering to some interface description language (IDL) so that the
component may exist autonomously from other components in a computer.
When a component is to be
accessed or shared across execution contexts or network links, techniques such
as serialization or marshalling are often employed to deliver the
component to its destination.
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:
·
fully documented
·
thoroughly tested
o robust - with comprehensive input-validity checking
o able to pass back appropriate
error messages or return codes
·
designed with an awareness that it will be put to unforeseen uses
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2023 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.