Electrical computers and digital processing systems: multicomput – Computer-to-computer data routing – Least weight routing
Reexamination Certificate
1998-10-28
2001-05-01
Courtenay, III, St. John (Department: 2151)
Electrical computers and digital processing systems: multicomput
Computer-to-computer data routing
Least weight routing
Reexamination Certificate
active
06226692
ABSTRACT:
BACKGROUND
1. Field of the Invention
The present invention is related to the field of object-oriented software engineering, and, more specifically, to a method and a system for constructing software components and entire systems using object composition.
2. Discussion of the Background Art
Over the last fifteen years, the object paradigm, including object-oriented analysis, design, programming and testing, has become the predominant paradigm for building software systems. A wide variety of methods, tools and techniques have been developed to support various aspects of object-oriented software construction, from formal methods for analysis and design, through a number of object-oriented languages, component object models and object-oriented databases, to a number of CASE systems and other tools that aim to automate one or more aspects of the development process.
With the maturing of the object paradigm, the focus has shifted from methods for programming objects as abstract data types to methods for designing and building systems of interacting objects. As a result, methods and means for expressing and building structures of objects have become increasingly important. Object composition has emerged and is rapidly gaining acceptance as a general and efficient way to express structural relationships between objects. New analysis and design methods based on object composition have developed and most older methods have been extended to accommodate composition.
Beyond analysis and design, however, the progress in object composition has been slow. While CASE tools that take advantage of composition methods have now been available for several years, the use of such systems in development of real-world commercial software has been very limited, their main impact being to provide inspiration to software architects and designers, rather than being used as development tools. CASE systems, which tend to enforce their development method to the detriment of other approaches, often impose proprietary object models that are not supported by other vendors or modify significantly existing object models, produce code that is difficult to interface with third-party components and the environment and are typically limited to coarse-granularity systems.
For object composition to become widely used in the development of commercially viable software components and systems, there is a need for methods and tools that ease the burden of composition within existing, widely accepted and supported object models. Such methods should work well for objects of typical granularity (100 to 1,000 lines of code), not impose any additional call-time overhead, be easy to use in combination with other methods and third-party components, and not require significant investment in tools and learning curve in order to practice them. As of the time of this writing, no publicly known method, teaching or product provides solutions to the above needs.
Object-oriented Software
Early methods and tools, including most currently accepted object-oriented programming languages, have been focused on defining and building objects, which were predominantly viewed as abstract data types. As the field became more mature, attracted more practitioners and accumulated experience in building real-world products, the main focus has shifted to using objects in defining and building increasingly complex applications, components and software systems. Predictably, the way of thinking has changed, with objects now increasingly being viewed as building blocks from which such applications, components and systems are constructed.
The major principles, methods and technological aspects of the object paradigm are described in many publications. Particularly good introduction into the area is provided by Bertrand Meyer in his book Object-Oriented Software Construction”, published by Prentice-Hall, Englewood Cliffs, N.J., in 1988. Another excellent source of fundamental information is “Object-Oriented Design with Applications” by Grady Booch, published by The Benjamin/Cummings Publishing, Redmond City, Calif., in 1991.
An important source of information on formal methods for object-oriented analysis and design is the book “Object-Oriented Modeling and Design” by James Rumbaugh et al., published by Prentice-Hall, Inc., Englewood Cliffs, N.J., in 1991.
Object-oriented software development is based on the the object-model concept, which defines the structure of objects, their attributes and interactions. While many and different object models are in use, they have many commonalties and are well understood and described in the software engineering community. Most of the known object models fall into one of the two broad categories: object-oriented languages and component object models.
Many high-quality publications are available on various object-oriented languages, including C++ which is widely used today. An excellent description of the language and its intended uses can be found in the book of its author, Bjame Stroustrup, “The C++ Programming Language”, published by Addison-Wesley Publishing, Menlo Park, Calif., in 1986. Another good source of information about C++ is Microsoft's “C++ Language Reference”, available from Microsoft Corporation, One Microsoft Way, Redmond, Wash., 98052, Document No. LN24772-91, 1991.
Component object models advance further the concepts of modularity in object-oriented technologies by defining language-neutral standards for implementation and management of objects as well as for interactions between them. Detailed specifications and architecture definitions for the two most widely accepted component object models as well as many examples and guidelines for building software systems based on them are provided in the following two documents: (1) Microsoft's “The Component Object Model Specification”, dated Mar. 6, 1995 and available from Microsoft Corporation; (2) “The Common Object Request Broker Architecture” available from Object Management Group, Inc., Framingham Corporate Center, 492 Old Connecticut Path, Framingham, Mass. 01701.
Most object-oriented systems and applications utilize a number of commonly recognized mechanisms, such as separating interfaces from implementations, abstract factories, parameterization, serialization, and structured storage. Abstract interfaces, along with multiple interfaces per object and abstract factories are well explained in the Component Object Model (COM) specification cited above. The abstract factory pattern is also described very well in the book “Design Patterns: Elements of Reusable Object-Oriented Software” by Erich Gamma et al., published by Addison-Wesley Publishing, Reading, Mass., in 1994.
Parameterization is a way of modifying the behavior of a given instance of an object class by supplying some of the data, or parameters, that the instance needs to operate during or after construction. Diverse property mechanisms are commonly used to parameterize component objects, usually during design time, since they provide a uniform mechanism to access data of a component in a manner independent of the particular component class. An example of a property mechanism and guidelines for using it for the purposes of parameterization can be found in the “Microsoft OLE Control Developer's Kit. User's Guide and Reference”, published in 1994 and available from Microsoft Corporation.
Component object models normally define object properties as a linear, flat table of named attributes To represent more sophisticated structures through this model a sequence of operations on properties is needed, such as when setting a value on a given property will modify the mapping of some other properties to a new set of attributes, as it is widely done in Visual Basic. When using such a model for parameterization, the need for sequencing requires either specific coding or setting the properties during parameterization in a specific order, both of which require custom work for each component.
Serialization is a mechanism for providing persistency in o
Miloushev Vladimir I.
Nickolov Peter A.
Courtenay III St. John
Crosby, Heafey Roach & May
Object Dynamics Corporation
Wittenberg Malcolm B.
LandOfFree
Method and system for constructing software components and... does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with Method and system for constructing software components and..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Method and system for constructing software components and... will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2441105