Developer Forums | About Us | Site Map


Useful Lists

Web Host
site hosted by netplex

Online Manuals

Component Software: Beyond Object Oriented Programming
By Jeff Livingston - 2004-02-13 Page:  1 2

Are Objects Components

from The Rational Edge: Review of a book that introduces the basic theory behind components and discusses related technological practices -- including object-oriented principles and Web Services.

by Clemens Szyperski
Addison-Wesley, 2003
ISBN: 0-201-74572-0
Cover Price: US$54.99
608 Pages
Download pdf version (67 K)

What are software components? We all have a preconceived notion of what they are but have difficulty putting our thoughts into words. It is very challenging to define something that is so abstract. That is why Clemens Szyperski, a well-established researcher and writer on the subject of component technology, has taken 589 pages to explain it. In the very beginning of his book he states that:

Software components are binary units of independent production, acquisition, and deployment that interact to form a functioning system.

Don't worry if you don't understand this, because the book goes on to explain in great detail what components can be and how they are used in today's industry. First, Szyperski introduces the basic theory behind components; then he covers many technological practices, including object-oriented principles and Web services; and finally, he closes by introducing even more theory and then wrapping everything up in a conclusion.

The book remains demanding, though. Szyperski warns readers early on that some of the upcoming passages are difficult reads, and I did find that some of his points went way over my head. He targets mainly computer theorists, systems architects, and integrators, software developers, and CTOs, and assumes familiarity with object-oriented principles. As the book focuses on theory rather than code, it is not a good reference for specific languages such as C#. It does, however, explain why programmers use each specific language. I definitely recommend it for anyone searching for an in-depth look at today's component technology. If you have a fear of computer-related acronyms, Component Software will become an invaluable tool for you.

In his opening discussion of component theory, Szyperski posits that a component has three characteristic properties:

  • It can be deployed independently.
  • It is a unit of third-party composition.
  • It has no (externally) observable state.

Since most programmers today use object oriented-based languages such as Java and C++, they intuitively think of objects and libraries as components. There is little dispute that libraries should be classified as components, but there is much debate over whether objects are components. Szyperski says that an object:

  • Is a unit of instantiation; it has a unique identity.
  • Unlike a component, may have state, and this can be externally observable.
  • Encapsulates its state and behavior.

Note the conflict: Components cannot, technically speaking, have externally observable states. So, although some objects can act as components, it is not accurate to classify all objects as components, Szyperski explains. Also note that not all objects used in an application are from third parties; many are developed in-house. Just because an object can be instantiated many times within an application does not necessarily mean it will have any functional value within another; in other words, it is not necessarily a reusable component. Objects created by third parties are typically contained within libraries, which are built for reuse. Those objects are considered to be components -- but again, as only some objects act as third-party components, it is simply inaccurate to classify all objects as components.

View Component Software: Beyond Object Oriented Programming Discussion

Page:  1 2 Next Page: The Component Dilemma

First published by IBM developerWorks

Copyright 2004-2019 All rights reserved.
Article copyright and all rights retained by the author.