 |
The 'O Scale' |
| By Clive
Boustred |
A. Introduction
B. The Key Features of Object
Orientation
C. Classification of Products - The "O
Scale"
D. Summary
E. Conclusion
There is much confusion in the
market regarding objects. Objects are now the in thing. Most vendors
claim some form of object-orientated capability in their product.
There are, however, considerable differences between products and
the level to which they support object-orientated concepts. The
problem, however, stems from the basic definition of an object. What
after all is an object?
While this is a relatively
straightforward subject, we will reiterate object concepts in order
to provide clarity and then define a reference model for gauging and
representing a product's object-orientated capabilities.
Firstly, we will ignore the
simplistic view of an object and concentrate entirely on the
software object model. It is, after all, software we are gauging.
Objects are made up of a few
primary elements.
The most fundamental aspect
to object-orientated techniques is the separation of interface
from implementation which involves the support of standard
interfaces being defined for all objects.
Classes form
templates from which similar objects may be created. These
objects being referred to as instances to that
class. Classes may have global class variables and methods
that may be applied to any instance of the class.
The data itself - The
object's state is defined by instance variables.
Methods define procedures
that may be invoked against the variables. The methods define the
behavior of the object.
Sub classing provides the
means by which a new class can inherit instance variables and
methods from any existing class. Inheritance provides the ability
for an object to inherit characteristics from an
ancestor; multiple inheritance refers to many layers of sub
classes.
Different object
methods may be given the same
name. This provides individual procedures for
each object that may be invoked by a common call. For example
invoking the method "Add" could perform different addition
routines for each object. This generally simplifies the design of
programs.
An object's type tells
programmers the set of operations (methods) that can be performed
on the object.
To encapsulate an element
and provide a controlled interface to the outside world,
effectively creating an object out of the encapsulated element
which could be legacy code or an object itself. Encapsulation
provides the ability to modify the contents or methods within an
object without affecting external dependencies, so long as the
interfaces remain constant.
Messages are used to
communicate between objects. Messages might simply invoke methods
on other local or remote objects. Messages may themselves be
objects, containing both methods and variables, that are passed
between different objects.
Object identifiers provide a
unique identifier of the object. Distributed dynamic binding
provides the ability to track and locate objects through their
object identifier, regardless of their physical location.
Reusable objects that come
with or are available for any specific products environment..
Two simple object
classifications have been previously used: Object-Based and
Object-Orientated technologies.
Object-based technologies
represent general technologies that allow the implementation of some
or all of the object principals. However, they do not enforce object
orientation.
Object-orientated technologies
represent technologies that enforce the principals of object
orientation: Inheritance, encapsulation, polymorphism, class
structures, etc. SmallTalk, C++, Ada and most of the ORBs tend to
fall in this category. The lines are not necessarily clear as it is
possible to write a program that is not at all object-orientated
with C++, while OLE, for example, does not support inheritance but
is generally considered an object-orientated technology.
This basic classification
method ends up being too vague for the many products on the market
today. A more detailed classification based on the features of
object orientation is required.
The following section details
the O Scale, which may be used to determine a product's relative
scoring based on key object-orientation features.
The O Scale
To determine a product's
rating on the O Scale, use the following evaluation guidelines for
each of the categories, providing a maximum score of one for each
category.
1. Interface Definition - The
separation of Interface from Implementation
This category forms a
watershed for technologies claiming object orientation, while it
separates proprietary technologies from industry standards. If a
object cannot interact with objects from other vendors and
products it provides a closed proprietary system whose future is
questionable. There are two Interface Definition Language (IDL)
standards: the OMG CORBA IDL and the Microsoft IDL (MIDL).
Firstly, determine if a
product allows the separation of interface from implementation. If
it does not, it is not object orientated. Secondly, determine the
level to which a product supports IDL and MIDL.
2. Classes & Instances
This should be a simple
rating to determine how well the product supports classes &
instances.
3. Instance Variables
In this rating determine the
methods and formats in which instance variables may be stored.
4. Methods
In this rating determine how
easily methods may be implemented.
5. Sub Classes, Inheritance
& Multiple Inheritance
Determine a product's
support of inheritance and its ability to circumvent multiple
inheritance problems.
6. Polymorphism & Object
Type
This should be a simple
rating to determine a product's support for polymorphism. You can
also consider how easily an object's type may be determined.
7. Encapsulation
Determine a product's
ability to encapsulate legacy or foreign elements.
8. Messaging
Determine a product's
messaging capabilities, types of messages that may be transmitted,
performance and message-handling abilities.
9. Object Identifier &
Distributed Dynamic Binding
Consider the way in which
object identifies are issued; if they are guaranteed unique; and
determine the efficiencies and performance of the dynamic binding
techniques.
10. Standard Objects or
Frameworks
One of the key features of
object-orientated technologies is that you may build software from
pre-constructed objects. Determine what frameworks and individual
objects are available. This category will strongly determine which
products succeed of fail in the market.
You should now be able to
determine a product's O Scale rating out of 10 by using the above
classification technique. This will also help separate much of the
marketing hype from a product's real ability to support
object-orientated techniques.
While object orientation
provides considerable advantages one will quickly find that it also
raises new design issues. With polymorphism it is important to
ensure that commonality and consistent naming is applied across all
objects; that the object classes are correctly classified. If the
technology does not eliminate multiple inheritance conflicts,
procedures must be implemented to resolve fragile base class
problem. Object re-use is only effective when the development staff
is fully knowledgeable about what objects are available and how they
may be applied, etc.
Also recognize that there are
numerous different incompatible object models. Objects do not
necessarily speak to each other. CORBA and OLE help to define
standards that promote object interaction.
The goal of any technology is
to enable domain experts to do the things they want to naturally,
without requiring cognitive cycles to be expended on absurd syntax
or inconceivable structure. Note: We used the term "domain expert"
rather than programmer. A programmer has been an unfortunate
necessity for the development of software. As with any software
product, the ideas of the domain expert need to be converted to
machine-driven code. This process has in the past required low-level
programming skills such as the early assembler languages and 3 GLs.
Very rarely do the domain experts themselves possess both domain and
programming skills. Modern CASE tools are striving to make the
program development task intuitive enough for any domain expert to
easily master.
Object-orientated capabilities
provide a strong foundation for implementing advanced distributed
systems. The O Scale will hopefully help you in evaluating and
determining which product suits your organizational and personnel
needs.
Clive
Boustred is featured at DCI's
Software & Client/Server World. |