Data processing: software development – installation – and managem – Software program development tool – Translation of code
Reexamination Certificate
1998-09-10
2001-07-03
Powell, Mark (Department: 2122)
Data processing: software development, installation, and managem
Software program development tool
Translation of code
C717S152000, C707S793000
Reexamination Certificate
active
06256780
ABSTRACT:
TECHNICAL FIELD
This invention relates generally to a method and system for combining software objects into combined objects.
BACKGROUND OF THE INVENTION
The cost of developing a complex computer system can be very high. This high cost is attributable to many factors. It can take many man-years of effort to design a complex computer system, and the cost of the design effort is typically only a small fraction of the overall cost of the development effort. Indeed, the cost to develop, test, and document the computer code for such complex computer systems can be many times the cost of the design effort. Although many development tools are available to assist a software developer, development costs are still high.
For many years, “code reuse” and “code sharing” have been promoted as a way to lower the development costs. Typical techniques for “code reuse” and “code sharing” have relied upon object-oriented techniques that make various objects available for reuse. However, such typical techniques have serious drawbacks. Many objects that are made available for reuse provide extensive functionality so that they can be reused by many different types of computer systems that use different functionality of the objects. For example, an object that provides word processing functionality can be very complex and large. Such an object may be reused by a word processing program and by a dialog box manager. Although such an object may provide sophisticated word processing functionality, such sophisticated functionality may not be needed by certain applications that only need rudimentary word processing functionality (e.g., a dialog box manager). Thus, if such an application were to use such word processing object, much of the object's functionality would be unused, and the application would, as a result, be much larger than necessary.
Techniques have been developed that allow a programmer to combine objects with limited functionality into a combined object that has the functionality of its constituent objects. Two such techniques are referred to as “containment” and “aggregation.” “Containment” refers to the complete encapsulation of one object (i.e., a containee object) by another object (i.e., container object). Complete encapsulation means that an object external to the container object cannot directly access any of the functionality of the containee object. Rather, the container object receives every request from the external object to access the functionality of the combined object, and the container object may invoke the functionality of the containee object to help provide the requested functionality. “Aggregation” refers to the combining of objects into an aggregated object so that the functionality of one object (i.e., an enclosed object) is exposed directly by that object or indirectly by another object (i.e., enclosing object), and vice versa. Aggregation means that an object external to the aggregate object can directly access functionality of the aggregate object through either the enclosing object or the enclosed object. With both these techniques, an external object views the combined object as a single object and is unaware of the combination. The concepts of the “containment” and “aggregation” are described in
Inside OLE
2 written by Kraig Brockschmidt and published by Microsoft Press in 1994. “Aggregation” is further described in U.S. Pat. No. 5,745,764, which issued on Apr. 28, 1998, and is hereby incorporated by reference.
The techniques of containment and aggregation have limitations. With containment, the container object needs to be developed with full knowledge of the functionality of the containee object. Thus, the container object cannot be developed independently of the containee object. With aggregation, internal references between the enclosing object and enclosed object have special “Query Interface” and reference accounting rules, which adds complexity and confusion. Moreover, both techniques leave the developer to instantiate and manage the containee and enclosed objects.
Another technique for facilitating code reuse and code sharing is the use of a part-whole hierarchy where each object is responsible for managing the objects immediately below it in the hierarchy. However, when using a part-whole hierarchy, the code for instantiating and managing the sub-objects is placed with the code that provides the functionality of the combined object, which a developer needs to implement for each combined object.
It would be desirable to have a new technique for code reuse and sharing that does not have the drawbacks of these current techniques.
SUMMARY OF THE INVENTION
Embodiments of the present invention provide a method and system for assembling component objects into an assembly object. The assembly object includes a connector object through which the component objects can be exported from the assembly object and through which external objects can be imported into the assembly object. The assembly object provides a mechanism through which an external entity can gain access to the connector object. Once the external entity has gained access to the connector object, the external entity can request the connector object to provide a reference to an exported component object. Also, the external entity can provide to the connector object a reference to an external object to affect the importing of the external object into the assembly object. Embodiments of the assembly system of the present invention provide a light-weight mechanism for instantiating the component objects of an assembly object and a light-weight mechanism for controlling the exporting and importing of objects. Thus, the assembly system relieves the developer of an assembly object from the task of developing code for such instantiation and control.
REFERENCES:
patent: 5202985 (1993-04-01), Goyal
patent: 5485617 (1996-01-01), Stutz et al.
patent: 5517645 (1996-05-01), Stutz et al.
patent: 5610828 (1997-03-01), Kodosky et al.
patent: 5634095 (1997-05-01), Wang et al.
patent: 5659543 (1997-08-01), Ater et al.
patent: 5692184 (1997-11-01), Ardoin et al.
patent: 5745764 (1998-04-01), Leach et al.
patent: 5794038 (1998-08-01), Stutz et al.
patent: 5991802 (1999-11-01), Allard et al.
patent: 6052691 (2000-04-01), Ardoin et al.
Assembling Objects with ClassMagic, Object Dynamics Corporation, U.S.A., 1997, pp. 1-21.
Crane, S. et al., “Configuration Management for Distributed Software Services,” Chapman & Hall, Santa Barbara, California, May 1995, pp. 29-41.
Kramer, Jeff et al., “Configuring Distributed Systems,” Proc. of 5th ACM SIGOPS Workshop on Models and Paradigms for Distributed Systems Structuring, Mont St. Michel, Sep. 1992, pp. 1-5.
Magee, Jeff et al., “Specifying Distributed Software Architectures,” Proc. of the 5th European Software Engineering Conference, Barcelona, Sep. 1995, pp. 137-153.
Title: A Graphical User Interface in Ada for domain-Specific Reuse Libraries, Gordon, ACM. Aug. 15, 1992.*
Title: Querying Atructured dociments with Hypertext links using OODBMS, Christophides et al, ACM, Sep., 1994.*
Title: Executable Connectors: Towards Reusable Design Elements, Ducasse et al, ACM.
Goswell Crispin
Grossman Mark B.
Hill Walter L.
Williams Antony S.
Wittenberg Craig H.
Das Chameli Chaudhuri
Law Offices of Michael Dryja
Microsoft Corp.
Powell Mark
LandOfFree
Method and system for assembling software components 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 assembling software components, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Method and system for assembling software components will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2462557