 |
|
|
By
Dr.Thomas J Mowbray
Chairman - iCMG
|
Componentware
Resolving the
software crisis requires fundamental changes in
systems thinking, software processes, and technology
utilization. The next major era of technology,
The Componentware Revolution, contains key elements
of the crisis solution.
The componentware
approach introduces a set of closely interrelated
techniques and technologies. Componentware introduces
a sophisticated mindset for generating business
results. These componentware elements include:
Component Infrastructures
Software Patterns
Software Architecture
Component-Based Development
Componentware technologies provide sophisticated
approaches to software development that challenges
outdated assumptions. Together these elements
create a major new technology trend. Componentware
represents as fundamental a change in technology
as object-orientation and previous generations.
We will discuss
these componentware technologies after a brief
introduction to componentware's unique principles.
Components
versus Objects
Componentware
can be understood as a reincarnation of object-orientation
and other software technologies. What distinguishes
componentware from previous generations of technology
are four principles: encapsulation, polymorphism,
late binding, and safety. This list overlaps with
object-orientation, except that it eliminates
the emphasis on inheritance. In component thinking,
inheritance is as a tightly-coupled, white box
relationship that is unsuitable for most forms
of packaging and reuse. Instead, components reuse
functionality by invoking other objects and components
instead of inheriting from them. In component
terminology, these invocations are called delegations.
By convention,
all components have specifications corresponding
to their implementations. The specification defines
the component encapsulation (i.e. its public interfaces
to other components). Reuse of component specifications
is a form of polymorphism which is strongly encouraged.
Ideally, component specifications are local or
global standards that are widely reused throughout
a system, an enterprise, or an industry.
Componentware
utilizes composition for building systems. In
composition, we integrate two or more components
to create a larger entity, which could be a new
component, a component framework, or an entire
system. Composition is the integration of components.
The combined component acquires joint specifications
from the constituent component.
If the components
have matching specifications for client calls
and services, then they can interoperate with
no extra coding. This is often called plug and
play integration. At run time, when executed at
runtime, this is a form of a late binding. For
example, a client component can discover a component
server through an on-line directory, such as the
CORBA Trader Service. With matching client and
service interface specifications, the components
can establish a run-time binding to each other,
and interact seamlessly through the component
infrastructure.
In a perfect
world, all components would be fully conformant
with their specifications and free from all defects.
Successful operation and interoperation of components
depends on many internal and external factors.
Safety properties can help because they can minimize
entire classes of defects in a component environment.
As society becomes increasingly dependent upon
software technology, safety has become a serious
legal concern and one of the most important areas
of computer science research.
For example,
Java's garbage collection feature guarantees memory
safety, or freedom from memory deallocation defects
(which are problematic in C++ programs). Other
kinds of safety include type safety (guaranteed
data type compatibility), and module safety which
controls the effects of software extension and
component composition.
|