Search
 
     
   
   
 
The Componentware Revolution (Part II)
 
 

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.

 
     
Copyright © 2006 iCMG. All rights reserved.
Site Index | Contact Us | Legal & Privacy Policy